アダプタまたはイベントBeanファクトリ・クラスを実装して構成することで、複数のEPNで単一のカスタム・アダプタまたはイベントBean実装を使用できます。このファクトリ・クラスは、アダプタまたはイベントBeanオブジェクトを、その要求元Oracle Stream Analyticsアプリケーションに対してインスタンス化します。
ここで説明しているAPIの詳細は、Oracle Stream Analytics Java APIリファレンスを参照してください。
この章の内容は次のとおりです。
アダプタ・クラスでは、アダプタがファクトリで返されるよう、com.bea.wlevs.ede.api.Adapter
インタフェースを実装します。
これはマーカー・インタフェースなので、メソッドは実装されません。
public class BusStopAdapter implements Adapter, StreamSource { // Adapter implementation code. }
com.bea.wlevs.ede.api.AdapterFactory
インタフェースを実装するアダプタ・ファクトリ・クラスを作成します。
create
メソッドは、カスタム・アダプタのインスタンスを作成して返します。
import com.oracle.cep.sample.spatial.BusStopAdapter; import com.bea.wlevs.ede.api.AdapterFactory; public class BusStopAdapterFactory implements AdapterFactory { public BusStopAdapterFactory() {} public synchronized BusStopAdapter create() throws IllegalArgumentException { // Your code might have a particular way to create the instance. return new BusStopAdapter(); } }
アセンブリ・ファイルで、wlevs:factory
要素を使用してファクトリ・クラスを登録します。
<wlevs:factory provider-name="busStopAdapterProvider" class="com.oracle.cep.sample.spatial.BusStopAdapterFactory"/>
osgi:service
要素を使用して、アセンブリ・ファイルにOSGiサービスとしてファクトリを登録します。
OSGiサービス・レジストリの範囲はOracle Stream Analytics全体です。特定のサーバーにデプロイされた複数のアプリケーションが同じアダプタ・ファクトリを使用する場合は、ファクトリをOSGiサービスとして1回登録します。
エントリを追加して、サービスをcom.bea.wlevs.ede.api.AdapterFactory
インタフェースの実装として登録します。key
属性にtype
を指定し、このアダプタ・プロバイダを参照する名前を使用して、プロパティを指定します。
ネストした標準のSpring bean
要素を追加して、Springアプリケーション・コンテキストで特定のアダプタ・クラスを登録します。
<osgi:service interface="com.bea.wlevs.ede.api.AdapterFactory"> <osgi:service-properties> <entry key="type" value="busStopAdapterProvider"</entry> </osgi:service-properties> <bean class="com.oracle.cep.sample.spatial.BusStopAdapterFactory" /> </osgi:service>
次の例に示すとおり、(アダプタをクラス名で指定するのではなく)構成したファクトリをプロバイダとして指定し、アダプタのインスタンスを使用するアプリケーションでアダプタを構成します。
<wlevs:adapter id="BusStopAdapter" provider="busStopAdapterProvider"> // ... </wlevs:adapter>
イベントBeanクラスでは、Beanがファクトリで返されるよう、com.bea.wlevs.ede.api.EventBean
インタフェースを実装します。
これはマーカー・インタフェースなので、メソッドは実装されません。
public class TradeListener implements EventBean, StreamSink { // Bean implementation code. }
com.bea.wlevs.ede.api.EventBeanFactory
インタフェースを実装するイベントBeanクラスを作成します。
createメソッドは、イベントBeanのインスタンスを作成して返します。
import com.oracle.cep.example.tradereport.TradeListener; import com.bea.wlevs.ede.api.EventBeanFactory; public class TradeListenerFactory implements EventBeanFactory { public TradeListenerFactory() { } public synchronized TradeListener create() throws IllegalArgumentException { // Your code might have a particular way to create the instance. return new TradeListener(); } }
アセンブリ・ファイルで、wlevs:factory
要素を使用してファクトリ・クラスを登録します。
<wlevs:factory provider-name="tradeListenerProvider" class="com.oracle.cep.example.tradereport.TradeListenerFactory"/>
osgi:service
要素を使用して、アセンブリ・ファイルにOSGiサービスとしてファクトリを登録します。
OSGiサービス・レジストリの範囲はOracle Stream Analytics全体です。特定のサーバーにデプロイされた複数のアプリケーションが同じアダプタ・ファクトリを使用する場合は、ファクトリをOSGiサービスとして1回登録します。
エントリを追加して、サービスを com.bea.wlevs.ede.api.EventBeanFactory
インタフェースの実装として登録します。key
属性にtype
を指定し、このアダプタ・プロバイダを参照する名前を使用して、プロパティを指定します。
ネストした標準のSpring bean
要素を追加して、Springアプリケーション・コンテキストで特定のアダプタ・クラスを登録します。
<osgi:service interface="com.bea.wlevs.ede.api.EventBeanFactory"> <osgi:service-properties> <entry key="type" value="tradeListenerProvider"</entry> </osgi:service-properties> <bean class="com.oracle.cep.example.tradereport.TradeListenerFactory" /> </osgi:service>
次の例に示すとおり、(Beanをクラス名で指定するのではなく)構成したイベントBeanファクトリをプロバイダとして指定し、イベントBeanのインスタンスを使用するアプリケーションでイベントBeanを構成します。
<wlevs:event-bean id="TradeListenerBean" provider="tradeListenerProvider">