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.