Java JMS池分配问题

Java JMS池分配问题,java,glassfish,jms,Java,Glassfish,Jms,我有一个JMS应用程序(使用glass fish),它可以在本地主机上完美地工作。在部署到我的服务器后,我会在第一次调用服务时不断获得堆栈下的跟踪 #|2011-10-14T22:22:51.927+0400|WARNING|glassfish3.1|javax.enterprise.resource.resourceadapter.com.sun.enterprise.connectors|_ThreadID=9342;_ThreadName=Thread-1;|RAR5117 : Faile

我有一个JMS应用程序(使用glass fish),它可以在本地主机上完美地工作。在部署到我的服务器后,我会在第一次调用服务时不断获得堆栈下的跟踪

#|2011-10-14T22:22:51.927+0400|WARNING|glassfish3.1|javax.enterprise.resource.resourceadapter.com.sun.enterprise.connectors|_ThreadID=9342;_ThreadName=Thread-1;|RAR5117 : Failed to obtain/create connection from connection pool [ jms/MyConnectionFactor ]. Reason : com.sun.appserv.connectors.internal.api.PoolingException|#]

[#|2011-10-14T22:22:51.928+0400|SEVERE|glassfish3.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=9342;_ThreadName=Thread-1;|com.sun.messaging.jms.JMSException: MQRA:DCF:allocation failure:createConnection:Error in allocating a connection. Cause: null
    at com.sun.messaging.jms.ra.DirectConnectionFactory._allocateConnection(DirectConnectionFactory.java:548)
    at com.sun.messaging.jms.ra.DirectConnectionFactory.createQueueConnection(DirectConnectionFactory.java:322)
    at com.sun.messaging.jms.ra.DirectConnectionFactory.createQueueConnection(DirectConnectionFactory.java:299)
    at com.clox.web.boot.ReadOfflineMessage.run(ReadOfflineMessage.java:67)
    at java.lang.Thread.run(Thread.java:619)
Caused by: javax.resource.spi.ResourceAllocationException: Error in allocating a connection. Cause: null
    at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:310)
    at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:190)
    at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:165)
    at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:160)
    at com.sun.messaging.jms.ra.DirectConnectionFactory._allocateConnection(DirectConnectionFactory.java:543)
    ... 4 more
Caused by: com.sun.appserv.connectors.internal.api.PoolingException
    at com.sun.enterprise.resource.pool.datastructure.RWLockDataStructure.addResource(RWLockDataStructure.java:103)
    at com.sun.enterprise.resource.pool.ConnectionPool.addResource(ConnectionPool.java:282)
    at com.sun.enterprise.resource.pool.ConnectionPool.createResourceAndAddToPool(ConnectionPool.java:1497)
    at com.sun.enterprise.resource.pool.ConnectionPool.createResources(ConnectionPool.java:940)
    at com.sun.enterprise.resource.pool.ConnectionPool.initPool(ConnectionPool.java:230)
    at com.sun.enterprise.resource.pool.ConnectionPool.internalGetResource(ConnectionPool.java:511)
    at com.sun.enterprise.resource.pool.ConnectionPool.getResource(ConnectionPool.java:381)
    at com.sun.enterprise.resource.pool.PoolManagerImpl.getResourceFromPool(PoolManagerImpl.java:242)
    at com.sun.enterprise.resource.pool.PoolManagerImpl.getResource(PoolManagerImpl.java:167)
    at com.sun.enterprise.connectors.ConnectionManagerImpl.getResource(ConnectionManagerImpl.java:335)
    at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:304)
    ... 8 more
Caused by: com.sun.appserv.connectors.internal.api.PoolingException
    at com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:920)
    at com.sun.enterprise.resource.pool.ConnectionPool.createResource(ConnectionPool.java:1181)
    at com.sun.enterprise.resource.pool.datastructure.RWLockDataStructure.addResource(RWLockDataStructure.java:98)
    ... 18 more
Caused by: java.lang.NullPointerException
    at com.sun.messaging.jms.ra.DirectConnectionFactory._createConnectionId(DirectConnectionFactory.java:424)
    at com.sun.messaging.jms.ra.DirectConnectionFactory._createConnection(DirectConnectionFactory.java:522)
    at com.sun.messaging.jms.ra.ManagedConnection.<init>(ManagedConnection.java:193)
    at com.sun.messaging.jms.ra.ManagedConnectionFactory.createManagedConnection(ManagedConnectionFactory.java:226)
    at com.sun.enterprise.resource.allocator.ConnectorAllocator.createResource(ConnectorAllocator.java:147)
    at com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:903)
    ... 20 more
从堆栈跟踪线67开始

queueConnection = queueConnectionFactory.createQueueConnection();

谢谢。

好的,我发现问题了。这是一个记忆问题。我的服务器上有756MB。当我部署JMS应用程序时,我还剩下112MB。出于某种原因,glassfish无法从剩余的112MB内存中为jms池分配内存。我将vps升级到1GB,一切正常。

它真的是“jms/MyConnectionFactor”而不是“jms/MyConnectionFactory”吗?是的。这是一个打字错误,我懒得重新命名。英雄联盟
queueConnection = queueConnectionFactory.createQueueConnection();