Hi,
I have tested this out and it works for me.
I am just wondering how you send the actual message.
I sent the request as follows from an onMessageExchange of a Service
QName cbrServiceName = new QName(SERVICE_NAMESPACE,
"contentEnricher");
ServiceEndpoint se = getContext().getEndpoint(cbrServiceName,
"enricherEndpoint");
InOnly eipInOnly =
channel.createExchangeFactory().createInOnlyExchange();
eipInOnly.setEndpoint(se);
NormalizedMessage msg = eipInOnly.createMessage();
msg.setContent(setMessageContent());
eipInOnly.setMessage(msg, "in");
eipInOnly.setService(cbrServiceName);
channel.sendSync(eipInOnly);
then setMessageContent is
private StringSource setupMsg() {
StringBuffer buf = new StringBuffer();
buf.append("<test id=\"1\">ok</test>");
return new StringSource(buf.toString());
}
and it then goes through the additionalInformationExtracter and another
service that I setup as the target and I do get the message content from it.
Edell.
On Wed, Aug 20, 2008 at 8:27 AM, FreshAir <[EMAIL PROTECTED]> wrote:
>
> Hi,
> I tested the servicemix-eip, and its content-enricher part appears rather
> confusing.
> The following is my xbean.xml using content-enricher:
> <eip:content-enricher service="test:contentEnricher" endpoint="endpoint">
> <eip:enricherTarget>
> <eip:exchange-target service="test:additionalInformationExtracter"/>
> </eip:enricherTarget>
> <eip:target>
> <eip:exchange-target service="test:trace3" />
> </eip:target>
> </eip:content-enricher>
>
> the exchange-target of enricherTarget is simply a servicemix-bea, the
> onMessageExchange method of which is as follows:
>
> public void onMessageExchange(MessageExchange exchange) throws
> MessagingException {
> if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
>
> NormalizedMessage message = exchange.getMessage("in");
> Source content = message.getContent();
> //process content according to your logic
> //e.g. to access the message body as a String use
> try{
> String body = (new
> SourceTransformer()).toString(content);
> message.setContent(content);
> System.out.println("Routed to Enricher!");
> System.out.println("received: " + body);
>
> exchange.setMessage(message, "out");
> channel.send(exchange);
> }catch(Exception e) {
> e.printStackTrace();
> }
> }
> }
> As you see, it can not be simpler which just echo the message.
> The target part is similar and equally simple. I used a http bc to post a
> soap message to the content-enricher like this:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/">
> <e:Body>
> <test id="1">ok
> </test>
> </e:Body>
> </e:Envelope>
>
> But it gave me the following error:
>
> Routed to Enricher!
> received: <?xml version="1.0" encoding="UTF-8"?><test
> xmlns:e="http://schemas.xm
> lsoap.org/soap/envelope/" id="1">ok
> </test>
> ERROR - EIPComponent - Error processing exchange InOnly[
> id: ID:172.16.253.122-11bdeb9b38c-12:8
> status: Active
> role: provider
> service: {http://test}contentEnricher
> endpoint: endpoint
> operation: test
> in: <?xml version="1.0" encoding="UTF-8"?>
> ]
> java.lang.NullPointerException
> at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
> at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
> at
> com.intervision.interesb.eip.patterns.ContentEnricher.combineToDOMDoc
> ument(ContentEnricher.java:208)
> at
> com.intervision.interesb.eip.patterns.ContentEnricher.process(Content
> Enricher.java:156)
> at
> com.intervision.interesb.common.AsyncBaseLifeCycle.doProcess(AsyncBas
> eLifeCycle.java:526)
> at
> com.intervision.interesb.common.AsyncBaseLifeCycle.processExchange(As
> yncBaseLifeCycle.java:478)
> at
> com.intervision.interesb.common.BaseLifeCycle.onMessageExchange(BaseL
> ifeCycle.java:34)
> at
> com.intervision.interesb.jbi.messaging.DeliveryChannelImpl.processInB
> ound(DeliveryChannelImpl.java:598)
> at
> com.intervision.interesb.jbi.nmr.flow.AbstractFlow.doRouting(Abstract
> Flow.java:158)
> at
> com.intervision.interesb.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlo
> w.java:155)
> at
> com.intervision.interesb.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.
> java:122)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:908)
> at java.lang.Thread.run(Thread.java:619)
> WARN - jetty - Nested in
> javax.servlet.ServletExceptio
> n: Failed to process request: java.lang.Exception:
> java.lang.NullPointerExceptio
> n:
> java.lang.Exception: java.lang.NullPointerException
> at
> com.intervision.interesb.http.processors.ConsumerProcessor.process(Co
> nsumerProcessor.java:182)
> at
> com.intervision.interesb.http.HttpBridgeServlet.doPost(HttpBridgeServ
> let.java:59)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
> at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487
> )
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
> 62)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
> 12)
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHand
> lerCollection.java:211)
> at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.
> java:114)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
> 39)
> at org.mortbay.jetty.Server.handle(Server.java:313)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:50
> 6)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:375)
> at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja
> va:396)
> at
> org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(Se
> lectChannelConnector.java:511)
> at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool
> .java:442)
> Caused by: java.lang.NullPointerException
> at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
> at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
> at
> com.intervision.interesb.eip.patterns.ContentEnricher.combineToDOMDoc
> ument(ContentEnricher.java:208)
> at
> com.intervision.interesb.eip.patterns.ContentEnricher.process(Content
> Enricher.java:156)
> at
> com.intervision.interesb.common.AsyncBaseLifeCycle.doProcess(AsyncBas
> eLifeCycle.java:526)
> at
> com.intervision.interesb.common.AsyncBaseLifeCycle.processExchange(As
> yncBaseLifeCycle.java:478)
> at
> com.intervision.interesb.common.BaseLifeCycle.onMessageExchange(BaseL
> ifeCycle.java:34)
> at
> com.intervision.interesb.jbi.messaging.DeliveryChannelImpl.processInB
> ound(DeliveryChannelImpl.java:598)
> at
> com.intervision.interesb.jbi.nmr.flow.AbstractFlow.doRouting(Abstract
> Flow.java:158)
> at
> com.intervision.interesb.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlo
> w.java:155)
> at
> com.intervision.interesb.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.
> java:122)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:908)
> at java.lang.Thread.run(Thread.java:619)
> WARN - jetty - /eip-enricher/
> java.lang.Exception: java.lang.NullPointerException
> at
> com.intervision.interesb.http.processors.ConsumerProcessor.process(Co
> nsumerProcessor.java:182)
> at
> com.intervision.interesb.http.HttpBridgeServlet.doPost(HttpBridgeServ
> let.java:59)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
> at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487
> )
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
> 62)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
> 12)
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHand
> lerCollection.java:211)
> at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.
> java:114)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
> 39)
> at org.mortbay.jetty.Server.handle(Server.java:313)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:50
> 6)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:375)
> at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja
> va:396)
> at
> org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(Se
> lectChannelConnector.java:511)
> at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool
> .java:442)
> Caused by: java.lang.NullPointerException
> at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
> at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
> at
> com.intervision.interesb.eip.patterns.ContentEnricher.combineToDOMDoc
> ument(ContentEnricher.java:208)
> at
> com.intervision.interesb.eip.patterns.ContentEnricher.process(Content
> Enricher.java:156)
> at
> com.intervision.interesb.common.AsyncBaseLifeCycle.doProcess(AsyncBas
> eLifeCycle.java:526)
> at
> com.intervision.interesb.common.AsyncBaseLifeCycle.processExchange(As
> yncBaseLifeCycle.java:478)
> at
> com.intervision.interesb.common.BaseLifeCycle.onMessageExchange(BaseL
> ifeCycle.java:34)
> at
> com.intervision.interesb.jbi.messaging.DeliveryChannelImpl.processInB
> ound(DeliveryChannelImpl.java:598)
> at
> com.intervision.interesb.jbi.nmr.flow.AbstractFlow.doRouting(Abstract
> Flow.java:158)
> at
> com.intervision.interesb.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlo
> w.java:155)
> at
> com.intervision.interesb.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.
> java:122)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:908)
> at java.lang.Thread.run(Thread.java:619)
>
> Obviously the enricher-target had recieved the message but when routed to
> the target, the "in" part of the message had mysteriously gone(that's why a
> NullpointerException was invited).
> Any suggestion would be greatly appreciated.
> Thanks in advance!
> --
> View this message in context:
> http://www.nabble.com/Confused-about-the-EIPComponent-content-Enricher-tp19064169p19064169.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>