8 Replies Latest reply on Apr 18, 2012 10:30 AM by varsha.g

    Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA

    varsha.g

      When I'm trying to add to the message sending queue, The messages are successfully added to the queue, but the MDB is not working properly OR the messages are not fetched. It throws the following error :

       

      06:49:15,600 ERROR [org.hornetq.ra.HornetQRASessionFactoryImpl] (http--0.0.0.0-8080-61)c

          at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:390)

          at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368)

          at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:464)

          at org.hornetq.ra.HornetQRASessionFactoryImpl.allocateConnection(HornetQRASessionFactoryImpl.java:837)

          at org.hornetq.ra.HornetQRASessionFactoryImpl.createSession(HornetQRASessionFactoryImpl.java:470)

          at com.ecomm.ultimatesms.messaging.feedback.feedback.processRequest(feedback.java:110) [classes:]

          at com.ecomm.ultimatesms.messaging.feedback.feedback.doGet(feedback.java:37) [classes:]

          at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]

          at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.14.Final.jar:]

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.14.Final.jar:]

          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.14.Final.jar:]

          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.14.Final.jar:]

          at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.2.Final-SNAPSHOT.jar:7.1.2.Final-SNAPSHOT]

          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.14.Final.jar:]

          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.14.Final.jar:]

          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.14.Final.jar:]

          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.14.Final.jar:]

          at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.14.Final.jar:]

          at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.14.Final.jar:]

          at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931) [jbossweb-7.0.14.Final.jar:]

          at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_29]

      Caused by: javax.resource.ResourceException: IJ000658: Unexpected throwable while trying to create a connection: null

          at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:371)

          at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:397)

          at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:365)

          at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:329)

          ... 21 more

      Caused by: javax.resource.ResourceException: Error during setup

          at org.hornetq.ra.HornetQRAManagedConnection.<init>(HornetQRAManagedConnection.java:152)

          at org.hornetq.ra.HornetQRAManagedConnectionFactory.createManagedConnection(HornetQRAManagedConnectionFactory.java:180)

          at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.createConnectionEventListener(SemaphoreArrayListManagedConnectionPool.java:761)

          at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:343)

          ... 24 more

      Caused by: javax.resource.ResourceException: Failed to create session factory

          at org.hornetq.ra.HornetQRAManagedConnection.setup(HornetQRAManagedConnection.java:821)

          at org.hornetq.ra.HornetQRAManagedConnection.<init>(HornetQRAManagedConnection.java:141)

          ... 27 more

      Caused by: javax.jms.JMSException: Failed to create session factory

          at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:605)

          at org.hornetq.jms.client.HornetQConnectionFactory.createXAConnection(HornetQConnectionFactory.java:155)

          at org.hornetq.jms.client.HornetQConnectionFactory.createXAConnection(HornetQConnectionFactory.java:150)

          at org.hornetq.ra.HornetQRAManagedConnection.setup(HornetQRAManagedConnection.java:810)

          ... 28 more

      Caused by: HornetQException[errorCode=2 message=Cannot connect to server(s). Tried with all available servers.]

          at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:769)

          at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:601)

          ... 31 more.

       

      Please can someone guide me how to resolve it. Thanks.

        • 1. Re: Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA
          ataylor

          can you give us more info, i.e. configuration etc

          • 2. Re: Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA
            varsha.g

            These are the configurations of the standalone-full.xml file :

             

                   <pools>

                            <bean-instance-pools>

                                <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                                <strict-max-pool name="mdb-strict-max-pool" max-pool-size="1" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                            </bean-instance-pools>

                        </pools>

             

                        <address-settings>

                                <address-setting match="#">

                                    <dead-letter-address>jms.queue.DLQ</dead-letter-address>

                                    <expiry-address>jms.queue.ExpiryQueue</expiry-address>

                                    <redelivery-delay>0</redelivery-delay>

                                    <max-size-bytes>524288000</max-size-bytes>

                                    <page-size-bytes>52428800</page-size-bytes>

                                    <address-full-policy>PAGE</address-full-policy>

                                    <message-counter-history-day-limit>10</message-counter-history-day-limit>

                                </address-setting>

                          </address-settings>

             

                           <pooled-connection-factory name="hornetq-ra">

                                    <transaction mode="xa"/>

                                    <connectors>

                                        <connector-ref connector-name="in-vm"/>

                                    </connectors>

                                    <entries>

                                        <entry name="java:/JmsXA"/>

                                    </entries>

                                </pooled-connection-factory>

             

                                 <jms-queue name="testQueue">

                                    <entry name="queue/test"/>

                                    <entry name="java:jboss/exported/jms/queue/test"/>

                                </jms-queue>

            • 3. Re: Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA
              ataylor

              that all looks fine, could you provide some instructions on how to reproduce

              • 4. Re: Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA
                varsha.g

                I was testing my server by adding 100 000 messages to queue. They all are added to the queue, but Its not getting listened by the MDB.

                 

                After leaving the server idle for a while we get the  following error : Caused by: java.lang.IllegalStateException: Cannot create session factory, server locator is closed (maybe it has been garbage collected)

                 

                After this when I'm trying to send the message to queue, the message will be added to the queue but  it does not get recieved from the queue.

                 

                When I restart the server, I'm able to add and recive messages from the queue.

                • 5. Re: Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA
                  ataylor

                  we really need something we can run, a test similar to what your code does

                  • 6. Re: Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA
                    varsha.g

                    The following is test code :

                     

                            String destinationName = "queue/test";

                     

                            Context ic = null;

                            QueueConnectionFactory cf = null;

                            Connection connection =  null;

                            MessageProducer publisher = null;

                            Session session = null;

                            try {       

                                Properties props = new Properties();

                                props.setProperty("java.naming.factory.initial", "org.jboss.as.naming.InitialContextFactory");

                                props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");

                                props.setProperty("java.naming.provider.url", "localhost");

                                ic = new InitialContext(props);

                                cf = (QueueConnectionFactory)ic.lookup("java:/JmsXA");

                                Queue queue = (Queue)ic.lookup(destinationName);

                     

                                connection = cf.createConnection();

                                session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

                                publisher = session.createProducer(queue);

                     

                                connection.start();

                     

                                FeedbackMessageBean mymesage=new FeedbackMessageBean();

                                mymesage.setStatus( "16");

                                mymesage.setDestination("27718681922");

                                mymesage.setTimeDate("2012-07-05+08:08:10");

                                mymesage.setSmsID("0a609648-ad1c-4bca-90c5-19ca8ce38bb0");

                                mymesage.setMessage("Test Message");

                     

                                ObjectMessage  msg = session.createObjectMessage(mymesage);

                     

                                publisher.send(msg);

                                System.out.println("Message sento to the JMS Provider");

                     

                            }

                            catch (Exception exc) {

                                exc.printStackTrace();

                            }

                            finally {   

                                if(ic != null){

                                    try {

                                        ic.close();

                                    } catch (NamingException e) {

                                        e.printStackTrace();

                                    }

                                }   

                                if(publisher != null){

                                    try {

                                        publisher.close();

                                    } catch (JMSException e) {

                                        e.printStackTrace();

                                    }

                                }

                                if(session != null){

                                    try {

                                        session.close();

                                    } catch (JMSException e) {

                                        e.printStackTrace();

                                    }

                                }   

                                if (connection != null)   {

                                    try {

                                        connection.close();

                                    } catch (JMSException e) {                  

                                        e.printStackTrace();

                                    }

                                }

                    • 7. Re: Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA
                      ataylor

                      you need to give me something i can reproduce, i.e. all server configs, how you start the server and a test, not just some java code, i dont know where your code should live, is it a standalone client, mdb, session bean etc etc.

                      • 8. Re: Could not create session: javax.resource.ResourceException: Unable to get managed connection for java:/JmsXA
                        varsha.g

                        I have a test servlet which sends messages to the JMS queue. And I have MDB which fetches the messages from teh queue.

                        I have attached my TestServlet and MDB code. I have also attached my standalone-full.xml.

                         

                        These are the HornetQ settings for the file standalone-full.xml:

                         

                            <subsystem xmlns="urn:jboss:domain:messaging:1.2">

                                   <hornetq-server>

                                       <persistence-enabled>true</persistence-enabled>

                                       <journal-type>ASYNCIO</journal-type>

                                       <journal-file-size>10485760</journal-file-size>

                                       <journal-min-files>2</journal-min-files>

                                   <journal-max-io>500</journal-max-io>

                         

                            </hornetq-server>

                            </subsystem>

                         

                             <address-settings>

                                           <address-setting match="#">

                         

                                               <dead-letter-address>jms.queue.DLQ</dead-letter-address>

                         

                                               <expiry-address>jms.queue.ExpiryQueue</expiry-address>

                         

                                               <redelivery-delay>0</redelivery-delay>

                         

                                               <max-size-bytes>104857600</max-size-bytes>

                         

                                               <page-size-bytes>10485760</page-size-bytes>

                         

                                               <address-full-policy>PAGE</address-full-policy>       <message-counter-history-day-limit>10</message-counter-history-day-limit>

                                           </address-setting>

                                   </address-settings>

                         

                         

                        When I test the JMS queue using JMeter by sending 100 000 messages to queue it throws the following exception on 2gb RAM :-

                         

                           ---    19:30:23,747 ERROR [org.apache.catalina.connector.CoyoteAdapter] An exception or error occurred in the container during the request processing: java.lang.RuntimeException: java.lang.IllegalStateException

                            at org.jboss.as.web.ThreadSetupBindingListener.unbind(ThreadSetupBindingListener.java:67) [jboss-as-web-7.1.2.Final-SNAPSHOT.jar:7.1.2.Final-SNAPSHOT]

                         

                         

                           ---  19:30:23,430 ERROR [stderr] javax.jms.JMSException: Could not create a session: IJ000453: Unable to get managed connection for java:/JmsXA

                         

                         

                        But I tested the same on 4gb RAM. It works fine without any errors.

                         

                        As I'm writing the messages to the page, Why is there a RAM issue?

                         

                        Please let me know what can be the issue?

                         

                        Thanks.