But must I have a full installation of ActiveMQ to make my application run? Can't I use the one embedded in ServiceMix? Thanks, GIUSEPPE not GUISEPPE :)
Gert Vanthienen wrote: > > Guiseppe, > > To connect to ActiveMQ from your simple visual application, the easiest > solution with JNDI would probably be to leverage ActiveMQ's built-in > JNDI support. Have a look at > http://activemq.apache.org/jndi-support.html for more information. > > Gert > > > beppe82 wrote: >> 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#a11614881 Sent from the ServiceMix - User mailing list archive at Nabble.com.
