Hi Gert Vanthienen,
I changed the code of MyBean like below. It solved the "Premature end of
file" issue. But the output goes in infinite loop.
InOnly eipInOnly =
channel.createExchangeFactory().createInOnlyExchange();
NormalizedMessage normalizedMessage =null;
NormalizedMessage normalizedMessageOut=null;
normalizedMessage = exchange.getMessage("in");
normalizedMessageOut= exchange.createMessage();
String outMessage =
processXml(normalizedMessage);
normalizedMessageOut.setContent(new
StringSource(outMessage));
//QName qName = new
QName("test:MyS2PojoService");
//eipInOnly.setService(qName);
//channel.createExchangeFactory(qName);
eipInOnly.setService(exchange.getService());
eipInOnly.setEndpoint(exchange.getEndpoint());
eipInOnly.setMessage(normalizedMessageOut,
"in");
logger
.debug("After Channel Send: "
+ exchange);
channel.send(eipInOnly);
I observed that the control comes back to MyBean of MyS1PojoService
from MyBean of MyS1PojoService. So want to hard-code the service
MyS2PojoService and corresponding end point MyS2Pojo. I am not sure how
to create a ServiceEndpoint for MyS2Pojo.
I found a thread
http://markmail.org/search/?q=Content+Enricher#query:Content%20Enricher+
page:2+mid:btupu6okwwbyzklp+state:results , it is mentioned like this
ServiceEndpoint se =
getContext().getEndpoint(cbrServiceName,"enricherEndpoint");
I tried to do the same but getContext is not visible from my workspace,
to have that getContext visibility, should I have any special plug-in?
Please explain.
Thanks
Vasumathi
-----Original Message-----
From: Gert Vanthienen [mailto:[email protected]]
Sent: Friday, February 06, 2009 6:54 AM
To: [email protected]
Subject: Re: Unable to display: org.xml.sax.SAXParseException: Premature
end of file
Vasumathi,
Not sure if you're both working on the same project, but a user on the
fusesource.com forum had a very similar problem. Just providing a
reference to the thread so it might help you as well
http://fusesource.com/forums/thread.jspa?threadID=594&tstart=0.
The MEP change you observed is OK actually: the content-enricher
receives an InOnly exchange and then sends a second, InOut exchange to
the servicemix-bean POJO. The in message will contain the original
message content and your bean can provide the enriched content.
Regards,
Gert Vanthienen
------------------------
Open Source SOA: http://fusesource.com
Blog: http://gertvanthienen.blogspot.com/
2009/2/6 vasumathi <[email protected]>:
>
> Hi Gert Vanthienen,
>
> As you advised, I have changed the DEBUG logging of the container.
> Please find the console log. The control passes MyBean successfully
> but erroring out in EIP component.
>
> It leads to another doubt. When the control reaches MyBean(SU), the
> exchange pattern is Inout but in router it is InOnly. I have coded the
> default message pattern as In-Only only.
>
> Please clarify the same and let me know if you have any clue to solve
> the issue.
>
> Thanks
> Vasumathi
>
>
> DEBUG - MyBean - ## Received exchange with
status
> ACTIVE
> : InOut[
> id: ID:10.102.11.29-11f4a35617b-7:4
> status: Active
> role: provider
> service: {http://test}MyS1PojoService
> endpoint: myS1PojoSu
> in: <?xml version="1.0" encoding="UTF-8"?><input2>Tesing Content
> Based Rounter 2222</input2> ]
> DEBUG - MyBean - ## In Message: <?xml
version="1.0"
> enco
> ding="UTF-8"?><input2>Tesing Content Based Rounter 2222</input2>
> input<?xml version="1.0" encoding="UTF-8"?><input2>Tesing Content
> Based Rounter 2222</input2> coreMessage from Service1<input2>Tesing
> Content Based Rounter 2222</input2>
> DEBUG - MyBean - ## Out Message:
> <response1><input2>Tesi
> ng Content Based Rounter 2222</input2></response1>
> 11111111
> ## Out Message: <response1><input2>Tesing Content Based Rounter
> 2222</input2></r
> esponse1>
> after processXml11111<response1><input2>Tesing Content Based Rounter
> 2222</input
> 2></response1>
> set contentStringSource[<response1><input2>Tesing Content Based
> Rounter 2222</in
> put2></response1>]
> before sending
> after sending
> [Fatal Error] :-1:-1: Premature end of file.
> [Fatal Error] :-1:-1: Premature end of file.
> ERROR - EIPComponent - Error processing exchange
InOnly[
> id: ID:10.102.11.29-11f4a35617b-11:4
> status: Active
> role: provider
> service: {http://test}MyStaticRoutingSlip1Service
> endpoint: myStaticRoutingSlip1Su
> operation: {http://test}onMessageExchange
> in: Unable to display: org.xml.sax.SAXParseException: Premature end
> of file.
> ]
> org.xml.sax.SAXParseException: Premature end of file.
> at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
> at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown
Source)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMSourceFromStrea
> m(SourceTransformer.java:268)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMSource(SourceTr
> ansformer.java:175)
> at
> org.apache.servicemix.jbi.jaxp.SourceTransformer.toDOMNode(SourceTran
> sformer.java:311)
> at
> org.apache.servicemix.eip.patterns.ContentEnricher.getDOMNode(Content
> Enricher.java:247)
> at
> org.apache.servicemix.eip.patterns.ContentEnricher.combineToDOMDocume
> nt(ContentEnricher.java:213)
> at
> org.apache.servicemix.eip.patterns.ContentEnricher.process(ContentEnr
> icher.java:168)
> at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLi
> feCycle.java:540)
> at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(Async
> BaseLifeCycle.java:492)
> at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLife
> Cycle.java:46)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBoun
> d(DeliveryChannelImpl.java:610)
> at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlo
> w.java:172)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.j
> ava:167)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.jav
> a:134)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:650)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:675)
> at java.lang.Thread.run(Thread.java:595)
>
>
>
>
> Gert Vanthienen wrote:
>>
>> Vasumathi,
>>
>> Could you try enabling DEBUG logging for the container itself as
>> explained in
>> http://servicemix.apache.org/how-do-i-change-the-logging.html?
>>
>> Regards,
>>
>> Gert Vanthienen
>> ------------------------
>> Open Source SOA: http://fusesource.com
>> Blog: http://gertvanthienen.blogspot.com/
>>
>>
>>
>> 2009/2/5 Vasumathi, Rajamarthandan
>> <[email protected]>:
>>> Hi Gert Vanthienen
>>>
>>> Thanks for your reply. I had debug statements, just removed them
>>> before submitting the code to forum. Please find the bean method
>>> with debug statements and the console displaying/printing the
statement values.
>>>
>>> It is executing onMessageExchange successfully while the control
>>> returning back from onMessageExchange method to router the router
>>> occurs (I guess).
>>>
>>> Please help me to solve this issue. I am struggling for the past
>>> four days with the same issue.
>>>
>>> Bean method
>>> -----------
>>>
>>> public void onMessageExchange(MessageExchange exchange)
>>> throws MessagingException {
>>>
>>> if (exchange.getStatus() == ExchangeStatus.ACTIVE) {
>>> NormalizedMessage normalizedMessage =null;
>>> NormalizedMessage normalizedMessageOut=null;
>>> normalizedMessage =
exchange.getMessage("in");
>>> normalizedMessageOut=
exchange.createMessage();
>>> String outMessage =
>>> processXml(normalizedMessage);
>>> System.out.println("after processXml11111" +
>>> outMessage);
>>> normalizedMessageOut.setContent(new
>>> StringSource(outMessage));
>>> System.out.println("set
>>> content"+normalizedMessageOut.getContent().toString());
>>> exchange.setMessage(normalizedMessageOut,
>>> "out");
>>> exchange.setStatus(ExchangeStatus.ACTIVE);
>>> System.out.println("before sending");
>>> channel.send(exchange);
>>> System.out.println("after sending");
>>> }
>>> }
>>> private String processXml(NormalizedMessage
>>> normalizedMessage) throws MessagingException {
>>> SourceTransformer sourceTransformer = new SourceTransformer();
>>> String inMessage = "";
>>> try {
>>> inMessage = sourceTransformer.contentToString(normalizedMessage);
>>> } catch (Exception e) {
>>> throw new MessagingException(e);
>>> }
>>> System.out.println("input"+inMessage);
>>> System.out.println("coreMessage from Service1"+coreMessage);
>>> String outMessage ="<response1>" + coreMessage + "</response1>";
>>> System.out.println("11111111");
>>> System.out.println("## Out Message: " + outMessage);
>>> return outMessage;
>>> }
>>> }
>>>
>>> Server console output
>>> ---------------------
>>>
>>> input<?xml version="1.0" encoding="UTF-8"?><input2>Tesing Content
>>> Based Rounter 2222</input2> coreMessage from Service1<input2>Tesing
>>> Content Based Rounter 2222</input2>
>>> 11111111
>>> ## Out Message: <response1><input2>Tesing Content Based Rounter
>>> 2222</input2></r
>>> esponse1>
>>> after processXml11111<response1><input2>Tesing Content Based Rounter
>>> 2222</input
>>> 2></response1>
>>> set contentStringSource[<response1><input2>Tesing Content Based
>>> Rounter 2222</in
>>> put2></response1>]
>>> before sending
>>> after sending
>>> [Fatal Error] :-1:-1: Premature end of file.
>>> [Fatal Error] :-1:-1: Premature end of file.
>>> ERROR - EIPComponent - Error processing exchange
>>> InOnly[
>>> id: ID:10.102.11.29-11f46231bc3-11:2
>>> status: Active
>>> role: provider
>>> service: {http://test}MyStaticRoutingSlip1Service
>>> endpoint: myStaticRoutingSlip1Su
>>> operation: {http://test}onMessage
>>> in: Unable to display: org.xml.sax.SAXParseException: Premature end
>>> of file.
>>> ]
>>> org.xml.sax.SAXParseException: Premature end of file.
>>>
>>> Please help me to solve this issue. I am struggling for the past
>>> four days with the same issue.
>>>
>>> Thanks
>>> Vasumathi
>>>
>>>
>>> -----Original Message-----
>>> From: Gert Vanthienen [mailto:[email protected]]
>>> Sent: Thursday, February 05, 2009 7:46 AM
>>> To: [email protected]
>>> Subject: Re: Unable to display: org.xml.sax.SAXParseException:
>>> Premature end of file
>>>
>>> Vasumathi,
>>>
>>> This is probably caused by something consuming a StreamSource or
>>> StaxSource before your service touches it. To make sure that this
>>> is the cause, could you try enabling DEBUG logging because this
>>> should 'solve' the issue then?
>>>
>>> Once we are sure that this is the cause of the problem, we should
>>> try to modify the bean method so that it converts the source into a
>>> re-readable source type before actually processing it. Our
>>> MessageUtil class has a method named enableContentRereadability()
>>> that was created exactly for this purpose.
>>>
>>> Regards,
>>>
>>> Gert Vanthienen
>>> ------------------------
>>> Open Source SOA: http://fusesource.com
>>> Blog: http://gertvanthienen.blogspot.com/
>>>
>>>
>>>
>>> 2009/2/5 Vasumathi, Rajamarthandan
>>> <[email protected]>:
>>>> Hi All,
>>>>
>>>> I am new to service Mix and JBI. I am getting the below error while
>>>> executing a content enricher EIP. The service Mix version I am
>>>> using is 3.3.1.3. I am using In-Only exchange pattern.
>>>>
>>>> Overall flow goes like this
>>>>
>>>> JMS BC -> Content Enricher EIP -> Service Unit(Temporarily using a
>>>> Single Service Unit)
>>>>
>>>> Error I am facing
>>>>
>>>> [Fatal Error] :-1:-1: Premature end of file.
>>>> [Fatal Error] :-1:-1: Premature end of file.
>>>> ERROR - EIPComponent - Error processing exchange
>>>> InOnly[
>>>> id: ID:10.102.11.29-11f46231bc3-11:0
>>>> status: Active
>>>> role: provider
>>>> service: {http://test}MyStaticRoutingSlip1Service
>>>> endpoint: myStaticRoutingSlip1Su
>>>> operation: {http://test}onMessage
>>>> in: Unable to display: org.xml.sax.SAXParseException: Premature
>>>> end of file ]
>>>> org.xml.sax.SAXParseException: Premature end of file.
>>>>
>>>> Please find the code
>>>>
>>>> JMS BC
>>>> -------
>>>>
>>>> <beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
>>>> xmlns:test="http://test"
>>>> xmlns:amq="http://activemq.org/config/1.0">
>>>> <jms:endpoint service="test:MyJmsQueueTest" endpoint="jmsQueue"
>>>> targetService="test:MyStaticRoutingSlip1Service"
>>>> targetEndpoint="myStaticRoutingSlip1Su"
>>>> role="consumer" destinationStyle="queue"
>>>> jmsProviderDestinationName="myJmsQueueTest"
>>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
>>>> defaultOperation="test:onMessage"
>>>> connectionFactory="#connectionFactory">
>>>> </jms:endpoint>
>>>> <amq:connectionFactory id="connectionFactory"
>>>> brokerURL="tcp://localhost:61616" /> </beans>
>>>>
>>>> Cotent Enricher EIP
>>>> -------------------
>>>> <beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
>>>> xmlns:test="http://test">
>>>> <eip:content-enricher service="test:MyStaticRoutingSlip1Service"
>>>> endpoint="myStaticRoutingSlip1Su">
>>>> <eip:enricherTarget>
>>>> <eip:exchange-target service="test:MyS1PojoService"/>
>>>> </eip:enricherTarget>
>>>>
>>>> </eip:content-enricher>
>>>> </beans>
>>>>
>>>> Service Unit - Pojo code
>>>> --------------------------
>>>>
>>>> public void onMessageExchange(MessageExchange exchange) { if
>>>> (exchange.getStatus() == ExchangeStatus.ACTIVE) {
>>>>
>>>> NormalizedMessage normalizedMessage =null;
>>>> NormalizedMessage normalizedMessageOut=null;
>>>> normalizedMessage = exchange.getMessage("in");
>>>> normalizedMessageOut= exchange.createMessage();
>>>> String outMessage = processXml(normalizedMessage);
>>>> normalizedMessageOut.setContent(new StringSource(outMessage));
>>>> exchange.setMessage(normalizedMessageOut, "out");
>>>> exchange.setStatus(ExchangeStatus.ACTIVE);
>>>> channel.send(exchange);
>>>>
>>>> }
>>>> }
>>>>
>>>> I am struggling for the past four days with this issue. Please help
>>>> me
>>>
>>>> to solve the issue.
>>>>
>>>> Thanks
>>>> Vasumathi
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>> -----
>> ---
>> Gert Vanthienen
>> http://gertvanthienen.blogspot.com
>>
>
> --
> View this message in context:
> http://www.nabble.com/in%3A-Unable-to-display%3A-org.xml.sax.SAXParseE
> xception%3A-Premature-end-of-file-tp21850744p21867376.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>