ODE fails to find a mapper for request message when the request message is an
empty element <userSearch/>.
It works when request message looks like
<userSearch><userloginname/></userSearch>.
Why is that? See below for the log messages and wsdl definition.
WSDL:
<wsdl:types>
<xsd:schema targetNamespace="urn:/connector.wsdl"
xmlns:tns="urn:/connector.wsdl"
elementFormDefault="qualified">
<xsd:element name="userSearch">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="userloginname" type="xsd:string"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="username" type="xsd:string"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="useremail" type="xsd:string"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="usernotes" type="xsd:string"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="groupname" type="xsd:string"
minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<!-- Search message - user -->
<wsdl:message name="userSearchRequest">
<wsdl:part name="body" element="tns:userSearch"/>
</wsdl:message>
<wsdl:message name="userSearchResponse">
<wsdl:part name="body" element="tns:users"/>
</wsdl:message>
<wsdl:portType name="ConnectoPortType">
<wsdl:operation name="searchuser">
<wsdl:input message="tns:userSearchRequest" />
<wsdl:output message="tns:userSearchResponse" />
</wsdl:operation>
</wsdl:portType>
LOG:
13:18:01,198 | DEBUG | pool-flow.seda.OdeBpelEngine-thread-39 | SedaQueue
| .jbi.nmr.flow.seda.SedaQueue$1 132 |
org.apache.servicemix.jbi.nmr.flow.seda.sedaqueu...@536740 dequeued
exchange: InOut[
id: ID:155.35.129.168-124c65af77c-15:17
status: Active
role: provider
service: {urn:/connector.wsdl}UserService
endpoint: userport
operation: {urn:/connector.wsdl}searchuser
in: <?xml version="1.0" encoding="UTF-8"?><q0:userSearch
xmlns:q0="urn:/connector.wsdl"/>
]
13:18:01,198 | DEBUG | Thread-13 | DeliveryChannelImpl |
.messaging.DeliveryChannelImpl 282 | Accepting
ID:155.35.129.168-124c65af77c-15:17 in DeliveryChannel{OdeBpelEngine}
13:18:01,198 | DEBUG | pool-6-thread-1 | OdeService |
org.apache.ode.jbi.OdeService 225 | invokeOde() JBI
exchangeId=ID:155.35.129.168-124c65af77c-15:17
endpoint={urn:/connector.wsdl}UserService:userport
operation={urn:/connector.wsdl}searchuser
13:18:01,198 | DEBUG | pool-6-thread-1 | ServiceMixMapper |
de.jbi.msgmap.ServiceMixMapper 59 | isRecognized() message: <?xml
version="1.0" encoding="UTF-8"?>
<q0:userSearch/>
13:18:01,214 | DEBUG | pool-6-thread-1 | ServiceMixMapper |
de.jbi.msgmap.ServiceMixMapper 101 | element part body does not contain
element {urn:/connector.wsdl}userSearch -- unrecognized
13:18:01,214 | ERROR | pool-6-thread-1 | OdeService |
org.apache.ode.jbi.OdeService 239 | Could not find a mapper for request
message for JBI MEX ID:155.35.129.168-124c65af77c-15:17; ODE MEX
hqejbhcnphr4q8un46iics is failed.
13:18:01,214 | DEBUG | pool-6-thread-1 | OdeService |
org.apache.ode.jbi.OdeService 272 | Rolling back ODE MEX
{MyRoleMex#hqejbhcnphr4q8un46iics [Client
ID:155.35.129.168-124c65af77c-15:17] calling
{urn:/connector.wsdl}UserService.searchuser(...)}
13:18:01,214 | ERROR | pool-6-thread-1 | OdeService |
org.apache.ode.jbi.OdeService 151 | Error invoking ODE.
org.apache.ode.jbi.msgmap.MessageTranslationException: Could not find a
mapper for request message for JBI MEX ID:155.35.129.168-124c65af77c-15:17;
ODE MEX hqejbhcnphr4q8un46iics is failed.
at org.apache.ode.jbi.OdeService.invokeOde(OdeService.java:240)
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)
13:18:01,214 | DEBUG | pool-6-thread-1 | DeliveryChannelImpl |
.messaging.DeliveryChannelImpl 426 | Send
ID:155.35.129.168-124c65af77c-15:17 in DeliveryChannel{OdeBpelEngine}
13:18:01,214 | DEBUG | pool-6-thread-1 | SecuredBroker |
mix.jbi.security.SecuredBroker 66 | send exchange with secure broker
13:18:01,214 | DEBUG | pool-6-thread-1 | SedaFlow |
emix.jbi.nmr.flow.AbstractFlow 118 | Called Flow send
13:18:01,214 | DEBUG | pool-flow.seda.OdeBpelEngine-thread-40 | SedaQueue
| .jbi.nmr.flow.seda.SedaQueue$1 132 |
org.apache.servicemix.jbi.nmr.flow.seda.sedaqueu...@fff4a8 dequeued
exchange: InOut[
id: ID:155.35.129.168-124c65af77c-15:17
status: Error
role: consumer
service: {urn:/connector.wsdl}UserService
endpoint: userport
operation: {urn:/connector.wsdl}searchuser
in: <?xml version="1.0" encoding="UTF-8"?><q0:userSearch
xmlns:q0="urn:/connector.wsdl"/>
error: org.apache.ode.jbi.msgmap.MessageTranslationException: Could not
find a mapper for request message for JBI MEX
ID:155.35.129.168-124c65af77c-15:17; ODE MEX hqejbhcnphr4q8un46iics is
failed.
]
--
View this message in context:
http://old.nabble.com/ODE-could-not-find-a-mapper-for-request-message-with-empty-element-tp26225649p26225649.html
Sent from the Apache Ode User mailing list archive at Nabble.com.