[
https://issues.apache.org/jira/browse/ODE-155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12601274#action_12601274
]
Tammo van Lessen commented on ODE-155:
--------------------------------------
I assume that this is more a problem at servicemix's side. The error raised by
Ode is due to a wrongly set operation name. When a SOAP message arrives via
HTTP, ServiceMix's SoapHelper.findOperation tries to find the operation. In
case there is no valid definition (i.e. WSDL) available it falls back to use
the wrapped element as operation name, assuming the message is RPC-style.
As the scenario worked already until the WSDL has been retrieved, I assume
there might be a problem in ServiceMix's SOAPEndpoing.loadWsdl(). When
retrieving the WSDL, the original references to the WSDL definition (which has
been set during the actual deployment by AbstractWSDL1Deployer.initFromWsdl) is
thrown away and is replaced by that what SoapEndpoint.loadWSDL produces. My
assumption is, that this returns null and therefore findOperation falls back to
the wrong RPC-style-inspired operation name. Ideally, initFromWsdl() and
loadWsdl() should create/return the same definition in this case.
Does that make sense?
> Examples: Exceptions for SOAP calls after retrieving WSDL
> ---------------------------------------------------------
>
> Key: ODE-155
> URL: https://issues.apache.org/jira/browse/ODE-155
> Project: ODE
> Issue Type: Bug
> Components: Examples, JBI Integration
> Affects Versions: 1.0-incubating, 1.1, 1.1.1
> Environment: Kubuntu 7.04 & 7.10; Service Mix 3.1, 3.1.1 & 3.2.1; ODE
> 1.0, 1.1, 1.1.1
> Reporter: Falko Menge
> Priority: Critical
> Fix For: 1.3
>
>
> I deployed the examples HelloWorld2 and PingPong as JBI service assemblies
> into ServiceMix. Testing with `ant test' works fine untill I request the WSDL
> from ServiceMix.
> Obtaining WSDL via http://localhost:8080/hello-doc/?wsdl throws no errors in
> the ServiceMix logfile.
> But subsequent SOAP calls result in a stack trace (see below) and ServiceMix
> has to be restarted in order to accept new messages.
> I don't think that this Issue is directly related to
> https://issues.apache.org/jira/browse/ODE-43 since in the issue described
> here the WSDL is provided, but accessing it results in a denial of service.
> From ServiceMix logfile:
> 11:41:30,769 | DEBUG | btpool0-0 - Acceptor0 SelectChannelConnector @
> localhost:8080 | JettyContextManager | ntextManager$ThreadPoolWrapper
> 437 | Dispatching job: [EMAIL PROTECTED],io=0,w=true,b=0|0]
> 11:41:30,770 | DEBUG | btpool0-3 | ConsumerProcessor |
> p.processors.ConsumerProcessor 122 | Receiving HTTP request: POST
> /hello-doc/ HTTP/1.1
> Content-Type: text/xml
> User-Agent: Jakarta Commons-HttpClient/3.0
> Host: localhost:8080
> Content-Length: 1099
> 11:41:30,852 | DEBUG | btpool0-3 | HttpComponent |
> emix.common.AsyncBaseLifeCycle 532 | Created correlation id:
> ID:feistyfawn-1143-1184581994568-4:0
> 11:41:30,852 | DEBUG | btpool0-3 | DeliveryChannelImpl |
> .messaging.DeliveryChannelImpl 411 | Send
> ID:feistyfawn-1143-1184581994568-4:0 in DeliveryChannel{servicemix-http}
> 11:41:30,853 | DEBUG | btpool0-3 | SedaFlow |
> emix.jbi.nmr.flow.AbstractFlow 121 | Called Flow send
> 11:41:30,859 | DEBUG | btpool0-3 | ConsumerProcessor |
> p.processors.ConsumerProcessor 186 | Suspending continuation for exchange:
> ID:feistyfawn-1143-1184581994568-4:0
> 11:41:30,864 | DEBUG | pool-flow.seda.OdeBpelEngine-thread-1 | SedaQueue
> | .jbi.nmr.flow.seda.SedaQueue$1 132 | [EMAIL PROTECTED] dequeued
> exchange: InOut[
> id: ID:feistyfawn-1143-1184581994568-4:0
> status: Active
> role: provider
> interface: {urn:/HelloWorld2.wsdl}HelloPortType
> service: {urn:/HelloWorld2.wsdl}HelloService
> endpoint: HelloPort
> operation: {urn:/HelloWorld2.wsdl}HelloRequest
> in: <?xml version="1.0" encoding="UTF-8"?><HelloRequest
> xmlns="urn:/HelloWorld2.wsdl"
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
> <text>hello</text>
> </HelloRequest>
> ]
> 11:41:30,864 | DEBUG | Thread-8 | DeliveryChannelImpl |
> .messaging.DeliveryChannelImpl 263 | Accepting
> ID:feistyfawn-1143-1184581994568-4:0 in DeliveryChannel{OdeBpelEngine}
> 11:41:30,868 | INFO | pool-3-thread-1 | Runtime |
> log.Log4JLogFactory$LogAdapter 80 | Starting OpenJPA 0.9.7-incubating
> 11:41:30,870 | INFO | pool-3-thread-1 | JDBC |
> log.Log4JLogFactory$LogAdapter 80 | OpenJPA will now connect to the
> database to attempt to determine what type of database dictionary to use. To
> prevent this connection in the future, set your openjpa.jdbc.DBDictionary
> configuration property to the appropriate value for your database (see the
> documentation for available values).
> 11:41:30,871 | INFO | pool-3-thread-1 | JDBC |
> log.Log4JLogFactory$LogAdapter 80 | Using dictionary class
> "org.apache.openjpa.jdbc.sql.DerbyDictionary" (Apache Derby 10.2.1.6 -
> (452058) ,Apache Derby Embedded JDBC Driver 10.2.1.6 - (452058)).
> 11:41:31,100 | ERROR | pool-3-thread-1 | OdeService |
> org.apache.ode.jbi.OdeService 256 | ODE MEX
> {MyRoleMex#hqejbhcnphr2fkf9c2wei9 [Client
> ID:feistyfawn-1143-1184581994568-4:0] calling
> {urn:/HelloWorld2.wsdl}HelloService.HelloRequest(...)} was unroutable.
> 11:41:31,100 | DEBUG | pool-3-thread-1 | DeliveryChannelImpl |
> .messaging.DeliveryChannelImpl 411 | Send
> ID:feistyfawn-1143-1184581994568-4:0 in DeliveryChannel{OdeBpelEngine}
> 11:41:31,101 | DEBUG | pool-3-thread-1 | SedaFlow |
> emix.jbi.nmr.flow.AbstractFlow 121 | Called Flow send
> 11:41:31,138 | DEBUG | pool-flow.seda.OdeBpelEngine-thread-2 | SedaQueue
> | .jbi.nmr.flow.seda.SedaQueue$1 132 | [EMAIL PROTECTED] dequeued
> exchange: InOut[
> id: ID:feistyfawn-1143-1184581994568-4:0
> status: Error
> role: consumer
> interface: {urn:/HelloWorld2.wsdl}HelloPortType
> service: {urn:/HelloWorld2.wsdl}HelloService
> endpoint: HelloPort
> operation: {urn:/HelloWorld2.wsdl}HelloRequest
> in: <?xml version="1.0" encoding="UTF-8" standalone="no"?><HelloRequest
> xmlns="urn:/HelloWorld2.wsdl"
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
> <text>hello</text>
> </HelloRequest>
> error: java.lang.IllegalArgumentException: Unroutable invocation.
> ]
> 11:41:31,138 | DEBUG | pool-flow.seda.OdeBpelEngine-thread-2 | HttpComponent
> | emix.common.AsyncBaseLifeCycle 419 | Received exchange: status:
> Error, role: consumer
> 11:41:31,139 | DEBUG | pool-flow.seda.OdeBpelEngine-thread-2 | HttpComponent
> | emix.common.AsyncBaseLifeCycle 487 | Retrieved correlation id:
> ID:feistyfawn-1143-1184581994568-4:0
> 11:41:31,139 | DEBUG | pool-flow.seda.OdeBpelEngine-thread-2 |
> ConsumerProcessor | p.processors.ConsumerProcessor 98 | Resuming
> continuation for exchange: ID:feistyfawn-1143-1184581994568-4:0
> 11:41:31,139 | DEBUG | btpool0-0 - Acceptor0 SelectChannelConnector @
> localhost:8080 | JettyContextManager | ntextManager$ThreadPoolWrapper
> 437 | Dispatching job: [EMAIL PROTECTED],io=0,w=true,b=0|0]
> 11:41:31,140 | DEBUG | btpool0-3 | ConsumerProcessor |
> p.processors.ConsumerProcessor 122 | Receiving HTTP request: POST
> /hello-doc/ HTTP/1.1
> Content-Type: text/xml
> User-Agent: Jakarta Commons-HttpClient/3.0
> Host: localhost:8080
> Content-Length: 1099
> 11:41:31,141 | WARN | btpool0-3 | jetty |
> ervicemix.http.jetty.JCLLogger 93 | EXCEPTION
> javax.servlet.ServletException: Failed to process request:
> java.lang.Exception: java.lang.IllegalArgumentException: Unroutable
> invocation.
> at
> org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.java:79)
> 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:445)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:356)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
> at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> at org.mortbay.jetty.Server.handle(Server.java:269)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:333)
> at
> org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
> at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> 11:41:31,143 | WARN | btpool0-3 | jetty |
> ervicemix.http.jetty.JCLLogger 93 | Nested in
> javax.servlet.ServletException: Failed to process request:
> java.lang.Exception: java.lang.IllegalArgumentException: Unroutable
> invocation.:
> java.lang.Exception: java.lang.IllegalArgumentException: Unroutable
> invocation.
> at
> org.apache.servicemix.http.processors.ConsumerProcessor.process(ConsumerProcessor.java:214)
> at
> org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.java:71)
> 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:445)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:356)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
> at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> at org.mortbay.jetty.Server.handle(Server.java:269)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:333)
> at
> org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
> at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> Caused by: java.lang.IllegalArgumentException: Unroutable invocation.
> at org.apache.ode.jbi.OdeService.invokeOde(OdeService.java:257)
> at
> org.apache.ode.jbi.OdeService.onJbiMessageExchange(OdeService.java:148)
> at
> org.apache.ode.jbi.JbiMessageExchangeEventRouter.onJbiMessageExchange(JbiMessageExchangeEventRouter.java:47)
> 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:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
> 11:41:31,148 | WARN | btpool0-3 | jetty |
> ervicemix.http.jetty.JCLLogger 93 | /hello-doc/:
> java.lang.Exception: java.lang.IllegalArgumentException: Unroutable
> invocation.
> at
> org.apache.servicemix.http.processors.ConsumerProcessor.process(ConsumerProcessor.java:214)
> at
> org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.java:71)
> 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:445)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:356)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
> at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> at org.mortbay.jetty.Server.handle(Server.java:269)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:333)
> at
> org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
> at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> Caused by: java.lang.IllegalArgumentException: Unroutable invocation.
> at org.apache.ode.jbi.OdeService.invokeOde(OdeService.java:257)
> at
> org.apache.ode.jbi.OdeService.onJbiMessageExchange(OdeService.java:148)
> at
> org.apache.ode.jbi.JbiMessageExchangeEventRouter.onJbiMessageExchange(JbiMessageExchangeEventRouter.java:47)
> 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:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
> 11:41:31,148 | WARN | btpool0-3 | jetty |
> ervicemix.http.jetty.JCLLogger 93 | /hello-doc/
> java.lang.Exception: java.lang.IllegalArgumentException: Unroutable
> invocation.
> at
> org.apache.servicemix.http.processors.ConsumerProcessor.process(ConsumerProcessor.java:214)
> at
> org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.java:71)
> 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:445)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:356)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
> at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> at org.mortbay.jetty.Server.handle(Server.java:269)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:333)
> at
> org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
> at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> Caused by: java.lang.IllegalArgumentException: Unroutable invocation.
> at org.apache.ode.jbi.OdeService.invokeOde(OdeService.java:257)
> at
> org.apache.ode.jbi.OdeService.onJbiMessageExchange(OdeService.java:148)
> at
> org.apache.ode.jbi.JbiMessageExchangeEventRouter.onJbiMessageExchange(JbiMessageExchangeEventRouter.java:47)
> 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:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
> 11:41:31,212 | DEBUG | btpool0-0 - Acceptor0 SelectChannelConnector @
> localhost:8080 | JettyContextManager | ntextManager$ThreadPoolWrapper
> 437 | Dispatching job: [EMAIL PROTECTED],io=1,w=true,b=0|0]
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.