TopicConnection.createTopicSession有时会挂在一个环境中,并且工作正常
在另一个环境中
环境:JBoss5.1,jdk1.6.0_45,RHEL 5.8,Dell VM软件
下面是代码。
TopicConnectionFactory _factory =(TopicConnectionFactory)context.lookup(“ java:JmsXA”);
TopicConnection _connection = _factory.createTopicConnection();
TopicSession _session = _connection.createTopicSession(false,1); -这是挂的地方。
主题_topic =(Topic)context.lookup(s);
TopicPublisher _publisher = _session.createPublisher(_topic);
_connection.start();
我认为这可能是与服务器配置有关的问题。请提供您的建议。
最佳答案
这是Jboss消息传递的初始化过程和Web应用程序的过程之间的竞争条件。
服务启动期间正在执行该程序。经过1秒钟的线程睡眠,现在可以正常工作。
变更前
TopicConnectionFactory _factory =(TopicConnectionFactory)context.lookup(“ java:JmsXA”);
TopicConnection _connection = _factory.createTopicConnection();
TopicSession _session = _connection.createTopicSession(false,1); //这是挂的地方。
主题_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)context.lookup(s);
TopicPublisher _publisher = _session.createPublisher(_topic);
_connection.start();