Hi Francis, I see that the example in the Wildfly Camel component[1] uses `java:jboss/DefaultJMSConnectionFactory` JNDI syntax, did you try with something like that?
zoran [1] https://github.com/wildfly-extras/wildfly-camel-examples/tree/master/camel-jms/src/main/java/org/wildfly/camel/examples/jms On Sat, Aug 19, 2017 at 12:16 AM, Francis Carlo Gavino <[email protected]> wrote: > Hi all, > > Camel newbie here. I'm trying to get a route to send a message to a > JBoss queue (HornetQ), but I can't get passed this error: > > Caused by: java.lang.IllegalArgumentException: connectionFactory must > be specified > at > org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:308) > at > org.apache.camel.component.jms.JmsConfiguration.createConnectionFactory(JmsConfiguration.java:1546) > at > org.apache.camel.component.jms.JmsConfiguration.getConnectionFactory(JmsConfiguration.java:708) > at > org.apache.camel.component.jms.JmsConfiguration.createTemplateConnectionFactory(JmsConfiguration.java:1563) > at > org.apache.camel.component.jms.JmsConfiguration.getTemplateConnectionFactory(JmsConfiguration.java:739) > at > org.apache.camel.component.jms.JmsConfiguration.createInOnlyTemplate(JmsConfiguration.java:609) > at > org.apache.camel.component.jms.JmsEndpoint.createInOnlyTemplate(JmsEndpoint.java:303) > at > org.apache.camel.component.jms.JmsProducer.getInOnlyTemplate(JmsProducer.java:470) > at > org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:390) > at > org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:368) > at > org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:154) > at > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145) > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at > org.apache.camel.processor.Pipeline.process(Pipeline.java:121) > at > org.apache.camel.processor.Pipeline.process(Pipeline.java:83) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) > at > org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) > at > org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:68) > at > org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:412) > at > org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:380) > at > org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:270) > at > org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:380) > at > org.apache.camel.impl.ProducerCache.send(ProducerCache.java:221) > at > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124) > at > org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137) > ... 31 more > > Camel version: 2.17.7 > JBoss version: JBoss EAP 6.2 (local - Windows) > > I have tried several approaches from examples/tutorials in specifying > the connectionFactory: > <bean id="jms" > class="org.apache.camel.component.jms.JmsComponent"> > <property name="connectionFactory" > ref="jmsQueueConnectionFactory" /> > </bean> > > I tried using the following options but to no avail: > > 1) Using jee:jndi-lookup: > <jee:jndi-lookup id="jmsQueueConnectionFactory" > jndi-name="java:/ConnectionFactory" /> > > 2) Using Spring JndiTemplate: > > <bean id="jndiTemplate" > class="org.springframework.jndi.JndiTemplate"> > <property name="environment"> > <props> > <prop > key="java.naming.factory.initial">org.jboss.naming.remote.client.InitialContextFactory</prop> > <prop > key="java.naming.provider.url">remote://localhost:4447</prop> > <prop > key="java.naming.security.principal">***</prop> > <prop > key="java.naming.security.credentials">***</prop> > </props> > </property> > </bean> > <bean id="jmsQueueConnectionFactory" > class="org.springframework.jndi.JndiObjectFactoryBean"> > <property name="jndiTemplate"> > <ref bean="jndiTemplate" /> > </property> > <property name="jndiName"> > <value>java:/ConnectionFactory</value> > </property> > </bean> > > 3) Using Spring JndiTemplate and passing credentials: > <bean id="authenticatedConnectionFactory" > > class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"> > <property name="targetConnectionFactory" > ref="jmsQueueConnectionFactory" /> > <property name="username" value="***" /> > <property name="password" value="***" /> > </bean> > <bean id="jms" > class="org.apache.camel.component.jms.JmsComponent"> > <property name="connectionFactory" > ref="authenticatedConnectionFactory" /> > </bean> > > 4) Using jee-jndi-lookup with environment properties: > <bean id="jms" > class="org.apache.camel.component.jms.JmsComponent"> > <property name="configuration" ref="HQConfig" /> > </bean> > > <bean id="HQConfig" > class="org.apache.camel.component.jms.JmsConfiguration"> > <property name="connectionFactory" ref="CF-Wrapper" /> > <property name="transacted" value="false" /> > <property name="maxConcurrentConsumers" value="1" /> > <property name="cacheLevelName" value="CACHE_CONNECTION" > /> > </bean> > > <bean id="CF-Wrapper" > > class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"> > <property name="targetConnectionFactory" > ref="HornetQ-CF" /> > <property name="username" value="***" /> > <property name="password" value="***" /> > </bean> > > <jee:jndi-lookup id="HornetQ-CF" > jndi-name="jms/ConnectionFactory"> > <jee:environment> > > java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory > java.naming.provider.url=remote://localhost:4447 > java.naming.security.principal=*** > java.naming.security.credentials=*** > </jee:environment> > </jee:jndi-lookup> > > 5) Tried different variations of the jndi name: > - ConnectionFactory > - java:jms/RemoteConnectionFactory > - java:/ConnectionFactory > - java:jboss/exported/jms/RemoteConnectionFactory > - jms/ConnectionFactory > - jms/RemoteConnectionFactory > - java:/ConnectionFactory > > JBoss config looks like this: > <subsystem xmlns="urn:jboss:domain:messaging:1.4"> > <hornetq-server> > <persistence-enabled>false</persistence-enabled> > <journal-type>NIO</journal-type> > <journal-min-files>2</journal-min-files> > <connectors> > <netty-connector name="netty" > socket-binding="messaging"/> > <netty-connector name="netty-throughput" > socket-binding="messaging-throughput"> > <param key="batch-delay" > value="50"/> > </netty-connector> > <in-vm-connector name="in-vm" > server-id="0"/> > </connectors> > <acceptors> > <netty-acceptor name="netty" > socket-binding="messaging"/> > <netty-acceptor name="netty-throughput" > socket-binding="messaging-throughput"> > <param key="batch-delay" > value="50"/> > <param key="direct-deliver" > value="false"/> > </netty-acceptor> > <in-vm-acceptor name="in-vm" > server-id="0"/> > </acceptors> > <security-settings> > <security-setting match="#"> > <permission type="send" > roles="guest"/> > <permission type="consume" > roles="guest"/> > <permission > type="createNonDurableQueue" roles="guest"/> > <permission > type="deleteNonDurableQueue" roles="guest"/> > </security-setting> > </security-settings> > <address-settings> > <!--default for catch all--> > <address-setting match="#"> > > <dead-letter-address>jms.queue.DLQ</dead-letter-address> > > <expiry-address>jms.queue.ExpiryQueue</expiry-address> > <redelivery-delay>0</redelivery-delay> > > <max-size-bytes>10485760</max-size-bytes> > > <address-full-policy>PAGE</address-full-policy> > > <page-size-bytes>2097152</page-size-bytes> > > <message-counter-history-day-limit>10</message-counter-history-day-limit> > </address-setting> > </address-settings> > <jms-connection-factories> > <connection-factory > name="InVmConnectionFactory"> > <connectors> > <connector-ref > connector-name="in-vm"/> > </connectors> > <entries> > <entry > name="java:/ConnectionFactory"/> > </entries> > </connection-factory> > <connection-factory > name="RemoteConnectionFactory"> > <connectors> > <connector-ref > connector-name="netty"/> > </connectors> > <entries> > <entry > name="java:jboss/exported/jms/RemoteConnectionFactory"/> > </entries> > </connection-factory> > <pooled-connection-factory > name="hornetq-ra"> > <transaction mode="xa"/> > <connectors> > <connector-ref > connector-name="in-vm"/> > </connectors> > <entries> > <entry > name="java:/JmsXA"/> > </entries> > </pooled-connection-factory> > </jms-connection-factories> > <jms-destinations> > <jms-queue name="testQueue"> > <entry name="queue/testQueue"/> > <entry > name="java:jboss/exported/jms/queue/testQueue"/> > </jms-queue> > </jms-destinations> > </hornetq-server> > </subsystem> > > And my route looks like this: > public void configure() throws Exception { > from("direct:start") > .to(("jms:queue:testQueue")) > } > > I also created a JBoss application user and added it to a "guest" > role. > > On my test class, I send a message to "direct:start", and then I get > the exception above (cause). > > Any help will be much appreciated... thank you! > > -Francis- > > > SGI (Corporate Head Office) • 2260 11th Avenue • Regina, SK • S4P0J9 • > www.sgi.sk.ca • 1-844-TLK-2SGI (1-844-855-2744) > > This e-mail and any files transmitted with it are confidential and > intended solely for the use of the individual or entity to whom they are > addressed. If you are not the named addressee, please notify the sender > immediately by e-mail if you have received this e-mail by mistake and > delete this e-mail from your system. If you are not the intended > recipient you are notified that using, disclosing, copying or > distributing the contents of this information is strictly prohibited. > > You are receiving this message because you are a customer of SGI. If > you do not wish to receive promotional messages via email, go to > https://mysgi.sgi.sk.ca/afOnlineServices/onlineservices/public/customerUnsubscribe.do > to unsubscribe (but you'll be missing out!) > > > -- Zoran Regvart
