我開發是一個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