Actually, Ode is partly to blame here because it doesn't return a service description for its ServiceEndpoints.

The attached patch to servicemix-soap fixes the problem by using the WSDL of the binding component if none is supplied by the service engine (Ode).

alex


Alex Boisvert wrote:
Looks like the latest trunk of ServiceMix isn't setting the operation
name correctly anymore. It should be "Hello" but it's setting
"HelloRequest" (default is to use the SOAP body name). It seems to be
due to the servicemix-http component not finding/loading the WSDL
description.

Guillaume, have you seen this before?


LeeHoHun wrote:
  
Hi, All

I try to jbi-examples(HelloWorld2) test on servicemix.

I use the latest Ode and ServiceMix trunks

To Test My step.

1) servicemix install dir/Http,Shared component,ode-jbi-install-2.0-SNAPSHOT.zip
2) servicemix deploy dir/HelloWorld2-Sa.zip
3) run servicemix.. Log Ok
4) HelloWorld2 Dir/ ant test
5) Servicemix log error..

ERROR - OdeService                     - ODE MEX {MyRoleMex#98307 [Client ID:sup
ercom-2263-1158210245171-7:3] calling {urn:/HelloWorld2.wsdl}HelloService.HelloR
equest(...)} was unroutable.

I will look forward to get your reply. 
    


  

Index: servicemix-soap/src/main/java/org/apache/servicemix/soap/SoapHelper.java
===================================================================
--- servicemix-soap/src/main/java/org/apache/servicemix/soap/SoapHelper.java    
(revision 446889)
+++ servicemix-soap/src/main/java/org/apache/servicemix/soap/SoapHelper.java    
(working copy)
@@ -286,13 +286,14 @@
         
         // Find WSDL description
         Definition definition = null;
-        if (se == null) {
-            // Get this endpoint definition
-            definition = endpoint.getDefinition();
-        } else {
+        if (se != null) {
             // Find endpoint description from the component context
             definition = getDefinition(se);
         }
+        if (definition == null) {
+            // Get this endpoint definition
+            definition = endpoint.getDefinition();
+        }
 
         // Find operation matching 
         if (definition != null) {
@@ -357,6 +358,7 @@
                         reader.setFeature(Constants.FEATURE_VERBOSE, false);
                         try {
                             definition = reader.readWSDL(null, description);
+                            definitions.put(key, definition);
                         } catch (WSDLException e) {
                             logger.info("Could not read wsdl from endpoint 
descriptor: " + e.getMessage());
                             if (logger.isDebugEnabled()) {
@@ -364,10 +366,6 @@
                             }
                         }
                     }
-                    if (definition == null) {
-                        definition = factory.newDefinition();
-                    }
-                    definitions.put(key, definition);
                 }
             }
         return definition;

Reply via email to