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-tp19064169p19154212.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to