我开发是一个JBoss 4.2.3服务器内承载和连接到正在另一台服务器上托管的JMS队列Web服务解决方案。创建JBoss的连接池的JMS队列
到目前为止我创建每次Web服务被称为JMS队列一个新的连接,这意味着,每当一个新的会话被打开的JMS队列一个新的连接被创建。
例如,我使用下面的代码来创建监制:
InitialContext jmsContext;
ConnectionFactory connectionFactory;
Properties properties;
Queue queue;
properties = JMSProperties.getJNDIProperties();
jmsContext = new InitialContext(properties);
connectionFactory = (ConnectionFactory) jmsContext.lookup("ConnectionFactory");
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) jmsContext.lookup(queueName);
producer = session.createProducer(queue);
connection.start();
我知道这个实现是不是很有效,我想创建一个连接池,使我没有每次Web服务收到新请求时创建一个新连接。
我如何配置JBoss,这样它会创建一个连接池,JMS队列? ConnectionFactory类是否为我自动创建连接池?如果是这样,我怎样才能配置池的大小?
感谢, 费利佩
嗨,我已经改变了我的代码,尝试使用JBoss JMSRA连接(下面):connectionFactory =(ConnectionFactory)jmsContext.lookup(“java:/ JmsXA”); 但现在我得到的错误:javax.jms.InvalidDestinationException:没有这样的目的地:JBossQueue [queue]是否已经部署? 你知道我为什么得到这个错误吗? – Felipe
你有集群化的Jboss环境吗?如果是,那么我相信你需要通过使用“/ JmsXA”而不是“java:/ JmsXA”来在全局JNDI中进行上下文查找。 – helios
其实不,我只有一个JBoss。我是否必须改变JBoss配置文件中的任何内容才能使其工作? PS:我使用的是JBoss Messaging,而不是JBoss MQ。 – Felipe