1

メッセージ駆動型Beanを既存のJavaEEアプリケーションに追加しようとしています。デプロイメント記述子ejb-jar.xmlを変更中です。私のejb-jar.xmlは次のようになります。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD EnterpriseJavaBeans          2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
    <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="ejb-jar_1" version="2.1" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
          ...
          <enterprise-beans>
                  ...
                  <session> 
                      ...
                      <service-ref> ... <service-ref>
                  </session>
                  <message-driven>
                        <ejb-name>Services</ejb-name>
                        <ejb-class>com.pega.pegarules.internal.etier.mdb.PRJMSListenerBoot</ejb-class>
                        <transaction-type>Container</transaction-type>
                        <message-driven-destination id="MessageDrivenDestination_Services">
                           <destination-type>javax.jms.Queue</destination-type>
                        </message-driven-destination>
                  </message-driven>
                    ...
       </ejb-jar>

アプリケーションをWebsphereにデプロイしようとすると、次のエラーが発生します。

    [10/16/12 17:20:05:671 CDT] 00000024 webapp I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0292I: Servlet Message -   [isclite#isclite.war]:.action: ApplicationDeploymentDetailForm was null.Creating new form bean and storing in session 
    [10/16/12 17:20:19:524 CDT] 00000046 wtp W Parse exception for [ public ID [ null ] and system ID [ null ] ] [ java.lang.IllegalStateException: Parent Translator (EnterpriseBeansTranslator(entity|session|message-driven,1696032023)) did not find a Child Translator for "message-driven-destination". ] 

xmlファイルを数日間試した後、上記のejb-jar要素で指定された名前空間を削除すると、message-driven-destinationは正しく変換されますが、要素は同じ子トランスレータが見つからないというエラーで失敗することがわかりました。

したがって、これは名前空間の競合の問題であると思います。誰かが私がこれを解決するのを手伝ってくれるなら、私は賞賛します。

前もって感謝します。

4

1 に答える 1

2

私はその問題を理解しました。ejb-jar-2.1.xsdは、メッセージ駆動型からの非推奨のメッセージ駆動型宛先要素です。message-driven-destinationはejb-jar_2.0仕様の一部です。2.0から2.1への変換は次のとおりです。

EJB 2.0のメッセージ駆動型Bean要素の例:

   <message-driven id="Mdb20">
       <ejb-name>Mdb</ejb-name>
       <ejb-class>ejbs.MdbBean</ejb-class>
       <transaction-type>Bean</transaction-type>
       <message-selector>mdbMessage</message-selector>
       <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
       <message-driven-destination>
      <destination-type>javax.jms.Topic</destination-type>
      <subscription-durability>Durable</subscription-durability>
       </message-driven-destination>
   </message-driven>

EJB 2.1のメッセージ駆動型Bean要素の例:

<message-driven id="Mdb21">
   <ejb-name>Foo/ejb-name>
   <ejb-class>ejbs.FooBean</ejb-class>
   <messaging-type>javax.jms.MessageListener</messaging-type>
   <transaction-type>Bean/transaction-type>
   <message-destination-type>javax.jms.Topic</message-destination-type>
    <activation-config>
 <activation-config-property>
   <activation-config-property-name>destinationType</activation-config-property-name>
   <activation-config-property-value>javax.jms.Topic</activation-config-property-value>
 </activation-config-property>
 <activation-config-property>
   <activation-config-property-name>subscriptionDurability</activation-config-property-name>
     <activation-config-property-value>Durable</activation-config-property-value>
  </activation-config-property>
  <activation-config-property>
     <activation-config-property-name>acknowledgeMode</activation-config-property-name>
     <activation-config-property-value>AutoAcknowledge</activation-config-property-value>
  </activation-config-property>
  <activation-config-property>
    <activation-config-property-name>messageSelector</activation-config-property-name>
    <activation-config-property-value>fooSelector</activation-config-property-value>
  </activation-config-property>
 </activation-config>
</message-driven>
于 2012-10-27T14:25:35.790 に答える