IJ000453: Unable to get managed connection for java:/JmsXA after 20 invocations
roko98 Aug 31, 2012 12:55 AMHi
Just starting with Jboss7. I have a WS that sends a JMS message to an MDB:
@WebService
public class SmsService extends com.ilg.sms.util.SmsService {
@WebMethod
public String sendSMS(
@WebParam(name = "to")String to,
@WebParam(name = "text")String text,
@WebParam(name = "country")String country,
@WebParam(name = "customer")String customer) {
...
@Resource(mappedName="java:/JmsNonXA")
private ConnectionFactory connectionFactory;
@Resource(mappedName = "java:/jms/queue/sms")
private Destination receiverQueue;
protected void sendMessage(String to, String text, String country, String customer) throws JMSException { Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(receiverQueue);
MapMessage mapMessage = session.createMapMessage();
mapMessage.setString("to", to);
mapMessage.setString("text", text);
mapMessage.setString("country", country);
mapMessage.setString("customer", customer);
producer.send(mapMessage);
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "jms/queue/sms"),
})
public class SmsService implements MessageListener {
@Override
public void onMessage(Message message) {
MapMessage mapMessage = (MapMessage)message;
doSomeWork(mapMessage);
}
Everything works fine until the 20th invocation. On 21th, the request hangs, and latter throws this:
Could not create a session: IJ000453: Unable to get managed connection for java:/JmsXA,"err":"javax.jms.JMSException: Could not create a session: IJ000453: Unable to get managed connection for java:/JmsXA at org.hornetq.ra.HornetQRASessionFactoryImpl.allocateConnection(HornetQRASessionFactoryImpl.java:881) at org.hornetq.ra.HornetQRASessionFactoryImpl.createSession(HornetQRASessionFactoryImpl.java:470) at com.ilg.sms.util.SmsService.sendMessage(SmsService.java:26)
I'm using the regular standalone.xml plus some settings for messaging. I notice that:
<mdb> <resource-adapter-ref resource-adapter-name="hornetq-ra"/> <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> </mdb> <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="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> </bean-instance-pools> </pools>
What I'm missing ? why the connections are not released after the method returns ?