2011-10-15 3 views
1

localhost에서 완벽하게 작동하는 JMS 응용 프로그램 (유리 물고기 사용)이 있습니다. 내 서버에 배포 한 후 서비스에 대한 첫 번째 호출에서 아래 스택 추적을 계속 가져옵니다.JMS 풀 할당 문제

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

내가 모든 자원을 폐쇄하고 확신하지만, 심지어 내가 아니라고하면 어떻게 바로 첫 번째 통화에 연결 풀에서 실행할 수 있습니까?

다음은 ReadOfflineMessage.java 코드의 코드입니다. 스택 트레이스 라인 67에서

try { 
    QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) context.lookup("jms/MyConnectionFactor"); 

    queueConnection = queueConnectionFactory.createQueueConnection(); 
    QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 

    Queue queue = (Queue) context.lookup("jms/CloxQueue"); 
    QueueReceiver queueReceiver = queueSession.createReceiver(queue, "client_name = '" + clientName + "'"); 

    queueReceiver.setMessageListener(new MessageListener() { 

     @Override 
     public void onMessage(Message message) { 
      if (message instanceof TextMessage) { 
       try { 
        String clientMessage = ((TextMessage) message).getText(); 

        System.out.println("Message: " + clientMessage); 
        clientMessage = clientMessage.replace("message:", ""); 
        com.trinisoft.cloxserver.models.Message parsedMessage = parseMessage(clientMessage); 
        System.out.println("parsed Message: " + message); 
        Client toClient = ClientList.getClient(parsedMessage.getTo()); 
        toClient.getClientWriter().append("message:" + clientMessage + "\n"); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }); 

    queueConnection.start(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

queueConnection = queueConnectionFactory.createQueueConnection(); 

감사합니다.

+0

"jms/MyConnectionFactory"대신 실제로 "jms/MyConnectionFactor"입니까? – Preston

+0

예. 그것은 오타 였고 나는 * 이름을 변경하기에는 너무 게을 렀다. 권자 –

답변

-1

확인을 클릭하면 문제가 발견되었습니다. 그것은 기억 문제였습니다. 내 서버에는 756MB가 있습니다. JMS 응용 프로그램을 배포 할 때 112MB가 남았습니다. 어떤 이유로 Glassfish는 112MB 왼쪽의 jms 풀에 메모리를 할당 할 수 없습니다. 나는 1GB로 나의 vps를 격상 시켰고, 모든 것이 좋다.