2010-03-16 101 views
2

我在部署我的應用程序時遇到以下問題。帶有Java消息的消息驅動Bean隊列關閉

它使用JMS和遠程openMQ在服務器之間進行通信。問題在於連接不完全可靠,因此可能會打開或關閉。爲了重新連接,我設置了jms reconnect glassfish屬性,以便在連接丟失時重新連接。當我嘗試部署應用程序並且沒有連接時出現問題。它看起來像持續重試連接,但應用程序不能完成部署,直到連接可用。

是否有可能以任何方式配置它,即使沒有連接也會繼續部署,並且一直保持重試狀態直到存在可用的連接?

非常感謝。

編輯:我試圖在不同的線程中運行MDB初始化。我都嘗試

我試圖通過兩種方式來分配不同的線程在MDB改變太陽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> 

,並與

 <use-thread-pool-id>a-new-thread-pool</use-thread-pool-id> 

但我有沒有運氣。看起來像它正在等待這個線程結束,因爲它看起來像它正在獲得新的線程,但它等待該線程結束到完成啓動應用程序,所以,在我的情況下,應用程序不能正確部署..

編輯2我試圖在不同的線程也跑JMS服務...

asadmin create-resource-adapter-config --threadpools a-new-thread-pool jmsra 

沒有運氣也。

+0

胡亂猜測:嘗試在最小池的大小設置爲零。也許它有幫助。 – ewernli 2010-03-16 11:01:06

+0

我試過但似乎沒有效果。可能它試圖在隊列中註冊,但我不能確定... – 2010-03-16 14:33:19

回答

1

對於glassfish默認的JMS提供者,這是不可能的。我終於設法通過改變JCA適配器,這樣做是爲了

https://jmsjca.dev.java.net/

0

你能想到產生一個獨立的線程連接到JMS,使主應用程序保持運行而不被阻塞。

+0

看起來像個好主意。因爲我在J2EE中,所以我不能自己創建一個線程,但glassfish提供了一些設施。無論如何,它仍然無法正常工作。我編輯了這個問題。 – 2010-03-17 17:11:17