6.2. components.xml によるコンポーネントの設定


components.xml ファイルはプロパティ設定よりパワフルです。次を行うことができます。
  • @Name アノテーションが付けられ、Seam のデプロイメントスキャナーで検出されたアプリケーションコンポーネントや組み込みコンポーネントなど自動的にインストールされているコンポーネントの設定を行います。
  • Seam コンポーネントとして @Name アノテーションが付かないクラスをインストールします。別々の名前で複数回インストールが可能なインフラストラクチャコンポーネントに対して最も役立ちます (たとえば、 Seam 管理永続コンテキストなど)。
  • @Name アノテーションは付いているが、そのコンポーネントはインストールしないことを示す @Install アノテーションが付いているためデフォルトではインストールされないコンポーネントをインストールします。
  • コンポーネントのスコープを無効にします。
components.xml ファイルは次の 3 つの異なる場所のいずれかに置くことができます。
  • WARWEB-INF ディレクトリ
  • JARMETA-INF ディレクトリ
  • @Name アノテーション付きのクラスを含む任意のJAR ディレクトリ
コンポーネントにデフォルトではインストールしないことを示している @Install アノテーションがない限り、デプロイメントスキャナーが seam.properties ファイルまたは META-INF/components.xml ファイルを持つ @Name アノテーション付きのクラスを見つけた場合、Seam コンポーネントはインストールされます。components.xml ファイルはアノテーションを無効にしなければならない特殊なケースを処理します。
例えば次の components.xml ファイルは jBPM をインストールします。
<components xmlns="http://jboss.com/products/seam/components" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:bpm="http://jboss.com/products/seam/bpm"> 
  <bpm:jbpm/> 
</components>
Copy to Clipboard Toggle word wrap
次の例も jBPM をインストールします。
<components> 
  <component class="org.jboss.seam.bpm.Jbpm"/> 
</components>
Copy to Clipboard Toggle word wrap
この例は 2 種類の異なる Seam 管理永続コンテキストをインストールして設定します。
<components xmlns="http://jboss.com/products/seam/components" 
            xmlns:persistence="http://jboss.com/products/seam/persistence">

    <persistence:managed-persistence-context name="customerDatabase"
         persistence-unit-jndi-name="java:/customerEntityManagerFactory"/>
        
    <persistence:managed-persistence-context name="accountingDatabase"
       persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/>            

</components>
Copy to Clipboard Toggle word wrap
この例も 2 種類の異なる Seam 管理永続コンテキストをインストールして設定します。
<components>
  <component name="customerDatabase" 
             class="org.jboss.seam.persistence.ManagedPersistenceContext">
    <property name="persistenceUnitJndiName">
      java:/customerEntityManagerFactory
    </property>
  </component>
    
  <component name="accountingDatabase"
             class="org.jboss.seam.persistence.ManagedPersistenceContext">
    <property name="persistenceUnitJndiName">
      java:/accountingEntityManagerFactory
    </property>
  </component>
</components>
Copy to Clipboard Toggle word wrap
この例はセッションスコープの Seam 管理永続コンテキストを作成します (実際にはお勧めしません)。
<components xmlns="http://jboss.com/products/seam/components" 
            xmlns:persistence="http://jboss.com/products/seam/persistence">

  <persistence:managed-persistence-context 
          name="productDatabase" scope="session"
          persistence-unit-jndi-name="java:/productEntityManagerFactory"/>        

</components>
Copy to Clipboard Toggle word wrap
<components>
            
  <component name="productDatabase" scope="session"
             class="org.jboss.seam.persistence.ManagedPersistenceContext">
    <property name="persistenceUnitJndiName">
      java:/productEntityManagerFactory
    </property>
  </component>

</components>
Copy to Clipboard Toggle word wrap
永続コンテキストなど基盤となるオブジェクトには auto-create オプションが一般的に使用され、@In アノテーションを使うときに明示的に create=true を指定する必要がありません。
<components xmlns="http://jboss.com/products/seam/components" 
            xmlns:persistence="http://jboss.com/products/seam/persistence">

  <persistence:managed-persistence-context 
          name="productDatabase" auto-create="true"
          persistence-unit-jndi-name="java:/productEntityManagerFactory"/>        

</components>
Copy to Clipboard Toggle word wrap
<components>
            
  <component name="productDatabase"
    auto-create="true"
          class="org.jboss.seam.persistence.ManagedPersistenceContext">
    <property name="persistenceUnitJndiName">
      java:/productEntityManagerFactory
    </property>
  </component>

</components>
Copy to Clipboard Toggle word wrap
<factory> 宣言は値バインディング式もしくはメソッドバインディング式を指定し、 これが最初に参照されたときにコンテキスト変数の値を初期化します。
<components> 
  <factory name="contact" method="#{contactManager.loadContact}" 
           scope="CONVERSATION"/>
</components>
Copy to Clipboard Toggle word wrap
次のように Seam コンポーネントの エイリアス (別名) が生成可能です。
<components> 
  <factory name="user" value="#{actor}" scope="STATELESS"/> 
</components>
Copy to Clipboard Toggle word wrap
よく使用される式に対してもエイリアスを作成できます。
<components> 
  <factory name="contact" value="#{contactManager.contact}" 
           scope="STATELESS"/>
</components>
Copy to Clipboard Toggle word wrap
auto-create="true"<factory> 宣言とよく併用されます。
<components> 
  <factory name="session" value="#{entityManager.delegate}" 
           scope="STATELESS" auto-create="true"/> 
</components>
Copy to Clipboard Toggle word wrap
デプロイメントとテストの両方において同じ components.xml ファイルが使用されることがあります (若干の変更あり)。 Seam は components.xml 内に @wildcard@ 形式のワイルドカードを配置することが可能で、 Ant ビルドスクリプトまたはクラスパスに components.properties というファイルを与えることによって置き換えることができます (2 番目のアプローチを Seam のサンプルで見ることができます)。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat