대기열에 메시지 (한 번에 50 개의 메시지)를 게시하는 중 두 가지 예외가 있습니다. 내 프로젝트에서 ThreadLocal (JMS 게시 클래스도 포함)을 사용하고 있습니다. 나는 이것이 실제로 발생하는 이유를 전혀 모른다. 더 나아갈 수있는 도움을 주시면 감사하겠습니다. 미리 감사드립니다. JMSException : CWSIA0005E : JCA 런타임에서 연결을 작성하지 못했습니다.
Exception:javax.jms.JMSException: CWSIA0024E: The JCA runtime failed to create a session.
at com.ibm.ws.sib.api.jms.impl.JmsConnectionImpl.createJcaSession(JmsConnectionImpl.java:951)
at com.ibm.ws.sib.api.jms.impl.JmsConnectionImpl.createSession(JmsConnectionImpl.java:340)
at com.ibm.ws.sib.api.jms.impl.JmsQueueConnectionImpl.createQueueSession(JmsQueueConnectionImpl.java:115)
...
...
Caused by: com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException: Connection not available, Timed out waiting for 180001
at com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1721)
at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:3321)
at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2567)
at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:1544)
at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:1027)
at com.ibm.ws.sib.api.jmsra.impl.JmsJcaConnectionImpl.createSession(JmsJcaConnectionImpl.java:394)
at com.ibm.ws.sib.api.jms.impl.JmsConnectionImpl.createJcaSession(JmsConnectionImpl.java:946)
Exception:javax.jms.JMSException: CWSIA0005E: The JCA runtime failed to create a connection
...
코드 게시 ::
try {
QueueConnectionFactory queueFactory = null;
queueFactory = getQueueConnectionFactory(ConnectionFactoryJNDIName);
// Create a QueueConnection
queueConnection = queueFactory.createQueueConnection();
try {
// Create a QueueSession
queueSession = queueConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
Queue queue = getQueue(queueJNDIName);
// Create the Publisher
queueSender = queueSession.createSender(queue);
// Create a message
ObjectMessage objMsg = queueSession.createObjectMessage(object);
// Publish the message
queueSender.send(object);
// Commit the session
queueSession.commit();
} catch (JMSException e) {
throw e;
} finally {
try {
// Close the QueueSender
if (null != queueSender) {
queueSender.close();
}
} catch (JMSException e) {
throw e;
}
try {
// Close the Queue Session
if (null != queueSession) {
queueSession.close();
}
} catch (JMSException e) {
throw e;
}
try {
// Close the QueueConnection
if (null != queueConnection) {
queueConnection.close();
}
} catch (JMSException e) {
throw e;
}
} catch (Exception e) {
throw e;
}
구성 :
- 서버 : 웹 스피어 8.5.5
- 연결 시간 제한 :
- 최대 연결 300 초 : 50 을
- 미사용 시간 제한 : 1800sec
- 퍼지 정책 : EntirePool
일부 코드를 게시 할 수 있습니까? 그렇지 않으면 문제가 어디에 있는지 알기가 어렵습니다. – mdnghtblue
연결을 정의한 Websphere 관리 콘솔에서 테스트 연결을 클릭하여 확인하십시오. – Vishnu
@mdnghtblue, 답장을 보내 주셔서 감사합니다. 코드를 추가했습니다. 희망이 도움이 될 수 있습니다. 두 가지 예외가 동시에 발생하는 것은 아닙니다. 몇 ms 동안 CWSIA0024E 및 나머지 CWSIA0005E. –