2017-09-19 9 views
0

私は現在、いくつかの古いEJB2コードとインターフェイスする一連のEJBを書いています。その一環として、私はejb-jar.xmlデプロイメント記述子を持っています。デプロイメント記述子には、セッションBeanのresource-refsとejb-refsが含まれています。これらの定義はすべて基本的に同じです。セッションBeanの名前だけが異なります。明らかに、これは理想的ではありません。新しいBeanを追加するたびに、大きなXMLブロックをコピーして貼り付ける必要があります。重複することなく、複数の定義でこれらの参照を再利用する方法はありejb-jar.xmlデプロイメント記述子の要素を再利用するには?

<ejb-jar 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1"> 
    <enterprise-beans> 
     <session> 
      <ejb-name>/* redacted */</ejb-name> 

      <resource-ref> 
       <res-ref-name>/* redacted */</res-ref-name> 
       <res-type>javax.sql.DataSource</res-type> 
       <res-auth>Application</res-auth> 
       <lookup-name>/* redacted */</lookup-name> 
      </resource-ref> 

      <ejb-ref> 
       <ejb-ref-name>/* redacted */</ejb-ref-name> 
       <ejb-ref-type>Session</ejb-ref-type> 
       <home>/* redacted */</home> 
       <remote>/* redacted */</remote> 
      </ejb-ref> 

      /* about 20 more ejb-refs later... */ 
     </session> 

     /* several near identical session beans here ... */ 
</ejb-jar> 

構造は次のようになりますか?あるいは、同じ最終結果を達成するためのより良い方法がありますか?

+0

このWebsphereはありますか? websphere 7より前では(そしてパッチ7でもパッチが適用されない限り)、これにはJava EE 5が付属しているため、解決策はありません。JEE6にはグローバルなリソース参照がありますので、特定の製品に対応するドキュメントをチェックする必要があります。適切なバージョンのRADを使用している場合は、自動的にこれを処理することもあります。 – Gautam

+0

@Gautam:ありがたいことに - 私たちのアプリは従来のものですが、それは*従来のものではありません:p JBoss 7もサポートする必要があります。この提案のおかげで、グローバルなリソース参照を調べます。 –

+0

ここをクリックしてください[JEEネームスペース](https://www.ibm.com/support/knowledgecenter/en/SS7JFU_8.5.5/com.ibm.websphere.express.doc/ae/cejb_bindingsejbfp.html#cejbbindingsejbfp__javaGlobalNamespaces )。 – Gautam

答えて

0

具体的なシナリオでは、EJBをプレーンなJARファイルではなくWARとしてパッケージ化することで、この問題を解決できました。これにより、私はweb.xmlの参照をアプリケーション全体ではなく全体として提供できました。 Bean単位のレベル。

関連する問題