[ 
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.

Reply via email to