2

Weblogic (10.3) MDB を Tibco EMS JMS キューに接続しようとしています。単純な Java/Spring JNDI 接続を使用してキューから読み取ったので、外部 JNDI ルックアップ名が有効であることがわかりました。私のWL外部サーバーの詳細:

JNDI Initial Context Factory: com.tibco.tibjms.naming.TibjmsInitialContextFactory
JNDI Connection URL: tcp://ems-dit-am-uat-1.app.xxx.net:30055
JNDI Properties:
java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory
java.naming.provider.url=tcp://ems-dit-am-uat-1.app.xxx.net:30055
java.naming.security.principal=rdsuat
java.naming.factory.url.pkgs=com.tibco.tibjms.naming
(password entered in Properties Credential box).

行き先:

Name, Local JNDI Name and Remote JNDI name all set to Q.NY.DERIV.DRD.RFI

接続ファクトリー:

Name, Local JNDI Name and Remote JNDI name all set to DRDRFIQueueConnectionFactory
(which simply changes the default connection factory port).
User/password also set here (same as before).

weblogic-ejb-jar.xml

    <weblogic-enterprise-bean>
    <ejb-name>MessageReceiver</ejb-name>
    <message-driven-descriptor>
        <pool>
            <max-beans-in-free-pool>2</max-beans-in-free-pool>
        </pool>
        <destination-jndi-name>Q.NY.DERIV.DRD.RFI</destination-jndi-name>
        <connection-factory-jndi-name>DRDRFIQueueConnectionFactory</connection-factory-jndi-name>
    </message-driven-descriptor>
</weblogic-enterprise-bean>

表示されるエラーは次のとおりです。メッセージ駆動型 EJB: MessageReceiver が JMS 宛先 Q.NY.DERIV.DRD.RFI に接続できません。エラー: 配布先情報を取得できませんでした。宛先 JNDI 名は Q.NY.DERIV.DRD.RFI、プロバイダー URL は null です

構成を weblogic-ejb-jar.xml に移動しようとしました(つまり:

    <weblogic-enterprise-bean>
    <ejb-name>MessageReceiver</ejb-name>
    <message-driven-descriptor>
        <pool>
            <max-beans-in-free-pool>2</max-beans-in-free-pool>
        </pool>
        <destination-jndi-name>Q.NY.DERIV.DRD.RFI</destination-jndi-name>
        <initial-context-factory>com.tibco.tibjms.naming.TibjmsInitialContextFactory</initial-context-factory>
        <provider-url>tcp://ems-dit-am-uat-1.app.xxx.net:30055</provider-url>
        <connection-factory-jndi-name>DRDRFIQueueConnectionFactory</connection-factory-jndi-name>
    </message-driven-descriptor>
</weblogic-enterprise-bean>

しかし、別のエラーが表示されます: 例外アクティブ化モジュール: EJBModule(rfiloader.jar) EJB をデプロイできません: rfiloader.jar からの MessageReceiver: tcp://ems-dit-am-uat-1.app.xxx の EndPointFinder が見つかりません.net:30055

...何か案は?

ありがとうクリス

4

1 に答える 1

2

最終的にこれを達成しました-Weblogic 10.3のバグにより、これは本来あるべきほど単純ではありません.

  1. すべての通常の詳細 (宛先および接続ファクトリーのローカル/リモート JNDI ルックアップ名) を使用して外部サーバーを作成します。

  2. リモート EMS ユーザーと同じ名前 (パスワードを含む) を持つローカル WL ユーザーを作成します。

  3. ejb 資格マッピングを作成します (セキュリティ資格マッピングではありません)。

    • これを行うには、関連するデプロイメントをクリックし、リスト内の関連する ejb 名をクリックしてから、[セキュリティ] タブ、[資格マッピング] タブの順にクリックします。
    • WLS とリモート ユーザーに同じ名前を追加します (ここではパスワードは必要ないようです)。

構成ファイルに次のセクションを追加します。

weblogic-ejb-jar.xml

このファイルの下部で、終了の 'weblogic-enterprise-bean' タグの後、終了の 'weblogic-ejb-jar' タグの前に、次を追加します。

<security-role-assignment>
    <role-name>rficonsumer</role-name>
    <principal-name>rdsuat</principal-name>
</security-role-assignment>

「rficonsumer」ロールは、これら 2 つの構成ファイルにのみ存在し、ここで説明する 3 つのセクションすべてで一貫している限り、どのようなものでもかまいません。プリンシパル名「rdsuat」は、WL 管理コンソール セクションで作成されたユーザーと一致する必要があるため、EMS キュー ユーザーと一致する必要があります。

ejb-jar.xml

  1. 関連する MDB の「メッセージ駆動型」タグ セクションで、「メッセージ駆動型」終了タグの前に次のセクションを最後に追加します。

    rficonsumer

  2. ファイルの最後で、終了タグ「enterprise-beans」の後、終了タグ「ejb-jar」の前に次を追加します。

    rficonsumer

于 2011-07-28T10:52:44.917 に答える