Hi Gert, I defined the jms:provider and consumer as follows:
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0" xmlns:test="http://test" xmlns:amq="http://activemq.org/config/1.0" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://servicemix.apache.org/jms/1.0 http://servicemix.apache.org/schema/servicemix-jms-3.2.3.xsd http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-4.1.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <jms:provider service="test:eventProviderService" endpoint="provider" destinationName="queueA" connectionFactory="#connectionFactory" /> <jms:consumer service="test:eventConsumerService" endpoint="consumer" destinationName="queueA" targetService="test:beanService" targetEndpoint="endpoint" marshaler="#marshaler" connectionFactory="#connectionFactory" /> <bean id="marshaler" class="test.myMarshaler"> <property name="mep" value="http://www.w3.org/2004/08/wsdl/in-only" /> </bean> <amq:connectionFactory id="connectionFactory" brokerURL="tcp://localhost:61616" /> </beans> Sending the InOnly exchange to put the message in the queue: serviceMixClient = new ServiceMixClientFacade(this.context); QName service = new QName("http://test", "eventProviderService"); InOnly inOnlyExchange = serviceMixClient.createInOnlyExchange(); inOnlyExchange.setService(service); NormalizedMessage message = inOnlyExchange.getInMessage(); String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><hello>world</hello>"; message.setContent(new StringSource(xmlString)); try { serviceMixClient.sendSync(inOnlyExchange); serviceMixClient.close(); } catch (JBIException ex) { throw ex; } It seems that the text message is null.... I am getting the exception: INFO | jvm 1 | 2010/01/31 04:39:59 | WARN - DefaultMessageListenerContainer - Execution of JMS message listener failed INFO | jvm 1 | 2010/01/31 04:39:59 | javax.jms.JMSException: Error sending JBI exchange INFO | jvm 1 | 2010/01/31 04:39:59 | at org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:569) INFO | jvm 1 | 2010/01/31 04:39:59 | at org.apache.servicemix.jms.endpoints.JmsConsumerEndpoint$1.onMessage(JmsConsumerEndpoint.java:446) message is: ActiveMQTextMessage {commandId = 5, responseRequired = true, messageId = ID:SUN-lortind620-1600-1264930595156-2:70:1:1:1, originalDestination = null, originalTransactionId = null, producerId = ID:SUN-lortind620-1600-1264930595156-2:70:1:1, destination = queue://queueA, transactionId = null, expiration = 0, timestamp = 1264930798937, arrival = 0, brokerInTime = 1264930798937, brokerOutTime = 1264930798953, correlationId = null, replyTo = null, persistent = true, type = null, priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = org.apache.activemq.util.byteseque...@62ea85, marshalledProperties = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = null, readOnlyProperties = true, readOnlyBody = true, droppable = false, text = null} Any idea? It seems the text is null but I do not understand why????? Any help greatly appreciate!!! Thx Lorena Gert Vanthienen wrote: > > Lorena, > > If you already managed to send a MessageExchange to another JBI > endpoint from within your service, you could reuse the same approach > for putting the message in a JMS queue. If you create a > <jms:provider/> endpoint, you can send an InOnly exchange to that > endpoint to put the message in the queue. > > For handling the asynchronous processing inside ServiceMix, you can > start a new flow which starts with a <jms:consumer/> to receive the > message asynchronously and then send it to any other type of endpoint > in the ESB. > > Regards, > > Gert Vanthienen > ------------------------ > Open Source SOA: http://fusesource.com > Blog: http://gertvanthienen.blogspot.com/ > > > > On 28 January 2010 15:56, Lorena A <[email protected]> wrote: >> >> Hi Freema, >> >> Thanks very much for your reply. >> >> I am new on this technology. So far this is what I have deployed on a sa: >> >> cxf-bc-su >> <cxfbc:consumer wsdl="classpath:service.wsdl" >> targetService="hello:HelloService" >> targetInterface="hello:Hello"/> >> >> >> cxf-se-su >> <cxfse:endpoint> >> <cxfse:pojo> >> <bean class="org.apache.servicemix.examples.HelloImpl"> >> <property name="context" ref="context" /> >> </bean> >> </cxfse:pojo> >> </cxfse:endpoint> >> >> With this config, I am hosting a web service in the bus. The web service >> implementation (HelloImpl) does some processing and sends the message to >> another JBI component in the bus by using ServiceMixClient. >> >> Got it to work (after some nights of no sleep :>). >> >> Now the issue is that the client app can not wait for the reply of the >> web >> service...the processing of the request may take some processing time. I >> need to make it somehow async....so I thought about servicemix-jms >> >> All the examples I have found are based on a JMS Client app publishing >> the >> message on the queue. >> >> In my case the JMS Client is my web service impl (cxfse:endpoint) >> >> I looked on the links you sent...but they are little hard for me to >> understand...so I started google about cxf with jms transport.... >> >> I am using servicemix 3.2.3...I can not use an upgraded version...so I am >> not sure if that feature is available.... >> >> >> Can I do something like that using smx 3.2.3? >> >> Can you point me to a more concrete example how to achieve it? >> >> Thanks a lot!!!! >> >> Lorena >> >> >> >> Freeman Fang wrote: >>> >>> Hi, >>> >>> You can use a cxf bc provider endpoint with jms transport to send >>> message to jms topic/queue. take a look at CxfBcJmsTest[1] to see how >>> to configure cxf bc provider with jms transport. >>> >>> And you can inject the proxy of cxf bc provider into your cxf se >>> endpoint, then invoke the cxf bc provider from your cxf-se just like >>> normal java invocation, take a look at the "Proxies" part of [2] >>> >>> [1]https://svn.apache.org/repos/asf/servicemix/components/bindings/servicemix-cxf-bc/trunk/src/test/java/org/apache/servicemix/cxfbc/CxfBcJmsTest.java >>> [2]http://servicemix.apache.org/servicemix-cxf-se.html >>> >>> Freeman >>> On 2010-1-28, at 下午12:49, Lorena A wrote: >>> >>>> >>>> Hello, >>>> >>>> >>>> The client will send a request via web service (the client does not >>>> want to >>>> use JMS), then the request needs to go to a jms bc >>>> >>>> How can I invoke jms bc from cfx-se? >>>> >>>> Any help will be greatly appreciate! >>>> >>>> Thanks, Lorena >>>> -- >>>> View this message in context: >>>> http://old.nabble.com/How-to-call-%28send-message%29-to-jms-bc-from-cxf-se-tp27351068p27351068.html >>>> Sent from the ServiceMix - User mailing list archive at Nabble.com. >>>> >>> >>> >>> -- >>> Freeman Fang >>> ------------------------ >>> Open Source SOA: http://fusesource.com >>> >>> >>> >> >> -- >> View this message in context: >> http://old.nabble.com/How-to-call-%28send-message%29-to-jms-bc-from-cxf-se-tp27351068p27357271.html >> Sent from the ServiceMix - User mailing list archive at Nabble.com. >> >> > > > ----- > --- > Gert Vanthienen > http://gertvanthienen.blogspot.com > -- View this message in context: http://old.nabble.com/How-to-call-%28send-message%29-to-jms-bc-from-cxf-se-tp27351068p27391318.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
