ヘッダーをスキップ
Oracle® Complex Event Processing開発者ガイド
11g リリース1 (11.1.1.4.0) for Eclipse
B61654-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

I Oracle CEPメタデータ注釈リファレンス

この節では、次の項目について説明します。

I.1 Oracle CEPメタデータ注釈の概要

Oracle CEPメタデータ注釈は、Oracle CEPコンポーネントの構成にアクセスするために使用されます。Oracle CEPでは、次の注釈が用意されています。

詳細は、次を参照してください:

I.1.1 アダプタ・ライフサイクル注釈

次の注釈を使用して、アダプタのライフサイクルの様々な段階で(具体的には、アダプタの構成が準備されたとき、構成がアクティブ化されたとき、および例外のためにアダプタが終了したときに)処理を行う、アダプタのJava実装のメソッドを指定します。

I.1.2 OSGiサービス参照注釈

com.bea.wlevs.util.Service注釈では、OSGiサービス参照が挿入されたコンポーネントのメソッドを指定します。

I.1.3 リソース・アクセス注釈

次の注釈では、設計時にリソース・アクセス、およびその対応するデプロイメントXMLを構成し、デプロイ時にこの構成をオーバーライドします。

  • javax.annotation.Resource

詳細は、1.4項「Oracle CEPリソース・アクセスの構成」を参照してください。

I.2 com.bea.wlevs.configuration.Activate

ターゲット: メソッド

@Activate注釈は、Javaファイル内で使用するアダプタ・ライフサイクル注釈の1つであり、Oracle CEPでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

Oracle CEPで@Activate注釈を付けたメソッドが呼び出されるのは、@Prepare注釈を付けたすべてのメソッドがサーバーによって呼び出された後、正常に実行された場合に限ります。通常、@Activateメソッドは、アダプタ実装の残りの部分で使用するためにアダプタの構成データを実際に取得する場合に使用します。

この注釈を付けるメソッドは、シグネチャを次のようにする必要があります。

public void methodName(AdapterConfigObject adapterConfig)

methodNameはユーザーがメソッドに付ける名前であり、AdapterConfigObjectはアプリケーションと共にデプロイされるアダプタの構成XMLファイルのJava表現です。このクラスのタイプは、デフォルトではcom.bea.wlevs.configuration.application.DefaultAdapterConfigですが、アダプタの構成を拡張した場合には、拡張したXMLファイルを記述しているXSDで指定したタイプになります。たとえば、HelloWorldのサンプルでは、タイプはcom.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigです。

実行時、Oracle CEPはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際のXMLファイルからデータを設定して、インスタンスをアダプタに渡します。その後、アダプタ・ライフサイクル注釈を付けたアダプタ・メソッドでクラスを使用して、アダプタの構成に関する情報を取得できます。

このメタデータ注釈に属性はありません。

I.2.1

例I-1では、HelloWorldの例のアダプタ・コンポーネントにおける@Activate注釈の使用方法について説明します。関連するコードのみを示します。

例I-1 @Activate注釈

package com.bea.wlevs.adapter.example.helloworld;
...
import com.bea.wlevs.configuration.Activate;
import com.bea.wlevs.ede.api.RunnableBean;
import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

public class HelloWorldAdapter implements RunnableBean, StreamSource {
...
    @Activate
    public void activateAdapter(HelloWorldAdapterConfig adapterConfig) {
        this.message = adapterConfig.getMessage();
    }
...
}

com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigクラスは、アダプタの構成XMLファイルのJava表現です。HelloWorldの例では、構成が拡張されています。つまり、カスタムXSDファイルでXMLファイルを記述しています。例I-2では、XSDファイルは、結果のJava構成オブジェクトの完全修飾名(太字の部分)も指定しています。

例I-2 HelloWorldAdapterConfig

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.bea.com/ns/wlevs/example/helloworld"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"  
  xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
  targetNamespace="http://www.bea.com/ns/wlevs/example/helloworld"
  elementFormDefault="unqualified" attributeFormDefault="unqualified" 
  jxb:extensionBindingPrefixes="xjc" jxb:version="1.0">
   <xs:annotation>
      <xs:appinfo>
        <jxb:schemaBindings>
          <jxb:package name="com.bea.wlevs.adapter.example.helloworld"/>
        </jxb:schemaBindings>
      </xs:appinfo>
   </xs:annotation>
   <xs:import namespace="http://www.bea.com/ns/wlevs/config/application"
      schemaLocation="wlevs_application_config.xsd"/>
   <xs:element name="config">
     <xs:complexType>
       <xs:choice maxOccurs="unbounded">
          <xs:element name="adapter" type="HelloWorldAdapterConfig"/>
          <xs:element name="processor" type="wlevs:DefaultProcessorConfig"/>
          <xs:element name="channel" type="wlevs:DefaultStreamConfig" />
       </xs:choice>
     </xs:complexType>
    </xs:element>
    <xs:complexType name="HelloWorldAdapterConfig">
      <xs:complexContent>
        <xs:extension base="wlevs:AdapterConfig">
          <xs:sequence>
            <xs:element name="message" type="xs:string"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
</xs:schema>

Oracle CEPはアプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。たとえば、helloworldAdapterの構成ファイルのアダプタ・セクションは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
  <helloworld:config
  ...
    <adapter>
      <name>helloworldAdapter</name>
      <message>HelloWorld - the current time is:</message>
    </adapter>
</helloworld:config>

上記のアダプタのJavaコードでは、activateAdapterメソッドに@Activate注釈が付いています。このメソッドは、構成オブジェクトのgetMessageメソッドを使用して、アダプタの構成XMLファイルに設定されたmessageプロパティの値を取得します。この例の場合、値はHelloWorld - the current time is:です。取得したこの値をアダプタ実装ファイルの主要部分で使用します。

I.3 com.bea.wlevs.configuration.Prepare

ターゲット: メソッド

@Prepare注釈は、Javaファイル内で使用するアダプタ・ライフサイクル注釈の1つであり、Oracle CEPでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

コンポーネントの状態が特定の構成変さらによって更新された場合、Oracle CEPは@Prepare注釈が付いたメソッドを呼び出します。

この注釈を付けるメソッドは、シグネチャを次のようにする必要があります。

public void methodName(AdapterConfigObject adapterConfig)

methodNameはユーザーがメソッドに付ける名前であり、AdapterConfigObjectはアプリケーションと共にデプロイされるアダプタの構成XMLファイルのJava表現です。このクラスのタイプは、デフォルトではcom.bea.wlevs.configuration.application.DefaultAdapterConfigですが、アダプタの構成を拡張した場合には、拡張したXMLファイルを記述しているXSDで指定したタイプになります。たとえば、HelloWorldのサンプルでは、タイプはcom.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigです。

実行時、Oracle CEPはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際のXMLファイルからデータを設定して、インスタンスをアダプタに渡します。その後、アダプタ・ライフサイクル注釈を付けたアダプタ・メソッドでクラスを使用して、アダプタの構成に関する情報を取得できます。

このメタデータ注釈に属性はありません。

I.3.1

例I-3 次の例はHelloWorldの例のアダプタ・コンポーネントで使用しているコードであり、@Prepare注釈の使用方法を示しています。関連するコードのみを示します。

例I-3 @Prepare注釈

package com.bea.wlevs.adapter.example.helloworld;
...
import com.bea.wlevs.configuration.Prepare;
import com.bea.wlevs.ede.api.RunnableBean;
import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

public class HelloWorldAdapter implements RunnableBean, StreamSource {
...
    @Prepare
    public void checkConfiguration(HelloWorldAdapterConfig adapterConfig) {
        if (adapterConfig.getMessage() == null
                || adapterConfig.getMessage().length() == 0) {
            throw new RuntimeException("invalid message: " + message);
        }
    }
...
}

com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigクラスは、アダプタの構成XMLファイルのJava表現です。Oracle CEPはアプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。HelloWorldの例では、アダプタ構成が拡張されています。詳細は、付録I「com.bea.wlevs.configuration.Activate」の例を参照してください。

上記のアダプタのJavaコードでは、checkConfigurationメソッドに@Prepare注釈が付いています。つまり、アダプタの構成になんらかの変更が行われた場合は、このメソッドが呼び出されます。さらに、上記の例は、アダプタの構成のmessageプロパティ(拡張されたアダプタ構成ファイルで設定)がnullまたは空のいずれでもないことを確認するチェックが、このメソッドによって実行されることを示しています。このプロパティがnullまたは空である場合、メソッドは例外をスローします。

I.4 com.bea.wlevs.configuration.Rollback

ターゲット: メソッド

@Rollback注釈は、Javaファイル内で使用するアダプタ・ライフサイクル注釈の1つであり、Oracle CEPでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

コンポーネントの@Prepareメソッドが呼び出されて例外が送出された場合、Oracle CEPは@Rollback注釈が付いたメソッドを呼び出します。サーバーは、該当するコンポーネントごとに@Rollbackメソッドを呼び出します。

この注釈を付けるメソッドは、シグネチャを次のようにする必要があります。

public void methodName(AdapterConfigObject adapterConfig)

methodNameはユーザーがメソッドに付ける名前であり、AdapterConfigObjectはアプリケーションと共にデプロイされるアダプタの構成XMLファイルのJava表現です。このクラスのタイプは、デフォルトではcom.bea.wlevs.configuration.application.DefaultAdapterConfigですが、アダプタの構成を拡張した場合には、拡張したXMLファイルを記述しているXSDで指定したタイプになります。たとえば、HelloWorldのサンプルでは、タイプはcom.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigです。

実行時、Oracle CEPはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際のXMLファイルからデータを設定して、インスタンスをアダプタに渡します。その後、アダプタ・ライフサイクル注釈を付けたアダプタ・メソッドでクラスを使用して、アダプタの構成に関する情報を取得できます。

このメタデータ注釈に属性はありません。

I.4.1

例I-4 次のサンプル・コードは、HelloWorldの例で使用しているアダプタ・コンポーネントのコードであり、@Rollback注釈の使用方法を示しています。ここでは、関連するコードのみを示します。

例I-4 @Rollback注釈

package com.bea.wlevs.adapter.example.helloworld;
...
import com.bea.wlevs.configuration.Rollback;
import com.bea.wlevs.ede.api.RunnableBean;
import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

public class HelloWorldAdapter implements RunnableBean, StreamSource {
...
    @Rollback
    public void rejectConfigurationChange(HelloWorldAdapterConfig adapterConfig) {
    }

com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigクラスは、アダプタの構成XMLファイルのJava表現です。Oracle CEPはアプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。HelloWorldの例では、アダプタ構成が拡張されています。詳細は、付録I「com.bea.wlevs.configuration.Activate」の例を参照してください。

このサンプルでは、rejectConfigurationChangeメソッドに@Rollback注釈が付いています。つまり、これは@Prepareメソッドが例外を送出した場合に呼び出されるメソッドです。上記の例では、実際には何も起こりません。

I.5 com.bea.wlevs.util.Service

ターゲット: メソッド

注釈が付いたメソッド(一般的にはJavaBeanセッター・メソッド)にOSGiサービス参照が必要であることを指定します。

I.5.1 属性

表I-1では、com.bea.wlevs.util.Service JWS注釈の属性について説明します。

表I-1 com.bea.wlevs.util.Service JWS注釈タグの属性

名前 説明 データ型 必須?

serviceBeanName

挿入されたサービスをサポートするBeanの名前。nullにできます。

String

いいえ。

cardinality

この属性の有効な値は次のとおりです:

  • ServiceCardinality.C0__1

  • ServiceCardinality.C0__N

  • ServiceCardinality.C1__1

  • ServiceCardinality.C1__N

デフォルト値はServiceCardinality.C1__1です。

enum

いいえ。

contextClassloader

この属性の有効な値は次のとおりです:

  • ServiceClassloader.CLIENT

  • ServiceClassloader.SERVICE_PROVIDER

  • ServiceClassloader.UNMANAGED

デフォルト値はServiceClassloader.CLIENTです。

enum

いいえ。

timeout

サービス解決のタイムアウト(ミリ秒単位)。

デフォルト値は30000です。

int

いいえ。

serviceType

挿入するサービスのインタフェース(またはクラス)。

デフォルト値はService.classです。

Class

いいえ。

filter

一致するサービスを絞り込むフィルタを指定します。値はnullでもかまいません。

String

いいえ。


I.5.2

例I-5 では、@Service注釈の使用方法について説明します。

例I-5 @Service注釈

@Service(filter = "(Name=StockDs)")
public void setDataSourceService(DataSourceService dss) {
    initStockTable(dss.getDataSource());
}

その他の例は、2.7項「イベント型リポジトリにアクセス」を参照してください。