2014-01-31 36 views
0

TopicConnection.createTopicSession有時在一個env中掛起,它在另一個env中正常工作 。JBoss 5.1 - TopicConnection.createTopicSession有時會掛起

ENV: JBoss5.1,jdk1.6.0_45,RHEL 5.8,戴爾VM-潔具

的下面是代碼。

TopicConnectionFactory _factory =(TopicConnectionFactory)context.lookup(「java:JmsXA」);

TopicConnection _connection = _factory.createTopicConnection();

TopicSession _session = _connection.createTopicSession(false,1);- 這是它掛起的地方。

Topic _topic =(Topic)context.lookup(s);

TopicPublisher _publisher = _session.createPublisher(_topic);

_connection.start();

我覺得這可能是一些服務器配置相關的問題。請提供您的建議。

回答

0

這是由Jboss消息傳遞的初始化過程和Web應用程序的過程之間的競爭條件。

該程序在服務啓動期間得到執行。現在線程睡眠1秒後工作正常。

變化之前

TopicConnectionFactory的_factory =(TopicConnectionFactory的)context.lookup( 「Java的:JmsXA」 的);

TopicConnection _connection = _factory.createTopicConnection();

TopicSession _session = _connection.createTopicSession(false,1); //這是掛起的地方。

Topic _topic =(Topic)context.lookup(s);

TopicPublisher _publisher = _session.createPublisher(_topic);

_connection.start();

更改後

TopicConnectionFactory的_factory =(TopicConnectionFactory的)context.lookup( 「Java的:JmsXA」 的);

TopicConnection _connection = _factory.createTopicConnection();

Thread.sleep(1000); //介紹了這一行後,它工作正常。

TopicSession _session = _connection.createTopicSession(false,1);

Topic _topic =(Topic)context。查找(S);

TopicPublisher _publisher = _session.createPublisher(_topic);

_connection.start();