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.

Reply via email to