ヘッダーをスキップ
Oracle® Fusion Middleware Content Integration Suite開発者ガイド
11g リリース1 (11.1.1)
E64851-01
  ドキュメント・ライブラリへ移動
ライブラリ
目次へ移動
目次
索引へ移動
索引

前
 
次
 

2 UCPM APIの理解

Universal Content and Process Management (UCPM) APIにより、Oracle Content Serverインスタンスのサービスおよびデータが統一されたオブジェクト・モデルで公開され、それにアクセスできるようになります。UCPM APIは、ターゲット・サーバーと通信するサービスAPIのセットにモデル化されます。

この章の構成は、次のとおりです。

2.1 UCPM APIへのアクセス

UCPM APIにより、Oracle Content Serverインスタンスのサービスおよびデータが統一されたオブジェクト・モデルで公開され、それにアクセスできるようになります。UCPM APIは、ターゲット・サーバーと通信するサービスAPIのセットにモデル化され、サーバーから戻される値オブジェクトであるICISObjectオブジェクトにモデル化されます。

UCPM APIは、getUCPMAPI()メソッドを介してICISApplicationクラスで使用できます。getUCPMAPI()メソッドは、IUCPMAPIオブジェクトへの参照を戻し、すべてのUCPM APIオブジェクトにアクセスできます。パブリックなインタフェースであるIUCPMAPIは、getActiveAPIオブジェクトのロケータです。getActiveAPI()は、SCSActiveAPIオブジェクトへの参照を戻します。SCS APIクラスは、コンテンツ・サーバーと通信し、そこに保存されているコンテンツを処理します。

2.2 UCPM APIの方法

UCPM APIはステートレスです。すべてのメソッド呼出しは、必要な状態をメソッドに渡します。これは、スレッド間でCISApplicationクラスへの参照を共有できることを意味します。

すべてのメソッドの最初のパラメータはIContext Beanです。IContext Beanは、ユーザー名およびセッションIDなどのコンテキスト情報を保持しており、指定されたコマンドを起動するユーザーを識別するために、基礎となるサービスAPIで使用されます。

UCPM APIは、値オブジェクトを戻すサービス指向のAPIで、ICISObjectオブジェクト(7.6 APIから名前変更)として実装されます。しかし、値オブジェクトのメソッド呼出し自体は、サーバー上のコンテンツを変更しません。変更を適用する前に、UCPM APIを呼び出してパラメータとして値オブジェクトを渡す必要があります。

例:

SCSActiveAPI activeAPI = m_cisApplication.getUCPMAPI ().getActiveAPI ();
ISCSDocumentID documentID = (ISCSDocumentID) m_cisApplication.getUCPMAPI ().
  createObject(ISCSDocumentID.class);
documentID.setDocumentID("10");
ISCSDocumentInformationResponse docResponse =
  activeAPI.getDocumentInformationAPI ().
  getDocumentInformationByID(m_context, documentID);
ISCSContent content = docResponse.getDocNode();

// call does not change object on server
  content.setTitle ("New Title");

// now item is updated on server after this call
  activeAPI.getDocumentUpdateAPI ().updateInfo (m_context, content);

2.3 CISの初期化

Content Integration Suite (CIS)は、com.stellent.cis.implパッケージにあるCISApplicationFactoryクラスにアクセスすることによって初期化されます。

この項の内容は次のとおりです。

2.3.1 初期化

CISの初期化は、アプリケーションごとに1回発生します。CIS APIはステートレスであるため、初期化されたCISApplicationインスタンスは安全にスレッド間で共有できます。

CISを初期化するには、いくつかのプロパティを定義する必要があります。cis.config.typeはserverに、cis.config.server.typeはstandaloneにする必要があります。アダプタ構成ファイルには、コンテンツ・サーバーと通信するためのXML形式の構成情報が含まれています。

初期化の例

システムを初期化し、クラスパスからadapterconfig.xmlファイルを読み取ります。

cis.config.type=server
cis.config.server.type=standalone
cis.config.server.adapterconfig=classpath:/adapterconfig.xml

サンプル・コード:

ICISApplication application;
  URL xmlRes = new File ("adapterconfig.xml").toURL()
  Properties properties = new Properties();
  properties.setProperty(ICISApplication.PROPERTY_CONFIG_TYPE, "server");
  properties.setProperty(ICISApplication.PROPERTY_CONFIG_SERVER_ADAPTER_CONFIG,
    xmlRes.toExternalForm());

properties.setProperty(ICISApplication.PROPERTY_CONFIG_SERVER_TYPE, "standalone");
application = CISApplicationFactory.initialize(properties);

プロパティ定義

次の表に、プロパティの定義を示します。

プロパティ 説明
cis.config.type serverに設定する必要があります。
cis.config.server.type standaloneに設定する必要があります。
cis.config.server.adapterconfig アダプタ構成ファイルを指すURLです。標準的なURLに加え、クラスパスの形式(classpath:/)またはファイル形式(file:/)も可能です。
cis.config.server.temporarydirectory ファイル転送、ストリーミングおよびファイル・キャッシュに使用される一時ディレクトリの場所です。

2.3.2 SCSInitializeServlet

SCSInitializeServletは、Webアプリケーション内からCISApplicationインスタンスを初期化するための便利な方法です。ここで説明するプロパティは、いずれもSCSInitializeServletで使用できます。SCSInitializeServletは、プロパティ・ファイルを使用して外部から設定できます。cis.initialization.fileプロパティは、初期化プロパティを含むプロパティ・ファイルへのパス(Web相対パスまたはクラスパス参照のいずれか)を設定できます。これにより、初期化を簡単にプロパティ・ファイルへ外部化できます。

デフォルトでは、SCSInitializeServletがweb.xmlファイル内でプロパティを検索できない場合、WARからのプロパティ・ファイルのロードを試行し、その次に、デフォルト値の/cis-initialization.propertiesを使用してクラスパスからのロードを試行します。このように、cis-initialization.propertiesというファイルをクラスパス(つまり、adapterconfig.xmlファイルと同じディレクトリ)に置く場合は、そのファイルが起動時に読み込まれます。

CISApplicationクラスで定義されているように、このプロパティ・ファイルにはすべての標準的な初期化プロパティを保持できます。これにより、CISをどのように初期化するかの構成をEAR/WARファイルの範囲外に移動できます。

サーバー・プロパティ定義

サーバー・プロパティの定義を次に示します。cis-initialization.propertiesという名前のファイルを作成し、そのファイルをアンバンドルのCIS配布ファイルのserver-earディレクトリ(これはadapterconfig.xmlファイルを含むディレクトリです)に保存することで、デフォルトをオーバーライドできます。

プロパティ 説明
cis.config.type serverに設定する必要があります(デフォルト)。
cis.config.server.adapterconfig adapterconfig.xmlファイルを指すURLです。標準的なURLに加え、クラスパスの形式(つまり、classpath:/)も可能です。
cis.config.server.type.options.ejb=true デフォルトはtrue(EJBが有効)です。
cis.config.server.type.options.rmi=true デフォルトはtrue(MIが有効)です。

初期化処理

起動時、SCSInitializeServletサーブレットはCISサーバーの初期化処理を開始します。これは、web.xmlファイルおよびクラスパスから様々なプロパティのロードを試行します(つまり、cis-initialization.properties)。そして、これらのプロパティをstaticメソッドのCISApplicationFactory.initialize(…)に渡します。この項では、この操作の順序について説明します。

SCSIntitialize init(ServletConfig)

Webアプリケーションの初期化中にWebアプリケーションのコンテナによって呼び出されます。

  1. web.xmlからプロパティをロードします。

  2. クラスパスの/cis-initialization.propertiesからプロパティをロードします。

  3. CISApplicationFactory.initialize(properties)を呼び出します。

  4. CISWebHelperクラスを介して、サーブレット・コンテキストの属性としてCISApplicationおよびコマンド・アプリケーション・インスタンスを設定します。

CISApplicationFactory initialize(properties)

SCSInitializeのオブジェクト・インスタンスのinit(…)メソッドから呼び出されます。CISApplicationFactory.initializeCisApplication(properties)を呼び出します。

CISApplicationFactory initializeCisApplication(properties)

CISをクライアント・モードで起動するか、またはサーバー・モードで起動するか決定します。CISApplicationFactory.initializeServer(properties)を呼び出します。

CISApplicationFactory initializeServer(properties)

CISApplicationFactory.initialize(properties)から呼び出されます。

  1. アダプタの構成URLを作成します(最終的にadapterconfigをロードするために使用されます)。

  2. IsolatedJarClassloaderをロードします。

  3. CISApplication.initialize(properties)を呼び出します。

2.4 Web環境での統合

SCSInitializeServletを起動してCISアプリケーションを登録する場合は、次の設定をweb.xmlに追加します。

<servlet id="scsInitialize">
  <servlet-name>scsInitialize</servlet-name>
  <display-name>SCS Initialize Servlet</display-name>
  <servlet-class>com.stellent.cis.web.servlets.SCSInitializeServlet
    </servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

search.jspと呼ばれる新規のJavaServerページを追加する場合は、次のようになります。

<%-- JSTL tag library --%>
<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c" %>

<%--  CIS Application object placed in servlet context by the SCSInitialize servlet. Get the CIS Application and make a query --%>

<%
ICISApplication cisApplication =
  (ICISApplication) request.getSession().getServletContext().
    getAttribute ("CISApplication");
ISCSSearchAPI searchAPI =
  cisApplication.getUCPMAPI ().getActiveAPI ().getSearchAPI ();

// create a context
ISCSContext context =
  cisApplication.getUCPMAPI ().getActiveAPI ()._createSCSContext ();
  context.setUser ("sysadmin");

// execute the search
ISCSSearchResponse response =
  searchAPI.search (context, "dDocAuthor <substring> 'sysadmin'", 20);
%>
<!-- model the search results as desired -->

SCSInitializeServletにより、javax.servlet.ServletContext内のCISApplicationという名前の属性として、初期化済のCISApplicationクラスが配置されます。このCISApplicationインスタンスはWebアプリケーション全体で使用でき、スレッド・セーフです。1つのインスタンスをアプリケーション間で共有できます。

2.5 クラスのロード

UCPM 8.0.0 APIでは、CIS APIを使用するすべてのアプリケーションから特定のライブラリの依存関係を分離するため、カスタム・クラス・ローダーが使用されます。詳細は、Java 2プラットフォームAPI仕様を参照してください。

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html

この項の内容は次のとおりです。

2.5.1 カスタム・クラス・ローダー

このパラダイムでの実装は、com.stellent.cis.impl.IsolatedJarClassLoaderオブジェクトに含まれています。このカスタム・クラス・ローダーにより、jarは、ライブラリとして機能するネストされたjarファイルのセットを持つことができます。ネストされたjarファイルの構造を次に示します。

+ cis-application-8.0.0.jar
    +-- com/stellent/cis/...
    +-- META-INF
    +-- lib/
        +-- spring-1.1.5.jar
        +-- log4j-1.0.3.jar
        +-- ...

/libディレクトリにあるすべてのライブラリは、CISオブジェクトのクラスパスとなります。クラス・ローダーは、親クラス・ローダーからファイルをロードする前に、最初にこのローカル・ディレクトリを問い合せます。

しかし、使用するクライアントはいくつかのAPIクラスへのアクセスを必要とし、それらをクライアントのアプリケーション空間にインポートすることがあり、jarファイルのすべてを分離することはできません。このため、インタフェースのみがアプリケーション空間に公開され、実装は保持されて、依存関係が分離されます。依存関係および実装のためのクラス・ローダーは親ローダーへアクセスできるため、APIを使用するアプリケーションと同じバージョンのインタフェースにアクセスできます。これはまた、クライアントはUCPM APIのインタフェースにのみアクセスできることを意味します。newキーワードを使用して実装クラスを作成しようとすると、その結果はClassNotFoundExceptionになります。

2.5.2 クラス・ローダーの使用方法

このクラス・ローダーを使用するには、システムの初期化に新規のcom.stellent.cis.impl.CISApplicationFactoryオブジェクトを使用します。このオブジェクトは、IsolatedJarClassLoaderを自動的に検出し、必要に応じてこれを使用します。これは、必要ならば、元の形式(すべてのクラス・ファイルおよびライブラリをアプリケーション・レベルに置く形式)でもCISをデプロイできることを意味します。

現在のバージョンでは、CISはクラスパスにcis-client-8.0.0.jarファイルのみを必要とし、その他のライブラリは必要としません。cis-client-8.0.0.jarがアプリケーションのクラスパスにあるなら、次のコードを使用してCISを初期化します。

// the initialization properties (as defined in ICISApplication)
  Properties properties = new Properties ();
  ICISApplication cisApplication = CISApplicationFactory.initialize(properties);

com.stellent.cis.ICISApplicationへの参照を取得したら、APIと対話できます。以前との違いは、インタフェース・オブジェクト(com.stellent.cis.client内のすべて)へのアクセスのみができ、実装オブジェクトへのアクセスはできないということです。

カスタム・コマンドを実装する場合は、そのpublicインタフェースもクラスパスに置く必要があり、実装クラスはcis-client-8.0.0.jarにパッケージ化します。

2.6 オブジェクトの作成

UCPM 8.0.0 APIでは、ライブラリの依存関係および実装クラスを隠すため、カスタマイズされたクラス・ローダーが使用されます。クライアントのインタフェース・クラスのみがユーザーに公開されます。しかし、これはUCPM APIオブジェクトをインスタンス化するためにnewキーワードを使用しないことを意味します。このため、UCPM APIフレームワークでは、IUCPMAPIオブジェクト汎用の_createメソッドを使用して、特定のオブジェクト・インスタンスのインスタンス化をシステムに通知します。

オブジェクトは変更可能で、インタフェースのみが公開されるため、createObjectメソッドを使用して次のように必要なプロパティを設定します。

ISCSDocumentID docID =
  (ISCSDocumentID)ucpmAPI.createObject(ISCSDocumentID.class);
docID.setDocumentID("20");

2.7 UCPM APIとの対話

初期化済CISApplicationインスタンスでは、getUCPMAPI ()メソッド(CISApplicationオブジェクト)は、IUCPMAPIオブジェクトへの参照を戻し、すべてのUCPM APIオブジェクトにアクセスできます。IUCPMAPIインタフェースは、UCPM APIの様々なAPIオブジェクトのロケータです。IUCPMAPIオブジェクトには、Active APIへの参照を取得するためのメソッドがあります。getActiveAPI ()は、コンテンツ・サーバーと通信するためのSCSActiveAPIオブジェクトへの参照を戻します。これにより、必要なAPIにアクセスし、UCPM APIを介したターゲット・サーバーへの呼出しを開始できます。

新規にインスタンス化されたICISObjectオブジェクトを使用したAPIオブジェクトの呼出し

多くのUCPM API呼出しは、ICISObjectまたはICISObjectから継承されたインタフェースを受け取ります。たとえば、ISCSDocumentInformationAPI (SCS API)では、getDocumentInformationByID ()メソッドはパラメータとしてISCSDocumentIDオブジェクトを受け取ります。

完全修飾メソッド名は次のようになります。

ICISApplication.getUCPMAPI ().getActiveAPI ().getDocumentInformationAPI ()

このような場合、パラメータとして渡す有効なオブジェクトへの参照を取得するため、別のICISObjectからオブジェクト参照を取得するか、またはUCPM APIで使用可能な汎用のcreateObjectメソッドを使用してICISObjectの新規インスタンスを作成できます。CIS 11gR1では、ライブラリの依存関係および実装クラスを隠すため、カスタマイズされたクラス・ローダーが使用されます。クライアントのインタフェース・クラスのみがユーザーに公開されます。しかし、これはUCPM APIオブジェクトをインスタンス化するためにnewキーワードを使用しないことを意味します。このため、CIS APIフレームワークでは、IUCPMAPIオブジェクト汎用の作成メソッドを使用して、特定のオブジェクト・インスタンスのインスタンス化をシステムに通知します。createObjectメソッドにより、任意のICISObjectの新規インスタンスを作成できます。

たとえば、ドキュメント情報を問い合せるためにドキュメントIDしかない場合は、次のようにします。

ISCSDocumentInformationAPI documentInfoAPI =
  m_cisApplication.getUCPMAPI ().getActiveAPI ().getDocumentInformationAPI ();

// create the document ID
ISCSDocumentID documentID =
  (ISCSDocumentID) m_cisApplication.getUCPMAPI ().
    createObject (ISCSDocumentID.class);
  documentID.setDocumentID("12345");

ISCSDocumentInformationResponse docResponse =
  documentInfoAPI.getDocumentInformationByID(m_context, documentID);

ICISObjectを必要とする任意のAPIで、createObjectメソッドを使用してAPIオブジェクトの新規インスタンスを作成できます。createObjectメソッドはクライアント側のメソッドであり、ターゲット・サーバーへの呼び出しを行いません。それはICISObject実装のコンストラクタとして扱われます。

コンテンツ・サーバーにチェックインされる新規のコンテンツ・アイテムなど、より複雑なオブジェクトを構築する必要がある場合は、次のように、いくつかのオブジェクトを作成してデータを移入する必要があります。

// Create an empty content object
ISCSContent content =
  (ISCSContent) m_cisApplication.getUCPMAPI ().createObject(ISCSContent.class);

// Create an empty content ID object, and then give it a content ID
ISCSContentID contentID = (ISCSContentID) m_cisApplication.getUCPMAPI ().
  createObject(ISCSContentID.class);
  contentID.setContentID("my_document");

// Set all of the properties of the content item required for check in
  content.setContentID(contentID);
  content.setAuthor (context.getUser ());
  content.setTitle ("Document Title");
  content.setSecurityGroup ("Public");
  content.setType ("ADACCT");
  content.setProperty ("xCustomProperty", "Value for custom property");

2.8 インタフェースIContext

インタフェースIContextは、コマンドAPIとの通信に使用する汎用コンテキストです。このインタフェースは、現在の呼出し元のID、ターゲット・アダプタなどを決定するためのコンテキスト情報を処理します。

このコンテキストには、ユーザー名、アダプタ名を移入する必要があります。アダプタ名はadapterconfig.xmlファイルによって決定され、ユーザー名はターゲット・サーバーの有効なユーザーIDです。

IContextにはサブインタフェースのISCSContextがあります(ISCSContextはIContextインタフェースを拡張します)。ISCSContextは、SCS APIのために使用されるコンテキスト・オブジェクトであり、コンテンツ・サーバーとの通信時にはユーザーのオペレーティング・コンテキストを表します。

コンテキスト・オブジェクトは、_createメソッドを使用して作成できます。このため、ISCSContextはSCSActiveAPIから作成できます。

// create an ISCSContext
  ISCSContext context =
  m_cisApplication.getUCPMAPI ().getActiveAPI ()._createSCSContext ();

コンテキストを作成したら、ユーザー名、アダプタ名を移入する必要があります。これは、IContext Beanのアクセサ・メソッドを使用して実行できます。

  context.setUser ("sysadmin");
  context.setAdapterName ("myadapter");

CIS APIは、ICISCommonContextまたはIContext objectのいずれかを受け取ります。ICISCommonContextは特別な種類のコンテキストで、ISCSContextおよびISISContextのコンテナとして使用されます。これは、いくつかの異なるアダプタ間で情報をフェデレートするAPIで必要とされ、どのアダプタに問合せ、どのユーザー情報を使用するのかを指定します。呼出しが一度に1つのアダプタに対してのみ行われるインスタンスでは、1つのIContextが必要です。

// create an ICommonContext
  ICISCommonContext m_commonContext =
  m_cisApplication.getUCPMAPI ().getCommonAPI ()._createCommonContext ();

ICISCommonContextアダプタを作成したら、それに複数のアダプタを追加できます。この処理には、ICISCommonContext.addContext()メソッドを使用します。任意の数のアダプタを追加できます。ICISCommonContextに追加されたすべてのアダプタは、共通API呼出しの際に個別に使用されます。

同じISCSContextオブジェクトは、複数の問合せ用に、複数スレッドに渡って使用できます。Webアプリケーションのコンテキストでは、最も簡単な方法は、IContextオブジェクトをセッションに追加して、問合せごとにそれをセッションから取得することです。

最初にコンテンツ・サーバーに対してユーザー名を検証するログイン・メソッドがあり、成功したらHttpSessionオブジェクトにIContextオブジェクトを追加するサンプルのWebアプリケーションが提供されています(/SDK/Samples/WebSampleにあります)。詳細は、src/com/stellent/sdk/web/sampleapp/handlers/loginディレクトリにあるLoginActionHandlerクラスを参照してください。

2.9 インタフェースICISObject

インタフェースICISObjectは、UCPM APIのメタデータを持つすべてのオブジェクトのベース・インタフェースです。このため、すべてのUCPM APIオブジェクトはICISObjectから継承されます。インタフェースICISObjectでは、オブジェクト・プロパティの取得および設定が可能です。UCPM APIの呼出しで戻されるオブジェクトは、Bean(再利用可能なソフトウェア・コンポーネント)形式の値オブジェクトで、それはライブ・オブジェクトではなく、サーバー呼出しからのデータをカプセル化したものです。どのような方法であれ、オブジェクトの更新または変更はサーバーのデータには影響を与えません。サーバーのデータは、直接、任意のUCPM APIのメソッドを呼び出すことによってのみ変更できます。

この項の内容は次のとおりです。

2.9.1 プロパティのアクセサ

ICISObjectのほとんどの実装には、それ独自の特定のプロパティのアクセサ・メソッドがあります。しかし、すべてのプロパティはICISObjectのgetProperty ()メソッドを呼び出すことで取得できます。ICISObject.getProperty ()メソッドはICISPropertyオブジェクトを戻します。次のメソッドを使用して、このオブジェクトからプロパティの値またはプロパティの情報を取得できます。

  • getValue()はプロパティの値を戻します。プロパティの値がnullの場合、getValue ()の呼出しの結果はnull参照になります。

  • getDescriptor()は、プロパティの値の内容を説明するプロパティ・ディスクリプタを戻します。

// use the response object from the previous example - retrieve the content object
  ISCSContent content = docResponse.getDocNode ();

// get the title property
  String title = content.getTitle ();

// get the title by using the ICISObject getProperty method
  title = content.getProperty ("title").getValue ().getStringValue ();

指定されたプロパティの参照中にエラーが発生した場合、ICISObjectのプロパティ・メソッドはPropertyRetrievalExceptionをスローします。PropertyRetrievalExceptionはRuntimeExceptionなので、コードで直接キャッチする必要はありません。例外がスローされるよくある例は、要求されたプロパティが存在しない場合、またはプロパティの値に無効なデータが含まれている場合です。この例外をキャッチして、エラーの具体的な理由の詳細を例外クラスに問い合せることができます。

ISCSPropertyもプロパティ・オブジェクトに戻すプロパティ値を設定できます。これを実行するには、適切なsetメソッドを使用するか、またはsetProperty ()を呼び出してBeanのプロパティ名を渡します(両方とも有効で、両方ともターゲット・オブジェクトのプロパティ値を設定します)。

// set the title - using the content object from the previous example
  content.setTitle ("My New Title");

// set using the setProperty method
  content.setProperty ("title", "My New Title");

2.9.2 プロパティのオブジェクト型

プロパティのオブジェクト型は、ICISObjectのプロパティ・メソッドの戻り値によって決定されます。汎用のgetProperty()メソッドを使用する場合、ISCSPropertyValueには、プロパティの値および特定のオブジェクト型(たとえば、boolean、float、longなど)としての値の両方を取得するメソッドがあります。

ISCSPropertyValueは、戻されるISCSPropertyオブジェクトのgetValue()メソッドにより取得します。

汎用のsetProperty()メソッドを使用してプロパティを設定する場合、メソッドに渡されるプロパティ値が正しい型であるか、または単純なBeanUtilsのプロパティ変換を介して適切な型に変換できることが重要です。

Apache BeanUtilは、org.apache.commonsプロジェクトのBeanのプロパティを移入するためのユーティリティです。

ISCSContentオブジェクトを見ると、readOnlyプロパティはブール型です。このため、次の例では、最初の3つのメソッドではプロパティ値の設定に成功し、最後のメソッドでは失敗します。

// correct
  content.setReadOnly (true);
  content.setProperty ("readOnly", Boolean.TRUE);
  content.setProperty ("readOnly", "true");

// incorrect
  content.setProperty ("readOnly", "not a boolean");

setProperty ()メソッドは第2パラメータとしてオブジェクトを受け取るため、booleanのカプセル化が必要です。また、前述したように、このメソッドではBeanUtilsのプロパティ変換が使用されるため、文字列のtrueはbooleanのTRUEに変換されます。前述の例のように、変換できないプロパティの値(たとえば、「not a boolean」)を渡すと例外が発生します。

2.9.3 プロパティのコレクション

使用可能なプロパティのリストは、ICISObjectインタフェースのgetProperties()メソッドを使用して取得できます。これにより、指定したオブジェクトの使用可能なすべてのプロパティが戻されます。

// using the content item from the previous example
  Collection properties = content.getProperties ();

// iterate through the collection
for (Iterator it = properties.iterator (); it.hasNext (); ) {
  ISCSProperty property = (ISCSProperty)it.next ();
  String name = property.getDescriptor ().getName ();
  ICISPropertyValue value = property.getValue ();
  if (value != null) {
     System.out.println (name + " = " + value.getStringValue ());
  }
}

2.10 アダプタ構成ファイル

アダプタ構成ファイル(adapterconfig.xml)には、Oracle Content Serverインスタンスと通信するためのXML形式の構成情報が含まれています。これは、CISレイヤー用にどのサーバーとの通信を開くかを指定します。

1つのサーバーへの1つの接続がアダプタと呼ばれます。adapterconfig.xmlファイルで任意の数のアダプタを構成できます。adapterconfig.xmlファイルは、CISApplicationインスタンスを初期化するために必要です。

この項の内容は次のとおりです。

2.10.1 adapter要素

各アダプタの構成は、XMLマークアップ内の別々の要素です。adapter要素には次の表に示す4つの属性があります。

adapterの属性 説明
type Oracle Content Serverとの接続ではscsに設定する必要があります。
default trueの場合、このタイプのデフォルトのアダプタになります。タイプごとに、デフォルトのアダプタは1つのみが許可されます。
name アダプタの名前。

サンプルのadapter要素を次に示します。

<adapter type="scs" default="true" name="myadapter">

2.10.2 config要素

config要素には、そのアダプタ固有のプロパティを定義するプロパティ要素のセットが含まれています。次に、これらの構成要素について説明します。

SCSアダプタの構成要素

SCSアダプタは、コンテンツ・サーバーと通信します。SCSアダプタの構成要素には、次の表に示す4つの一般的な属性があります。

プロパティ名 説明
post コンテンツ・サーバーのポート。
host コンテンツ・サーバーのホスト名またはIPアドレス。
type 次の値が使用できます。

socket: コンテンツ・サーバーのソケット通信レイヤーを使用します。

mapped: ファイル・アップロードおよびダウンロードのファイル転送に共有ディレクトリを使用します。

web: ファイル転送にHTTPリクエストを使用します。HTTPのBasic認証のため、コンテンツ・サーバーのユーザー名とパスワードが必要です(ファイルのダウンロードのみ)。


サンプルのSCSの構成要素を次に示します。

<adapter name="myadapter" type="scs" default="true">
  <config>
    <property name="host">localhost</property>
    <property name="port">4444</property>
    <property name="type">socket</property>
    <property name="version">75</property>
  </config>
  <beans template=
  "classpath:/META-INF/resources/adapter/adapter-services-scs.jxml"/>
</adapter>

デフォルトでは、コンテンツ・サーバーとのファイルのストリーミングにはコンテンツ・サーバーのソケット通信レイヤーが使用されます。しかし、大容量のチェックインまたはファイル取得では、最適化されたファイル転送オプションであるmappedまたはwebを設定できます。

mapped転送では、コンテンツ・サーバー上の共有ディレクトリからファイルがロードされます。これにより、はるかに高速にファイルを転送でき、その他のリクエストのために使用できるソケットを解放します。mapped転送を使用するには、次のプロパティを定義する必要があります。

プロパティ名 説明
contentServerMappedVault アプリケーション・サーバーから見えるコンテンツ・サーバーのボールト・ディレクトリ。
appServerMappedVault コンテンツ・サーバーから見えるアプリケーション・サーバーのボールト・ディレクトリ。

web転送では、ファイルのダウンロードにコンテンツ・サーバーのWebサーバーへのHTTPリクエストを使用します。web転送を使用するには、次のプロパティを定義する必要があります。

プロパティ名 説明
contentServerAdminID コンテンツ・サーバーに対する認証に使用するコンテンツ・サーバー管理者のID。
contentServerAdminPassword コンテンツ・サーバーに対する認証に使用するコンテンツ・サーバー管理者のパスワード。このパスワードは暗号化されます。

サンプルのweb転送を使用するSCSの構成要素を次に示します。

<adapter type="scs" default="true" name="myadapter">
  <config>
    <property name="port">4444</property>
    <property name="host">localhost</property>
    <property name="type">web</property>
    <property name="contentServerAdminID">sysadmin</property>
    <property name="contentServerAdminPassword">idc</property>
  </config>
</adapter>