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

Reply via email to