[CEP] Using EclipseLink from OCEP


EPN (Event Processing Network) を通過するイベントを永続ストアに保存したいという場合に、JPA実装の一つであるEclipseLinkを利用すると簡単に実現できます。利用方法をsamplesドメインのHelloWorldを用いてご紹介します。
事前に、EclipseLinkのOSGi バンドルをダウンロードし、以下のファイルをzipファイルから<OCEP_Home>/samples/domains/helloworld_domain/defaultserver/modules/extにコピーしておきます。
  • javax.persistence_2.0.1.v201006031150.jar
  • org.eclipse.persistence.antlr_2.1.2.v20101206-r8635.jar
  • org.eclipse.persistence.asm_2.1.2.v20101206-r8635.jar
  • org.eclipse.persistence.core_2.1.2.v20101206-r8635.jar
  • org.eclipse.persistence.jpa.osgi_2.1.2.v20101206-r8635.jar
  • org.eclipse.persistence.jpa_2.1.2.v20101206-r8635.jar
  • org.eclipse.persistence.oracle_2.1.2.v20101206-r8635.jar
HelloWorldEventはEntityClassなので、JPAアノテーションを追加する必要があります。
(サンプルコードでは、自動生成されるlong型の属性(id)を追加しています。:HelloWorldEvent.java http://blogs.oracle.com/CEP/ocep-eclipselink-helloworld/HelloWorldEvent.java

HelloWorldEventの永続性ユニット(helloworld)を定義します(サンプルコード:persistence.xml これはMETA-INFディレクトリに配置する必要があります http://blogs.oracle.com/CEP/ocep-eclipselink-helloworld/persistence.xml)。

また、マニフェストファイルに javax.persistence パッケージをインポートした上で、

JPA-PersistenceUnits: helloworld

を追記しておきます。マニフェストファイルで指定した永続性ユニットは、 persistence.xml で定義したものでなければなりません。

最後に、HelloWorldBean クラスを修正して、受信したイベントを永続化するようにします。イベントを本当に永続化していることを確認するため、永続化したイベントの問い合わせ、および件数を取得するコードを追加しています(サンプルコード:http://blogs.oracle.com/CEP/ocep-eclipselink-helloworld/HelloWorldBean.java)。

ここで、@Resource アノテーションを使って、データソースを HelloWorldBean に設定していますが、このデータソースリソースは、Oracle CEPサーバーの構成ファイルに記述しておく必要があります。Derbyを使った場合の例を以下に示します。永続性ユニットの javax.persistence.jdbc プロパティとして、JDBCドライバクラスやURLなどを指定することもできます。

<data-source>
    <name>derbyDS</name>
    <connection-pool-params>
    <initial-capacity>5</initial-capacity>
    <max-capacity>5</max-capacity>
    </connection-pool-params>
    <driver-params>
        <url>jdbc:derby:dbtest1;create=true</url>
        <driver-name>org.apache.derby.jdbc.EmbeddedDriver
    </driver-params>
</data-source>

これらの作業後、アプリケーションを実行すれば、格納したイベントの個数を確認できます。ただし、アプリケーションを実行している場合、EclipseLinkの設定変更は動的に反映されませんので、OCEPサーバーを再起動する必要があります。

参考URL
EclipseLink : http://www.eclipse.org/eclipselink/

原文はこちら。
http://blogs.oracle.com/CEP/2011/01/using_eclipselink_from_ocep.html

0 件のコメント:

コメントを投稿