Hi, I tried the content enricher and it worked for me.
Now I want to add more info to my request, my flow is like JMS Consumer --> Content Enricher --> Camel Router --> HTTP provider --> External WS My original request is <createProductTest xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <destinationSiteId xmlns="">1003</destinationSiteId> <grossVolume xmlns="">2000</grossVolume> <netVolume xmlns="">2000</netVolume> </createProductTest> I use content enricher to add <user xmlns="">webservice</user> tag. But my final message which is sent to the WS becomes <?xml version="1.0" encoding="UTF-8"?> <e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/"> <e:Body> <enricher> <request> <createProductTest xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <destinationSiteId xmlns="">1003</destinationSiteId> <grossVolume xmlns="">2000</grossVolume> <netVolume xmlns="">2000</netVolume> <user xmlns="">webservice</user> </createProductTest> </request> <result> <createProductTest xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <destinationSiteId xmlns="">1003</destinationSiteId> <grossVolume xmlns="">2000</grossVolume> <netVolume xmlns="">2000</netVolume> <user xmlns="">webservice</user> </createProductTest> </result> </enricher> </e:Body> </e:Envelope> Why does it add <enricher><request>...</request><result></result></enricher> over my message? How can i avoid it? rgds subh FreshAir wrote: > > > > Edell Nolan wrote: >> >> Hi, >> >> Can you try >> >> StringSource enrichContent = new StringSource(body); >> message.setContent(enrichContent); >> System.out.println("Routed to Enricher!"); >> System.out.println("received: " + body); >> exchange.setMessage(message, "out"); >> channel.send(exchange); >> >> Edell. >> >> >> On Mon, Aug 25, 2008 at 10:29 AM, FreshAir <[EMAIL PROTECTED]> >> wrote: >> >>> >>> >>> >>> Edell Nolan wrote: >>> > >>> > Have you tried Gert's suggestion below ? >>> > >>> > On Fri, Aug 22, 2008 at 7:08 AM, Gert Vanthienen >>> > <[EMAIL PROTECTED]>wrote: >>> > >>> >> L.S., >>> >> >>> >> The most likely explanation is that you the incoming MessageExchange >>> uses >>> >> streaming for the message body (e.g. with a StreamSource, StaxSource >>> or >>> >> the >>> >> like). However, the stream is being read when you call the new >>> >> SourceTransformer()).toString(content); At that moment, the String >>> >> variable >>> >> contains the message body, but the original stream itself has been >>> >> closed. >>> >> >>> >> Later on in your code, you copy the message content from 'in' to >>> 'out', >>> >> but >>> >> the in (and out) message content is the closed stream now, causing >>> >> problems >>> >> when you try to read this thing again. The best way to solve this is >>> by >>> >> calling setContent() on the out message and passing in a new Source >>> >> object >>> >> (e.g. a new StringSource(body)) to make sure you have a re-readable >>> >> message. >>> >> Could you give that a try? >>> >> >>> >> Regards, >>> >> >>> >> Gert >>> >> >>> >> >>> >> >>> >> FreshAir wrote: >>> >> >>> >>> >>> >>> Edell Nolan wrote: >>> >>> >>> >>> >>> >>>> Hi, >>> >>>> >>> >>>> I have tried this and for me to get it to go through and work I >>> needed >>> >>>> to >>> >>>> define a target namespace. >>> >>>> >>> >>>> e.g >>> >>>> >>> >>>> <?xml version="1.0" encoding="UTF-8"?> >>> >>>> <e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" >>> >>>> xmlns="http://schemas.xmlsoap.org/soap/envelope/"> >>> >>>> <e:Body> >>> >>>> <test id="1">ok >>> >>>> </test> >>> >>>> </e:Body> >>> >>>> </e:Envelope> >>> >>>> >>> >>>> Can you give this a try ? >>> >>>> >>> >>>> thanks, Edell. >>> >>>> >>> >>>> On Thu, Aug 21, 2008 at 2:35 AM, FreshAir <[EMAIL PROTECTED]> >>> >>>> wrote: >>> >>>> >>> >>>> >>> >>>> >>> >>>>> >>> >>>>> Edell Nolan wrote: >>> >>>>> >>> >>>>> >>> >>>>>> Hi, >>> >>>>>> >>> >>>>>> I have tested this out and it works for me. >>> >>>>>> >>> >>>>>> I am just wondering how you send the actual message. >>> >>>>>> >>> >>>>>> I sent the request as follows from an onMessageExchange of a >>> Service >>> >>>>>> >>> >>>>>> QName cbrServiceName = new QName(SERVICE_NAMESPACE, >>> >>>>>> "contentEnricher"); >>> >>>>>> ServiceEndpoint se = >>> getContext().getEndpoint(cbrServiceName, >>> >>>>>> "enricherEndpoint"); >>> >>>>>> >>> >>>>>> InOnly eipInOnly = >>> >>>>>> channel.createExchangeFactory().createInOnlyExchange(); >>> >>>>>> >>> >>>>>> eipInOnly.setEndpoint(se); >>> >>>>>> NormalizedMessage msg = eipInOnly.createMessage(); >>> >>>>>> msg.setContent(setMessageContent()); >>> >>>>>> >>> >>>>>> eipInOnly.setMessage(msg, "in"); >>> >>>>>> eipInOnly.setService(cbrServiceName); >>> >>>>>> channel.sendSync(eipInOnly); >>> >>>>>> >>> >>>>>> >>> >>>>>> >>> >>>>>> then setMessageContent is >>> >>>>>> >>> >>>>>> private StringSource setupMsg() { >>> >>>>>> StringBuffer buf = new StringBuffer(); >>> >>>>>> buf.append("<test id=\"1\">ok</test>"); >>> >>>>>> return new StringSource(buf.toString()); >>> >>>>>> } >>> >>>>>> >>> >>>>>> and it then goes through the additionalInformationExtracter and >>> >>>>>> another >>> >>>>>> service that I setup as the target and I do get the message >>> content >>> >>>>>> >>> >>>>>> >>> >>>>> from >>> >>>>> >>> >>>>> >>> >>>>>> it. >>> >>>>>> >>> >>>>>> Edell. >>> >>>>>> >>> >>>>>> >>> >>>>>> On Wed, Aug 20, 2008 at 8:27 AM, FreshAir >>> <[EMAIL PROTECTED]> >>> >>>>>> >>> >>>>>> >>> >>>>> wrote: >>> >>>>> >>> >>>>> >>> >>>>>> Hi, >>> >>>>>>> I tested the servicemix-eip, and its content-enricher part >>> appears >>> >>>>>>> >>> >>>>>>> >>> >>>>>> rather >>> >>>>> >>> >>>>> >>> >>>>>> confusing. >>> >>>>>>> The following is my xbean.xml using content-enricher: >>> >>>>>>> <eip:content-enricher service="test:contentEnricher" >>> >>>>>>> >>> >>>>>>> >>> >>>>>> endpoint="endpoint"> >>> >>>>> >>> >>>>> >>> >>>>>> <eip:enricherTarget> >>> >>>>>>> <eip:exchange-target >>> >>>>>>> >>> >>>>>>> >>> >>>>>> service="test:additionalInformationExtracter"/> >>> >>>>> >>> >>>>> >>> >>>>>> </eip:enricherTarget> >>> >>>>>>> <eip:target> >>> >>>>>>> <eip:exchange-target service="test:trace3" /> >>> >>>>>>> </eip:target> >>> >>>>>>> </eip:content-enricher> >>> >>>>>>> >>> >>>>>>> the exchange-target of enricherTarget is simply a >>> servicemix-bea, >>> >>>>>>> the >>> >>>>>>> onMessageExchange method of which is as follows: >>> >>>>>>> >>> >>>>>>> public void onMessageExchange(MessageExchange exchange) throws >>> >>>>>>> MessagingException { >>> >>>>>>> if (exchange.getStatus() == ExchangeStatus.ACTIVE) { >>> >>>>>>> >>> >>>>>>> NormalizedMessage message = >>> exchange.getMessage("in"); >>> >>>>>>> Source content = message.getContent(); >>> >>>>>>> //process content according to your logic >>> >>>>>>> //e.g. to access the message body as a >>> String >>> >>>>>>> >>> >>>>>>> >>> >>>>>> use >>> >>>>> >>> >>>>> >>> >>>>>> try{ >>> >>>>>>> String body = (new >>> >>>>>>> SourceTransformer()).toString(content); >>> >>>>>>> >>> >>>>>>> >>> >>>>>> message.setContent(content); >>> >>>>> >>> >>>>> >>> >>>>>> System.out.println("Routed to Enricher!"); >>> >>>>>>> System.out.println("received: " + body); >>> >>>>>>> >>> >>>>>>> exchange.setMessage(message, "out"); >>> >>>>>>> channel.send(exchange); >>> >>>>>>> }catch(Exception e) { >>> >>>>>>> e.printStackTrace(); >>> >>>>>>> } >>> >>>>>>> } >>> >>>>>>> } >>> >>>>>>> As you see, it can not be simpler which just echo the message. >>> >>>>>>> The target part is similar and equally simple. I used a http bc >>> to >>> >>>>>>> >>> >>>>>>> >>> >>>>>> post >>> >>>>> a >>> >>>>> >>> >>>>> >>> >>>>>> soap message to the content-enricher like this: >>> >>>>>>> >>> >>>>>>> <?xml version="1.0" encoding="UTF-8"?> >>> >>>>>>> <e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/"> >>> >>>>>>> <e:Body> >>> >>>>>>> <test id="1">ok >>> >>>>>>> </test> >>> >>>>>>> </e:Body> >>> >>>>>>> </e:Envelope> >>> >>>>>>> >>> >>>>>>> But it gave me the following error: >>> >>>>>>> >>> >>>>>>> Routed to Enricher! >>> >>>>>>> received: <?xml version="1.0" encoding="UTF-8"?><test >>> >>>>>>> xmlns:e="http://schemas.xm >>> >>>>>>> lsoap.org/soap/envelope/" id="1">ok >>> >>>>>>> </test> >>> >>>>>>> ERROR - EIPComponent - Error processing >>> exchange >>> >>>>>>> InOnly[ >>> >>>>>>> id: ID:172.16.253.122-11bdeb9b38c-12:8 >>> >>>>>>> status: Active >>> >>>>>>> role: provider >>> >>>>>>> service: {http://test}contentEnricher >>> >>>>>>> endpoint: endpoint >>> >>>>>>> operation: test >>> >>>>>>> in: <?xml version="1.0" encoding="UTF-8"?> >>> >>>>>>> ] >>> >>>>>>> java.lang.NullPointerException >>> >>>>>>> at >>> org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown >>> >>>>>>> Source) >>> >>>>>>> at >>> org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown >>> >>>>>>> Source) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.eip.patterns.ContentEnricher.combineToDOMDoc >>> >>>>>>> ument(ContentEnricher.java:208) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.eip.patterns.ContentEnricher.process(Content >>> >>>>>>> Enricher.java:156) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.AsyncBaseLifeCycle.doProcess(AsyncBas >>> >>>>>>> eLifeCycle.java:526) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.AsyncBaseLifeCycle.processExchange(As >>> >>>>>>> yncBaseLifeCycle.java:478) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.BaseLifeCycle.onMessageExchange(BaseL >>> >>>>>>> ifeCycle.java:34) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.messaging.DeliveryChannelImpl.processInB >>> >>>>>>> ound(DeliveryChannelImpl.java:598) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.AbstractFlow.doRouting(Abstract >>> >>>>>>> Flow.java:158) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlo >>> >>>>>>> w.java:155) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue. >>> >>>>>>> java:122) >>> >>>>>>> at >>> >>>>>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec >>> >>>>>>> utor.java:886) >>> >>>>>>> at >>> >>>>>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor >>> >>>>>>> .java:908) >>> >>>>>>> at java.lang.Thread.run(Thread.java:619) >>> >>>>>>> WARN - jetty - Nested in >>> >>>>>>> javax.servlet.ServletExceptio >>> >>>>>>> n: Failed to process request: java.lang.Exception: >>> >>>>>>> java.lang.NullPointerExceptio >>> >>>>>>> n: >>> >>>>>>> java.lang.Exception: java.lang.NullPointerException >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.http.processors.ConsumerProcessor.process(Co >>> >>>>>>> nsumerProcessor.java:182) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.http.HttpBridgeServlet.doPost(HttpBridgeServ >>> >>>>>>> let.java:59) >>> >>>>>>> at >>> >>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:617) >>> >>>>>>> at >>> >>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:690) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487 >>> >>>>>>> ) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3 >>> >>>>>>> 62) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7 >>> >>>>>>> 12) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHand >>> >>>>>>> lerCollection.java:211) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection. >>> >>>>>>> java:114) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1 >>> >>>>>>> 39) >>> >>>>>>> at org.mortbay.jetty.Server.handle(Server.java:313) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:50 >>> >>>>>>> 6) >>> >>>>>>> at >>> >>>>>>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:375) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja >>> >>>>>>> va:396) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(Se >>> >>>>>>> lectChannelConnector.java:511) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool >>> >>>>>>> .java:442) >>> >>>>>>> Caused by: java.lang.NullPointerException >>> >>>>>>> at >>> org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown >>> >>>>>>> Source) >>> >>>>>>> at >>> org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown >>> >>>>>>> Source) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.eip.patterns.ContentEnricher.combineToDOMDoc >>> >>>>>>> ument(ContentEnricher.java:208) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.eip.patterns.ContentEnricher.process(Content >>> >>>>>>> Enricher.java:156) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.AsyncBaseLifeCycle.doProcess(AsyncBas >>> >>>>>>> eLifeCycle.java:526) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.AsyncBaseLifeCycle.processExchange(As >>> >>>>>>> yncBaseLifeCycle.java:478) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.BaseLifeCycle.onMessageExchange(BaseL >>> >>>>>>> ifeCycle.java:34) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.messaging.DeliveryChannelImpl.processInB >>> >>>>>>> ound(DeliveryChannelImpl.java:598) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.AbstractFlow.doRouting(Abstract >>> >>>>>>> Flow.java:158) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlo >>> >>>>>>> w.java:155) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue. >>> >>>>>>> java:122) >>> >>>>>>> at >>> >>>>>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec >>> >>>>>>> utor.java:886) >>> >>>>>>> at >>> >>>>>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor >>> >>>>>>> .java:908) >>> >>>>>>> at java.lang.Thread.run(Thread.java:619) >>> >>>>>>> WARN - jetty - /eip-enricher/ >>> >>>>>>> java.lang.Exception: java.lang.NullPointerException >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.http.processors.ConsumerProcessor.process(Co >>> >>>>>>> nsumerProcessor.java:182) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.http.HttpBridgeServlet.doPost(HttpBridgeServ >>> >>>>>>> let.java:59) >>> >>>>>>> at >>> >>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:617) >>> >>>>>>> at >>> >>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:690) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487 >>> >>>>>>> ) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3 >>> >>>>>>> 62) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7 >>> >>>>>>> 12) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHand >>> >>>>>>> lerCollection.java:211) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection. >>> >>>>>>> java:114) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1 >>> >>>>>>> 39) >>> >>>>>>> at org.mortbay.jetty.Server.handle(Server.java:313) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:50 >>> >>>>>>> 6) >>> >>>>>>> at >>> >>>>>>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:375) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja >>> >>>>>>> va:396) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(Se >>> >>>>>>> lectChannelConnector.java:511) >>> >>>>>>> at >>> >>>>>>> >>> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool >>> >>>>>>> .java:442) >>> >>>>>>> Caused by: java.lang.NullPointerException >>> >>>>>>> at >>> org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown >>> >>>>>>> Source) >>> >>>>>>> at >>> org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown >>> >>>>>>> Source) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.eip.patterns.ContentEnricher.combineToDOMDoc >>> >>>>>>> ument(ContentEnricher.java:208) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.eip.patterns.ContentEnricher.process(Content >>> >>>>>>> Enricher.java:156) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.AsyncBaseLifeCycle.doProcess(AsyncBas >>> >>>>>>> eLifeCycle.java:526) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.AsyncBaseLifeCycle.processExchange(As >>> >>>>>>> yncBaseLifeCycle.java:478) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.common.BaseLifeCycle.onMessageExchange(BaseL >>> >>>>>>> ifeCycle.java:34) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.messaging.DeliveryChannelImpl.processInB >>> >>>>>>> ound(DeliveryChannelImpl.java:598) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.AbstractFlow.doRouting(Abstract >>> >>>>>>> Flow.java:158) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlo >>> >>>>>>> w.java:155) >>> >>>>>>> at >>> >>>>>>> >>> com.intervision.interesb.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue. >>> >>>>>>> java:122) >>> >>>>>>> at >>> >>>>>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec >>> >>>>>>> utor.java:886) >>> >>>>>>> at >>> >>>>>>> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor >>> >>>>>>> .java:908) >>> >>>>>>> at java.lang.Thread.run(Thread.java:619) >>> >>>>>>> >>> >>>>>>> Obviously the enricher-target had recieved the message but when >>> >>>>>>> routed >>> >>>>>>> >>> >>>>>>> >>> >>>>>> to >>> >>>>> >>> >>>>> >>> >>>>>> the target, the "in" part of the message had mysteriously >>> gone(that's >>> >>>>>>> >>> >>>>>>> >>> >>>>>> why >>> >>>>> >>> >>>>> >>> >>>>>> a >>> >>>>>>> NullpointerException was invited). >>> >>>>>>> Any suggestion would be greatly appreciated. >>> >>>>>>> Thanks in advance! >>> >>>>>>> -- >>> >>>>>>> View this message in context: >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>> >>> >>>>> >>> http://www.nabble.com/Confused-about-the-EIPComponent-content-Enricher-tp19064169p19064169.html >>> >>>>> >>> >>>>> >>> >>>>>> Sent from the ServiceMix - User mailing list archive at >>> Nabble.com. >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>> >>> >>>>>> >>> >>>>> Hi, >>> >>>>> My http request part was like this,the xbean.xml which defines a >>> http >>> >>>>> bc: >>> >>>>> <http:endpoint service="test:http8" >>> >>>>> endpoint="endpoint" >>> >>>>> targetService="test:contentEnricher" >>> >>>>> role="consumer" >>> >>>>> locationURI="http://0.0.0.0:8192/eip-enricher/" >>> >>>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-only" >>> >>>>> soap="true"/> >>> >>>>> >>> >>>>> and I modified an example in servicemix3.2.1 distribution that is >>> a >>> >>>>> client.html to post request(as I attached).would you please tell >>> me >>> if >>> >>>>> I >>> >>>>> missed something? >>> >>>>> Thanks! http://www.nabble.com/file/p19081101/client-enricher.html >>> >>>>> client-enricher.html >>> >>>>> -- >>> >>>>> View this message in context: >>> >>>>> >>> >>>>> >>> http://www.nabble.com/Confused-about-the-EIPComponent-content-Enricher-tp19064169p19081101.html >>> >>>>> Sent from the ServiceMix - User mailing list archive at >>> Nabble.com. >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>> >>> >>>> >>> >>> >>> >>> Sir, >>> >>> I don't know how you got it through, for me it is still giving >>> errors >>> >>> like >>> >>> there were no actual payload in the sent message by that http bc to >>> the >>> >>> contentEnricher as follows(note the "in" part): >>> >>> Routed to Enricher! >>> >>> received: <?xml version="1.0" encoding="UTF-8"?><test >>> >>> xmlns="http://schemas.xmls >>> >>> oap.org/soap/envelope/" xmlns:e=" >>> >>> http://schemas.xmlsoap.org/soap/envelope/" >>> >>> id=" >>> >>> 1">ok >>> >>> </test> >>> >>> ERROR - EIPComponent - Error processing exchange >>> >>> InOnly[ >>> >>> id: ID:172.16.253.122-11be8193dc7-9:6 >>> >>> status: Active >>> >>> role: provider >>> >>> service: {http://test}contentEnricher >>> >>> endpoint: endpoint >>> >>> operation: >>> >>> >>> {http://schemas.xmlsoap.org/soap/envelope/}test<http://schemas.xmlsoap.org/soap/envelope/%7Dtest> >>> <http://schemas.xmlsoap.org/soap/envelope/%7Dtest> >>> >>> in: <?xml version="1.0" encoding="UTF-8"?> >>> >>> ] >>> >>> java.lang.NullPointerException >>> >>> at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown >>> >>> Source) >>> >>> at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown >>> >>> Source) >>> >>> at >>> >>> >>> com.intervision.interesb.eip.patterns.ContentEnricher.combineToDOMDoc >>> >>> ument(ContentEnricher.java:208) >>> >>> at >>> >>> >>> com.intervision.interesb.eip.patterns.ContentEnricher.process(Content >>> >>> Enricher.java:156) >>> >>> ... >>> >>> >>> >>> Is there any difference between defining a namespace and without one >>> in >>> >>> the >>> >>> request xml? >>> >>> Anyway, I think it is http bc that causes problem, since when I >>> produce >>> >>> a >>> >>> Inonly message in a servicemix-bean's onMessageExchangeListener and >>> send >>> >>> it >>> >>> to that contentEnricher(defining QName), it works like: >>> >>> Routed to Enricher! >>> >>> received: <test id="1">ok</test> >>> >>> Received exchange: InOnly[ >>> >>> id: ID:172.16.253.122-11be8207141-13:2 >>> >>> status: Active >>> >>> role: provider >>> >>> service: {http://test}trace3 >>> >>> endpoint: endpoint >>> >>> in: <?xml version="1.0" encoding="UTF-8"?><enricher><request><test >>> >>> id="1">ok</ >>> >>> test></request><result><test id="1">ok</test></result></enricher> >>> >>> ] >>> >>> here I dont enrich any content so it remains the same. >>> >>> It is noticeable, however, that in the former the enricher bean >>> recieved >>> >>> something like: <?xml version="1.0" encoding="UTF-8"?><test xmlns=" >>> >>> http://schemas.xmls >>> >>> oap.org/soap/envelope/" xmlns:e=" >>> >>> http://schemas.xmlsoap.org/soap/envelope/" >>> >>> id=" >>> >>> 1">ok >>> >>> </test> >>> >>> and for the latter: >>> >>> <test id="1">ok</test> >>> >>> >>> >>> The non-http request is written as you told me in the last reply. >>> >>> So I was indeed wondering what's wrong with my http-bc. >>> >>> Thanks. >>> >>> >>> >>> >>> >> >>> >> >>> > >>> > >>> Sir, >>> Sorry for the delay. >>> I have tried Gert's suggesion and it still gives the error of that >>> NullPointerException. >>> I modified the code like this: >>> NormalizedMessage message = exchange.getMessage("in"); >>> message = exchange.getMessage("in"); >>> Source content = message.getContent(); >>> //process content according to your logic >>> //e.g. to access the message body as a String use >>> try{ >>> String body = (new >>> SourceTransformer()).toString(content); >>> content = new StringSource(body); >>> message.setContent(content); >>> System.out.println("Routed to Enricher!"); >>> System.out.println("received: " + body); >>> >>> exchange.setMessage(message, "out"); >>> channel.send(exchange); >>> >>> Do I correctly understand what's Gert's mean? >>> Thanks for your concern! >>> -- >>> View this message in context: >>> http://www.nabble.com/Confused-about-the-EIPComponent-content-Enricher-tp19064169p19140553.html >>> Sent from the ServiceMix - User mailing list archive at Nabble.com. >>> >>> >> >> > > Hi, > I just tried this way but it remains the same. > I think the enricher has actually recieved the InOut message since I can > even print them out. It is on the way from the enricher to its target > endpoint where the problem occurs. Take a look below: > > exchange recieved by the enricher:InOut[ > id: ID:172.16.253.122-11bfc79e536-9:0 > status: Active > role: provider > service: {http://test}additionalInformationExtracter > endpoint: endpoint > in: <?xml version="1.0" encoding="UTF-8"?><test > xmlns:e="http://schemas.xmlsoa > p.org/soap/envelope/" id="1">ok > </test> > ] > Routed to Enricher! > received: <?xml version="1.0" encoding="UTF-8"?><test > xmlns:e="http://schemas.xm > lsoap.org/soap/envelope/" id="1">ok > </test> > ERROR - EIPComponent - Error processing exchange InOnly[ > id: ID:172.16.253.122-11bfc79e536-12:0 > status: Active > role: provider > service: {http://test}contentEnricher > endpoint: endpoint > operation: test > in: <?xml version="1.0" encoding="UTF-8"?> > ] > java.lang.NullPointerException > at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown > Source) > at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown > Source) > > Note that when routed to targetendpoint, the test element is regarded as a > operation and the in part of the message is null, which means it does > recieve the whole message but fails to recognize the part. > So I suspect the http bc has done some format thing before sending the > message. > -- View this message in context: http://www.nabble.com/Confused-about-the-EIPComponent-content-Enricher-tp19064169p19670873.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
