You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by FreshAir <li...@yahoo.com.cn> on 2008/08/20 09:27:28 UTC

Confused about the EIPComponent content-Enricher

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.


Re: Confused about the EIPComponent content-Enricher

Posted by subh <su...@aol.com>.
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 <li...@yahoo.com.cn>
>> wrote:
>> 
>>>
>>>
>>>
>>> Edell Nolan wrote:
>>> >
>>> > Have you tried Gert's suggestion below ?
>>> >
>>> > On Fri, Aug 22, 2008 at 7:08 AM, Gert Vanthienen
>>> > <ge...@skynet.be>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 <li...@yahoo.com.cn>
>>> >>>> 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
>>> <li...@yahoo.com.cn>
>>> >>>>>>
>>> >>>>>>
>>> >>>>> 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.


Re: Confused about the EIPComponent content-Enricher

Posted by FreshAir <li...@yahoo.com.cn>.


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 <li...@yahoo.com.cn> wrote:
> 
>>
>>
>>
>> Edell Nolan wrote:
>> >
>> > Have you tried Gert's suggestion below ?
>> >
>> > On Fri, Aug 22, 2008 at 7:08 AM, Gert Vanthienen
>> > <ge...@skynet.be>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 <li...@yahoo.com.cn>
>> >>>> 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 <li...@yahoo.com.cn>
>> >>>>>>
>> >>>>>>
>> >>>>> 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.


Re: Confused about the EIPComponent content-Enricher

Posted by Edell Nolan <ed...@gmail.com>.
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 <li...@yahoo.com.cn> wrote:

>
>
>
> Edell Nolan wrote:
> >
> > Have you tried Gert's suggestion below ?
> >
> > On Fri, Aug 22, 2008 at 7:08 AM, Gert Vanthienen
> > <ge...@skynet.be>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 <li...@yahoo.com.cn>
> >>>> 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 <li...@yahoo.com.cn>
> >>>>>>
> >>>>>>
> >>>>> 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.
>
>

Re: Confused about the EIPComponent content-Enricher

Posted by FreshAir <li...@yahoo.com.cn>.


Edell Nolan wrote:
> 
> Have you tried Gert's suggestion below ?
> 
> On Fri, Aug 22, 2008 at 7:08 AM, Gert Vanthienen
> <ge...@skynet.be>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 <li...@yahoo.com.cn>
>>>> 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 <li...@yahoo.com.cn>
>>>>>>
>>>>>>
>>>>> 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>
>>>  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.


Re: Confused about the EIPComponent content-Enricher

Posted by Edell Nolan <ed...@gmail.com>.
Have you tried Gert's suggestion below ?

On Fri, Aug 22, 2008 at 7:08 AM, Gert Vanthienen
<ge...@skynet.be>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 <li...@yahoo.com.cn>
>>> 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 <li...@yahoo.com.cn>
>>>>>
>>>>>
>>>> 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>
>>  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.
>>
>>
>
>

Re: Confused about the EIPComponent content-Enricher

Posted by Gert Vanthienen <ge...@skynet.be>.
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 <li...@yahoo.com.cn> 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 <li...@yahoo.com.cn>
>>>>         
>>> 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
>   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.
>   


Re: Confused about the EIPComponent content-Enricher

Posted by FreshAir <li...@yahoo.com.cn>.


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 <li...@yahoo.com.cn> 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 <li...@yahoo.com.cn>
>> 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
  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.
-- 
View this message in context: http://www.nabble.com/Confused-about-the-EIPComponent-content-Enricher-tp19064169p19100290.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: Confused about the EIPComponent content-Enricher

Posted by Edell Nolan <ed...@gmail.com>.
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 <li...@yahoo.com.cn> 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 <li...@yahoo.com.cn>
> 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.
>
>

Re: Confused about the EIPComponent content-Enricher

Posted by FreshAir <li...@yahoo.com.cn>.


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 <li...@yahoo.com.cn> 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.


Re: Confused about the EIPComponent content-Enricher

Posted by Edell Nolan <ed...@gmail.com>.
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 <li...@yahoo.com.cn> 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.
>
>