help on JmsXA
mattlf Jun 23, 2008 10:40 PMHi
I am new to jboss messaging and i apologize if my question turns out to be silly.
I have a sender that createConnection, createSession and createProducer on every message. I am concerned this is very inefficient. I read on some other posts that it is acceptable if one uses JmsXA
public class JmsPublisher { private ConnectionFactory bizConnectionFactory ; private Destination bizDestination; public ConnectionFactory getBizConnectionFactory() { return bizConnectionFactory; } public void setBizConnectionFactory(ConnectionFactory bizConnectionFactory) { this.bizConnectionFactory = bizConnectionFactory; } public Destination getBizDestination() { return bizDestination; } public void setBizDestination(Destination bizDestination) { this.bizDestination = bizDestination; } public JmsPublisher(){} public void sendEvent(SignalAbstract ev) throws JMSException { Connection connection = null; Session session = null; MessageProducer messageProducer = null; try { connection = bizConnectionFactory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); messageProducer = session.createProducer(bizDestination); ObjectMessage msg = session.createObjectMessage(ev); messageProducer.send(msg); } finally { if (messageProducer != null) try { messageProducer.close(); } catch (Exception ignore) { } if (session != null) try { session.close(); } catch (Exception ignore) { } if (connection != null) try { connection.close(); } catch (Exception ignore) { } } } }
I inject the jndi name via Spring
<jee:jndi-lookup id="bizConnectionFactory" jndi-name="${biz.messagingConnectionFactoryName}"> <jee:environment> java.naming.provider.url=${biz.messagingProviderUrl} java.naming.factory.url.pkgs=org.jnp.interfaces:org.jboss.naming java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory </jee:environment> </jee:jndi-lookup> <jee:jndi-lookup id="bizDestination" jndi-name="${biz.messagingDestinationName}"> <jee:environment> java.naming.provider.url=${biz.messagingProviderUrl} java.naming.factory.url.pkgs=org.jnp.interfaces:org.jboss.naming java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory </jee:environment> </jee:jndi-lookup> <bean class="com.strateer.biz.impl.JmsPublisher" id="bizJmsPublisher"> <property name="bizConnectionFactory" ref="bizConnectionFactory" /> <property name="bizDestination" ref="bizDestination" /> </bean>
It works when
biz.messagingProviderUrl=localhost:1099 biz.messagingConnectionFactoryName=ConnectionFactory
but it doesn't when i change the connectionFactoryName to java:/JmsXA
biz.messagingProviderUrl=localhost:1099 biz.messagingConnectionFactoryName=java:/JmsXA
The logs say the following:
Error creating bean with name 'bizConnectionFactory': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: JmsXA
And i don't seem to be able to get it working.
I would appreciate some tips
Thank you for your help
matt