Setting up re-delivery attempts in Foreign JMS Configuration !!!

Hi All
Could anyone please let know if it's possible to set number of re-delivery attempts for a JMS message in case of foreign JMS server configuration.
I am using weblogic 8.1 SP6. If it is possible, the please let me know how to set it up.
Thanks in advance.

Redelivery limits in WebLogic are implemented within WebLogic JMS - not in the MDB container.
If the foreign destination happens to be WebLogic JMS, then you can set a redelivery limit by configuring it on the MDB's source destination.
If the foreign destination is not WebLogic JMS, then I can think of three options:
-- Check with the foreign vendor to see if they have a redelivery limit feature.
-- Consider changing the producer application to set expiration times on the messages (whether this is a useful approach for you depends on your application).
-- Custom code your MDB application to take a different action once it detects a high redelivery count, or perhaps even code a separate application that only dequeues messages that have a high delivery count. Some JMS vendors (such as WebLogic JMS 9.0 and later), include a "JMSXDeliveryCount" property in each message that simplifies such coding.
Hope this helps!
Tom Barnes
WebLogic JMS Developer Team

Similar Messages

  • MDB problem with Foreign JMS MQ

    Hi,
    I have MDB 2.1 and i am trying to deploy in weblogic 10.2 app server. Below is my ejb-jar.xml and weblogic.jar xml config. I have a foreign JMS configured and i have destination and connection factory configured too. I was able to post a message to the queue successfully, but my MDB is not getting executed I am getting below exception during the startup of application. I can see other EJBs in the JNDI but not my MDBs. Please advice and your help is very much appreciated.
    Warning Message:
    <Jun 1, 2010 10:24:04 AM CDT> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: IFIPNCDistributorMDB is unable to connect to the JMS destination: jms/MyQueue. The Error was:
    Can not get distribute destination information. The destination JNDI name is jms/MyQueue, the provider URL is file:/C:/JNDI-Directory>
    weblogic-ejb-jar.xml
    <weblogic-enterprise-bean>
    <ejb-name>MDB</ejb-name>
    <message-driven-descriptor>
    <pool>
    <max-beans-in-free-pool>4</max-beans-in-free-pool>
    <initial-beans-in-free-pool>4</initial-beans-in-free-pool>
    </pool>
    <destination-jndi-name>jms/IFIPNCQueue</destination-jndi-name>
    <initial-context-factory>com.sun.jndi.fscontext.RefFSContextFactory</initial-context-factory>
    <provider-url>file:/C:/JNDI-Directory</provider-url>
    <connection-factory-jndi-name>jms/MyQCF</connection-factory-jndi-name>
    </message-driven-descriptor>
    <reference-descriptor>
    <resource-description>
    <res-ref-name>MyQCF</res-ref-name>
    <jndi-name>jms/MyQCF</jndi-name>
    </resource-description>
    <resource-description>
    <res-ref-name>MyQueue</res-ref-name>
    <jndi-name>jms/MyQueue</jndi-name>
    </resource-description>
    </reference-descriptor>
    <jndi-name>MDB</jndi-name>
    </weblogic-enterprise-bean>
    ejb-jar.xml
    <message-driven id="MDB">
                   <ejb-name>MDB</ejb-name>
                   <ejb-class>com.IFIPNCDistributorMDB</ejb-class>               
                   <transaction-type>Bean</transaction-type>               
                   <message-driven-destination>
                        <destination-type>javax.jms.Queue</destination-type>
                   </message-driven-destination>
                   <resource-ref>
              <res-ref-name>jms/QCF</res-ref-name>
              <res-type>javax.jms.QueueConnectionFactory</res-type>
              <res-auth>Application</res-auth>
              <res-sharing-scope>Unshareable</res-sharing-scope>
         </resource-ref>
         <resource-ref>
              <res-ref-name>jms/MyQueue</res-ref-name>
              <res-type>javax.jms.Queue</res-type>
              <res-auth>Application</res-auth>
              <res-sharing-scope>Unshareable</res-sharing-scope>
              </resource-ref>
              </message-driven>
    Thank You,
    VJ

    Can you setup as in this example:
    Foreign JMS_
    <foreign-server name=”ForeignServer”>
    <default-targeting-enabled>true</default-targeting-enabled>
    <foreign-destination name=”A”>
    <local-jndi-name>A</local-jndi-name>
    <remote-jndi-name>queue/A</remote-jndi-name>
    </foreign-destination>
    <foreign-connection-factory name=”FConf”>
    <local-jndi-name>FConf</local-jndi-name>
    <remote-jndi-name>ConnectionFactory</remote-jndi-name>
    <username>esbuser</username>
    <password-encrypted>{3DES}90sIZwo6Llr9r73p+VXkvQ==</password-encrypted>
    </foreign-connection-factory>
    <initial-context-factory>com.sun.jndi.fscontext.RefFSContextFactory</initial-context-factory>
    <connection-url>file:/C:/JNDI-Directory</connection-url>
    </foreign-server>
    weblogic-ejb-jar.xml_
    <?xml version=’1.0′ encoding=’UTF-8′?>
    <web:weblogic-ejb-jar xmlns:web=”http://www.bea.com/ns/weblogic/weblogic-ejb-jar”>
    <web:weblogic-enterprise-bean>
    <web:ejb-name>RequestEJB-2518965873970113789–2352f820.127bd3f293c.-7fdb</web:ejb-name>
    <web:message-driven-descriptor>
    <web:pool>
    <web:max-beans-in-free-pool>1000</web:max-beans-in-free-pool>
    <web:initial-beans-in-free-pool>1</web:initial-beans-in-free-pool>
    </web:pool>
    <web:destination-jndi-name>A</web:destination-jndi-name>
    <web:connection-factory-jndi-name>FConf</web:connection-factory-jndi-name>
    </web:message-driven-descriptor>
    <web:transaction-descriptor>
    <web:trans-timeout-seconds>600</web:trans-timeout-seconds>
    </web:transaction-descriptor>
    <web:resource-description>
    <web:res-ref-name>jms/ConnectionFactory</web:res-ref-name>
    <web:jndi-name>FConf</web:jndi-name>
    </web:resource-description>
    <web:resource-description>
    <web:res-ref-name>jms/QueueName</web:res-ref-name>
    <web:jndi-name>A</web:jndi-name>
    </web:resource-description>
    </web:weblogic-enterprise-bean>
    </web:weblogic-ejb-jar>
    Note, local JNDI names in the foreign jms server should be used for destination-jndi and conection-factory-jndi. No need to specify provider URL in deployment descriptors. Instead it is specified at the foreign jms setup.
    Also you should use the same resource-reference names in both ejb-jar & weblogic-ejb-jar.xml's., In above example resource-reference section of ejb-jar should look like:
    <resource-ref>
    <res-ref-name>jms/ConnectionFactory</res-ref-name>
    <res-type>javax.jms.QueueConnectionFactory</res-type>
    <res-auth>Application</res-auth>
    <res-sharing-scope>Unshareable</res-sharing-scope>
    </resource-ref>
    <resource-ref>
    <res-ref-name>jms/QueueName</res-ref-name>
    <res-type>javax.jms.Queue</res-type>
    <res-auth>Application</res-auth>
    <res-sharing-scope>Unshareable</res-sharing-scope>
    </resource-ref>

  • Setting up Foreign JMS Dest. to MQ: JMS Destination not found

    I'm trying to set up a foreign JMS destination to an MQ queue. There are several steps you have to get right for this to work. I thought I did them all correctly, but when I deploy the app with an MDB that references the JNDI name, it says (in the console) that the destination with the particular JNDI name could not be found.
              I first used JMSAdmin to create the JNDI data in the provider URL file location. I created the qcf and the queue. I've displayed my results that I set with that, and it all looks fine. One thing that I'm unsure about with this, however, is that the document on using JMSAdmin doesn't make it clear exactly which field in the "queue" definition is the JNDI name, and which is the MQ queue name. My guess is that the value of the "q" field is the JNDI name, and the value of the "queue" field is the MQ queue name. I'm not certain.
              I then created the foreign JMS info in the WebLogic console. I first created the foreign JMS server, using the "RefFSContextFactory" class, and my file location for the provider URL.
              I then created the foreign JMS ConnectionFactory, specifying my JNDI name in both the "local" and "remote" fields. I don't know what the difference is between those two. I did NOT enter a value in the "User Name" or "Password" fields. I don't know whether that's an issue.
              I then created the foreign JMS destination. I set the "local" and "remote" JNDI values to the JNDI value I set in the "q" field in JMSAdmin.
              I then defined an app using an MDB, with the "destination-jndi-name" set to the same value I set in the "q" field.
              When I deployed the app, I saw an error message on the console saying that when deploying the EJB module, the JNDI name (that I had specified in the "q" field) could not be found.

    David,
              first you should check, whether the JNDI-Entry is deployed. You can
              check this by displaying the jndi-tree on the weblogic console. to do
              this, right click on the server entry and select "view jndi tree".
              the point with the jndi-tree you entered as "local jndi destination"
              should be violet.
              in the definitions of foreign jms-destinations and connection factories
              you always set:
              remote jndi name: the entry which you made in JMSADMIN
              local jndi name: the jndi entry you want to use inside weblogic.
              hope this helps,
              Klaas
              David Karr schrieb:
              > I'm trying to set up a foreign JMS destination to an MQ queue. There are several steps you have to get right for this to work. I thought I did them all correctly, but when I deploy the app with an MDB that references the JNDI name, it says (in the console) that the destination with the particular JNDI name could not be found.
              >
              > I first used JMSAdmin to create the JNDI data in the provider URL file location. I created the qcf and the queue. I've displayed my results that I set with that, and it all looks fine. One thing that I'm unsure about with this, however, is that the document on using JMSAdmin doesn't make it clear exactly which field in the "queue" definition is the JNDI name, and which is the MQ queue name. My guess is that the value of the "q" field is the JNDI name, and the value of the "queue" field is the MQ queue
              > name. I'm not certain.
              >
              > I then created the foreign JMS info in the WebLogic console. I first created the foreign JMS server, using the "RefFSContextFactory" class, and my file location for the provider URL.
              >
              > I then created the foreign JMS ConnectionFactory, specifying my JNDI name in both the "local" and "remote" fields. I don't know what the difference is between those two. I did NOT enter a value in the "User Name" or "Password" fields. I don't know whether that's an issue.
              >
              > I then created the foreign JMS destination. I set the "local" and "remote" JNDI values to the JNDI value I set in the "q" field in JMSAdmin.
              >
              > I then defined an app using an MDB, with the "destination-jndi-name" set to the same value I set in the "q" field.
              >
              > When I deployed the app, I saw an error message on the console saying that when deploying the EJB module, the JNDI name (that I had specified in the "q" field) could not be found.

  • MDB connecting to Foreign JMS server in WL8.1

    Hello,
              I have this problem that I am hoping someone can help me with. There is a
              MDB deployed in a local WL8.1 that is trying to connect to a Foreign JMS
              Server which is also a WL8.1 running in a remote server. This MDB is
              attempting to subscribe to a topic hosted by that foreign server. In the
              local WL8.1 I created a Foreign JMS Server via the adminconsole and mapped
              the connection factory as well as destinations to the Foreign JMS Server.
              The MDB (via its deployment descriptor) only refers to the local JNDI names
              of the ConnectionFactory and Topic. Here are the scenarios concerning
              security:
              1) When security is turned off (user is in group everyone) everything works
              fine. Messages published to the foreign Topic are received by the MDB in
              the local WL8.1 server and processed.
              2) When a security policy is applied to the Topic (via the remote
              adminconsole), the MDB in the local server gets a 'permission denied'. I
              now have to get around this by defining a principle for the MDB to run as
              and to map the credentials of this principle to that of the user in the
              remote environment with access permissions to the Topic.
              3) When I specify the security identity of my MDB, its JNDI lookup of the
              Topic fails with 'not found'.
              4) Even when the security policy in the remote server is reverted back to
              'everyone' (effectively turning security off) but leaving the MDB running as
              the security principle, it still cannot find the Topic.
              I hope this is something that people have seen and dealt with before.
              Thanks for any and all help anyone can provide. I have also included the
              deployment descriptors for this MDB:
              <ejb-jar>
              <enterprise-beans>
              <message-driven>
              <ejb-name>MDB</ejb-name>
              <ejb-class>sample.class.MDB</ejb-class>
              <transaction-type>Container</transaction-type>
              <message-driven-destination>
              <destination-type>javax.jms.Topic</destination-type>
              </message-driven-destination>
              <security-identity>
              <run-as>
              <role-name>OutsideJMSUser</role-name>
              </run-as>
              </security-identity>
              </message-driven>
              </enterprise-beans>
              <assembly-descriptor>
              <security-role>
              <role-name>OutsideJMSUser</role-name>
              </security-role>
              </assembly-descriptor>
              </ejb-jar>
              <weblogic-ejb-jar>
              <weblogic-enterprise-bean>
              <ejb-name>MDB</ejb-name>
              <message-driven-descriptor>
              <pool>
              <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
              </pool>
              <destination-jndi-name>ForeignTopic</destination-jndi-name>
              <connection-factory-jndi-name>ForeignConnectionFactory</connection-factory-j
              ndi-name>
              </message-driven-descriptor>
              <jndi-name>MDB</jndi-name>
              </weblogic-enterprise-bean>
              <security-role-assignment>
              <role-name>OutsideJMSUser</role-name>
              <principal-name>OutsideJMSUser</principal-name>
              </security-role-assignment>
              </weblogic-ejb-jar>
              

    Thanks for the suggestion Greg. I have enabled trust between the two
              domains and that has certainly cut down the variations of SecurityExceptions
              that I get. Now I am consistently only getting a JMSSecurityException with
              a access denied to the topic. I believe I have the credential mapped
              correctly between the run-as local user and the remote authorized user.
              Unfortunately the exception does not specify what username was rejected, it
              would have been useful in determining the next debugging step to take.
              I think you're right, I should engage the security forum for this. Thanks
              again for the help.
              "Greg Brail" <[email protected]> wrote in message
              news:[email protected]...
              > Hmm. The security people (on weblogic.developer.interest.security) might
              > have to help you here, too. When you set the "runAs" identity for the MDB,
              > it's doing everything, including the JNDI lookup, under that identity. So
              if
              > that identity is one that's recognized by the remote domain, then you
              should
              > be OK. One way to make your local identity recognized by the remote domain
              > is to make your domains trusted, but you may wish not to do that.
              >
              > greg
              >
              > "Steve Chan" <[email protected]> wrote in message
              > news:[email protected]...
              > > Hello,
              > >
              > > I have this problem that I am hoping someone can help me with. There is
              a
              > > MDB deployed in a local WL8.1 that is trying to connect to a Foreign JMS
              > > Server which is also a WL8.1 running in a remote server. This MDB is
              > > attempting to subscribe to a topic hosted by that foreign server. In
              the
              > > local WL8.1 I created a Foreign JMS Server via the adminconsole and
              mapped
              > > the connection factory as well as destinations to the Foreign JMS
              Server.
              > > The MDB (via its deployment descriptor) only refers to the local JNDI
              > names
              > > of the ConnectionFactory and Topic. Here are the scenarios concerning
              > > security:
              > >
              > > 1) When security is turned off (user is in group everyone) everything
              > works
              > > fine. Messages published to the foreign Topic are received by the MDB
              in
              > > the local WL8.1 server and processed.
              > >
              > > 2) When a security policy is applied to the Topic (via the remote
              > > adminconsole), the MDB in the local server gets a 'permission denied'.
              I
              > > now have to get around this by defining a principle for the MDB to run
              as
              > > and to map the credentials of this principle to that of the user in the
              > > remote environment with access permissions to the Topic.
              > >
              > > 3) When I specify the security identity of my MDB, its JNDI lookup of
              the
              > > Topic fails with 'not found'.
              > >
              > > 4) Even when the security policy in the remote server is reverted back
              to
              > > 'everyone' (effectively turning security off) but leaving the MDB
              running
              > as
              > > the security principle, it still cannot find the Topic.
              > >
              > > I hope this is something that people have seen and dealt with before.
              > > Thanks for any and all help anyone can provide. I have also included
              the
              > > deployment descriptors for this MDB:
              > >
              > > <ejb-jar>
              > > <enterprise-beans>
              > > <message-driven>
              > > <ejb-name>MDB</ejb-name>
              > > <ejb-class>sample.class.MDB</ejb-class>
              > > <transaction-type>Container</transaction-type>
              > > <message-driven-destination>
              > > <destination-type>javax.jms.Topic</destination-type>
              > > </message-driven-destination>
              > > <security-identity>
              > > <run-as>
              > > <role-name>OutsideJMSUser</role-name>
              > > </run-as>
              > > </security-identity>
              > > </message-driven>
              > > </enterprise-beans>
              > >
              > > <assembly-descriptor>
              > > <security-role>
              > > <role-name>OutsideJMSUser</role-name>
              > > </security-role>
              > > </assembly-descriptor>
              > >
              > > </ejb-jar>
              > >
              > > <weblogic-ejb-jar>
              > > <weblogic-enterprise-bean>
              > > <ejb-name>MDB</ejb-name>
              > > <message-driven-descriptor>
              > > <pool>
              > > <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
              > > </pool>
              > > <destination-jndi-name>ForeignTopic</destination-jndi-name>
              > >
              > >
              >
              <connection-factory-jndi-name>ForeignConnectionFactory</connection-factory-j
              > > ndi-name>
              > > </message-driven-descriptor>
              > > <jndi-name>MDB</jndi-name>
              > > </weblogic-enterprise-bean>
              > >
              > > <security-role-assignment>
              > > <role-name>OutsideJMSUser</role-name>
              > > <principal-name>OutsideJMSUser</principal-name>
              > > </security-role-assignment>
              > >
              > > </weblogic-ejb-jar>
              > >
              > >
              >
              >
              

  • [EJB:010112] - error with WLI8.1 Event Generator for foreign JMS/MQ provider

    I'm getting following error in weblogic server log when starting a JMS Event generator
    to a foreign JMS(MQ5.3) Queue.
    <May 4, 2004 4:44:35 PM PDT> <Warning> <EJB> <BEA-010096> <The Message-Driven
    EJ
    B: mqQueueEventGen is unable to connect to the JMS destination: WAL1021852D_Test
    JMSQueue. Connection failed after 2 attempts. The MDB will attempt to reconnect
    every 10 seconds. This log message will repeat every 600 seconds until the condi
    tion clears.>
    <May 4, 2004 4:44:35 PM PDT> <Warning> <EJB> <BEA-010061> <The Message-Driven
    EJ
    B: mqQueueEventGen is unable to connect to the JMS destination: WAL1021852D_Test
    JMSQueue. The Error was:
    [EJB:010112]The Message Driven Bean 'mqQueueEventGen' is transacted, but the pro
    vider defined in the EJB is not transacted. Provider should be transacted if onM
    essage method in MDB is transacted.>
    My WLI8.1.2 is patched with CR131686_812.zip to support event generator for foreign
    JMS destinations. The foreign JMS/MQ provider is configured properly. QueueSend/Receive
    were tested fine with JMS java code using local JNDI names of foreign JMS objects.
    So we know that foreign Queue is active and accessiable from webLogic.
    Anyone run into this? Solution?
    Thanks,
    Scott

    Hi Scott,
    I need a transaction from the MDB since I am not using an EJb to pursue the action.
    Hence I need to retain the <trans-attribute>Required</trans-attribute> at the
    MDB.
    Have any answers?
    Pradip
    "Scott Yen" <[email protected]> wrote:
    >
    It's resolved.
    The MDB automatically created by JMS Event Generator defaults to be deployed
    with
    “transacted”. That requires the foreign JMS provider to be “XA”.
    The deployment descriptor is created as <domain-directory>/WLIJmsEG_<event_gen_name>.jar
    e.g. C:\bea812\user_projects\domains\jmsInterop\WLIJmsEG_mqQueueEventGen.jar
    Since MQ in the localhost and remote SLUDV18 are not XA-enabled, we had
    to manually
    change the <container-transaction> section in ejb-jar.xml:
    From :
    <trans-attribute>Required</trans-attribute>
    To:
    <trans-attribute>NotSupported</trans-attribute>
    "Scott Yen" <[email protected]> wrote:
    I'm getting following error in weblogic server log when starting a JMS
    Event generator
    to a foreign JMS(MQ5.3) Queue.
    <May 4, 2004 4:44:35 PM PDT> <Warning> <EJB> <BEA-010096> <The Message-Driven
    EJ
    B: mqQueueEventGen is unable to connect to the JMS destination: WAL1021852D_Test
    JMSQueue. Connection failed after 2 attempts. The MDB will attempt to
    reconnect
    every 10 seconds. This log message will repeat every 600 seconds until
    the condi
    tion clears.>
    <May 4, 2004 4:44:35 PM PDT> <Warning> <EJB> <BEA-010061> <The Message-Driven
    EJ
    B: mqQueueEventGen is unable to connect to the JMS destination: WAL1021852D_Test
    JMSQueue. The Error was:
    [EJB:010112]The Message Driven Bean 'mqQueueEventGen' is transacted,
    but the pro
    vider defined in the EJB is not transacted. Provider should be transacted
    if onM
    essage method in MDB is transacted.>
    My WLI8.1.2 is patched with CR131686_812.zip to support event generator
    for foreign
    JMS destinations. The foreign JMS/MQ provider is configured properly.
    QueueSend/Receive
    were tested fine with JMS java code using local JNDI names of foreign
    JMS objects.
    So we know that foreign Queue is active and accessiable from webLogic.
    Anyone run into this? Solution?
    Thanks,
    Scott

  • Configuring WL JMS as a foreign JMS provider with security scope (WLS 8.1)

    Hello, i have a problem accessing a queue from a foreign jms provider, if the queue has a security policy. I have the following scenario:
              1) Server server1 in domain1 (WLS81) has a JMS Server with one queue queue1 with a security policy "Caller is a member of the group GROUP_QUEUE". There is also a user USER_QUEUE user defined, which belongs to the this group.
              There is also a ConnectionFactory with "XA Connection Factory Enabled = true" configured.
              The queue and the connection factory are visible in the jndi tree of this server.
              2) Server server2 has a foreign jms server. Foreign JMSConnectionFactory and foreign JMSDestination refer to the jndi entries of server 1. For Foreign JMS Connection Factory username is set to USER_QUEUE. JNDI entries for foreign references are visible in jndi tree of this server.
              I wrote a standalone client to store messages in the queue accessing server1 with USER_QUEUE sucessfully.
              Now I try to deploy a MDB on server2 accessing the queue on server 1. I tried different versions of ejb-jar.xml/weblogic-ejb-jar.xml to access the queue, but with no luck.
              scenario a): no security entries in both descriptors; weblogic-descr has entries <destination-jndi-name> and <connection-factory-jndi-name> pointing to the local jndi names. REsult:
              <11.02.2005 19.16 Uhr CET> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB:
              CancelEasyMoneyBean is unable to connect to the JMS destination: prepaid.Cancel
              EasyMoneyQueue. The Error was:
              [EJB:010196]'weblogic.jms.common.JMSSecurityException: Access denied to resource
              : type=<jms>, application=, destinationType=queue, resource=CancelEasyMoneyQueue
              , action=receive' Linked exception = 'weblogic.jms.common.JMSSecurityException:
              Access denied to resource: type=<jms>, application=, destinationType=queue, reso
              urce=CancelEasyMoneyQueue, action=receive'
              So entering username and password for ForeignJMSConnectionFactory doesn't do the trick.
              scenario b:) trying to set additional security entries in both descriptors. I added a role queueUser to my mdb and to weblogic-descr a
              <security-role-assignment>
              <role-name>queueUser</role-name>
              <principal-name>USER_QUEUE<principal-name>
              </security-role-assignment>
              I added the user USER_QUEUE and the group GROUP_QUEUE to server2.
              Now server 1 throws exception after redeployment on server 2:
              java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[USER_QUEUE, GROUP_QUEUE].
              java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[USER_QUEUE, GROUP_QUEUE]
              at weblogic.security.service.SecurityServiceManager.seal(SecurityService
              Manager.java:680)
              Has anybody an idea or a pointer how to define access from a mdb to a foreign queue using security ?
              Thanks in advance,
              Rainer

    Hello, i have a problem accessing a queue from a foreign jms provider, if the queue has a security policy. I have the following scenario:
              1) Server server1 in domain1 (WLS81) has a JMS Server with one queue queue1 with a security policy "Caller is a member of the group GROUP_QUEUE". There is also a user USER_QUEUE user defined, which belongs to the this group.
              There is also a ConnectionFactory with "XA Connection Factory Enabled = true" configured.
              The queue and the connection factory are visible in the jndi tree of this server.
              2) Server server2 has a foreign jms server. Foreign JMSConnectionFactory and foreign JMSDestination refer to the jndi entries of server 1. For Foreign JMS Connection Factory username is set to USER_QUEUE. JNDI entries for foreign references are visible in jndi tree of this server.
              I wrote a standalone client to store messages in the queue accessing server1 with USER_QUEUE sucessfully.
              Now I try to deploy a MDB on server2 accessing the queue on server 1. I tried different versions of ejb-jar.xml/weblogic-ejb-jar.xml to access the queue, but with no luck.
              scenario a): no security entries in both descriptors; weblogic-descr has entries <destination-jndi-name> and <connection-factory-jndi-name> pointing to the local jndi names. REsult:
              <11.02.2005 19.16 Uhr CET> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB:
              CancelEasyMoneyBean is unable to connect to the JMS destination: prepaid.Cancel
              EasyMoneyQueue. The Error was:
              [EJB:010196]'weblogic.jms.common.JMSSecurityException: Access denied to resource
              : type=<jms>, application=, destinationType=queue, resource=CancelEasyMoneyQueue
              , action=receive' Linked exception = 'weblogic.jms.common.JMSSecurityException:
              Access denied to resource: type=<jms>, application=, destinationType=queue, reso
              urce=CancelEasyMoneyQueue, action=receive'
              So entering username and password for ForeignJMSConnectionFactory doesn't do the trick.
              scenario b:) trying to set additional security entries in both descriptors. I added a role queueUser to my mdb and to weblogic-descr a
              <security-role-assignment>
              <role-name>queueUser</role-name>
              <principal-name>USER_QUEUE<principal-name>
              </security-role-assignment>
              I added the user USER_QUEUE and the group GROUP_QUEUE to server2.
              Now server 1 throws exception after redeployment on server 2:
              java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[USER_QUEUE, GROUP_QUEUE].
              java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[USER_QUEUE, GROUP_QUEUE]
              at weblogic.security.service.SecurityServiceManager.seal(SecurityService
              Manager.java:680)
              Has anybody an idea or a pointer how to define access from a mdb to a foreign queue using security ?
              Thanks in advance,
              Rainer

  • MDB Credential Mapper for connecting to secured foreign JMS  - Need WLST

    Hello All
    Weblogic 10.3.0
    I am in a situation where i have the MDB trying to read messages from secure foreign jms . The ejb-jar and weblogic-jar.xml has the right values like
    ejb-jar.xml
    ==========
    <assembly-descriptor>
    <security-role>
    <role-name>admin</role-name>
    </security-role>
    </assembly-descriptor>
    weblogic-ejb-jar.xml
    ==============
    <run-as-principal-name>CFAMJMS</run-as-principal-name>
    <security-role-assignment>
    <role-name>admin</role-name>
    <principal-name>CFAMJMS</principal-name>
    </security-role-assignment>
    </weblogic-ejb-jar>
    If i am correct , to connect to the Secured Foreign JMS Connection - There are couple of steps involved
    1) To create a new security wlsuser under myrealm - called CFAMJMS
    2) Each MDB deployed as part of the ear file - I need to perform the credential Mapping - Means
    EJB Component Credential Mappings - create a WLS user of the name CFAMJMS and supply the Remote JMS User Name and Password .
    Today , i perform the setp 2 ) using the Weblogic Admin Console . Need to automate the same using wlst script . Please help

    Hi,
    Similar question was answered in this thread...
    JMS integration with Tibco EMS via SSL
    Could you please check if your TIBCO EMS is ssl enabled .Login on TIBCO EMS using putty and then type show config and check for the following parameter ssl_server_identity ,ssl_server_key . Go to the path mentioned in these two properties and see if the certificate with .pem is present there.
    As you are getting following error in the log
    Caused by: javax.jms.JMSSecurityException: Can not initialize SSL client: no trusted certificates are set
    In TIBCO we need trusted store .pem certificate to make it ssl enabled.
    Cheers,
    Vlad
    It is considered good etiquette to reward answerers with points (as "helpful" - 5 pts - or "correct" - 10pts)
    https://forums.oracle.com/forums/ann.jspa?annID=893

  • Foreign JMS vs. Remote MDB

    Hi,
              I have a JMS scenario that I'm hoping to get some input on. The system architecture is as follows:
              One WebLogic 8.1 SP5 domain with a JMS server
              One WebLogic 9.2 MP1 domain with no JMS server
              We'd like to consume a JMS message that's sitting on a queue in the 8.1 domain by code running on the 9.2 domain.
              Without configuring a JMS server in the 9.2 domain (which we'd like to avoid), the two obvious options are:
              1. An MDB running on the 9.2 server that connects to a queue on the 8.1 server
              2. An MDB running on the 9.2 server that connects to a foreign JMS server locally which in turn is linked to the 8.1's JMS server
              Does anyone have any suggestions, experience from this or a similar scenario?
              The main areas that I'd be interested in are:
              - Inter domain compatability
              - Any problems with Transactions, XA
              Many thanks,
              Eoin

    Hi,
              I think your approach is fine - inter-version compatibility is supported for both JMS and XA. You'll need to ensure that all 9.1 and 8.1 WL domain names are unique, ditto for all 8.1 WL server names, 8.1 WL store names, plus 8.1 JMS server names (even across different domains).
              "1" and "2" are essentially the same in that "Foreign JMS" is simply a mapping from the local JNDI naming service to a remote JMS service . "2" tends to be preferable as it can simplify administration once configured. For more information, see the "Integrating Remote JMS Providers" FAQ linked off of this page: "http://edocs.bea.com/wls/docs92/messaging.html".
              FYI There are advantages in using 9.x and later JMS - not only does it have a broader set of features, but it also has more sophisticated message management (use the console to pause/resume dests, view individual messages, etc), and significantly higher performance. Also, 9.x MDBs do a better job of connecting to remote 9.x distributed destinations than 8.1 MDBs - as they automatically ensure that all component destinations get serviced.
              Tom

  • ORA-25228 error occurs when Foreign JMS Server connecting to the Oracle AQ

    Hi,
    I configure of a Foreign JMS Server that uses the Oracle JDBC Driver to connect to the AQ Topic. I use OSB messaging proxy service as a JMS client to connect the Foreign JMS Server. After the launch, I get the following error:
    ####<Jan 30, 2013 4:51:49 AM MSK> <Error> <EJB> <EPRUSARW0520> <osb_server1> <RequestEJB7826682746890400115XX35047bed.13c85602eea.X7f53> <<anonymous>> <> <0000Jm8w2Es6qI_5xRh8iW1H1sMk0001sD> <1359507109078> <BEA-010079> <An error occurred while attempting to receive a message from JMS for processing by a message-driven bean: oracle.jms.AQjmsException: JMS-120: Dequeue failed
    Nested exception: java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
    ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at line 11
    ORA-25228: timeout or end-of-fetch during message dequeue from MDM.ALL_NSI
    The exception is : oracle.jms.AQjmsException: JMS-120: Dequeue failed
         at oracle.jms.AQjmsError.throwEx(AQjmsError.java:315)
         at oracle.jms.AQjmsConsumer.jdbcDequeue(AQjmsConsumer.java:1620)
         at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:1035)
         at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:960)
         at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:938)
         at oracle.jms.AQjmsConsumer.receive(AQjmsConsumer.java:790)
         at weblogic.deployment.jms.WrappedMessageConsumer.receive(WrappedMessageConsumer.java:201)
         at weblogic.ejb.container.internal.JMSMessagePoller$1.run(JMSMessagePoller.java:262)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
         at weblogic.ejb.container.internal.JMSConnectionPoller.doPrivilegedJMSAction(JMSConnectionPoller.java:2752)
         at weblogic.ejb.container.internal.JMSMessagePoller.processOneMessage(JMSMessagePoller.java:257)
         at weblogic.ejb.container.internal.JMSMessagePoller.pollContinuously(JMSMessagePoller.java:351)
         at weblogic.ejb.container.internal.JMSMessagePoller.pollForParent(JMSMessagePoller.java:483)
         at weblogic.ejb.container.internal.JMSMessagePoller.run(JMSMessagePoller.java:499)
         at java.lang.Thread.run(Thread.java:722)
    Caused by: java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
    ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at line 11
    ORA-25228: timeout or end-of-fetch during message dequeue from MDM.ALL_NSI
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:462)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:397)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)
         at oracle.jdbc.driver.T4Caqdq.processError(T4Caqdq.java:497)
         at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:481)
         at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:205)
         at oracle.jdbc.driver.T4Caqdq.doOAQDQ(T4Caqdq.java:183)
         at oracle.jdbc.driver.T4CConnection.doDequeue(T4CConnection.java:4704)
         at oracle.jdbc.driver.PhysicalConnection.dequeue(PhysicalConnection.java:17863)
         at oracle.jdbc.driver.PhysicalConnection.dequeue(PhysicalConnection.java:17949)
         at oracle.jdbc.OracleConnectionWrapper.dequeue(OracleConnectionWrapper.java:1624)
         at weblogic.jdbc.wrapper.XAConnection_oracle_jdbc_driver_LogicalConnection.dequeue(Unknown Source)
         at weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection.dequeue(Unknown Source)
         at oracle.jms.AQjmsConsumer.jdbcConnectionDequeueCheck25242(AQjmsConsumer.java:1713)
         at oracle.jms.AQjmsConsumer.jdbcDequeue(AQjmsConsumer.java:1295)
         ... 13 moreHowever, when I put message to AQ topic, the OSB proxy receives and processes it. But SQLException occurs every five seconds and pollute logs.
    Request help to resolve this.
    Thanks in advance.
    Regards
    Alexander.

    Maybe this can help: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:4018285967344

  • Load balancing MQ 7.0 Foreign JMS Server and Weblogic 10 MDBs?

    We have the following configuration and we are trying to troubleshoot what appears to be a load balancing issue.
    We have 3 Solaris servers. Each Solaris server has two Weblogic managed servers running on it. There are a total of 6 managed servers in the Weblogic cluster.
    MQ Series 7.0 is also installed on each Solaris server. The MQ queue managers are in a MQ cluster. Each queue manager has the same queues defined.
    We have a foreign JMS Server configured on Weblogic that has destinations and a connection factory defined. There aren't many configuration options available for the connection factory. The destinations are bound to the queues defined on MQ using the MQ bindings file.
    The MQ bindings file was generated using the TRANSPORT(BIND) mechanism. Each bindings file points to the queue manager running on that machine. So the 2 managed servers running on one machine are accepting messages from the queue manager on that machine.
    The MDB's listenning for messages on the MQ queues are configured as follows in the weblogic-ejb-jar.xml:
         <max-beans-in-free-pool>16</max-beans-in-free-pool>
    We also created a custom work manager with min threads constraint=5 and max threads constraint=16. The dispatch-policy of all the MDBs is set to the custom work manager.
    The open input count on each MQ queue managers shows up as 32 which is expected.
    The default load algorithm on the cluster is round-robin.
    When we run a load test (injecting 40 messages per second on one MQ queue), we notice that one managed server ends up being significantly loaded than the other. Each MQ queue manager in the MQ cluster receives approximately the same number of messages in the load test. But it seems like one managed server is preferred over the other in Weblogic.
    What can be done to equally balance the load among the two managed servers on each Solaris server?
    Thanks for the help.

    Load balancing generally applies at determing how many consumer threads has to be created on each of the clustered queue instance. In that sense you have achieved perfect load balancing as your queue instances has the same no of consumer threads.
    Once you have set 'x' consumer threads on a queue, it is upto messaging provider to decide which thread to deliver a particular message and you will hardly have any control over this. Since your 32 threads are listening on the same queue, MQ can select any thread for delivering the message and the behaviour could be non deterministic.
    One option to change your design is to have a dispacther mdb which picks the messages off the MQ and then routes to a weblogic distributed destination and you can have your core mdb which does all processing listen to this distributed destination. You can enable load balancing when the disaptcher mdb routes the message to the distributed destination. Since dispatcher MDB is nothing more than a router, the unbalanced consumption off the MQ shouldn't seriously affect the server.

  • Foreign JMS Issue

    I have two Weblogic 8.1 domains configured. One has a local JMS server with some Queues that are receiving messages and the other one has an MDB deployed that is supposed to pull messages from one of the queues. Im trying to use a foreign JMS Server. I set it up (I dont know how to test if the configuration is correct) But when I try to deploy my MDB it tells me that it couldn't find the destination. Has anybody encountered this problem before? Help will be appreciated.
              Thanks,
              Jonatan

    I've already made sure that the two domains trust each other. If I look at the JNDI tree it seems that the Foreign Destination and Factory are correctly added. It just keeps complaining about Not finding the connection. Anyone seen this before?

  • Foreign JMS not enlisting XA Transactions

    I'm working on implementing an XA interface layer to an implementation of a foreign JMS provider and am having a problem with enlisting XA transactions in WebLogic.
    I implemented a simple JNDI that stores and retrieves serialized versions of classes in the local filesystem.
    I create an XATopicConnectionFactory named ambxatcf and a Topic named ChatterTopic and store them in there.
    The XATopicConnection implements XAConnection.
    I put a client jar in bea/weblogic91/samples/domains/wl_server/lib/ which contains the JNDI code and all of my XA classes which call the JMS.
    That gets picked up by the server on startup.
    In the Web Logic Admin Console:
    I create a Foreign Server under JMS Modules, ambrosiaServer.
    I set the JNDI Initial Context Factory set to my JNDI InitialContext class and the JNDI Properties is the path to my JNDI filestore so that it can find the serialized objects.
    I create a Foreign Destination in this server which has a Local JNDI Name: Chatter and Remote JNDI Name: ChatterTopic
    And then also in this server, I create a Foreign Connection Factory, Local JNDI Name: ambxatcf and Remote JNDI Name: XATopicConnectionFactory.
    Then in Deployments, I Install the jar containing my bean and Start it.
    Then I run the client and the bean prints out the XATopicConnectionFactory and it's the one that came out my JNDI.
    I have messages in my XATopicConnectionFactory, XATopicConnection and XATopicSession code so I know they're getting called.
    What's not getting called is XATopicSession.getXAResource() or my XAResourceImpl.start() or XAResourceImpl.commit().
    This happens whether I have the bean set up for bean managed or container managed transactions.
    I'm testing against WebLogic 9.1.
    Thanks,
    Don Hermes

    Hi Tom,
              Thank you for your response.
              I saw the article in the 8.1 documentation but I also found the following in the 9.1 docs.
              So, I assumed it would work.
              Was that assumption wrong?
              Thanks,
              Don
              =====================
              http://e-docs.bea.com/wls/docs91/jms/j2ee.html
              Automatically Enlisting Transactions
              This feature works for either WebLogic JMS implementations or for third-party JMS providers that support two-phase commit transactions (XA protocol). If a wrapped JMS connection sends or receives a message inside a transaction context, the JMS session being used to send or receive the message is automatically enlisted in the transaction through the XA capabilities of the JMS provider. This is the case whether the transaction was started implicitly because the JMS code was invoked inside an EJB with container-managed transactions enabled, or whether the transaction was started manually using the UserTransaction interface in a servlet or an EJB that supports bean-managed transactions.

  • Foreign JMS and Enlisting Transactions?

    I'm working on implementing an XA interface layer to an implementation of a foreign JMS provider and am having a problem with enlisting XA transactions in WebLogic.
              I implemented a simple JNDI that stores and retrieves serialized versions of classes in the local filesystem.
              I create an XATopicConnectionFactory named ambxatcf and a Topic named ChatterTopic and store them in there.
              The XATopicConnection implements XAConnection.
              I put a client jar in bea/weblogic91/samples/domains/wl_server/lib/ which contains the JNDI code and all of my XA classes which call the JMS.
              That gets picked up by the server on startup.
              In the Web Logic Admin Console:
              I create a Foreign Server under JMS Modules, ambrosiaServer.
              I set the JNDI Initial Context Factory set to my JNDI InitialContext class and the JNDI Properties is the path to my JNDI filestore so that it can find the serialized objects.
              I create a Foreign Destination in this server which has a Local JNDI Name: Chatter and Remote JNDI Name: ChatterTopic
              And then also in this server, I create a Foreign Connection Factory, Local JNDI Name: ambxatcf and Remote JNDI Name: XATopicConnectionFactory.
              Then in Deployments, I Install the jar containing my bean and Start it.
              Then I run the client and the bean prints out the XATopicConnectionFactory and it's the one that came out my JNDI.
              I have messages in my XATopicConnectionFactory, XATopicConnection and XATopicSession code so I know they're getting called.
              What's not getting called is XATopicSession.getXAResource() or my XAResourceImpl.start() or XAResourceImpl.commit().
              This happens whether I have the bean set up for bean managed or container managed transactions.
              I'm testing against WebLogic 9.1.
              Thanks,
              Don Hermes

    Hi Tom,
              Thank you for your response.
              I saw the article in the 8.1 documentation but I also found the following in the 9.1 docs.
              So, I assumed it would work.
              Was that assumption wrong?
              Thanks,
              Don
              =====================
              http://e-docs.bea.com/wls/docs91/jms/j2ee.html
              Automatically Enlisting Transactions
              This feature works for either WebLogic JMS implementations or for third-party JMS providers that support two-phase commit transactions (XA protocol). If a wrapped JMS connection sends or receives a message inside a transaction context, the JMS session being used to send or receive the message is automatically enlisted in the transaction through the XA capabilities of the JMS provider. This is the case whether the transaction was started implicitly because the JMS code was invoked inside an EJB with container-managed transactions enabled, or whether the transaction was started manually using the UserTransaction interface in a servlet or an EJB that supports bean-managed transactions.

  • Weblogic 10 Ant task, JMS Module & Foreign JMS Destinations

    Any body knows how to configure JMS System Modules (which got introduced in WL ver. 9) and other JMS MBeans such as JMS Destinations and ConnectionFactories under the newly created JMS Module, using ant task for Weblogic 10.3 ?
    Also, when I create the ForeignJMSServer and the child MBeans such as Foreign Destinations and ConnectionFactories using ant task, it just creates the ForeignJMSServer and not creating the child MBeans. The problem is with WL 10. In WL 8.1, it works fine.
    In Weblogic 8.1, þe ant target for this job is as follows.
    ===========================================================================
         <target name="prepareForeignJMSServer">
    <wlconfig url="t3://localhost:7001" username="weblogic"
    password="weblogic" failonerror="false">
    <create type="ForeignJMSServer" name="myForeignJMSServer" property="temp-jms-server">
    <set attribute="InitialContextFactory" value="weblogic.jndi.WLInitialContextFactory"/>
    <set attribute="ConnectionURL" value="t3://192.168.0.23:7001"/>
    <set attribute="Targets" value="mydomain:Name=myserver,Type=Server"/>
    <create type="ForeignJMSConnectionFactory" name="MyRemoteCF">
    <set attribute="LocalJNDIName" value="MyLocalCFJNDI"/>
    <set attribute="RemoteJNDIName" value="MyRemoteCFJNDI"/>
    <set attribute="Username" value="weblogic-remote"/>
    <set attribute="Password" value="weblogic-remote"/>
    </create>
    <create type="ForeignJMSDestination" Name="MyRemoteQueue1">
    <set attribute="LocalJNDIName" value="MyLocalQueue1JNDI"/>
    <set attribute="RemoteJNDIName" value="MyRemoteQueue1JNDI"/>
    </create>
         </create>
              </wlconfig>
         </target>
    =====================================================================
    This target runs without error in WL 10, but does not create the ForeignJMSConnectionFactory and ForeignJMSDestination.
    If some one knows the solution, please give me advice.
    Thanks,

    Maybe this is of some help: http://www.bea-weblogic.com/namenotfoundexception-when-configuring-foreign-jms-server.html

  • ClassNotFoundException for initial-context-factory using foreign JMS p.

    Hi,
    I am currently working on migrating an application from weblogic 9 to weblogic 10 and I bumped into this issue while MDB connecting to JMS.
    [Loaded cz.jaksky.riskscenario.beans.RiskScenarioServiceLocalHome from file:/C:/SVN/app-WLS10-FRESH/app-deploy/servers/myserver/tmp/_WL_user/performance/nyubkw/point-interfaces.jar]
    <17-Sep-2012 11:01:27 o'clock CEST> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: PerformanceAsyncRequestBean is unable to connect to the JMS destination: wls.AsyncQueue. The Error was:
    javax.naming.NoInitialContextException: Cannot instantiate class: cz.jaksky.common.jms.JMSInitialContextFactory [Root exception is java.lang.ClassNotFoundException: cz.jaksky.common.jms.JMSInitialContextFactory]
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:657)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.init(InitialContext.java:223)
    at javax.naming.InitialContext.<init>(InitialContext.java:197)
    at weblogic.deployment.jms.ForeignOpaqueReference.getReferent(ForeignOpaqueReference.java:182)
    at weblogic.jndi.internal.WLNamingManager.getObjectInstance(WLNamingManager.java:96)
    at weblogic.jndi.internal.ServerNamingNode.resolveObject(ServerNamingNode.java:377)
    at weblogic.jndi.internal.BasicNamingNode.resolveObject(BasicNamingNode.java:856)
    at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:209)
    at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
    at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
    at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:411)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at weblogic.jms.common.CDS$2.run(CDS.java:486)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.jms.common.CrossDomainSecurityManager.runAs(CrossDomainSecurityManager.java:131)
    at weblogic.jms.common.CDS.lookupDestination(CDS.java:480)
    at weblogic.jms.common.CDS.lookupDDAndCalloutListener(CDS.java:345)
    at weblogic.jms.common.CDS.access$100(CDS.java:41)
    at weblogic.jms.common.CDS$DDListenerRegistrationTimerListener.timerExpired(CDS.java:193)
    at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    Caused by: java.lang.ClassNotFoundException: cz.jaksky.common.jms.JMSInitialContextFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:654)
    ... 23 more
    I am using foreign JMS provider with provided mapping. Config follows:
    ejb-jar.xml:
    <enterprise-beans>
              <message-driven>
                   <ejb-name>PortfolioRetrieverAsyncRequestBean</ejb-name>
                   <ejb-class>cz.jaksky.common.async.AsynchronousRequestMessageBean</ejb-class>
                   <transaction-type>Bean</transaction-type>
                   <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
                   <message-driven-destination>
                        <destination-type>javax.jms.Queue</destination-type>
                        <subscription-durability>Durable</subscription-durability>
                   </message-driven-destination>
                   <message-selector>
                        <![CDATA[ Service IN ('PortfolioRetriever')
                      AND MessageType = 'request'
                      AND BigBox = FALSE
                    ]]>
                   </message-selector>
              </message-driven>
         </enterprise-beans>
    weblogic-ejb-jar.xml:
    <weblogic-enterprise-bean>
              <ejb-name>PortfolioRetrieverAsyncRequestBean</ejb-name>
              <message-driven-descriptor>
                   <pool>
                        <max-beans-in-free-pool>64</max-beans-in-free-pool>
                        <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
                   </pool>
                   <destination-jndi-name>wls.AsyncQueue</destination-jndi-name>
                   <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
                   <connection-factory-jndi-name>ServiceLocatorAsyncQueueFactory</connection-factory-jndi-name>
              </message-driven-descriptor>
              <dispatch-policy>PortfolioAsyncQueueWorkManager</dispatch-policy>
         </weblogic-enterprise-bean>
    jmsconfig-jms.xml
    <foreign-server name="TibjmsAsyncServer">
    <default-targeting-enabled>true</default-targeting-enabled>
    <foreign-destination name="AsyncQueue.LOCAL.prgdwm355410.7001">
    <local-jndi-name>wls.AsyncQueue</local-jndi-name>
    <remote-jndi-name>AsyncQueue.LOCAL.prgdwm355410.7001</remote-jndi-name>
    </foreign-destination>
    <foreign-connection-factory name="FTQueueConnectionFactory">
    <local-jndi-name>ServiceLocatorAsyncQueueFactory</local-jndi-name>
    <remote-jndi-name>FTQueueConnectionFactory</remote-jndi-name>
    </foreign-connection-factory>
    <initial-context-factory>cz.jaksky.common.jms.JMSInitialContextFactory</initial-context-factory>
    <connection-url>tcp://JUSD-FTPOIA.jaksky.com:22542,tcp://JUSD-FTPOB.jaksky.com:22543</connection-url>
    </foreign-server>
    Module containing this MDB is packed as an ear file with following structure:
    APP-INF/lib/modules.jar - contains AsynchronousRequestMessageBean class
    APP-INF/lib/interface.jar - contains JMSInitialContextFactory (class used for initial-context-factory)
    portfolio-async.jar
    META-INF/ejb-jar.xml content pasted above
    META-INF/webogic-ejb-jar.xml content pasted above
    Weblogic system classpath doesn't contain any application sepcific libraries.
    This set up was working for weblogic 9 without any problem. I am just wondering what the problem is whether I am faceing class loading issue or JMS configuration issue and how to resolve it.
    Edited by: user13047709 on 18-Sep-2012 07:15
    Edited by: user13047709 on 18-Sep-2012 07:16

    Hi,
    When working with a non-WebLogic JNDI provider (or a non-WebLogic JMS provider), the non-WebLogic client classes must be made available to the classloader of the calling application in WebLogic Server. This is usually accomplished by adding them to the system classpath.
    In your case, WebLogic is looking for a proprietary/foreign JNDI Context Factory class named "cz.jaksky.common.jms.JMSInitialContextFactory", which means you need to make sure that a jar/dir that contains the non-WebLogic class "JMSInitialContextFactory.class" is in the classpath.
    The configuration for this should be similar in WL9 and WL10. It could be that your classpath is already setup to reference the foreign class, but it refers to a directory/jar that you haven't setup yet on your WL10 host.
    HTH,
    Tom

Maybe you are looking for

  • Change on family share plan without permission; customer service no help at all

    @VZWSupport Posting this question here because I am having zero luck with *611 customer service and after 40 minutes on the phone with a rep I am ready to pay the early termination fee and leave Verizon after 15 years of being a customer. I am part o

  • Can't use two inputs at the same time (Mac)

    How can I add two different inputs in the same multitrack session (Mac)? Right now I'm only being able to use the default input. When I'm on Audio Hardware and click 'Settings' (to add another input) nothing happens. I used to do this without a probl

  • Do you know what the W in javaw.exe stands for?

    even some of the most experienced java developers may have a problem answering this silly question... :-)

  • Can't get all my music on my iPod and it's driving me insane!

    I have a 120 GB iPod which I had all my music on till last night, when I accidently reset it and it deleted the whole lot via Spotify Anywhos, so I thought I'd just drag it all over like last time via iTunes, but this time i won't work (I'm guessing

  • DN Batch qty determination

    Hi, I am using batch determination in delivery When I create DN, there are batch with suggested qty in the "Batch Split" tab Now I have a alter the batch suggested qty in VL01N (When user first click the batch split, the qty is altered already Reason