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