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.

Reply via email to