I get the SU working (I think) through the following configuration:
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
xmlns:beppe="http://giuseppe.org">
<!-- START SNIPPET: consumer -->
<jms:endpoint service="beppe:jms-service" endpoint="jms"
targetService="beppe:validate" targetEndpoint="endpoint"
role="consumer"
destinationStyle="queue"
jmsProviderDestinationName="validateQueue"
connectionFactory="#jmsFactory"
defaultMep="http://www.w3.org/2004/08/wsdl/in-only"/>
<!-- END SNIPPET: consumer -->
<bean id="jmsFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory">
<bean
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="tcp://localhost:61616"/>
</bean>
</property>
</bean>
</beans>
Now, how can I send messages to that component? I tried the following code,
but a NoInitialContextException is raised. Consider I have never used JNDI,
so I wrote a simple visual application with a textArea and a button and put
the following code in the action performed by the press of the button,
nothing else. The code is taken from a Sun tutorial and modified.
private void sendMessage() {
/*
* Create a JNDI API InitialContext object if none exists yet.
*/
try {
jndiContext = new InitialContext();
} catch (NamingException e) {
System.out.println("Could not create JNDI API " +
"context: "
+ e.toString());
System.exit(1);
}
/*
* Look up connection factory and queue. If either does not
exist, exit.
*/
try {
queueConnectionFactory = (QueueConnectionFactory)
jndiContext
.lookup("ConnectionFactory");
queue = (Queue) jndiContext.lookup(queueName);
} catch (NamingException e) {
System.out.println("JNDI API lookup failed: " +
e.toString());
System.exit(1);
}
/*
* Create connection. Create session from connection; false
means
* session is not transacted. Create sender and text message.
Send
* messages, varying text slightly. Send end-of-messages
message.
* Finally, close connection.
*/
try {
queueConnection =
queueConnectionFactory.createQueueConnection();
queueSession = queueConnection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
queueSender = queueSession.createSender(queue);
message = queueSession.createTextMessage();
message.setText(msgTxt.getText());
queueSender.send(message);
// for (int i = 0; i < NUM_MSGS; i++) {
// message.setText("This is message " + (i + 1));
// System.out.println("Sending message: " +
message.getText());
// queueSender.send(message);
// }
/*
* Send a non-text control message indicating end of
messages.
*/
// queueSender.send(queueSession.createMessage());
} catch (JMSException e) {
System.out.println("Exception occurred: " +
e.toString());
} finally {
if (queueConnection != null) {
try {
queueConnection.close();
} catch (JMSException e) {
}
}
}
}
beppe82 wrote:
>
> Hi all. It's the first time I use JMS and JNDI... what is
> jndiConnectionFactoryName? How to use it? I tried to deploy a simple
> service unit:
>
> <beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
> xmlns:beppe="http://giuseppe.org">
>
> <!-- START SNIPPET: consumer -->
> <jms:endpoint service="beppe:jms-service"
> endpoint="jms"
> targetService="beppe:validate"
> targetEndpoint="endpoint"
> role="consumer"
> destinationStyle="queue"
> jmsProviderDestinationName="validateQueue"
> jndiConnectionFactoryName="ConnectionFactory"
> defaultMep="http://www.w3.org/2004/08/wsdl/in-only" />
> <!-- END SNIPPET: consumer -->
> </beans>
>
> but I get the following error, dependant on jndiConnectionFactoryName:
>
> java.lang.Exception: <?xml version="1.0" encoding="UTF-8"?>
> <jbi-task xmlns="http://java.sun.com/xml/ns/jbi/management-message"
> version="1.0
> ">
> <jbi-task-result>
> <frmwk-task-result>
> <frmwk-task-result-details>
> <task-result-details>
> <task-id>start</task-id>
> <task-result>FAILED</task-result>
> <message-type>ERROR</message-type>
> </task-result-details>
> </frmwk-task-result-details>
> </frmwk-task-result>
> <component-task-result
> xmlns="http://java.sun.com/xml/ns/jbi/management-message"
>>
> <component-name>servicemix-jms</component-name>
> <component-task-result-details>
> <task-result-details>
> <task-id>start</task-id>
> <task-result>FAILED</task-result>
> <message-type>ERROR</message-type>
> <task-status-msg>
> <msg-loc-info>
> <loc-token/>
> <loc-message>Unable to start service unit</loc-message>
> </msg-loc-info>
> </task-status-msg>
> <exception-info>
> <nesting-level>1</nesting-level>
> <msg-loc-info>
> <loc-token/>
>
> <loc-message>org.apache.xbean.spring.jnd
> i.SpringInitialContextFactory</loc-message>
>
> <stack-trace><![CDATA[javax.naming.NameN
> otFoundException: ConnectionFactory
> at
> org.apache.xbean.spring.jndi.DefaultContext.lookup(DefaultContext.jav
> a:147)
> at javax.naming.InitialContext.lookup(InitialContext.java:392)
> at
> org.apache.servicemix.jms.AbstractJmsProcessor.getConnectionFactory(A
> bstractJmsProcessor.java:92)
> at
> org.apache.servicemix.jms.AbstractJmsProcessor.start(AbstractJmsProce
> ssor.java:73)
> at
> org.apache.servicemix.soap.SoapEndpoint.activate(SoapEndpoint.java:34
> 8)
> at
> org.apache.servicemix.common.ServiceUnit.start(ServiceUnit.java:55)
> at
> org.apache.servicemix.common.BaseServiceUnitManager.start(BaseService
> UnitManager.java:151)
> at
> org.apache.servicemix.jbi.framework.ServiceUnitLifeCycle.start(Servic
> eUnitLifeCycle.java:103)
> at
> org.apache.servicemix.jbi.framework.ServiceAssemblyLifeCycle.start(Se
> rviceAssemblyLifeCycle.java:130)
> at
> org.apache.servicemix.jbi.framework.DeploymentService.start(Deploymen
> tService.java:374)
> at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchi
> ve(AutoDeploymentService.java:336)
> at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateExter
> nalArchive(AutoDeploymentService.java:201)
> at
> org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchiv
> e(JBIContainer.java:473)
> at
> org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchiv
> e(JBIContainer.java:483)
> at
> org.apache.servicemix.jbi.framework.AdminCommandsService.deployServic
> eAssembly(AdminCommandsService.java:229)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.jav
> a:216)
> at
> org.apache.servicemix.jbi.management.BaseStandardMBean.invoke(BaseSta
> ndardMBean.java:318)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultM
> BeanServerInterceptor.java:836)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761
> )
> at
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnecti
> onImpl.java:1426)
> at
> javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectio
> nImpl.java:72)
> at
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run
> (RMIConnectionImpl.java:1264)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(R
> MIConnectionImpl.java:1366)
> at
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImp
> l.java:788)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
> at sun.rmi.transport.Transport$1.run(Transport.java:159)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
> at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:5
> 35)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTranspor
> t.java:790)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
> .java:649)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
> at java.lang.Thread.run(Thread.java:619)
> ]]></stack-trace>
> </msg-loc-info>
> </exception-info>
> </task-result-details>
> </component-task-result-details>
> </component-task-result>
> </jbi-task-result>
> </jbi-task>
>
> at
> org.apache.servicemix.jbi.framework.ManagementSupport.failure(Managem
> entSupport.java:121)
> at
> org.apache.servicemix.jbi.framework.ManagementSupport.failure(Managem
> entSupport.java:107)
> at
> org.apache.servicemix.jbi.framework.ServiceAssemblyLifeCycle.start(Se
> rviceAssemblyLifeCycle.java:144)
> at
> org.apache.servicemix.jbi.framework.DeploymentService.start(Deploymen
> tService.java:374)
> at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchi
> ve(AutoDeploymentService.java:336)
> at
> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateExter
> nalArchive(AutoDeploymentService.java:201)
> at
> org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchiv
> e(JBIContainer.java:473)
> at
> org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchiv
> e(JBIContainer.java:483)
> at
> org.apache.servicemix.jbi.framework.AdminCommandsService.deployServic
> eAssembly(AdminCommandsService.java:229)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.jav
> a:216)
> at
> org.apache.servicemix.jbi.management.BaseStandardMBean.invoke(BaseSta
> ndardMBean.java:318)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultM
> BeanServerInterceptor.java:836)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761
> )
> at
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnecti
> onImpl.java:1426)
> at
> javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectio
> nImpl.java:72)
> at
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run
> (RMIConnectionImpl.java:1264)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(R
> MIConnectionImpl.java:1366)
> at
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImp
> l.java:788)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
> at sun.rmi.transport.Transport$1.run(Transport.java:159)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
> at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:5
> 35)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTranspor
> t.java:790)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
> .java:649)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:907)
> at java.lang.Thread.run(Thread.java:619)
>
> Thanks, Giuseppe
>
>
--
View this message in context:
http://www.nabble.com/jndiConnectionFactoryName-and-servicemix-jms-tf4085947s12049.html#a11613824
Sent from the ServiceMix - User mailing list archive at Nabble.com.