![]() ![]() ![]() ![]() |
Oracle CEP では、Java コードを作成せずに、JMS キューとの間でメッセージを送受信するためにイベント アプリケーションで使用できる個別の 2 つの JMS アダプタが提供されます。特に、以下のものが含まれています。
独自のコンバータ クラスを指定せずに、メッセージとイベント タイプの間の変換処理が Oracle CEP によって実行されるようにする場合は、以下のことが当てはまります。
MapMessage
であることが予期されます。各着信メッセージについて、指定されたイベント タイプのイベントが作成されます。着信メッセージ内の各マップ要素について、アダプタで event-type のプロパティが検索され、見つかった場合は対応する値が設定されます。MapMessage
の JMS メッセージが作成されます。イベントの各プロパティについて、出力の MapMessage
で対応する要素が作成されます。
Oracle CEP では、Oracle WebLogic JMS および TIBCO EMS JMS という 2 つの JMS プロバイダがサポートされています。
Oracle CEP には WebLogic JMS クライアントが含まれています。Oracle WebLogic サーバへの接続時、Oracle CEP ではデフォルトで T3 クライアントが使用されます。Oracle WebLogic Server の開始時に -useIIOP
コマンドライン引数を使用することで、IIOP WebLogic クライアントを使用できます。これはサーバ全体の設定であり、(提供されたアダプタのいずれか、またはカスタム JMS コードであるかどうかにかかわらず) 使用される JMS コードには依存しません。実行中の Oracle CEP サーバで T3 と IIOP を混合して使用することはできません。
TIBCO などの WebLogic JMS 以外の JMS プロバイダを使用している場合は、アプリケーション jar に適切なクライアント jar をライブラリとして含める必要があります。
JMS の概要については、Sun Developer Network の Java Message Service を参照してください。
以下の手順では、Oracle CEP で提供される JMS プロバイダを使用する一般的な手順を示します。
注意 : | この節では、Oracle CEP アプリケーションが EPN アセンブリ ファイルとコンポーネント コンフィグレーション ファイルを使用してすでに作成済みであり、着信または発信 JMS アダプタを使用するようにアプリケーションを更新する必要があると想定しています。まだ作成していない場合は、詳細について「Oracle Complex Event Processing アプリケーションの作成の概要」を参照してください。 |
「JMS メッセージとイベント タイプの間のカスタム コンバータの作成」を参照してください。
<wlevs:adapter>
タグを追加して、アプリケーションの EPN アセンブリ ファイルを更新します。
「JMS アダプタによる EPN アセンブリ ファイルの更新」を参照してください。
「JMS アダプタのコンフィグレーション」を参照してください。
Import-Package
ヘッダにパッケージ com.bea.core.encryption
を追加して、アプリケーションの MANIFEST.MF
ファイルを更新します。例を示します。Import-Package:
com.bea.core.encryption
com.bea.wlevs.adapter.defaultprovider;version="2.0.0.0",
...
マニフェスト ファイルの追加情報については、「MANIFEST.MF ファイルの作成」を参照してください。
JMS メッセージがイベント タイプに変換される方法、またはイベント タイプが JMS メッセージに変換される方法をカスタマイズする場合は、独自のコンバータ Bean を作成する必要があります。
着信 JMS のカスタム コンバータ Bean では、com.bea.wlevs.adapters.jms.api.InboundMessageConverter
インタフェースを実装する必要があります。このインタフェースには 1 つのメソッドが含まれています。
public List convert(Message message) throws MessageConverterException, JMSException;
message
パラメータは着信 JMS メッセージに対応します。戻り値は、イベント処理ネットワークの次のステージに渡されるイベントの List
です。
発信 JMS のカスタム コンバータ Bean では、com.bea.wlevs.adapters.jms.api.OutboundMessageConverter
インタフェースを実装する必要があります。このインタフェースには 1 つのメソッドが含まれています。
public List<Message> convert(Session session, Object event) throws MessageConverterException, JMSException;
パラメータは EPN のソース ノードから送られ、発信 JMS アダプタで受信されたイベントに対応します。戻り値は、JMS メッセージの List
です。
これらの API の完全な説明については、Javadoc を参照してください。
次の例は、InboundMessageConverter と OutboundMessageConvert の両方を実装するカスタム コンバータ Bean の Java ソースを示します。この Bean は着信および発信の両方の JMS アダプタで使用できます。
package com.customer;
import com.bea.wlevs.adapters.jms.api.InboundMessageConverter;
import com.bea.wlevs.adapters.jms.api.MessageConverterException;
import com.bea.wlevs.adapters.jms.api.OutboundMessageConverter;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import java.util.ArrayList;
import java.util.List;
public class MessageConverter implements InboundMessageConverter, OutboundMessageConverter {
public List convert(Message message) throws MessageConverterException, JMSException {
TestEvent event = new TestEvent();
TextMessage textMessage = (TextMessage) message;
event.setString_1(textMessage.getText());
List events = new ArrayList(1);
events.add(event);
return events;
}
public List<Message> convert(Session session, Object inputEvent) throws MessageConverterException, JMSException {
TestEvent event = (TestEvent) inputEvent;
TextMessage message = session.createTextMessage("Text message: " + event.getString_1());
List<Message> messages = new ArrayList<Message>();
messages.add(message);
return messages;
}
}
イベント処理ネットワークの各 JMS アダプタについて、アプリケーションの EPN アセンブリ ファイルに対応する <wlevs:adapter>
タグを追加する必要があります。provider
属性を使用して、JMS アダプタが着信または発信のどちらであるかを指定します。以下のガイドラインに従います。
provider
属性を jms-inbound
に設定します。<wlevs:adapter id="jmsInbound" provider="jms-inbound"/>
id
属性の値 (この場合は jmsInbound
) は、コンフィグレーション ファイルでこの JMS アダプタに指定された名前と一致している必要があります。コンフィグレーション ファイルでは、この着信 JMS アダプタがメッセージを取得する JMS キューをコンフィグレーションします。
コンバータ Bean が指定されていないため、Oracle CEP ではプロパティ名のマップによって、着信メッセージがコンポーネント コンフィグレーション ファイルで指定されているイベント タイプに自動的に変換されます。
provider
属性を jms-outbound
に設定します。<wlevs:adapter id="jmsOutbound" provider="jms-outbound"/>
id
属性の値 (この場合は jmsOutbound
) は、コンフィグレーション ファイルでこの JMS アダプタに指定された名前と一致している必要があります。コンフィグレーション ファイルでは、この発信 JMS アダプタがメッセージを送信する JMS キューをコンフィグレーションします。
コンバータ Bean が指定されていないため、Oracle CEP ではプロパティ名のマップによって、着信イベント タイプが発信 JMS メッセージに自動的に変換されます。
<bean>
Spring タグを使用してこれを宣言します。その後、以下のように、<wlevs:instance-property>
タグで id
を指定することで Bean の参照を JMS アダプタに渡し、name
属性に converterBean
を設定します。<bean id="myConverter"
class="com.customer.MessageConverter"/>
<wlevs:adapter id="jmsOutbound" provider="jms-outbound">
<wlevs:instance-property name="converterBean" ref="myConverter"/>
</wlevs:adapter>
この場合は、コンポーネント コンフィグレーション ファイルでイベント タイプを指定してはなりません。これは、カスタム コンバータ Bean でイベント タイプが指定されることが想定されるためです。
EPN の他のステージと同様に、<wlevs:adapter>
タグにリスナを追加して JMS アダプタをイベント処理ネットワークに統合します。通常、着信 JMS アダプタは (メッセージを受信するため) EPN の最初のステージであり、発信 JMS アダプタは (メッセージを送信するため) より後方のステージです。ただし、JMS アダプタが配置されるネットワーク内の場所は、独自の Oracle CEP アプリケーションの要件に応じて定義されます。
次の EPN アセンブリ ファイルの例は、発信 JMS アダプタをコンフィグレーションする方法を示します。ネットワークは単純です。カスタム アダプタ getData
がフィードから受信したデータはイベント タイプに変換されて myProcessor
に渡されます。イベントは streamOne
ストリームを通じて jmsOutbound
JMS アダプタに送信されます。Oracle CEP ではこれらのイベントが自動的に JMS メッセージに変換され、メッセージは、jmsOutbound
アダプタに関連付けられているコンポーネント コンフィグレーション ファイルでコンフィグレーションされている JMS キューに送信されます。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:wlevs="http://www.bea.com/ns/wlevs/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd
http://www.bea.com/ns/wlevs/spring
http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="JMSEvent">
<wlevs:class>com.customer.JMSEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<!-- データを取得し、myProcessor に送信するカスタム アダプタ -->
<wlevs:adapter id="getData"
class="com.customer.GetData">
<wlevs:listener ref="myProcessor"/>
</wlevs:adapter>
<wlevs:processor id="myProcessor" />
<wlevs:adapter id="jmsOutbound" provider="jms-outbound"/>
<!-- myProcessor から発信 JMS アダプタに流れるイベントのストリーム -->
<wlevs:stream id="streamOne">
<wlevs:listener ref="jmsOutbound"/>
<wlevs:source ref="myProcessor"/>
</wlevs:stream>
</beans>
次の EPN アセンブリ ファイルの例は、着信 JMS アダプタをコンフィグレーションする方法を示します。ネットワークは単純です。着信 JMS アダプタ jmsInbound
はコンポーネント コンフィグレーション ファイルでコンフィグレーションされている JMS キューからメッセージを受信します。Spring bean myConverter
によって着信 JMS メッセージがイベント タイプに変換され、これらのイベントは mySink
イベント Bean に渡されます。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:wlevs="http://www.bea.com/ns/wlevs/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd
http://www.bea.com/ns/wlevs/spring
http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="JMSEvent">
<wlevs:class>com.customer.JMSEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<!-- イベント シンクであるイベント Bean -->
<wlevs:event-bean id="mySink"
class="com.customer.MySink"/>
<!-- カスタム コンバータ クラスを持つ着信 JMS アダプタ ; アダプタはイベントを mySink イベント Bean に送信します-->
<bean id="myConverter" class="com.customer.MessageConverter"/>
<wlevs:adapter id="jmsInbound" provider="jms-inbound">
<wlevs:instance-property name="converterBean" ref="myConverter"/>
<wlevs:listener ref="mySink"/>
</wlevs:adapter>
</beans>
JMS アダプタのコンフィグレーションは、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントをコンフィグレーションする場合と同じように、それぞれのコンフィグレーション ファイルで行います。これらのコンフィグレーション ファイルの概要については、「コンポーネント コンフィグレーション ファイル」を参照してください。
JMS アダプタをコンフィグレーションする場合のルート要素は <jms-adapter>
です。特定のアダプタの <name>
子要素は、このアダプタが宣言されている EPN アセンブリ ファイル内の対応する <wlevs:adapter>
タグの id
属性に一致している必要があります。
次の表では、着信および発信 JMS アダプタの両方でコンフィグレーションできる <jms-adapter>
の追加の子要素について説明します。
|
次の表では、着信 JMS アダプタでのみコンフィグレーションできる <jms-adapter>
の省略可能な子要素について説明します。
次の表では、発信 JMS アダプタでのみコンフィグレーションできる <jms-adapter>
の省略可能な子要素について説明します。
JMS アダプタのコンフィグレーションのための完全なスキーマについては、XSD スキーマを参照してください。
次のコンフィグレーション ファイルは、着信および発信 JMS アダプタの両方をコンフィグレーションする場合の完全な例を示しています。
<?xml version="1.0" encoding="UTF-8"?>
<n1:config
xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd"
xmlns:n1="http://www.bea.com/ns/wlevs/config/application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jms-adapter>
<name>jmsInbound</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Queue1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>
<jms-adapter>
<name>jmsOutbound</name>
<event-type>JMSEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Topic1</destination-jndi-name>
<delivery-mode>nonpersistent</delivery-mode>
</jms-adapter>
</n1:config>
次の例は、TIBCO EMS JMS に接続する着信 JMS アダプタをコンフィグレーションする方法を示します。
<jms-adapter>
<name>myJmsAdapter</name>
<jndi-provider-url>t3://localhost:7222</jndi-provider-url>
<jndi-factory>com.tibco.tibjms.naming.TibjmsInitialContextFactory</jndi-factory>
<connection-jndi-name>TibcoQueueConnectionFactory</connection-jndi-name>
<destination-jndi-name>MyQueue</destination-jndi-name>
</jms-adapter>
JMS アダプタ コンフィグレーション ファイルでパスワードを暗号化する必要がある場合は、以下の手順を実行します。
注意 : | この手順では、現在コンフィグレーション ファイルの <password> 要素でクリアテキストのパスワード値を使用していて、パスワードを暗号化するために <encrypted-password> 要素の使用を開始する必要があると想定しています。 |
<password>
要素の値を暗号化するために、次の encryptMSAConfig
コマンドを実行します。prompt>ORACLE_CEP_HOME
/ocep_10.3/bin/encryptMSAConfig
.config_file msainternal.dat_file
ORACLE_CEP_HOME
は、d:\oracle_cep
などの Oracle CEP のインストール先のメイン ディレクトリです。2 番目の引数は JMS アダプタ コンフィグレーション ファイルが含まれているディレクトリです。この手順では実際にそのディレクトリに移動しているため、例では「.
」と示されています。config_file
パラメータは JMS アダプタ コンフィグレーション ファイルの名前です。最後に、msainternal.dat_file
パラメータは、ドメインに関連付けられている .msainternal.dat
ファイルの場所です。デフォルトでは、このファイルは DOMAIN_DIR
/servername
ディレクトリにあります。DOMAIN_DIR
は、/oracle_cep/user_projects/domains/mydomain
などのドメイン ディレクトリです。servername
はサーバ インスタンスです。
encryptMSAConfig
コマンドには、encryptMSAConfig.cmd
(Windows) および encryptMSAConfig.sh
(UNIX) の 2 種類があります。
コマンドを実行すると、次の例の太字部分のように <password>
要素の値が暗号化されます。
<jms-adapter>
<name>jmsInbound</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Queue1</destination-jndi-name>
<user>weblogic</user>
<password>{Salted-3DES}B7L6nehu7dgPtJJTnTJWRA==</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>
<password>
要素 (現在の値は暗号化されています) を <encrypted-password>
に変更します。<jms-adapter>
<name>jmsInbound</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Queue1</destination-jndi-name>
<user>weblogic</user>
<encrypted-password>{Salted-3DES}B7L6nehu7dgPtJJTnTJWRA==</encrypted-password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>
![]() ![]() ![]() |