Message Driven Bean with Java Message Queue down
I have the following problem deploying my application.
It uses JMS and a remote openMQ for communication between servers. The problem is that the connecti开发者_运维知识库on is not fully reliable so it can be up or down. For reconnecting I set the jms reconnect glassfish property so it reconnects if at some moment the connection gets lost. The problem arises when i try to deploy the application and there is no connection. It looks like it keeps retrying the connection but the application does not finish deployment until connection is available.
Is it possible to configure it in any way that the deployment continues even if there is no connection and keeps retrying until there is connection available?
Thanks a lot.
Edit: I'm trying to run the MDB initialization in a different thread. I tried both
I'm trying to assign a different thread to the MDB by two ways changing sun-ejb.jar.xml
<bean-pool>
<steady-pool-size>1</steady-pool-size>
<resize-quantity>1</resize-quantity>
<max-pool-size>1</max-pool-size>
<pool-idle-timeout-in-seconds>60</pool-idle-timeout-in-seconds>
</bean-pool>
and also with
<use-thread-pool-id>a-new-thread-pool</use-thread-pool-id>
But I had no luck. Looks like it's waiting for this thread to end since it looks like it's getting the new thread but it waits for that thread to end to finish starting application so, in my case, application doesn't get deployed correctly..
Edit 2 I tried to run jms service in a different thread also...
asadmin create-resource-adapter-config --threadpools a-new-thread-pool jmsra
No luck also.
With glassfish default JMS provider this is impossible. I finally managed to do this by changing JCA adapter to
https://jmsjca.dev.java.net/
Can you think of spawning a separate thread that connects to the JMS, such that the main applications keeps running without being blocked.
精彩评论