[ 
http://issues.apache.org/jira/browse/AXIS-2376?page=comments#action_12363277 ] 

Ronny Riedel commented on AXIS-2376:
------------------------------------

Hello, me again.

I don't know why but i had a look at the wsdl-file generated thround 
"http://url.to.my.service?wsdl";. Functions without parameters handled different 
here. The relevant <wsdl:message> contains a <wsdl:part>-element. But the 
definition of these part contains an empty element:

   <!--WSDL created by Apache Axis version: 1.2.1 Built on Nov 18, 2005 
(12:32:57 CET)-->
   <wsdl:definition [...]>
      <wsdl:types>
         <schema  [...]>
            <element name="getEnvironment">
               <complexType /> <---------------------------------- empty element
            </element>
         </schema>
      </wsdl:types>

      <wsdl:message>
         [...]
         <wsdl:message name="getEnvironmentRequest">
            <wsdl:part element="impl:getEnvironment" name="parameters"/>
         </wsdl:message>
         [...]
      </wsdl:message>
   
      [...]
   </wsdl:definitions>

I took these part from the generated wsdl-file over to my wsdl-file and run 
WSDL2Java again, deployed the service and run the JUnit-Testcase and everything 
works fine.

My problem is solved, but why the necessary of such a construct? why not simply 
'<wsdl:message name="getEnvironmentRequest" />'?

reguards
  ronny


> incomplete generation of 'Stub' due to missing <wsdl:part .../> of 
> (WSDL-)Message
> ---------------------------------------------------------------------------------
>
>          Key: AXIS-2376
>          URL: http://issues.apache.org/jira/browse/AXIS-2376
>      Project: Apache Axis
>         Type: Bug
>   Components: WSDL processing
>     Versions: current (nightly), 1.2.1, 1.3
>  Environment: SuSE Linux Enterprise Server 9
> -- 
> Apache Tomcat/5.0.27
> -- 
> java version "1.4.2_03"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
> Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
>     Reporter: Ronny Riedel

>
> I have the following lines in my wsdl-file
>     [...]
>     <!-- Funktion: "getEnvironment" -->
>     <wsdl:message name="getEnvironmentRequest" />
>     <wsdl:message name="getEnvironmentResponse">
>        <wsdl:part element="tns1:getEnvironmentResponse" name="parameters"/>
>     </wsdl:message>
>     <!-- Funktion: "getEnvEntry" -->
>     <wsdl:message name="getEnvEntryRequest">
>        <wsdl:part element="tns1:getEnvEntry" name="parameters"/>
>     </wsdl:message>
>     <wsdl:message name="getEnvEntryResponse">
>        <wsdl:part element="tns1:getEnvEntryResponse" name="parameters"/>
>     </wsdl:message>
>     [...]
> How you can see, the request of "getEnvironment" has no <wsdl:part .../>. 
> Based on these WSDL-File, i created all java-objects with
>     java -cp [necessary jar's] org.apache.axis.wsdl.WSDL2Java -s -S true -t 
> environment.wsdl
> The generated stub contains the following lines
>     /*
>      *
>      */
>     public EnvEntry[] getEnvironment() throws RemoteException, NGITException {
>         if (super.cachedEndpoint == null) {
>             throw new org.apache.axis.NoEndPointException();
>         }
>         org.apache.axis.client.Call _call = createCall();
>         _call.setOperation(_operations[0]);
>         _call.setUseSOAPAction(true);
>         _call.setSOAPActionURI("");
>         _call.setEncodingStyle(null);
>         _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, 
> Boolean.FALSE);
>         _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, 
> Boolean.FALSE);
>         
> _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
>         setRequestHeaders(_call);
>         setAttachments(_call);
>         [...]
>     }
>     /*
>      *
>      */
>     public EnvEntry getEnvEntry(String p_strEnvEntryName) throws 
> RemoteException, NGITException {
>         if (super.cachedEndpoint == null) {
>             throw new org.apache.axis.NoEndPointException();
>         }
>         org.apache.axis.client.Call _call = createCall();
>         _call.setOperation(_operations[1]);
>         _call.setUseSOAPAction(true);
>         _call.setSOAPActionURI("");
>         _call.setEncodingStyle(null);
>         _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, 
> Boolean.FALSE);
>         _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, 
> Boolean.FALSE);
>         
> _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
>         _call.setOperationName(new 
> javax.xml.namespace.QName("http://types.xxx.de/";, "getEnvEntry"));
>         setRequestHeaders(_call);
>         setAttachments(_call);
>     }
> How you can see, the function-call "_call.setOperationName([...])" of the 
> _call-Object in the first function isn't created. If i run the corresponding 
> JUnit-Test case, i got the following error for the function "getEnvironment()"
>     AxisFault
>     faultCode: 
> {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
>     faultSubcode:
>     faultString: No operation name specified!
>     faultActor:
>     faultNode:
>     faultDetail:
>       {http://xml.apache.org/axis/}stackTrace:No operation name specified!
>       at org.apache.axis.client.Call.invoke(Call.java:1801)
>       at 
> de.xxx.AdminServiceSoapBindingStub.getEnvironment(AdminServiceSoapBindingStub.java:215)
>       at 
> de.xxx.AdminService_v2_0TestCase.test1AdminService_v2_0GetEnvironment(AdminService_v2_0TestCase.java:50)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:324)
>       at junit.framework.TestCase.runTest(TestCase.java:154)
>       at junit.framework.TestCase.runBare(TestCase.java:127)
>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.framework.TestResult.run(TestResult.java:109)
>       at junit.framework.TestCase.run(TestCase.java:118)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
>       {http://xml.apache.org/axis/}hostname:dbnu032
>     No operation name specified!
>       at org.apache.axis.client.Call.invoke(Call.java:1801)
>       at 
> de.xxx.AdminServiceSoapBindingStub.getEnvironment(AdminServiceSoapBindingStub.java:215)
>       at 
> de.xxx.AdminService_v2_0TestCase.test1AdminService_v2_0GetEnvironment(AdminService_v2_0TestCase.java:50)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:324)
>       at junit.framework.TestCase.runTest(TestCase.java:154)
>       at junit.framework.TestCase.runBare(TestCase.java:127)
>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.framework.TestResult.run(TestResult.java:109)
>       at junit.framework.TestCase.run(TestCase.java:118)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
> In the Axis-Java-Class "org.apache.axis.client.Call" around line 1800 the 
> following condition is implemented
>      if ( operationName == null ) {
>         throw new AxisFault( Messages.getMessage("noOperation00") );
>      }
> I downloaded "http://cvs.apache.org/dist/axis/nightly/axis-bin-1_4.zip"; today 
> and run WSDL2Java with my wsdl-file again and got the same error. Didn't Axis 
> support "<wsdl:message ...>" without "<wsdl:part ... />"?
> some notes
>    1) need wrapped-style
>    2) if i invoke the deployed service via 
> "http://myService?method=getEnvironment"; everything works fine

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to