I was getting intermittent failures on invoking ODE through an http endpoint. 
The stacktrace indicated problems in parsing the XML message but all of the 
messages were well formed and valid according to the interface. I verified this 
on the client side and with tcpmon. There's a sample stacktrace below. The 
error messages were always about malformed xml and reported problems about 
encountering the wrong closing tag or other unexpected characters as below.

I didn't see any other traffic on this issue so I was wondering if it was some 
kind of config issue with ServiceMix 3.3 and ODE 1.2. The code in ODE for 
parsing this looks good. I was able to work around this issue by adding the 
soap:dom policy to my consumer endpoint and everything is working fine now.

For example:

      <http:endpoint ...>        <http:policies>                <soap:dom 
xmlns:soap="http://servicemix.apache.org/soap/1.0"/>          </http:policies>  
  </http:endpoint>
Sample stacktrace:

WARN  - ServiceMixMapper               - Unable to parse message:
org.apache.ode.jbi.msgmap.MessageTranslationException: Message parsing exception
    at org.apache.ode.jbi.msgmap.BaseXmlMapper.parse(BaseXmlMapper.java:55)
    at 
org.apache.ode.jbi.msgmap.ServiceMixMapper.isRecognized(ServiceMixMapper.java:57)
    at org.apache.ode.jbi.OdeContext.findMapper(OdeContext.java:238)
    at org.apache.ode.jbi.OdeService.invokeOde(OdeService.java:235)
    at org.apache.ode.jbi.OdeService.onJbiMessageExchange(OdeService.java:148)
    at 
org.apache.ode.jbi.JbiMessageExchangeEventRouter.onJbiMessageExchange(JbiMessageExchangeEventRouter.java:67)
    at org.apache.ode.jbi.Receiver$1.run(Receiver.java:179)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.IOException: com.ctc.wstx.exc.WstxUnexpectedCharException: 
Unexpected character '<' (code 60) excepted space, or '>' or "/>"
 at [row,col {unknown-source}]: [1,4129]
    at 
org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:501)
    at org.apache.ode.utils.DOMUtils.sourceToDOM(DOMUtils.java:661)
    at org.apache.ode.jbi.msgmap.BaseXmlMapper.parse(BaseXmlMapper.java:51)
    ... 12 more

--
Mark Ford
MIT Lincoln Laboratory
244 Wood Street
Lexington MA 02420
(781) 981-1843


Reply via email to