[ 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
