EPN (Event Processing Network) を通過するイベントを永続ストアに保存したいという場合に、JPA実装の一つであるEclipseLinkを利用すると簡単に実現できます。利用方法をsamplesドメインのHelloWorldを用いてご紹介します。
事前に、EclipseLinkのOSGi バンドルをダウンロードし、以下のファイルをzipファイルから<OCEP_Home>/samples/domains/helloworld_domain/defaultserver/modules/extにコピーしておきます。
(サンプルコードでは、自動生成される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/
事前に、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
(サンプルコードでは、自動生成される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 件のコメント:
コメントを投稿