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

Similar Messages

  • Foreign JMS Server Limitation

    Hi all,
              Iam facing a limitation with Foreign JMS server.
              We are tyring to migrate from Message Bridge to Foreign JMS server.
              Our current setup is
              We have 3 MQ queues which are bridged to one JMS destination(queue).The MDB is consuming messages from the weblogic queue.
              If we want to replace this setup with Foreign JMS server the MDB can connect to only one MQ queue.
              We want the MDB to consume messages from all the 3 queues.
              How can we acheive this ?
              Thanks,
              Rabbani

    U should take my reply with a grain of salt because I'm pretty new at this stuff but I don't think it's within an MDBs design to listen to more than one queue/topic so therefore you'll have to create additional MDBs that either listen to each foreign queue individually and do whatever your single MDB is doing with the data now or create the n MDBS (where n = number of foreign queues currently bridgin to the one) that then publish to an intermediate topic which your existing MDB can listen to.
              Hope this helps, figure if I'm going to be pounding the boards with questions I should try to contribute where I can ;)
              And also, if you do setup the foreign JMS provider feel free to take a look at my topic and provide your experience if you think it will help :D

  • 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

  • MDB not connecting to Foreign JMS destination

    I'm running WL 9.2 MP3 on Windows machine. I'm deploying a rudimentary MDB congured against as Foreign Service JMS provider against MQ V6.0 with local queue running on the same local machine.
              I'm using Maven2 to build all the sub-projects - including my ejb project and enterprise application project. The EAR file deploys successfully without any errors (one minor warning about lack of explicity transactionsi in onMessage() method...). I don't see any errors but my MDB Connection Status is "disconnected" - I've enabled Debug for key sections under default and weblogic sections - still not errors of any kind but it does not connect! What can I do to find the problem?!
              Here is my EJB definition:
              public class AnotherBean extends GenericMessageDrivenBean implements
                        MessageDrivenBean, MessageListener {
                   private static final long serialVersionUID = 1L;
                   /* When the bean is activated, this method will be invoked
                   * @see javax.jms.MessageListener#onMessage(javax.jms.Message)
                   public void onMessage(Message msg) {
                        System.out.println("\n=========================================");
                        System.out.println("=> Message received!");
                        if (msg instanceof TextMessage) {
                             try {
                                  System.out.println("=> Message: "
                                            + ((TextMessage) msg).getText());
                             } catch (JMSException e) {
                                  e.printStackTrace();
                        // Place the message on to the reply queue (WLReplyQueue)
                        System.out.println("=========================================");
              Here is my ejb-jar.xml:
              <ejb-jar
              xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
              version="2.1">
              <enterprise-beans>
              <message-driven>
              <ejb-name>AnotherBean</ejb-name>
              <ejb-class>com.ibm.myclient.gems.ejb.AnotherBean</ejb-class>
              <transaction-type>Container</transaction-type>
              <activation-config>
              <activation-config-property>
              <activation-config-property-name>destinationType</activation-config-property-name>
              <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
              </activation-config-property>
              </activation-config>
              </message-driven>
              </enterprise-beans>
              </ejb-jar>
              Here is my weblogic-ejb-jar.xml:
              <weblogic-ejb-jar
              xmlns="http://www.bea.com/ns/weblogic/90" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-ejb-jar.xsd">
              <weblogic-enterprise-bean>
              <ejb-name>AnotherBean</ejb-name>
              <message-driven-descriptor>
              <destination-jndi-name>jms/WLReceiverQueue</destination-jndi-name>
              <connection-factory-jndi-name>jms/WLReceiverQCF</connection-factory-jndi-name>
              </message-driven-descriptor>
              </weblogic-enterprise-bean>
              </weblogic-ejb-jar>
              WL JMS module is setup like this:
              <weblogic-jms xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema
              Location="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
              <foreign-server name="MQTestForeignServer">
              <default-targeting-enabled>true</default-targeting-enabled>
              <foreign-destination name="ReceiverDetails">
              <local-jndi-name>jms/WLReceiverQueue</local-jndi-name>
              <remote-jndi-name>MQSenderQueue</remote-jndi-name>
              </foreign-destination>
              <foreign-destination name="ReplyDetails">
              <local-jndi-name>jms/WLReplyQueue</local-jndi-name>
              <remote-jndi-name>MQReceiverQueue</remote-jndi-name>
              </foreign-destination>
              <foreign-connection-factory name="ReceiverCF">
              <local-jndi-name>jms/WLReceiverQCF</local-jndi-name>
              <remote-jndi-name>MQSenderQCF</remote-jndi-name>
              </foreign-connection-factory>
              <foreign-connection-factory name="ReplyCF">
              <local-jndi-name>jms/WLReplyQCF</local-jndi-name>
              <remote-jndi-name>MQReceiverQCF</remote-jndi-name>
              </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-jms>

    Thanks for the tips - I solved the problem. I first recreated my .bindinds file making sure that both QCF objects are in there (it turned out that only ONE of them was there and not the other). Next, I also removed an extra space " " from the URL reference in the Foreign JMS service setup in the console:
              was like this initially:
              <connection-url>file:/ C:/JNDI-Directory</connection-url>
              and I changed it to this - removing single space after first "/":
              <connection-url>file:/C:/JNDI-Directory</connection-url>
              Restarted the whole thing and it worked! Thanks again.

  • MDB for Foreign JMS server

    I am trying to access MQ que with Message Driven bean in weblogic 8.1.
              I have defined Foreign JMS server in weblogic pointing to MQ JNDI name.
              I am not sure what to define in "weblogic-ejb-jar.xml" and "ejb-jar.xml" to refer to que connection factory and que.
              Error message that I am getting while deploying is as follows:
              <The Message-Driven EJB: MesssageHandlerBean is unable to connect to the JMS destination: jms.MediaQueue. The Error was:
              [EJB:011010]The JMS destination with the JNDI name: jms.MediaQueue could not be found. Please ensure that the JNDI name in the weblogic-ejb-jar.xml is correct, and the JMS destination has been deployed.>
              Looks like it weblogic is not able to identify JNDI name that I have defined in foreign server for remote que.
              Please let me know how i can reference foreign JMS server JNDI names.
              Thanks a bunch for help.
              Please find attached configuration files.
              weblogic-ejb-jar.xml
              <weblogic-ejb-jar>
              <weblogic-enterprise-bean>
              <ejb-name>MesssageHandlerBean</ejb-name>
              <message-driven-descriptor>
              <destination-jndi-name>
              jms.MediaQueue
              </destination-jndi-name>
              <initial-context-factory>
              com.sun.jndi.fscontext.RefFSContextFactory
              </initial-context-factory>
              <provider-url>file://localhost/d:/mqm</provider-url>
              <connection-factory-jndi-name>
              jms.MediaQcf
              </connection-factory-jndi-name>
              </message-driven-descriptor>
              <jndi-name>MesssageHandlerBean</jndi-name>
              </weblogic-enterprise-bean>
              </weblogic-ejb-jar>
              ejb-jar.xml
              <enterprise-beans>      
              <message-driven>
              <ejb-name>MesssageHandlerBean</ejb-name>
              <ejb-class>com.ejb.MesssageHandlerBean</ejb-class>
              <transaction-type>Container</transaction-type>
              <message-driven-destination>
              <destination-type>javax.jms.Queue</destination-type>
              </message-driven-destination>
              </message-driven>
              </enterprise-beans>
              weblogic "config.xml" for foeign JMS server.
              <ForeignJMSServer ConnectionURL="file://localhost/d:/mqm" InitialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
              JNDIProperties="" Name="MQJMS Server" Targets="cgServer">
              <ForeignJMSConnectionFactory LocalJNDIName="jms.MediaQcf"
              Name="MQ JMS Connection Factory" PasswordEncrypted=""
              RemoteJNDIName="jms/lMediaQcf" Username=""/>
              <ForeignJMSDestination LocalJNDIName="jms.MediaQueue"
              Name="MQJMS Destination" RemoteJNDIName="jms/IMediaQueue"/>
              </ForeignJMSServer>
              Message was edited by:
              [email protected]
              Message was edited by:
              [email protected]

    Thanks for going over the problem it is resolved now by changing weblogic-ejb-jar.xml. To point to weblogic initial context factory. Since weblogic has a foreign server defined so MDB is able to read from MQ que.
              Thanks
              Akash
              <weblogic-enterprise-bean> <ejb-name>MesssageHandlerBean</ejb-name> <message-driven-descriptor> <destination-jndi-name>jms.MediaQueue</destination-jndi-name> <initial-context-factory> weblogic.jndi.WLInitialContextFactory</initial-context-factory> <provider-url>t3://localhost:7001</provider-url> <connection-factory-jndi-name>jms.MediaQcf</connection-factory-jndi-name> </message-driven-descriptor> <jndi-name>MesssageHandlerBean</jndi-name> </weblogic-enterprise-bean>

  • 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>

  • 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>
              > >
              > >
              >
              >
              

  • MDB behavior with Foreign JMS Provider

              I am experiencing some MDB behavior which I do not quite understand. I would appreciate
              if someone could tell me what might be happening.
              An application on WebLogic 8.1 SP1 (also tried it with SP2) has MDB's which listen
              on a MQ Queue. If I put a large XML message on the MQ Queue (say around 600 KB),
              the onMessage execution is very random, For the large messages only 1 MDB gets
              invoked and the other messages just sit on the MQ Queue. Even though I have defined
              an weblogic execute queue for the MDB's and they have 15 threads allocated.
              The other messages get picked up after the first one gets completed. The problem
              is the whole transaction (which is XA) can take a while (upto 10 minutes). This
              is not intended, but for some reason it takes that long.
              Also, while monitoring the MDB execute queues, I noticed that none of the threads
              from that queue are performing the work and a thread dump shows that the weblogic.ejb20.internal.JMSPoller
              thread has invoked the MDB and is currently waiting for the database to finish
              some processing.
              When the message size is smaller, the MDB's fire concurrently and are executed
              on the MDB execute queue.
              Thanks,
              Ketan.
              

    When we're using MDBs against a foreign JMS provider with XA, the EJB
              container tries to reduce the number of threads that are blocked waiting for
              a message. You should see lots of threads working when there are lots of
              messages on the queue, a few threads (or only one) working when the queue is
              empty or nearly so, and there should be some ramp-up and ramp-down time in
              between. It sounds like the ramp-up takes longer in your case because
              receiving the very first message takes a long time.
              If this behavior is causing big problems for you, you might want to contact
              product support and file an enhancement request.
              greg
              "Ketan" <[email protected]> wrote in message
              news:[email protected]...
              >
              > Here is some more information regarding this issue.
              >
              > When I place sufficiently large messages (such that the parsing and
              processing
              > of these messages takes longer than it does for normal size messages), I
              notice
              > the following behavior.
              >
              > Lets say I put 6 large messages on the MQ Queue. The server immediately
              picks
              > up 1 message and starts processing it. The other 5 messages are sitting on
              the
              > MQ Queue, while the MDB execute queue has all 15 idle threads.
              >
              > After the processing of the message is done, 2 messages get picked up.
              This time,
              > 1 thread in the MDB execute queue gets the message and the other is
              processed
              > by the JMSPoller thread. After these 2 messages are processed, 3 Messages
              get
              > picked up and this time 2 messages are on the MDB execute queue and 1 is
              processed
              > by the JMSPoller.
              >
              > So based on this the question is ..Is this the expected behavior? I was
              under
              > the impression that the poller would simply dispatch messages to the
              execute queue,
              > and as a result, I was expecting all the messages would get picked up from
              the
              > MQ queue pretty fast and would not have to wait for 1 or more MDB's to
              finish
              > processing.
              >
              > I would really appreciate any suggestions anyone may have for me.
              >
              > Again the environment is WLS 8.1 SP2, MQ 5.3
              >
              > thanks,
              > Ketan
              

  • MDB with foreign JMS : WLS 9.23

    For the love of _____ (fill in your own muse of desperation here), is there some categorical statement of whether WLS9.23 actually ***works*** with MDB's and foreign JMS providers? Whereever I search/find, people have trouble with this.
              Some kind BEA sould - please. Please, please please : publish a canonical example of MDB with secured foreign-JNDI provided connx factory, and either a queue or a topic.
              I'm beginning to wonder if this works at all.

    Good morning!
              Categorical Statement: WLS supports JMS spec compliant foreign providers for MDBs, bridges, resource-references, foreign providers. We also support sending a foreign providers message using a WebLogic JMS client.
              For general Tibco integration questions, I recall that the Tibco docs themselves contain WebLogic integration examples. There's also some much mention of Tibco in the out-dated "Using Foreign JMS Providers with WebLogic Server" white-paper on dev2dev.
              That said, there have been definitely been problems with Tibco and MQ's latest release, as they both recently released semi-non-JMS compliant clients that our wrapper code was unprepared to deal with. In short, we were caught unawares when these clients stopped supporting the 1.0.2 APIs even though 1.1 specification clearly requires both 1.1 and 1.0.2 support. Rather than ask Tibco and MQ teams to have them patch their code (an approach we've sometimes taken over the years), we chose this time to enhance our code.
              I think the problems were all fixed by 9.23 - but you may want to contact customer support to see if there are any additional patches required. Alternatively, you can try use a slightly older Tibco client, as presumably their older clients are still able to interoperate with their latest server version (this approach works with MQ).
              Tom

  • 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 Server Persistance\Retry in case Remote JMS Provider goes down

    Hi All
    I would need more clarity on this. How does the Foreign JMS Server behave in case the remote JMS provider goes down. Does it take the message from the Publishing Proxy Service and retries\persists the JMS Message till the remote provide is up?
    Please let us know. This would effect our design as retrial is very important here. Thanks

    If you want to provide guaranteed delivery with automatic retries when using remote JMS implementations, there are multiple ways to implement it:
    1. While reading from a foreign JMS destination
    Create a Foreign JMS server using transactional drivers (use XA in case of JMS). The messages remain on remote server JMS queue and OSB proxy polls the message directly on remote server. So if Remote Server is down OSB will not be able to read the message. Once remote server is up OSB will pick up the message (as long as foreign JMS server provides persistence and maintains the messages in the queue during a server restart). In case of error in OSB foreign queue can do retry if it provides a retry mechanism.
    2. While writing the message to a foreign JMS destination
    a. Use a foreign JMS server using transactional connection. Put the retry mechanism in OSB Business service which writes to the foreign JMS/MQ queue. In case of failure Business Service can retry based on configuration. If you want to provide guaranteed delivery then create a local JMS queue to store the messages. So when remote destination is down for a long time undelivered messages will be rolled back to the local queue. You can put retry mechanism on the local queue.
    b. Use a messaging bridge which will write the messages to the remote destination. You can configure retry delivery rules in messaging bridge so once busienss service writes the message to the bridge, a SAF agent will ensure the delivery to remote destination whenever it is up.

  • Foreign JMS and XA

    Hi everybody,
              Is anybody successfully using remote IBM MQseries 5.3 server as
              Foreign JMS in WLS 8.1sp2?
              We're observing some strange behavior in this case. Here is our setup:
              WLS and IBM MQ server deployed on separate boxes.
              WLS version 8.1sp2 running on Windows 2000/Intel
              IBM MQ version 5.3 running on Solaris/SPARC
              We're using "WebSphere MQ classes for Java, version 5.303 - j5303-L030225"
              and "WebSphere MQ Extended Transactional Client Feature, version 5.300 -
              j5303-L030122"
              MQ files added in WLS POST_CLASSPATH variable in WLS starup script.
              Foreign JMS server configured in WLS via fscontext JNDI.
              MDB bean deployed with Transaction attribute "Required".
              Everything seems to work fine, if we're posting message to MQ queue MDB
              receives it and process successfully (just print message content to the
              console for now).
              Problem: In WLS console, under Server->Monitoring->JTA->Monitor inflight
              transactions we can constantly see one transaction enlisted for our MDB
              bean with following details:
              =====================================================
              Transaction ID: BEA1-00DFC5EB4B7B7F28EDB9
              Coordinator: mydomain+myserver
              Name: JMSMessagePoller.xxx.xxx.MyMessageProcessorMdb
              Status: Active
              Seconds Active: 17
              Resources:
              weblogic.ejb20.JMSConnectionPoller.xxx.xxx.MyMessageProcessorMdb=started
              Properties
              (key=value):
              weblogic.transaction.name=JMSMessagePoller.xxx.xxx.MyMessageProcessorMdb
              =====================================================
              This transaction seems to be Active for 30 seconds and then rolled back
              (no error messages on WLS console displayed).On JTA statistics page in
              WLS console "Total Rolled Back" counter keeps increneting with every
              rollback.
              Does anybody observerd similar problem? May be it's normal behaviour but
              I'm kind of worrying about those transactions and constant rollback. I'd
              appreciate any feedback.
              Sincerely,
              Dmitri Maximovich
              

    Hi Dmitri,
              The shutdown "suspend" failure has nothing to do with transactions
              or JMS. It looks like the failure is due to a
              java.util.ConcurrentModificationException during undeployment
              which indicates a bug in WL - something is not getting
              synchronized that should be.
              As for MQ, their new extended client supports remote XA, which I think
              is the reason for the product in the first place. Even so, I
              still recommend testing to make sure that its messages
              participate in transactions. (Actually, I recommend such testing
              for any transactional app, including those built on WL JMS.)
              Tom
              Dmitri Maximovich wrote:
              > Hi Tom,
              >
              > Thanks for info, that's a relief. Unfortunately there is no hints in WLS
              > documentation that it's normal, that's why we were worried about it.
              >
              > Now there is one more issue, which I believe is related. You see with
              > those 'in-flight' transactions graceful shutdown of WLS doesn't quite
              > work. There is suspicious exception thrown and after that WLS is still
              > running in some state but console is not available anymore. Please see
              > console messages attached (sorry for long post). at the time of shutdown
              > there is no messages in the queue(s) so as far as I can tell those
              > 'pending transactions' mentioned is those from foreign JMS wrappers.
              >
              > I'd appreciate any comments on that. We have case opened with BEA about
              > this but so far they cannot reproduce it in their lab. That's why I
              > start wondering if we're doing something wrong here, like using remote
              > MQ server for example, may be you not supposed to (I remember there was
              > an issue before with IBM MQ that XA support required binding mode, I was
              > kind of hope that it's not the case anymore)?
              >
              > <Mar 3, 2004 1:47:56 PM EST> <Notice> <WebLogicServer> <BEA-000365>
              > <Server state changed to SUSPENDING>
              > <Mar 3, 2004 1:47:56 PM EST> <Info> <Deployer> <BEA-149236> <Preparing
              > to suspend.>
              > <Mar 3, 2004 1:47:56 PM EST> <Info> <Deployer> <BEA-149237> <Ready to
              > suspend.>
              > <Mar 3, 2004 1:47:56 PM EST> <Info> <WebService> <BEA-220028> <Web
              > Service reliable agents are suspended.>
              > <Mar 3, 2004 1:47:56 PM EST> <Notice> <JTA> <BEA-110476> <The server has
              > detected pending transactions during graceful shutdown. The server will
              > wait for the pending transactions to complete before suspending the RMI
              > service. A force shutdown command can be issued to shutdown the server
              > immediately.>
              > <Mar 3, 2004 1:48:26 PM EST> <Info> <Management> <BEA-141080> <A request
              > has been received to force shut down of the server.>
              > <Mar 3, 2004 1:48:26 PM EST> <Alert> <WebLogicServer> <BEA-000228> <The
              > disabling of server logins has been requested by <WLS Kernel>>
              > <Mar 3, 2004 1:48:26 PM EST> <Alert> <WebLogicServer> <BEA-000229>
              > <Server logins have been disabled.>
              > <Mar 3, 2004 1:48:26 PM EST> <Info> <WebService> <BEA-220028> <Web
              > Service reliable agents are suspended.>
              > <Mar 3, 2004 1:48:26 PM EST> <Info> <EJB> <BEA-010084> <The
              > message-driven beans are being suspended. This may take a minute or two.>
              > <Mar 3, 2004 1:48:32 PM EST> <Info> <EJB> <BEA-010085> <The
              > message-driven beans have all been suspended.>
              > <Mar 3, 2004 1:48:32 PM EST> <Info> <EJB> <BEA-010084> <The
              > message-driven beans are being suspended. This may take a minute or two.>
              > <Mar 3, 2004 1:48:32 PM EST> <Info> <EJB> <BEA-010085> <The
              > message-driven beans have all been suspended.>
              > [MessageDrivenBeanPoolInfoImpl] : Couldn't unregister MBean
              > javax.management.InstanceNotFoundException:
              > mydomain:ApplicationRuntime=myserver_otis-dasl-ejb,EJBComponentRuntime=myserver_otis-dasl-ejb_otis-dasl-ejb.jar,Location=myserver,Name=myserver_otis-dasl-ejb_otis-dasl-ejb.jar_com.cibcwm.go.otis.dasl.submission.DASLSubmissionMdb_wls.mqs.dasl.dev.adp.reply3,ServerRuntime=myserver,Type=EJBTransactionRuntime
              >
              > at
              > com.sun.management.jmx.MBeanServerImpl.getMBean(MBeanServerImpl.java:1680)
              > at
              > com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1524)
              > at
              > weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:947)
              >
              > at
              > weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:908)
              >
              > at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
              > at
              > weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
              >
              > at
              > weblogic.management.runtime.EJBTransactionRuntimeMBean_Stub.preDeregister(EJBTransactionRuntimeMBean_Stub.java:433)
              >
              > at
              > weblogic.management.internal.MBeanHomeImpl.internalDeleteMBean(MBeanHomeImpl.java:996)
              >
              > at
              > weblogic.management.internal.MBeanHomeImpl.privateDeleteMBean(MBeanHomeImpl.java:982)
              >
              > at
              > weblogic.management.internal.MBeanHomeImpl.access$000(MBeanHomeImpl.java:74)
              >
              > at
              > weblogic.management.internal.MBeanHomeImpl$2.run(MBeanHomeImpl.java:948)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              > at
              > weblogic.management.internal.MBeanHomeImpl.deleteMBeanWithKernelID(MBeanHomeImpl.java:944)
              >
              > at
              > weblogic.management.internal.MBeanHomeImpl.deleteMBean(MBeanHomeImpl.java:939)
              >
              > at
              > weblogic.management.internal.MBeanHomeImpl.deleteMBean(MBeanHomeImpl.java:933)
              >
              > at
              > weblogic.management.runtime.RuntimeMBeanDelegate.unregister(RuntimeMBeanDelegate.java:140)
              >
              > at
              > weblogic.ejb20.monitoring.EJBRuntimeMBeanImpl.unregisterDependents(EJBRuntimeMBeanImpl.java:58)
              >
              > at
              > weblogic.ejb20.monitoring.MessageDrivenEJBRuntimeMBeanImpl.unregisterDependents(MessageDrivenEJBRuntimeMBeanImpl.java:50)
              >
              > at
              > weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.unInitPool(MessageDrivenBeanPoolInfoImpl.java:208)
              >
              > at
              > weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.onUndeploy(MessageDrivenBeanPoolInfoImpl.java:121)
              >
              > at
              > weblogic.ejb20.deployer.MessageDrivenBeanInfoImpl.onUndeploy(MessageDrivenBeanInfoImpl.java:628)
              >
              > at weblogic.ejb20.internal.BaseEJBHome.undeploy(BaseEJBHome.java:203)
              > at
              > weblogic.ejb20.internal.MessageDrivenEJBHome.undeploy(MessageDrivenEJBHome.java:260)
              >
              > at
              > weblogic.ejb20.deployer.EJBDeployer.deactivate(EJBDeployer.java:1802)
              > at weblogic.ejb20.deployer.EJBModule.doDeactivate(EJBModule.java:865)
              > at weblogic.ejb20.deployer.EJBModule.deactivate(EJBModule.java:712)
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivateModule(J2EEApplicationContainer.java:3161)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2186)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2131)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.stop(J2EEApplicationContainer.java:1915)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:761)
              >
              > at
              > weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
              >
              > at
              > weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
              >
              > at
              > weblogic.application.ApplicationService.prepareToSuspend(ApplicationService.java:46)
              >
              > at
              > weblogic.t3.srvr.SubsystemManager.prepareToSuspend(SubsystemManager.java:168)
              >
              > at weblogic.t3.srvr.T3Srvr.prepareToSuspend(T3Srvr.java:1085)
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread.prepareToSuspend(ServerLifeCycleWorkerThread.java:51)
              >
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread$1.run(ServerLifeCycleWorkerThread.java:35)
              >
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread.run(ServerLifeCycleWorkerThread.java:32)
              >
              > --------------- nested within: ------------------
              > weblogic.management.ManagementException: An error has occurred during
              > preDeregister().
              > nullmydomain:ApplicationRuntime=myserver_otis-dasl-ejb,EJBComponentRuntime=myserver_otis-dasl-ejb_otis-dasl-ejb.jar,Location=myserver,Name=myserver_otis-dasl-ejb_otis-dasl-ejb.jar_com.cibcwm.go.otis.dasl.submission.DASLSubmissionMdb_wls.mqs.dasl.dev.adp.reply3,ServerRuntime=myserver,Type=EJBTransactionRuntime
              > - with nested exception:
              > [javax.management.InstanceNotFoundException:
              > mydomain:ApplicationRuntime=myserver_otis-dasl-ejb,EJBComponentRuntime=myserver_otis-dasl-ejb_otis-dasl-ejb.jar,Location=myserver,Name=myserver_otis-dasl-ejb_otis-dasl-ejb.jar_com.cibcwm.go.otis.dasl.submission.DASLSubmissionMdb_wls.mqs.dasl.dev.adp.reply3,ServerRuntime=myserver,Type=EJBTransactionRuntime]
              >
              > at
              > weblogic.management.runtime.RuntimeMBeanDelegate.unregister(RuntimeMBeanDelegate.java:148)
              >
              > at
              > weblogic.ejb20.monitoring.EJBRuntimeMBeanImpl.unregisterDependents(EJBRuntimeMBeanImpl.java:58)
              >
              > at
              > weblogic.ejb20.monitoring.MessageDrivenEJBRuntimeMBeanImpl.unregisterDependents(MessageDrivenEJBRuntimeMBeanImpl.java:50)
              >
              > at
              > weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.unInitPool(MessageDrivenBeanPoolInfoImpl.java:208)
              >
              > at
              > weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.onUndeploy(MessageDrivenBeanPoolInfoImpl.java:121)
              >
              > at
              > weblogic.ejb20.deployer.MessageDrivenBeanInfoImpl.onUndeploy(MessageDrivenBeanInfoImpl.java:628)
              >
              > at weblogic.ejb20.internal.BaseEJBHome.undeploy(BaseEJBHome.java:203)
              > at
              > weblogic.ejb20.internal.MessageDrivenEJBHome.undeploy(MessageDrivenEJBHome.java:260)
              >
              > at
              > weblogic.ejb20.deployer.EJBDeployer.deactivate(EJBDeployer.java:1802)
              > at weblogic.ejb20.deployer.EJBModule.doDeactivate(EJBModule.java:865)
              > at weblogic.ejb20.deployer.EJBModule.deactivate(EJBModule.java:712)
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivateModule(J2EEApplicationContainer.java:3161)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2186)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2131)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.stop(J2EEApplicationContainer.java:1915)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:761)
              >
              > at
              > weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
              >
              > at
              > weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
              >
              > at
              > weblogic.application.ApplicationService.prepareToSuspend(ApplicationService.java:46)
              >
              > at
              > weblogic.t3.srvr.SubsystemManager.prepareToSuspend(SubsystemManager.java:168)
              >
              > at weblogic.t3.srvr.T3Srvr.prepareToSuspend(T3Srvr.java:1085)
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread.prepareToSuspend(ServerLifeCycleWorkerThread.java:51)
              >
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread$1.run(ServerLifeCycleWorkerThread.java:35)
              >
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread.run(ServerLifeCycleWorkerThread.java:32)
              >
              > <Mar 3, 2004 1:48:33 PM EST> <Info> <Management> <BEA-141082>
              > <ServerRuntime:java.util.ConcurrentModificationException>
              > <Mar 3, 2004 1:48:33 PM EST> <Info> <Management> <BEA-141082>
              > <ServerRuntime:java.util.ConcurrentModificationException
              > at
              > java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:552)
              > at java.util.LinkedList$ListItr.next(LinkedList.java:488)
              > at
              > weblogic.ejb20.deployer.EJBDeployer.deactivate(EJBDeployer.java:1801)
              > at weblogic.ejb20.deployer.EJBModule.doDeactivate(EJBModule.java:865)
              > at weblogic.ejb20.deployer.EJBModule.deactivate(EJBModule.java:712)
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivateModule(J2EEApplicationContainer.java:3161)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2186)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2131)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainer.stop(J2EEApplicationContainer.java:1915)
              >
              > at
              > weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:761)
              >
              > at
              > weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
              >
              > at
              > weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
              >
              > at
              > weblogic.application.ApplicationService.prepareToSuspend(ApplicationService.java:46)
              >
              > at
              > weblogic.t3.srvr.SubsystemManager.prepareToSuspend(SubsystemManager.java:168)
              >
              > at weblogic.t3.srvr.T3Srvr.prepareToSuspend(T3Srvr.java:1085)
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread.prepareToSuspend(ServerLifeCycleWorkerThread.java:51)
              >
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread$1.run(ServerLifeCycleWorkerThread.java:35)
              >
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              > at
              > weblogic.t3.srvr.ServerLifeCycleWorkerThread.run(ServerLifeCycleWorkerThread.java:32)
              >
              > >
              > <Mar 3, 2004 1:48:35 PM EST> <Critical> <WebLogicServer> <BEA-000217>
              > <Failed to fully suspend the server due to:
              > java.util.ConcurrentModificationException
              > java.util.ConcurrentModificationException
              > at java.util.HashMap$HashIterator.nextEntry(HashMap.java:782)
              > at java.util.HashMap$KeyIterator.next(HashMap.java:818)
              > at
              > weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:751)
              >
              > at
              > weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
              >
              > at
              > weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
              >
              > at
              > weblogic.application.ApplicationService.forceSuspend(ApplicationService.java:82)
              >
              > at
              > weblogic.t3.srvr.SubsystemManager.forceSuspend(SubsystemManager.java:184)
              > at weblogic.t3.srvr.T3Srvr.forceSuspend(T3Srvr.java:1097)
              > at
              > weblogic.t3.srvr.ServerRuntime.uprotectedForceShutdown(ServerRuntime.java:629)
              >
              > at weblogic.t3.srvr.ServerRuntime.access$300(ServerRuntime.java:83)
              > at weblogic.t3.srvr.ServerRuntime$4.run(ServerRuntime.java:563)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              > at weblogic.t3.srvr.ServerRuntime.forceShutdown(ServerRuntime.java:559)
              > at weblogic.t3.srvr.ServerRuntime.shutdown(ServerRuntime.java:547)
              > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              > at
              > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              >
              > at
              > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              >
              > at java.lang.reflect.Method.invoke(Method.java:324)
              > at
              > weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:711)
              >
              > at
              > weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:690)
              >
              > at
              > com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
              > at
              > com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
              > at
              > weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:947)
              >
              > at
              > weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:908)
              >
              > at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
              > at
              > weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
              >
              > at
              > weblogic.management.runtime.ServerRuntimeMBean_Stub.shutdown(ServerRuntimeMBean_Stub.java:1184)
              >
              > at
              > weblogic.server.ServerLifeCycleRuntime$ShutdownRequest.execute(ServerLifeCycleRuntime.java:585)
              >
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > >
              > <Mar 3, 2004 1:48:35 PM EST> <Debug> <Management> <BEA-141132> <Dynamic
              > invocation while executing action shutdown on
              > mydomain:Location=myserver,Name=myserver,Type=ServerRuntime MBean
              > instance failed. The method shutdown with signature [int, boolean] was
              > invoked with parameters as [30, true].
              > java.util.ConcurrentModificationException
              > at java.util.HashMap$HashIterator.nextEntry(HashMap.java:782)
              > at java.util.HashMap$KeyIterator.next(HashMap.java:818)
              > at
              > weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:751)
              >
              > at
              > weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
              >
              > at
              > weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
              >
              > at
              > weblogic.application.ApplicationService.forceSuspend(ApplicationService.java:82)
              >
              > at
              > weblogic.t3.srvr.SubsystemManager.forceSuspend(SubsystemManager.java:184)
              > at weblogic.t3.srvr.T3Srvr.forceSuspend(T3Srvr.java:1097)
              > at
              > weblogic.t3.srvr.ServerRuntime.uprotectedForceShutdown(ServerRuntime.java:629)
              >
              > at weblogic.t3.srvr.ServerRuntime.access$300(ServerRuntime.java:83)
              > at weblogic.t3.srvr.ServerRuntime$4.run(ServerRuntime.java:563)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              > at weblogic.t3.srvr.ServerRuntime.forceShutdown(ServerRuntime.java:559)
              > at weblogic.t3.srvr.ServerRuntime.shutdown(ServerRuntime.java:547)
              > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              > at
              > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              >
              > at
              > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              >
              > at java.lang.reflect.Method.invoke(Method.java:324)
              > at
              > weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:711)
              >
              > at
              > weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:690)
              >
              > at
              > com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
              > at
              > com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
              > at
              > weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:947)
              >
              > at
              > weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:908)
              >
              > at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
              > at
              > weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
              >
              > at
              > weblogic.management.runtime.ServerRuntimeMBean_Stub.shutdown(ServerRuntimeMBean_Stub.java:1184)
              >
              > at
              > weblogic.server.ServerLifeCycleRuntime$ShutdownRequest.execute(ServerLifeCycleRuntime.java:585)
              >
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > >
              >
              > Tom Barnes wrote:
              >
              >> Hi Dmitri,
              >>
              >> This is normal behavior.
              >> The internal rollbacks are a side effect of WL MDBs
              >> necessarily starting a transaction before they (internally)
              >> post a synchronous
              >> receive on the remote foreign JMS server. If the synchronous receive
              >> receives nothing, the tx is rolled back, and another
              >> synch receive is posted with a new tx. (When interacting with
              >> foreign vendors, tx MDBs usually must post synchronous receives
              >> in order to infect the received message - there is no
              >> standard JMS API for infecting asynchronously received messages
              >> with a user transaction.)
              >>
              >> Tom
              >>
              >> Dmitri Maximovich wrote:
              >>
              >>> Hi everybody,
              >>>
              >>> Is anybody successfully using remote IBM MQseries 5.3 server as
              >>> Foreign JMS in WLS 8.1sp2?
              >>> We're observing some strange behavior in this case. Here is our setup:
              >>>
              >>> WLS and IBM MQ server deployed on separate boxes.
              >>> WLS version 8.1sp2 running on Windows 2000/Intel
              >>> IBM MQ version 5.3 running on Solaris/SPARC
              >>>
              >>> We're using "WebSphere MQ classes for Java, version 5.303 -
              >>> j5303-L030225"
              >>> and "WebSphere MQ Extended Transactional Client Feature, version
              >>> 5.300 - j5303-L030122"
              >>>
              >>> MQ files added in WLS POST_CLASSPATH variable in WLS starup script.
              >>>
              >>> Foreign JMS server configured in WLS via fscontext JNDI.
              >>>
              >>> MDB bean deployed with Transaction attribute "Required".
              >>>
              >>> Everything seems to work fine, if we're posting message to MQ queue
              >>> MDB receives it and process successfully (just print message content
              >>> to the console for now).
              >>>
              >>> Problem: In WLS console, under Server->Monitoring->JTA->Monitor
              >>> inflight transactions we can constantly see one transaction enlisted
              >>> for our MDB bean with following details:
              >>>
              >>> =====================================================
              >>> Transaction ID: BEA1-00DFC5EB4B7B7F28EDB9
              >>> Coordinator: mydomain+myserver
              >>> Name: JMSMessagePoller.xxx.xxx.MyMessageProcessorMdb
              >>> Status: Active
              >>> Seconds Active: 17
              >>> Resources:
              >>> weblogic.ejb20.JMSConnectionPoller.xxx.xxx.MyMessageProcessorMdb=started
              >>> Properties
              >>> (key=value):
              >>> weblogic.transaction.name=JMSMessagePoller.xxx.xxx.MyMessageProcessorMdb
              >>> =====================================================
              >>>
              >>> This transaction seems to be Active for 30 seconds and then rolled
              >>> back (no error messages on WLS console displayed).On JTA statistics
              >>> page in WLS console "Total Rolled Back" counter keeps increneting
              >>> with every rollback.
              >>>
              >>> Does anybody observerd similar problem? May be it's normal behaviour
              >>> but I'm kind of worrying about those transactions and constant
              >>> rollback. I'd appreciate any feedback.
              >>>
              >>> ---
              >>> Sincerely,
              >>> Dmitri Maximovich
              >>
              >>
              >>
              

  • Calling Foreign JMS in SOA Suite 11g JMS Adapter

    Hi,
    Just want to get some guidance in the implementation of Foreign JMS in WebLogic 10.3.
    I followed the creation of the Foreign JMS Server using this document:
    http://download.oracle.com/docs/cd/E12839_01/apirefs.1111/e13952/taskhelp/jms_modules/foreign_servers/CreateForeignServers.html
    I am trying to connect to a remote Weblogic 10.3 JMS queue but cannot get pass the JDev wizard stage.
    I need to call the foreign JMS via the Fusion 11g JMS Adapter but cannot lookup the destination from the JDev wizard. My composite will produce a message that will end up in the remote queue.
    Has anybody got this to work? Is this supported in JMS Adapter? I've read quite a few using MDB to call the Foreign JMS but not JMS Adapter.
    Regards,
    Robert

    Please refer to the following document that shows how to access remote wls jms queues and topics. This is the preferred way when accessing remote wls destinations.
    http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10231/adptr_jms.htm#BABJACJA
    Thanks
    Aman

  • [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

  • Foreign JMS Server - Weblogic 8.1 - Weblogic 8.1

    Hi
    I have to weblogic servers running on different ports.
    http://server1:port1
    http://server2:port2
    I have configured JMS store, JMS server, Destination (queue) in port2. I am able to send messages and retrieve messages in port2.
    I have written a MDB which was deployed in server1. I want to process the Messages posted to server2 destination. I tried to configure foreign JMS server in server1.
    In both servers, i am using default connection factories only.
    I am getting the following exceptions.
    ForeignMDB is unable to connect to the JMS destination: LocalTestingQueue
    LocalTestingQueue is the local jndi name given to the foreign destination.
    please find below the weblogic.xml entries for MDB
    <weblogic-enterprise-bean>
         <ejb-name>ForeignMDB</ejb-name>
         <message-driven-descriptor>           <destination-jndi-name>LocalTestingQueue</destination-jndi-name>           <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
              <provider-url>http://myserver:26565</provider-url>          <connection-factory-jndi-name>weblogic.jms.ConnectionFactory</connection-factory-jndi-name>
         </message-driven-descriptor>
    </weblogic-enterprise-bean>
    could you please guide me to complete this?
    Thanks in advance
    Srinivas

    1 - Ensure that the MDB is configured to reference the remote connection factory AND remote destination.
    2 - If using the foreign JMS server facility, ensure that it defines the URL of the remote cluster/server, a connection factory mapping, and a destination mapping. Also ensure that the MDB connection factory and destination descriptor fields reference the local JNDI names for the mappings.
    3 - If not using the foreign JMS server facility, ensure that the MDB descriptor has the URL of the remote cluster, and a destination JNDI name that's in the remote cluster. (The connection factory JNDI name is not needed in this case, as the MDB will automatically look for a default connection factory that MDB's use.)
    I think the MDB chapter of the EJB programmer's guide will likely be helpful here. The latest documentation for the latest release may be more up-to-date than 8.1 -- the concepts are the same with the newer releases.
    Tom

Maybe you are looking for

  • Error while posting GR "Internal error in FORM/FUNCTION CKML_F_BUILD_INDEX

    Dear Experts, While posting GR for any non-valuated material, I am getting an error "Internal error in FORM/FUNCTION CKML_F_BUILD_INDEX in position 1 with RC 0 Message no. C+099" Kindly explore the possibilities of solution for the above error. The a

  • How do I disable Check out dialog when opening Documents from SharePoint 2010

    Hi When I open a pdf document form a SharePoint Server 2010 in the client application (Adobe Reader X) I'm always promted to check out the document to be able to edit it. However in most cases I just want to view the document and the promt is a hinde

  • Please I need a quick answer.

    all, I have lots to do and little time to do it in. I am creating class files (.as) to create objects to use in my flash file. However I can not seem to get them to import. I am not sure how to specify the path to the .as file as it is in a folder ne

  • Creative Zen Mozaic EZ100 stuck on 'rebuilding' screen

    Hi, I bought my Creative Zen Mozaic EZ00 in February and yesterday, after adding files to it and disconnecting the usb, it went onto the 'rebuilding' screen and became stuck there. I reset it and when I turned it back on, it stuck on the same screen

  • Creating Oracle-HA config using zone clusters

    We have a three-node Sun Cluster (3.3u1) on Solaris 10 update 9. We are using Hitachi VSP for external storage. Eventually we may go to RAC (had to drop the RAC licenses for the time being due to budget cuts) For the time being I want to deploy zone