MDB Issue

hi  all
i developed one MDB Application it is saying deployment warning in NWDS and that application was stopped in Deploy service of the VA if i am trying to start that application it is saying this error
Feb 13, 2008 11:31:34 AM /userOut/deploy (com.sap.ide.eclipse.sdm.threading.DeployThreadManager) [Thread[Deploy Thread,5,main]] WARNING:
[004]Deployment finished with warning
Settings
SDM host : EAPSDEV15062
SDM port : 50118
URL to deploy : file:/C:/DOCUME1/SYAM1.PRA/LOCALS~1/Temp/temp3075ClientProxyMDBEAR.ear
Result
=> deployed with warning : file:/C:/DOCUME1/SYAM1.PRA/LOCALS~1/Temp/temp3075ClientProxyMDBEAR.ear
Finished with warnings: development component 'ClientProxyMDBEAR'/'sap.com'/'localhost'/'2008.02.13.11.25.00'/'0':
Caught exception during application startup from SAP J2EE Engine's deploy service:
java.rmi.RemoteException: Error occurred while starting application sap.com/ClientProxyMDBEAR and wait. Reason: Clusterwide exception: server ID 17956850:com.sap.engine.services.ejb.exceptions.deployment.EJBDeploymentException: Exception during the initialization of container boot class com.sap.ClientMDBBean0_0ContainerFP.
     at com.sap.engine.services.ejb.EJBAdmin.prepareLoad(EJBAdmin.java:1013)
     at com.sap.engine.services.ejb.EJBAdmin.prepareStart(EJBAdmin.java:2443)
     at com.sap.engine.services.deploy.server.application.StartTransaction.prepareCommon(StartTransaction.java:223)
     at com.sap.engine.services.deploy.server.application.StartTransaction.prepare(StartTransaction.java:171)
     at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:301)
     at com.sap.engine.services.deploy.server.application.ParallelAdapter.makeAllPhasesImpl(ParallelAdapter.java:342)
     at com.sap.engine.services.deploy.server.application.ParallelAdapter.runInTheSameThread(ParallelAdapter.java:126)
     at com.sap.engine.services.deploy.server.application.ParallelAdapter.makeAllPhasesAndWait(ParallelAdapter.java:245)
     at com.sap.engine.services.deploy.server.DeployServiceImpl.startApplicationAndWait(DeployServiceImpl.java:4707)
     at com.sap.engine.services.deploy.server.DeployServiceImpl.startApplicationAndWait(DeployServiceImpl.java:4612)
     at com.sap.engine.services.deploy.server.DeployServiceImpl.startApplicationAndWait(DeployServiceImpl.java:4585)
     at com.sap.engine.services.deploy.server.DeployServiceImplp4_Skel.dispatch(DeployServiceImplp4_Skel.java:1163)
     at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:312)
     at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:199)
     at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:129)
     at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
     at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
     at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
     at java.security.AccessController.doPrivileged(Native Method)
     at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
     at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
Caused by: com.sap.engine.services.ejb.ContainerInitializationException: Cannot initialize message system bridge com.sap.engine.services.ejb.message.JMSBridgeFP.
     at com.sap.engine.services.ejb.message.MessageContainer.load(MessageContainer.java:451)
     at com.sap.engine.services.ejb.message.MessageContainer.init(MessageContainer.java:153)
     at com.sap.engine.services.ejb.message.MessageContainerFP.init(MessageContainerFP.java:53)
     at com.sap.engine.services.ejb.EJBAdmin.prepareLoad(EJBAdmin.java:1007)
     ... 20 more
Caused by: com.sap.engine.services.ejb.message.JMSBridgeException: JMSException when creating the ConnectionConsumer object for destination MDBClientQueue.
     at com.sap.engine.services.ejb.message.JMSBridge.registerListener(JMSBridge.java:131)
     at com.sap.engine.services.ejb.message.MessageContainer.load(MessageContainer.java:449)
     ... 23 more
Caused by: javax.jms.JMSException: Not enough memory to complete the operation.
     at com.sap.jms.client.memory.MemoryManager.registerNewConsumer(MemoryManager.java:76)
     at com.sap.jms.client.session.Session.createConsumer(Session.java:2155)
     at com.sap.jms.client.session.Session.createConsumer(Session.java:2108)
     at com.sap.jms.client.connection.ConnectionConsumer.<init>(ConnectionConsumer.java:123)
     at com.sap.jms.client.connection.Connection.createConnectionConsumer(Connection.java:201)
     at com.sap.jms.client.connection.QueueConnection.createConnectionConsumer(QueueConnection.java:42)
     at com.sap.engine.services.jmsconnector.cci.QueueConnectionImpl.createConnectionConsumer(QueueConnectionImpl.java:89)
     at com.sap.engine.services.ejb.message.JMSBridge.registerQueueListener(JMSBridge.java:147)
     at com.sap.engine.services.ejb.message.JMSBridge.registerListener(JMSBridge.java:120)
     ... 24 more
(message ID: com.sap.sdm.serverext.servertype.inqmy.extern.EngineApplOnlineDeployerImpl.performAction(DeploymentActionTypes).REMEXC)
Deployment exception : Got problems during deployment
Please give me the reply it would be great appreciate 
Thanks & Regards,
SyamPrasad.P

hi Ivan,
Thank you for your reply,
you can check my ejb-jar.xml and ejb-j2eeengine.xml
<message-driven>
               <ejb-name>ClientMDBBean</ejb-name>
               <ejb-class>com.sap.ClientMDBBean</ejb-class>
               <transaction-type>Container</transaction-type>
               <message-driven-destination>
                    <destination-type>javax.jms.Queue</destination-type>
               </message-driven-destination>
               <resource-ref>
                    <res-ref-name>jms/ClientProxyMDBQueueConnectionFactory</res-ref-name>
                    <res-type>javax.jms.QueueConnectionFactory</res-type>
                    <res-auth>Container</res-auth>
               </resource-ref>
               <resource-env-ref>
                    <resource-env-ref-name>MDBClientQueue</resource-env-ref-name>
                    <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
               </resource-env-ref>
          </message-driven>
in that transaction type is "Container"
and ejb-j2eeengine.xml
ejb-j2eeengine.xml
<enterprise-bean>
               <ejb-name>ClientMDBBean</ejb-name>
               <jndi-name>ClientMDBBean</jndi-name>
               <message-props>
                    <destination-name>MDBClientQueue</destination-name>
                    <connection-factory-name>ClientProxyMDBQueueConnectionFactory</connection-factory-name>
               </message-props>
          </enterprise-bean>
all are correct but in JMSConnector service of the VA showing factory type is  "Unknown" .
Thanks & Regards,
SyamPrasad.P

Similar Messages

  • MDB issue in Weblogic 10.0.2, but working fine in 8.1

    Hello,
    I have multiple MDB's (EJB 2.1) working fine in Weblogic 8.1 and we are now moving to Weblogic 10.0.2. If I understand EJB2.1 is still supported in Weblogic 10.0.2 so deployed the same EAR files in weblogic 10.0.2 successfully.
    Then I have configured the Connection Factory, Queues etc in console (grouping as subdeployments) and now when the application server starts up its throwing the following warning
    <Mar 2, 2010 12:10:05 PM EST> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: ReportingMessageListener is unable to connect to the JMS destination: ReportingQueue. The Error was:[EJB:011013]The Message-Driven EJB attempted to connect to the JMS connection factory with the JNDI name: MPConnectionFactory. However, the object with the JNDI name: MPConnectionFactory is not a JMS connection factory. NestedException Message is :weblogic.jms.client.JMSConnectionFactory>
    Not sure why its unable to connect to my connection factory. I am pasting all the entries and let me know if I am missing anything.
    Here's my weblogic-ejb-jar entry
    <weblogic-enterprise-bean>
    <ejb-name>ReportingMessageListener</ejb-name>
    <message-driven-descriptor>
    <destination-jndi-name>ReportingQueue</destination-jndi-name>
    <connection-factory-jndi-name>MPConnectionFactory</connection-factory-jndi-name>
    </message-driven-descriptor>
    <reference-descriptor>
    <resource-description>
    <res-ref-name>jdbc/REPORTING_USER</res-ref-name>
    <jndi-name>REPORTING_USER</jndi-name>
    </resource-description>
    <ejb-local-reference-description>
    <ejb-ref-name>ejb/ReportingFacadeLocal</ejb-ref-name>
    <jndi-name>ReportingFacadeLocal</jndi-name>
    </ejb-local-reference-description>
    </reference-descriptor>
    here's my entry in weblogic config.xml file
    <jms-server>
    <name>ManagedPayJMSServer</name>
    <target>AdminServer</target>
    <persistent-store>ManagedPayFileStore</persistent-store>
    <temporary-template-resource xsi:nil="true"></temporary-template-resource>
    <temporary-template-name xsi:nil="true"></temporary-template-name>
    </jms-server>
    <jms-system-resource>
    <name>MP JMS Module</name>
    <target>AdminServer</target>
    <sub-deployment>
    <name>MP-JMS</name>
    <target>ManagedPayJMSServer</target>
    </sub-deployment>
    <descriptor-file-name>jms/mp_jms_module-2983-jms.xml</descriptor-file-name>
    </jms-system-resource>
    Entries in jms config file
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-jms xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xsi:schemaLocation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
    <connection-factory name="*MPConnectionFactory*">
    <sub-deployment-name>MP-JMS</sub-deployment-name>
    <jndi-name>MPConnectionFactory</jndi-name>
    <security-params>
    <attach-jmsx-user-id>false</attach-jmsx-user-id>
    </security-params>
    </connection-factory>
    <queue name="*ReportingQueue*">
    <sub-deployment-name>MP-JMS</sub-deployment-name>
    <jndi-name>ReportingQueue</jndi-name>
    </queue>
    </weblogic-jms>
    Thanks,

    Does your MDB require transactions ? If so you need to XA enable the connection factory. Looks like you are using a transactional MDB with non XA connection factory.

  • MDB Transaction

    Hi,
    I'm having some issues in same cases with MDB transactions on WL. I have an MDB deployed on a 9.2 WL defined as a CMP with auto-acknowledge in the EJB descriptor (using EJB 2.1 standards) which listens on a queue which is defined in the local WL JMS module and mapped to an external Tibco EMS queue.
    Used descriptor configuration :
    <messaging-type>javax.jms.MessageListener</messaging-type>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-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-property>
    <activation-config-property-name>acknowledgeMode</activation-config-property-name>
    <activation-config-property-value>Auto-acknowledge</activation-config-property-value>
    </activation-config-property>
    </activation-config>
    The MDB processes the message, accesses a DB and sends it of the an external system. When no exception happened the MDB method finishes and normally the container acknowledges
    This all works great untill we put some load on the queue. Sometimes we note that a JMS message gets stuck in the input queue when lots of messages are being put on the input queue. We can trace that such messages actually were picked up by the MDB and processed to a certain extend.
    Sometimes the processing log trace just stops in the middle of processing. Sometimes the entire processing log trace is present. However the JMS messages are kept in the input queue and seem to locked (they can't be flushed out as long as the component is still running).
    It looks like the messages are awaiting acknowledgement from the WL container manager but somehow the transaction got lost and never got back to the external EMS to acknowledge the message in the input queue.
    I was wondering if there is a way to monitor CMP transactions or the status of the container manager? As far as I know the container manager always tries to contact the remote EMS server to acknowledge the message in this setup. What would happen if the remote EMS server would be overloaded and could not respond back to the WL container manager to confirm message acknowledgment?

    Thanks for the reply. There are no errors what so ever regarding MDB issues. Not in the weblogic / console logging, nor in the logging of the component itself.
    The MDB itself is setup to have 16 concurrent beans per component deployment. The component is clustered over 4 server instances. So there are quite some concurrent MDBs running. However since the messages get stuck for weeks eventhough the component only has bursts of messages to process, one would think that the the stuck messages would be processed whenever the component has some spare time (which it has a lot between the bursts).
    Therefor i doubt it has anything to do with too little MDBs running. But frankly I have no idea what's wrong.

  • JMS Message Queue - stuck in

    I am on SOA SUITE 11.1.17
    I have a jms queue set up and am able to successfully send messages to it using the SOA JMS Adapter.  I am able to succesfully listen to a queue using a JMS adapter in a different project.
    However, here when I try to "listen" to the queue using a java program, the message is "received" in my java program and processed as it should be.  The java program is running in a while loop, so it stays running.
    On the queue, when the java program reads it, the message is moved to the "Messages Pending" column.  When I kill the java program, the message is returned to the "Messages Current"
    Would anyone have any ideas about this?  We have an existing java based program isn't properly "closing" the message.
    I tried:
    1.  placing msg.acknowledge() in the code, since the documentation states that messages that are in "Messages Pending" have been read, but not acknowledged or committed -- but this does nothing.
    2.  Setting the expiration on the message to 1, but that is a hack.  I would rather fix the problem than use a hack.
    Anyone have any ideas what is wrong?
    Thank you,
    Stuart
    import java.io.IOException;
    import java.io.InputStreamReader;
    import javax.jms.Connection;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageListener;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    public class JMSListenAndRespond extends JMSQueueHandler implements MessageListener {
      private Session jmsSession = null;
      private MessageConsumer jmsMessageConsumer = null;
      private Connection jmsConnection = null;
      int counter = 1 ;
      public static void main(String[] args) throws Exception {
        InputStreamReader commandBuffer = null;
        char command = '\0';
          // first listen for any messages
          JmsDataObject q = new JmsDataObject();
          q.setJmsCF("jms/TestConnectionFactory");
          q.setJmsQueue("jms/TestJMSQueue");
          q.setServerPwd("welcome1");
          q.setServerLogin("weblogic");
          q.setUrl("t3://localhost:7101");
          q.setJmsMsg("na -- we are listinging...");
        JMSListenAndRespond lis = new JMSListenAndRespond();
         lis.consumeMessage(q);
        System.out.println("(type q to exit at any time...)\n");
        try {
          // Now just loop, waiting for messages until user types 'q' to quit
          commandBuffer = new InputStreamReader(System.in);
        while (!(command == 'q')) {
           try {
              command = (char)commandBuffer.read();
              System.out.println("Command: "+command);
              lis.stopListening();
            } catch (IOException e) {
              System.err.println("I/O Exception: ");
              e.printStackTrace();
           } //while
        } finally {
                lis.stopListening();
          lis.stopListening();
       public void stopListening() {
        try {
          if (jmsMessageConsumer != null) {
            jmsMessageConsumer.close();
          if (jmsSession != null) {
            jmsSession.close();
          if (jmsConnection != null) {
            jmsConnection.close();
        } catch (JMSException e) {
          System.err.println("Couldn't properly close all resources.\n");
          e.printStackTrace();
      private void prepareToConsumeMessage() {
        // create JMS connection, session, consumer and register listener - then start session
            try {
          // create connection
          jmsConnection = getJmsConnectionFactory().createConnection();
          // create session
          jmsSession =   jmsConnection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
          jmsMessageConsumer = jmsSession.createConsumer(getJmsDestination());
          // register a message listener (onMessage)
          jmsMessageConsumer.setMessageListener(this);
          // initiate connection - make sure to register your listener first or you might lose messages
          jmsConnection.start();
          System.out.println("\n...listening for message!\n");
        } catch (JMSException e) {
          System.err.println("Problem initializing JMS session");
          e.printStackTrace();
          System.exit(-1);
         * onMessage
         * The callback function invoked upon message reception
      public void onMessage(Message msg) {
        try {
          String msgText;
          if (msg instanceof TextMessage) {
            msgText = ((TextMessage)msg).getText();
            // this method expects a CSV string with the following makeup:
            // firstName,lastName,gender,birthdate,address,city,zipcode,state,insurancePolicyId
            String messageId = msg.getJMSMessageID();
          // code to process goes here.....
          } else {
            // if message is not a TextMessage, attempt a conversion to string
            System.out.println("\n** NEW MESSAGE (" + msg.getClass().getName() +
                               "):\n" +
                msg.toString());
        } catch (JMSException e) {
          e.printStackTrace();
      public void consumeMessage(JmsDataObject q ) {
        initializeJndiProperties(q);
        initializeJNDIandCF(q.getJmsQueue());
        prepareToConsumeMessage();
    import java.util.Properties;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    public abstract class JMSQueueHandler {
      protected void initializeJNDIandCF(String destinationQueueName) {
        // initialize JNDI context and lookup connection factory and destination
        try {
          // Initialize JNDI context
          jndiContext = new InitialContext(jndiProperties);
        } catch (NamingException e) {
          e.printStackTrace();
        try {
          // lookup JMS connection factory in JNDI
          jmsConnectionFactory =
              (ConnectionFactory)jndiContext.lookup(jndiProperties.getProperty("factory.name"));
          // lookup JMS destination in JNDI
          jmsDestination = (Destination)jndiContext.lookup(destinationQueueName);
        } catch (NamingException e) {
          System.err.println("Problem during the JNDI lookup\n");
          e.printStackTrace();
          System.exit(-1);
      public void initializeJndiProperties(JmsDataObject qdo ) {
        // set JNDI properties
        jndiProperties.put("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory");
        jndiProperties.put("java.naming.provider.url", qdo.getUrl() );
       // jndiProperties.put("java.naming.security.principal", NAMING_PRINCIPAL);
        jndiProperties.put("java.naming.security.principal", qdo.getServerLogin() ) ;
        //  jndiProperties.put("java.naming.security.credentials", NAMING_CREDENTIAL);
        jndiProperties.put("java.naming.security.credentials", qdo.getServerPwd() );
        //jndiProperties.put("factory.name", JMS_CONNECTION_FACTORY);
        jndiProperties.put("factory.name", qdo.getJmsCF() );
      //protected static final String NAMING_PROVIDER_URL = "t3://localhost:7101";
    //protected static final String NAMING_PRINCIPAL = "weblogic";
    // protected static final String NAMING_CREDENTIAL = "welcome1";
    // protected static final String JMS_CONNECTION_FACTORY = "jms/patientsJmsCF";
    // protected static final String JMS_CONNECTION_FACTORY = "jms/TestConnectionFactory";
      ConnectionFactory jmsConnectionFactory = null;
      Destination jmsDestination = null;
      InitialContext jndiContext = null;
      Properties jndiProperties = new Properties();
      public void setJmsConnectionFactory(ConnectionFactory jmsConnectionFactory) {
        this.jmsConnectionFactory = jmsConnectionFactory;
      public ConnectionFactory getJmsConnectionFactory() {
        return jmsConnectionFactory;
      public void setJmsDestination(Destination jmsDestination) {
        this.jmsDestination = jmsDestination;
      public Destination getJmsDestination() {
        return jmsDestination;

    Thanks for the reply. There are no errors what so ever regarding MDB issues. Not in the weblogic / console logging, nor in the logging of the component itself.
    The MDB itself is setup to have 16 concurrent beans per component deployment. The component is clustered over 4 server instances. So there are quite some concurrent MDBs running. However since the messages get stuck for weeks eventhough the component only has bursts of messages to process, one would think that the the stuck messages would be processed whenever the component has some spare time (which it has a lot between the bursts).
    Therefor i doubt it has anything to do with too little MDBs running. But frankly I have no idea what's wrong.

  • MDB on distributed topic issue (server restart)

    Setup:
              - On WebLogic 8.1 SP3, One cluster with 2 managed servers, S1 and S2.
              - JMS servers are configured for both S1 and S2.
              - ConnectionFactory(load balancing=true, server affinity=false, XA Transaction=true) is deployed to the cluster
              - Distributed topic, DT1, deployed to the cluster with physical memeber on each JMS server, T1 on S1, T2 on S2
              - MDB for DT1 is deployed in both S1 and S2
              - Sending message to DT1 thru a session bean with container managed transaction.
              Test:
              1. Start both server, and send 10 messages to DT1, evenrything is fine, both servers received 10 messsage each
              2. Shutdown S2
              3. Send another 10 messages to DT1, S1 received 10 messages thru MDB deployed on it, and noticed that there are 10 messages pending for T1 (by using console destination monitoring function)
              4. Restart S2
              5. When S2 is fully restarted, noticed that the 10 pending messages are gone for T1, but S1 printout 10 Alert: Tx heuristic result
              6. then, if send another 10 messages thru session bean in S1, both servers receives 10 messages each; if send another 10 messages thru session bean in S2, only S2 will receive them all, S1 receives nothing and noticed that 10 messages pending for T2
              Someone posted a similar issue before, but no clear answer on exactly what happened and how to fix it.
              Thanks,
              JD

    The errors are:
              <17-Feb-2005 4:40:45 o'clock PM EST> <Error> <JTA> <BEA-110412> <Xid=BEA1-054635FA5A4B74B8B574(14775730),Status=Committed,HeuristicErrorCode=XA_HEURHAZ,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=0,seconds left=300,XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=committed,assigned=server2),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@e8b13,re-Registered = false),SCInfo[NakinaDomain+server2]=(state=committed)) completed heuristically: (weblogic.jdbc.wrapper.JTSXAResourceImpl, HeuristicHazard, (javax.transaction.xa.XAException: No connection associated with xid = BEA1-054635FA5A4B74B8B574-7765626C6F6769632E6A6462632
              E777261707065722E4A545358415265736F75726365496D706C)) >

  • Design Issue with using MDB

    Lack of timer services with EJB 2.0 dictated our design to implement MDB, since we really needed to use a timeout mechanism for the calling client. Client puts requests into the queue and after processing, the response object messages are put into the response queue owned by the client i.e client configured queue on the JMS server. This model works for the case where the client is a stateless session bean. Now the issue is that we having another client - web application this time, with a servlet pumping requests to the request queue . How do I retain the same model but send queued messages back to the web application? since a response queue cannot be owned by the app. or can it? is there a work around for this scenario..anyone faced a similar situation?

    May be I was not clear enough in my first explanation, Let me try again to explain my scenario:
    My Expectation from Multi Provider is :
    IObjectA
    1AAA
    (From InfoObject)
    Union
    IObjectA     IObjectB     IObjectC
    1AAA     2BBB     3CCC
    (From Cube)
    The record in the multiprovider should be :
    IObjectA     IObjectB     IObjectC
    1AAA     2BBB     3CCC
    Because, this is what the Union says .. and the Definition of the multiprovider also says the same thing :
    http://help.sap.com/saphelp_bw30b/helpdata/EN/ad/6b023b6069d22ee10000000a11402f/frameset.htm
    Do you still think this is how the behaviour of the multiprovider.. if that is the case what would be the purpose of having an infoobject in the multiprovider.
    Thank you very much in advance for your responses.
    Best Regards.,
    Praveen.

  • Exception when using TIBCO EMS for a WebLogic MDB - intermittent issue

    We have a weblogic app that uses an MDB to retreive messages from TIB EMS.
    There are no exceptions at first - the messages are retreived and everything works well.
    But after a few days and then we see the following exception:
    ####<Apr 13, 2009 2:11:43 PM EDT> <Error> <Kernel> <dhbpmapp2.is.bear.com> <mngENS_dhbpmapp2> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1239646303673> <BEA-000802> <ExecuteRequest failed
    java.lang.ClassCastException: com.tibco.tibjms.naming.TibjmsFederatedQueue.
    java.lang.ClassCastException: com.tibco.tibjms.naming.TibjmsFederatedQueue
    at weblogic.jms.common.CDS.ddLookup(CDS.java:759)
    at weblogic.jms.common.CDS.access$400(CDS.java:37)
    at weblogic.jms.common.CDS$DDLookupTimerListener.timerExpired(CDS.java:612)
    at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManag erImpl.java:464)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
    We do not know why this comes up after a few days.
    Any help in tracking this down will be greatly appreciated.
    We are using Weblogic Server 10.0

    Hi,
    This might be happening when the MDB tries to reconnect to the foreign destination.
    Have you configured the TIB EMS as Foreign JMS provider in WLS ?
    Do you know whether this issue happens only when
    1) the MDB gets redeployed ?
    2) the server instance that hosts the foreign dest gets bounced?
    3) the JMS module that defines the foreign JMS server gets redeployed ?
    Anyway, based on a quick search in support cases, looks like this issue has been already fixed.
    Please contact the customer support to get the appropriate patch.
    Thanks
    Kats

  • How to debug signal related issues with mdb

    I have a C++ application and occassionally it core dumps receiving a SIGABRT signal. We are not able to find the source of the SIGABRT signal. All we have is the core. Is there a way to find out who sent SIGABRT to our process? For that matter if someone sends our application a SIGABRT using kill cmd asynchronously, how does one find out who has sent the same? We can't keep truss'ing the process as it's a production env. Is there a way to find this out from the core file?

    I don't have a specific suggestion, but these ideas might help you.
    I assume by 'cannot be resumed' that you are able to launch the application, but after leaving the application and returning back to it, the app crashes? Or is it that you can run the app once but never a 2nd time (even after it fully closes)?
    What kind of app is it? WP7, WP8, WP8.1? Silverlight or WinRT? It might not make a difference but it might make it easier to find a solution. I suggest looking up the application life cycle relevant to the version you are targeting.
    Is your app.xaml.cs doing anything out of the ordinary or is it just the default code?
    Here's what I would try: put a breakpoint at the start of every method in App.xaml.cs/VB and hope one is hit! Not very helpful, but you might get lucky. I'm not too well versed in app resuming, but is the app navigating back to the page it was on when tombstoned?
    Perhaps the issue is in the page OnNavigatedTo or the Loaded event handler (if you have one).
    When my apps fail to launch and don't hit any breakpoints it usually ends up being an issue in XAML, not code behind. But I don't think your problem fits that becuase you can clearly launch the app, just not resume it.
    I'm sure you've probably tried most of those things, but hopefully I thought of something you missed and it turns out to help :)
    Visit http://blog.grogansoft.com/ for Windows development fun.

  • EJB 3.0 MDB deployment issue with weblogic 10.0

    Hi there,
    I am new to MDB EJB and right now I am using the EJB 3.0 with weblogic server 10.0. I am using Eclipse 3.4 for development.
    After developing the MDB from eclipse I export the EAR from eclipse and deploy it in weblogic. When I try to start the deployed EAR it gives me following error.
    weblogic.application.ModuleException: Exception preparing module: EJBModule(Message.jar)
    Unable to deploy EJB: MessageBean from Message.jar:
    [EJB:011113]Error: The Message Driven Bean 'MessageBean(Application: MessageEAR, EJBComponent: Message.jar)', does not have a message destination configured. The message destination must be set using a message-destination-link, destination-resource-link, destination-jndi-name or a resource-adapter-jndi-name.
         at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:399)
         at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
         at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:360)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
         at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:56)
         Truncated. see log file for complete stacktrace
    [EJB:011113]Error: The Message Driven Bean 'MessageBean(Application: MessageEAR, EJBComponent: Message.jar)', does not have a message destination configured. The message destination must be set using a message-destination-link, destination-resource-link, destination-jndi-name or a resource-adapter-jndi-name.
         at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.ensureMDBHasDestinationConfigured(MessageDrivenBeanInfoImpl.java:1811)
         at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.prepare(MessageDrivenBeanInfoImpl.java:1011)
         at weblogic.ejb.container.deployer.EJBDeployer.setupBeanInfos(EJBDeployer.java:997)
         at weblogic.ejb.container.deployer.EJBDeployer.prepare(EJBDeployer.java:1273)
         at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:372)
         Truncated. see log file for complete stacktrace
    >
    Any help really appreciated. It's too urgent.
    Thanks in advance,
    Piyush

    here is the code for my bean.
    package com.ups;
    import java.util.logging.Logger;
    import javax.ejb.ActivationConfigProperty;
    import javax.ejb.EJBException;
    import javax.ejb.MessageDriven;
    import javax.ejb.MessageDrivenContext;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageListener;
    import javax.jms.TextMessage;
    * Message-Driven Bean implementation class for: MessageBean
    @MessageDriven(
              activationConfig = { @ActivationConfigProperty(
                        propertyName = "destinationType", propertyValue = "javax.jms.Queue"
    public class MessageBean implements MessageListener {
         private MessageDrivenContext mdc;
    * Default constructor.
    public MessageBean() {
    // TODO Auto-generated constructor stub
    * @see MessageListener#onMessage(Message)
    public void onMessage(Message message) {
         TextMessage tmsg = null;
    try {
    tmsg = (TextMessage) message;
    System.out.println("MESSAGE BEAN: Message received: " + tmsg.getText( ));
    System.out.println ("The onMessage() is called");
    } catch (JMSException e) {
    e.printStackTrace( );
    mdc.setRollbackOnly( );
    catch (Throwable th) {
    th.printStackTrace();
    public void ejbRemove( )throws EJBException{
         System.out.println("ejbRemove() is executed >>>>>>>");
    I have configured my JMS Distributed queue in the Weblogic.
    If possible please provide more details so that I can get rid of this error as soon as possible.
    Thanks for reply.
    Piyush

  • Issue with lock file in Oracle 10g app server - MDB not running

    Hi,
    I have Oracle 10g & MQ 6 on my laptop. I generated JNDI bindings for app server-MQ by giving ip address of my machine first. Then i changed it to "localhost" & generated new set of .bindings file.
    With this new set i am able to send messages from my program to a queue. I also have an MDB which should listen to the same queue.
    However now my mdb is not listening to the queue & i suspect it is due to host address change, - because each time i start the server, i see a lock file created "OracleASRouter_store.lock" - under j2ee\home\persistance. And below is the content of the same -
    "O10.1.4.245:/C:/Program Files/Oracle/oc4j_extended_101330/j2ee/home/persistence/"
    As per few suggestions on this site, I deleted this file & restated app server, deleted whole content of persistance folder, restarted app server. But each time i see this file created and also see the ip address in log.xml under j2ee\home\log\oc4j
    Error message in this log.xml file is
    <MESSAGE>
    <HEADER>
    <TSTZ_ORIGINATING>2007-09-19T11:22:35.265-04:00</TSTZ_ORIGINATING>
    <COMPONENT_ID>j2ee</COMPONENT_ID>
    <MSG_ID>J2EE EJB-02009</MSG_ID>
    <MSG_TYPE TYPE="WARNING"></MSG_TYPE>
    <MSG_LEVEL>1</MSG_LEVEL>
    <HOST_ID>IFLEXNY-EXT99</HOST_ID>
    <HOST_NWADDR>10.1.4.245</HOST_NWADDR>
    <MODULE_ID>ejb.runtime</MODULE_ID>
    <THREAD_ID>10</THREAD_ID>
    <USER_ID>chetanmi</USER_ID>
    </HEADER>
    <CORRELATION_DATA>
    <EXEC_CONTEXT_ID><UNIQUE_ID>10.1.4.245:65858:1190215355296:0</UNIQUE_ID><SEQ>0</SEQ></EXEC_CONTEXT_ID>
    </CORRELATION_DATA>
    <PAYLOAD>
    <MSG_TEXT>[STGMQ:STGMQEJB:TestMDB] Unexpected exception by JMS provider: javax.jms.MessageEOFException: initializeConnection.</MSG_TEXT>
    <SUPPL_DETAIL><![CDATA[javax.jms.MessageEOFException: initializeConnection
         at com.evermind.server.jms.JMSUtils.make(JMSUtils.java:1075)
         at com.evermind.server.jms.JMSUtils.toJMSException(JMSUtils.java:1155)
         at com.evermind.server.jms.TCPJMSRemoteServer.initializeConnection(TCPJMSRemoteServer.java:154)
         at com.evermind.server.jms.TCPJMSRemoteServer.initializeConnection(TCPJMSRemoteServer.java:110)
         at com.evermind.server.jms.TCPJMSRemoteServer.<init>(TCPJMSRemoteServer.java:68)
         at com.evermind.server.jms.EvermindConnection.<init>(EvermindConnection.java:122)
         at com.evermind.server.jms.EvermindQueueConnection.<init>(EvermindQueueConnection.java:70)
         at com.evermind.server.jms.EvermindQueueConnectionFactory.unprivileged_createQueueConnection(EvermindQueueConnectionFactory.java:101)
         at com.evermind.server.jms.EvermindQueueConnectionFactory.access$000(EvermindQueueConnectionFactory.java:44)
         at com.evermind.server.jms.EvermindQueueConnectionFactory$1.execute(EvermindQueueConnectionFactory.java:81)
         at com.evermind.server.jms.InContainerProxy.doSecureOp(InContainerProxy.java:157)
         at com.evermind.server.jms.EvermindQueueConnectionFactory.createQueueConnection(EvermindQueueConnectionFactory.java:78)
         at com.evermind.server.jms.EvermindQueueConnectionFactory.createQueueConnection(EvermindQueueConnectionFactory.java:69)
         at com.evermind.server.ejb.MessageDrivenConsumer.createNonXAResources(MessageDrivenConsumer.java:567)
         at com.evermind.server.ejb.MessageDrivenConsumer.initializeJMSResources(MessageDrivenConsumer.java:491)
         at com.evermind.server.ejb.MessageDrivenConsumer.processMessages(MessageDrivenConsumer.java:208)
         at com.evermind.server.ejb.MessageDrivenConsumer.run(MessageDrivenConsumer.java:169)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:298)
         at java.lang.Thread.run(Thread.java:595)
    Caused by: java.io.EOFException
         at java.io.DataInputStream.readInt(DataInputStream.java:358)
         at com.evermind.server.jms.JMSRemoteServer.readCheck(JMSRemoteServer.java:678)
         at com.evermind.server.jms.JMSRemoteServer.readProtocol(JMSRemoteServer.java:696)
         at com.evermind.server.jms.TCPJMSRemoteServer.initializeConnection(TCPJMSRemoteServer.java:134)
         ... 16 more
    ]]></SUPPL_DETAIL>
    </PAYLOAD>
    </MESSAGE>
    <MESSAGE>
    <HEADER>
    <TSTZ_ORIGINATING>2007-09-19T11:22:35.312-04:00</TSTZ_ORIGINATING>
    <COMPONENT_ID>j2ee</COMPONENT_ID>
    <MSG_ID>J2EE EJB-02014</MSG_ID>
    <MSG_TYPE TYPE="WARNING"></MSG_TYPE>
    <MSG_LEVEL>1</MSG_LEVEL>
    <HOST_ID>IFLEXNY-EXT99</HOST_ID>
    <HOST_NWADDR>10.1.4.245</HOST_NWADDR>
    <MODULE_ID>ejb.runtime</MODULE_ID>
    <THREAD_ID>10</THREAD_ID>
    <USER_ID>chetanmi</USER_ID>
    </HEADER>
    <CORRELATION_DATA>
    <EXEC_CONTEXT_ID><UNIQUE_ID>10.1.4.245:65858:1190215355296:0</UNIQUE_ID><SEQ>0</SEQ></EXEC_CONTEXT_ID>
    </CORRELATION_DATA>
    <PAYLOAD>
    <MSG_TEXT>[STGMQ:STGMQEJB:TestMDB] All message consumer threads have terminated due to provider errors, stopping MDB.</MSG_TEXT>
    </PAYLOAD>
    </MESSAGE>
    And my MDB is NOT WORKING. Please let me know how to deal with this.
    Your suggestions would be much appreciated.
    Regard,
    Chetan

    Line # 127 is creating a new application object using ApplicationFactory.
    ApplicationFactory aFactory =
    (ApplicationFactory) FactoryFinder.getFactory(
    FactoryFinder.APPLICATION_FACTORY);
    application = aFactory.getApplication();
    The only way that can throw a null pointer is when aFactory is NULL. I really doubt this case because, the same thing is doen in init() of FacesServlet. If it had failed there, the exception should have occured during server startup.
    This leaves me more and more confused....I am desperate for some help now :((
    Ramesh

  • Probelems with MDB listening to MQ (Startup class issue )

    Hello ,
              I am supposed to write a Message driven bean that would reside on
              Weblogic7.0 and listen to a particular queue of IBM MQ.
              I understand that we need to write a Start-up class for this. I have
              written the start-up class but I am getting the following error:
              <Apr 16, 2003 3:17:14 PM EDT> <Warning> <EJB> <010061> <The
              Message-Driven EJB: SimpleMDB is unable
              to connect to the JMS destination: ivtQ. The EJB container will
              automatically attempt to re-establis
              h the connection with the JMS server. This warning may occur during
              WebLogic Cluster start-up if the
              JMS destination is located on another server. When the JMS server
              connection is re-established, the
              Message-Driven EJB will again receive JMS messages.
              The Error was:
              The JMS destination with the JNDI name: ivtQ 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.>
              I understand that there are some configuration issues:
              Can you please guide where am I going wrong:
              1.     What should be the value of the <destination-jndi-name> in the
              Weblogic-ejb-jar. I have not passed any Queue name through the
              start-up class &#8230;Is it ok?
              2.     Then what queue name should I specify. (ofcousrse it should be the
              MQ queue name but do I need to add that in the JNDI or in the
              weblogic console&#8230;?
              3.     Please confirm that the <connection-factory-jndi-name> mentioned in
              the weblogic-ejb-jar.xml should be the same as what I am passing as
              JNDIName (through weblogic console).
              4.     Kindly advice if I am missing anything (especially in my start-ip
              class)
              Here are my Deployemnt descriptors:
              weblogic-ejb-jar
              <?xml version="1.0"?>
              <!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic
              7.0.0 EJB//EN" "http://www.bea.com/servers/wls700/dtd/weblogic-ejb-jar.dtd">
              <weblogic-ejb-jar>
                   <weblogic-enterprise-bean>
                        <ejb-name>SimpleMDB</ejb-name>
                        <message-driven-descriptor>
                             <pool>
                                  <max-beans-in-free-pool>8</max-beans-in-free-pool>
                                  <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
                             </pool>
                             <destination-jndi-name>ivtQ</destination-jndi-name>               
                             <initial-context-factory>
              com.sun.jndi.fscontext.RefFSContextFactory
              </initial-context-factory>
                             <provider-url>
              file:/D:/JNDI/
              </provider-url>
                             <connection-factory-jndi-name>
              MyQCF
              </connection-factory-jndi-name>
                        </message-driven-descriptor>
                   </weblogic-enterprise-bean>
              </weblogic-ejb-jar>
              ejb-jar.xml
              <?xml version="1.0"?>
              <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise
              JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
              <ejb-jar>
                   <enterprise-beans>
                        <message-driven>
                             <ejb-name>SimpleMDB</ejb-name>
                             <ejb-class>weblogic.jms.whitepaper.SimpleMDB</ejb-class>
                             <transaction-type>Container</transaction-type>
                             <message-driven-destination>
                                  <!-- In WebLogic Server 6.0, this next parameter is named
              "jms-destination-type" -->
                                  <destination-type>javax.jms.Queue</destination-type>
                             </message-driven-destination>
                        </message-driven>
                   </enterprise-beans>
                   <assembly-descriptor>
                        <container-transaction>
                             <method>
                                  <ejb-name>SimpleMDB</ejb-name>
                                  <method-name>*</method-name>
                             </method>
                             <trans-attribute>Required</trans-attribute>
                        </container-transaction>
                   </assembly-descriptor>
              </ejb-jar>
              My Start-up class is as follows:
              import com.ibm.mq.jms.*;
              import java.util.*;
              import javax.jms.*;
              import javax.naming.*;
              import weblogic.common.*;
              public class MQJMSStartup implements T3StartupDef
                   /** * The name of the queue manager to connect to. The startup class
              * will throw an exception if this parameter is not set. */
                   public final static String QM_NAME_PROPERTY = "QManager";
                   /** * The host name where the queue manager runs. If not set, the *
              startup class will create a "bindings mode" connection to a * queue
              manager on the local host. */
                   public final static String QM_HOST_PROPERTY = "QManagerHost";
                   /** * The port number where the queue manager listens. If not set,
              this * defaults to 1414, the default MQSeries port */
                   public final static String QM_PORT_PROPERTY = "QManagerPort";
                   /** * The name in JNDI to store this queue manager object under. * If
              not set, the startup class will throw an exception. */
                   public static final String JNDI_NAME_PROPERTY = "JNDIName";
                   // Required
                   public MQJMSStartup()
                   // Required, but not needed
                   public void setServices(T3ServicesDef services)
                        public String startup(String name, Hashtable args) throws Exception
                        String qmName = (String)args.get(QM_NAME_PROPERTY);
                        System.out.println("*****The qmName is "+qmName);
                        if (qmName == null)
                             throw new Exception("Startup parameter " + QM_NAME_PROPERTY + "
              must be set");
                        String jndiName = (String)args.get(JNDI_NAME_PROPERTY);
                        System.out.println("***The JNDI Nname is "+jndiName);
                        if (jndiName == null)
                             throw new Exception("Startup parameter " + JNDI_NAME_PROPERTY + "
              must be set");
                        String qmHost = (String)args.get(QM_HOST_PROPERTY);
                        System.out.println("*****The qmHost is "+qmHost);
                        String qmPort = (String)args.get(QM_PORT_PROPERTY);
                        System.out.println("*****The qmPort is "+qmPort);
                        MQQueueConnectionFactory factory = new MQQueueConnectionFactory();
                        factory.setQueueManager(qmName);
                        if (qmHost == null)
                             factory.setTransportType(JMSC.MQJMS_TP_BINDINGS_MQ);
                             factory.setHostName(qmHost);
                             if (qmPort != null)
                                  try
                                       int portNum = Integer.parseInt(qmPort);
                                       factory.setPort(portNum);
                                  catch (NumberFormatException ignore)
                        else
                             factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
                        InitialContext context = new InitialContext();
                        context.bind(jndiName, factory);
                        context.close();
                        StringBuffer buf = new StringBuffer();
                        buf.append( "A connection factory was created for the MQ Queue
              Manager ");
                        buf.append(qmName);
                        buf.append(" and stored in JNDI at ");
                        buf.append(jndiName);
                        System.out.println("*****The mqstartup is executed
              succesfully"+buf.toString());
                        return buf.toString();
              The args that I pass through the weblogic console is as follows:
              QManager=QM_mphasis_eight, JNDIName=MyQCF
              Please advice,
              regards,
              Milan Doshi
              

    Thanks for the response.
              I have written the startUp class but I am getting the following error:
              The Error was:
              The JMS destination with the JNDI name: MySenderQueue 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.>
              =====
              My startup class is as follows:
              String qmPort = (String)args.get(QM_PORT_PROPERTY);
              String qmHost = (String)args.get(QM_HOST_PROPERTY);
              String qmName = (String)args.get(QM_NAME_PROPERTY);
              MQQueueConnectionFactory factory = new MQQueueConnectionFactory();
              factory.setQueueManager(qmName);
              factory.setHostName(qmHost);
              if (qmPort != null)
              try
              int portNum = Integer.parseInt(qmPort);
              factory.setPort(portNum);
              catch (NumberFormatException ignore)
              if (qmHost == null)
              factory.setTransportType(JMSC.MQJMS_TP_BINDINGS_MQ);
              else
              factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
              InitialContext context = new InitialContext();
              context.bind(jndiName, factory);
              QueueConnection connection = factory.createQueueConnection();
              boolean transacted = false;
              QueueSession session = connection.createQueueSession( transacted,
              Session.AUTO_ACKNOWLEDGE);
              Queue ioQueue = session.createQueue("MySenderQueue");
              context.bind("MySenderQueue",ioQueue);
              context.close();
              ===================================================
              My Weblogic-ejb-jar.xml is like this:
              <weblogic-ejb-jar>
              <weblogic-enterprise-bean>
              <ejb-name>SimpleMDB</ejb-name>
              <message-driven-descriptor>
              <pool>
              <max-beans-in-free-pool>8</max-beans-in-free-pool>
              <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
              </pool>
              <destination-jndi-name>MySenderQueue</destination-jndi-name>
              <connection-factory-jndi-name>
              MyQCF
              </connection-factory-jndi-name>
              </message-driven-descriptor>
              </weblogic-enterprise-bean>
              </weblogic-ejb-jar>
              ======================================================
              Can you please guide me what is wrong in registering the Queue?
              Thanks once again for the response,
              Milan Doshi
              "sudhir" <[email protected]> wrote in message news:<[email protected]>...
              > Mian,
              >
              > You should pass the Queue Name in the startup class arguments. This would be
              > the same name as the MQ Queue you have defined. There is no need to specify to
              > provider URL to the file ... If you do, then ensure that the the queue name should
              > refer to the MQ Administered Queue object defined by jmsadmin.
              >
              > -Sudhir
              >
              >
              >
              > [email protected] (Milan Doshi) wrote:
              > >Hello ,
              > >
              > >I am supposed to write a Message driven bean that would reside on
              > >Weblogic7.0 and listen to a particular queue of IBM MQ.
              > >
              > >I understand that we need to write a Start-up class for this. I have
              > >written the start-up class but I am getting the following error:
              > >
              > ><Apr 16, 2003 3:17:14 PM EDT> <Warning> <EJB> <010061> <The
              > >Message-Driven EJB: SimpleMDB is unable
              > >to connect to the JMS destination: ivtQ. The EJB container will
              > >automatically attempt to re-establis
              > >h the connection with the JMS server. This warning may occur during
              > >WebLogic Cluster start-up if the
              > > JMS destination is located on another server. When the JMS server
              > >connection is re-established, the
              > > Message-Driven EJB will again receive JMS messages.
              > >The Error was:
              > >The JMS destination with the JNDI name: ivtQ 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.>
              > >
              > >I understand that there are some configuration issues:
              > >
              > >Can you please guide where am I going wrong:
              > >1.     What should be the value of the <destination-jndi-name> in the
              > >Weblogic-ejb-jar. I have not passed any Queue name through the
              > >start-up class ?Is it ok?
              > >2.     Then what queue name should I specify. (ofcousrse it should be the
              > >weblogic console??
              > >3.     Please confirm that the <connection-factory-jndi-name> mentioned in
              > >the weblogic-ejb-jar.xml should be the same as what I am passing as
              > >JNDIName (through weblogic console).
              > >4.     Kindly advice if I am missing anything (especially in my start-ip
              > >class)
              > >
              > >Here are my Deployemnt descriptors:
              > >
              > >weblogic-ejb-jar
              > >
              > ><?xml version="1.0"?>
              > ><!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic
              > >7.0.0 EJB//EN" "http://www.bea.com/servers/wls700/dtd/weblogic-ejb-jar.dtd">
              > ><weblogic-ejb-jar>
              > >     <weblogic-enterprise-bean>
              > >          <ejb-name>SimpleMDB</ejb-name>
              > >          <message-driven-descriptor>
              > >               <pool>
              > >                    <max-beans-in-free-pool>8</max-beans-in-free-pool>
              > >                    <initial-beans-in-free-pool>1</initial-beans-in-free-pool>
              > >               </pool>
              > >               <destination-jndi-name>ivtQ</destination-jndi-name>               
              > >               <initial-context-factory>
              > > com.sun.jndi.fscontext.RefFSContextFactory
              > > </initial-context-factory>
              > >               <provider-url>
              > > file:/D:/JNDI/
              > > </provider-url>
              > >               <connection-factory-jndi-name>
              > > MyQCF
              > > </connection-factory-jndi-name>
              > >          </message-driven-descriptor>
              > >     </weblogic-enterprise-bean>
              > ></weblogic-ejb-jar>
              > >
              > >
              > >
              > >
              > >
              > >
              > >
              > >ejb-jar.xml
              > >
              > ><?xml version="1.0"?>
              > ><!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise
              > >JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
              > ><ejb-jar>
              > >     <enterprise-beans>
              > >          <message-driven>
              > >               <ejb-name>SimpleMDB</ejb-name>
              > >               <ejb-class>weblogic.jms.whitepaper.SimpleMDB</ejb-class>
              > >               <transaction-type>Container</transaction-type>
              > >               <message-driven-destination>
              > >                    <!-- In WebLogic Server 6.0, this next parameter is named
              > >"jms-destination-type" -->
              > >                    <destination-type>javax.jms.Queue</destination-type>
              > >               </message-driven-destination>
              > >          </message-driven>
              > >     </enterprise-beans>
              > >     <assembly-descriptor>
              > >          <container-transaction>
              > >               <method>
              > >                    <ejb-name>SimpleMDB</ejb-name>
              > >                    <method-name>*</method-name>
              > >               </method>
              > >               <trans-attribute>Required</trans-attribute>
              > >          </container-transaction>
              > >     </assembly-descriptor>
              > ></ejb-jar>
              > >
              > >
              > >My Start-up class is as follows:
              > >
              > >import com.ibm.mq.jms.*;
              > >import java.util.*;
              > >import javax.jms.*;
              > >import javax.naming.*;
              > >import weblogic.common.*;
              > >
              > >
              > >public class MQJMSStartup implements T3StartupDef
              > >{
              > >     /** * The name of the queue manager to connect to. The startup class
              > >* will throw an exception if this parameter is not set. */
              > >     public final static String QM_NAME_PROPERTY = "QManager";
              > >     
              > >     /** * The host name where the queue manager runs. If not set, the *
              > >startup class will create a "bindings mode" connection to a * queue
              > >manager on the local host. */
              > >     public final static String QM_HOST_PROPERTY = "QManagerHost";
              > >     
              > >     /** * The port number where the queue manager listens. If not set,
              > >this * defaults to 1414, the default MQSeries port */
              > >     public final static String QM_PORT_PROPERTY = "QManagerPort";
              > >          
              > >     /** * The name in JNDI to store this queue manager object under. * If
              > >not set, the startup class will throw an exception. */
              > >     public static final String JNDI_NAME_PROPERTY = "JNDIName";
              > >
              > >     // Required
              > >     public MQJMSStartup()
              > >     {
              > >     }
              > >
              > >     // Required, but not needed
              > >     public void setServices(T3ServicesDef services)
              > >     {
              > >     }
              > >
              > >          public String startup(String name, Hashtable args) throws Exception
              > >     {
              > >          String qmName = (String)args.get(QM_NAME_PROPERTY);
              > >          System.out.println("*****The qmName is "+qmName);
              > >          if (qmName == null)
              > >          {
              > >               throw new Exception("Startup parameter " + QM_NAME_PROPERTY + "
              > >must be set");
              > >          }
              > >          String jndiName = (String)args.get(JNDI_NAME_PROPERTY);
              > >          System.out.println("***The JNDI Nname is "+jndiName);
              > >          if (jndiName == null)
              > >          {
              > >               throw new Exception("Startup parameter " + JNDI_NAME_PROPERTY + "
              > >must be set");
              > >          }
              > >          String qmHost = (String)args.get(QM_HOST_PROPERTY);
              > >          System.out.println("*****The qmHost is "+qmHost);
              > >          String qmPort = (String)args.get(QM_PORT_PROPERTY);
              > >          System.out.println("*****The qmPort is "+qmPort);
              > >          MQQueueConnectionFactory factory = new MQQueueConnectionFactory();
              > >          factory.setQueueManager(qmName);
              > >          if (qmHost == null)
              > >          {
              > >               factory.setTransportType(JMSC.MQJMS_TP_BINDINGS_MQ);
              > >               factory.setHostName(qmHost);
              > >               if (qmPort != null)
              > >               {
              > >                    try
              > >                    {
              > >                         int portNum = Integer.parseInt(qmPort);
              > >                         factory.setPort(portNum);
              > >                    }
              > >                    catch (NumberFormatException ignore)
              > >                    {
              > >
              > >                    }
              > >               }
              > >          }
              > >          else
              > >          {
              > >               factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
              > >          }
              > >
              > >          InitialContext context = new InitialContext();
              > >          context.bind(jndiName, factory);
              > >          context.close();
              > >          StringBuffer buf = new StringBuffer();
              > >          buf.append( "A connection factory was created for the MQ Queue
              > >Manager ");
              > >          buf.append(qmName);
              > >          buf.append(" and stored in JNDI at ");
              > >          buf.append(jndiName);
              > >          System.out.println("*****The mqstartup is executed
              > >succesfully"+buf.toString());
              > >          return buf.toString();
              > >     }
              > >}
              > >
              > >
              > >
              > >
              > >The args that I pass through the weblogic console is as follows:
              > >
              > >QManager=QM_mphasis_eight, JNDIName=MyQCF
              > >
              > >
              > >
              > >
              > >
              > >Please advice,
              > >
              > >regards,
              > >
              > >Milan Doshi
              

  • AQ - MDB Concurrency issue

              Hi,
              I have written a java startup class to bind the AQ connection factory and AQ queue
              to the JNDI tree of a WebLogic server and have deployed an MDB on WebLogic to
              listen to the AQ.
              (I have used Eric Ma's code as an example.)
              The MDB is working fine and is continuously listening to the Oracle AQ hosted
              on a Solaris box.
              But, the problem is that no matter how many instances of the MDB are deployed
              in the pool, onMessage() method of just one MDB is called repeatedly i.e. only
              single instance of MDB consumes AQ messages no matter how many instance are in
              pool or how may threads are available in queue.
              The MDB is deployed on WebLogic server 7 sp 4 on a Win 2000 box and has 5 inctances
              in the pool. I am using OCI driver for the connection to the AQ. Oracle 9.2.0
              is on a Solaris box and the IP address and the machine name of the JMS client
              (i.e. windows machine) is included in the /etc/hosts of the Solaris box.
              Any help towards achieving concurrency in consumption of messages from Oracle
              AQ would be great.
              Regards,
              Diptanshu
              

              I don't think that would help. Coz that means that the message is consumed once
              by each of the consumers. That's not what I want. I wish to instance 2 of MDB
              to read remaining messages from AQ, when instance 1 is busy reading a message
              and processing it.
              One option is to use an MDB as a Façade and then just to post it to an internal
              queue (not AQ) to be picked up for other MDBs for further processing. But, then
              this creates a bottleneck in the form of a single listening point between the
              Façade & the AQ.
              Any better suggestions are welcome.
              Regards,
              Diptanshu
              "Eric Ma" <[email protected]> wrote:
              >
              >Does making AQ a multi-consumer queue help?
              >
              >Eric
              >
              >"Diptanshu Parui" <[email protected]> wrote:
              >>
              >>Hi,
              >>
              >>I have written a java startup class to bind the AQ connection factory
              >>and AQ queue
              >>to the JNDI tree of a WebLogic server and have deployed an MDB on WebLogic
              >>to
              >>listen to the AQ.
              >>(I have used Eric Ma's code as an example.)
              >>
              >>The MDB is working fine and is continuously listening to the Oracle
              >AQ
              >>hosted
              >>on a Solaris box.
              >>
              >>But, the problem is that no matter how many instances of the MDB are
              >>deployed
              >>in the pool, onMessage() method of just one MDB is called repeatedly
              >>i.e. only
              >>single instance of MDB consumes AQ messages no matter how many instance
              >>are in
              >>pool or how may threads are available in queue.
              >>
              >>The MDB is deployed on WebLogic server 7 sp 4 on a Win 2000 box and
              >has
              >>5 inctances
              >>in the pool. I am using OCI driver for the connection to the AQ. Oracle
              >>9.2.0
              >>is on a Solaris box and the IP address and the machine name of the JMS
              >>client
              >>(i.e. windows machine) is included in the /etc/hosts of the Solaris
              >box.
              >>
              >>Any help towards achieving concurrency in consumption of messages from
              >>Oracle
              >>AQ would be great.
              >>
              >>Regards,
              >>Diptanshu
              >
              

  • Glassfish MDB JNDI Issue

    I'm unable to locate the Connection factory for JMS queue of a MBD deployed in Glassfish. Any help is appreciated. Thanks.
    static javax.naming.InitialContext ic;
    queueConnectionFactory = (QueueConnectionFactory)ic.lookup("corbaname:iiop:127.0.0.1:3700#jms/HealthMDBDestinationFactory");The following is the error message:
    NamingException: javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
    Using the same InitialContext object, I am able to locate a Session EJB in the same server.
    Object ref = ic.lookup("corbaname:iiop:" + ipAddr + ":" + portNum + "#ejb/AppServerHealth");When I deploy the MDB, do I also need to manually configure the JMS Queue as well?
    In the sun-ejb-jar.xml, the JNDI are there, but I can't see the names when looking at the application server's JNDI tree.
    <ejb>
          <ejb-name>HealthMDBBean</ejb-name>
          <jndi-name>jms/HealthMDBBean</jndi-name>
          <mdb-connection-factory>
            <jndi-name>jms/HealthMDBDestinationFactory</jndi-name>
          </mdb-connection-factory>
          <bean-pool>
            <steady-pool-size>4</steady-pool-size>
            <max-pool-size>6</max-pool-size>
          </bean-pool>
        </ejb>
        <message-destination>
          <message-destination-name>HealthMDBDestination</message-destination-name>
          <jndi-name>jms/HealthMDBBean</jndi-name>
        </message-destination>I am trying to post a message to the queue of a MDB bean from a standalone Java client.

    Thanks.
    Yes, the entry focuses on Remote EJB lookup, but you can use the same approach to look up anything in the appserver's naming context. This is what I am trying to do and it does not work. To lookup a Glassfish Remote EJB from a Java standalone client application, you need to use the CORBA Interoperable Naming Syntax.
    So, I am trying to lookup the ConnectionFactory with
    queueConnectionFactory = (QueueConnectionFactory)ic.lookup("corbaname:iiop:127.0.0.1:3700#jms/HealthMDBDestinationFactory");
    The key is to instantiate the appserver's naming context. That happens automatically when you have our classes in the classpath and you use the no-arg InitialContext. I am am doing this.
        static javax.naming.InitialContext ic;
    public static void main(String[] args) {
           try {
               ic  = new javax.naming.InitialContext();   
           } catch (javax.naming.NamingException ex) {
              System.out.println("NamingException: " + ex);
           } I am using the same context object to lookup a Session EJB in the same server using the Corba syntax and it finds the JNDI name without any problem.
    Object ref = ic.lookup("corbaname:iiop:127.0.0.1:3700#ejb/AppServerHealth");
    Then just use the global JNDI name of the queue or connection factory instead of the Remote EJB.I am passing the JNDI name of the connection factory associated with the MDB. It is not finding the JNDI name and returning an NamingException.
    queueConnectionFactory = (QueueConnectionFactory)ic.lookup("corbaname:iiop:127.0.0.1:3700#jms/HealthMDBDestinationFactory");The MDB is deploying. However, in the sun-ejb-jar.xml, the JNDI names are there, but I can't see the names when looking at the application server's JNDI tree.

  • Issues while using 2 MDBs together.

    I have two message driven beans, MDB1 and MDB2. An external application first puts a message in MDB2's queue and then eventually puts a different message in MDB1's queue after a few seconds. MDB2 processes the messge and updates the database. MDB1 is supposed to use the data that was just updated by the MDB2, from the database and do his rest of the work. But my problem is, MDB1 kicks off before MDB2 is done doing his database updates and MDB1 never gets the updated data he's supposed to use. I have no control over how/when the messages gets put in the respective queues of the MDBs. Is there any way I can make MDB1 wait until the MDB2 is done and only then get the updated data from the database to do rest of his(MDB1's) work? Any suggestions? please.
    Thank you.

    Hi jaxp62204,
    I know this is going to sound like a shameless plug for Arjuna but here goes...
    You could replace the MDB1 in your example with a Message-Driven Service which is available as part of ArjunaMS 4.0 (http://www.arjuna.com). The message-driven services framework allows you to deploy MDB-like application components which are (amongst other things) able to listen to several destinations at once.
    If you replaced MDB1 with a message-driven service that only commenced processing when a message was received from both the external client and from MDB2 (to say that it had completed work) then you could be sure that MDB1 (the message-driven service) would only run after MDB2 had finished working.
    Anyway, hope that this helps,
    Tom Jenkinson
    Arjuna Technologies Limited

  • MDB deployment issue

    Hi,
    I am developing j2ee application, my MDB needs some helper code which was loaded in the init of a load-on-startup servlet. If the queue has some accumulated messages, when I restart the app server(weblogic), the MDBs are pretty quick get deployed and starts hard wroking, but the servelet takes a bit longer, so the helper code is not available yet, that caused problem. Tha same thing happened when shut down the server. Any suggestion? How can I prevent the MDB to work until the servlet is fully loaded?
    Thanks

    Hi
    You could try and move the 'helper code' from the servlet into the MDB. If you put the code into the ejbCreate() method of the MDB, you can be sure that the code gets executed before the MDB tries to process any messages from a JMS destination.
    As far as I can see, this amounts to about the same thing as putting code that is required to run before a servlet's doGet() or doPost() method in the init() method of that servlet. I've done this before with good results.
    Hope it helps
    Daniel

Maybe you are looking for

  • IPod connects to windows, not to Mac HELP PLZ

    I had my ipod connected to my windows for a couple of months, then i started downloading from my mac computer so in order to get the songs from my mac onto my ipod i connected it to the mac .... i recieved the message" would you like to authorize thi

  • Use of setTimeToLive() method in JMS

    Hi, Can you please tell me the use of setTimeToLive method in JMS. I have a code fragment like this: QueueSender sender = queueSession.createSender(queue); sender.setTimeToLive(60000);

  • How to Create Object Panoramas

    I would like to create a complete 360 degree quicktime panorama of an object. I want the user to be able to spin the object around as well as view the bottom and top of the object. Is there any recommended software or tutorials on how to do this? Tha

  • FMS Service STOPS!

    Hello, This is pissing me off actually, the service is automatically stopping! FMS version is 2.0.1, i am using windows XP. I am having this problem since today only! i thought that it might be services conflict issue, so i stopped most of the servic

  • Can't sync properly after 4.5 upgrade

    I have a Pearl 8100 and just upgraded to v 4.5. I didn't know anything about vendor-specific upgrades and just upgraded directly from Blackberry.com. Now when I try to synchronize (I use Outlook 2003 via Desktop Manager v4.2.0.14) it wants to add all