Giuseppe,

No, this works just as fine with ActiveMQ embedded in ServiceMix.


Gert


beppe82 wrote:
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




Reply via email to