Hi Everyone -

I am in the process of attempting to convert my Axis 1.0 application to Axis 2 
(version 1.8.2). I have been reviewing the User Guide and the related 
documentation for Axis 2 for several weeks now, however I couldn't find any 
documentation that addresses my specific questions, so I hope someone in this 
group can assist me.

Basically, my current Axis 1.0 application has a server implementation and an 
interface that is converted into client-side code.  The client then makes RPC 
calls to specific methods through the generated client stubs.
My deploy.wsdd file (snippet below) contains several <beanMapping> elements for 
my custom return types, so it is my assumption that I need to use xmlbean data 
binding.

<deployment
  xmlns=http://xml.apache.org/axis/wsdd/
  xmlns:java=http://xml.apache.org/axis/wsdd/providers/java
>
                <service
                  name="VendorSvc"
                  provider="java:RPC"
                >
                                <parameter name="className" 
value="com.dgi.insitusvc.ws.VendorSvcWS"/>
                                <parameter name="allowedMethods" value="*"/>
                                <beanMapping qname="dgiNS:GenericResult"        
xmlns:dgiNS="urn:vendorsvc.dgi.com" 
languageSpecificType="java:com.dgi.insitusvc.itf.GenericResult"/>
...
[snip]

Based on these assumptions, I converted my java2wsdl ant task
from:
       <echo message="Generating WSDL files from server Java classes..."/>
        <java fork="yes" classname="org.apache.axis.wsdl.Java2WSDL">
            <arg line='
                  -o server/src/wsdl-gen/vendorsvc.wsdl
                  -l http://localhost:8080/axis/services/VendorSvc
                 -n "urn:com.dgi.vendorsvc"
                 -p "com.dgi.insitusvc.itf" "urn:vendorsvc.dgi.com"
                 com.dgi.insitusvc.ws.VendorSvcWS'/>
            <classpath>
                <pathelement location="build/classes"/>
                <pathelement location="../externlib/axis.jar"/>
                <pathelement location="../externlib/commons-discovery.jar"/>
                <pathelement location="../externlib/commons-logging.jar"/>
                <pathelement location="../externlib/wsdl4j.jar"/>
                <pathelement location="../externlib/jaxrpc-api.jar"/>
                <pathelement location="../externlib/xsdlib.jar"/>
                <pathelement location="../externlib/saaj.jar"/>
            </classpath>
        </java>

to:
        <echo message="Generating WSDL files from server Java classes..."/>
        <java fork="yes" classname="org.apache.ws.java2wsdl.Java2WSDL">
            <arg line='
                 -o server/src/wsdl-gen
                 -l http://localhost:8080/axis2/services/VendorSvc
                 -tn "urn:com.dgi.vendorsvc"
                 -p2n [com.dgi.insitusvc.itf,urn:vendorsvc.dgi.com]
                 -cn com.dgi.insitusvc.ws.VendorSvcWS
                 -xc com.dgi.insitusvc.itf.ParticipantVO
                 -xc com.dgi.insitusvc.itf.PhaseVO
                 -xc com.dgi.insitusvc.itf.TestCaseInstanceVO
                 -xc com.dgi.insitusvc.itf.TestCasesVO
                 -xc com.dgi.insitusvc.itf.TestCaseOverviewVO
                 -wv 1.1
                 -st rpc
                 -sn VendorSvc'/>
            <classpath>
                <pathelement location="build/classes"/>
                <fileset dir="externlib" includes="*.jar"/>
            </classpath>
        </java>

Running the updated task creates a VendorSvcWS.wsdl file with the schema 
definitions for all the complex types, message/parameter elements, operations 
and bindings.

I then converted the wsdl2java ant task
from:
       <echo message="Generating client Java classes from server WSDL 
files..."/>
        <java fork="yes" classname="org.apache.axis.wsdl.WSDL2Java">
            <arg line='-p com.dgi.client.vendorsvc -o client/src/java-gen 
server/src/wsdl-gen/vendorsvc.wsdl'/>
            <classpath>
                <pathelement location="../externlib/axis.jar"/>
                <pathelement location="../externlib/commons-discovery.jar"/>
                <pathelement location="../externlib/commons-logging.jar"/>
                <pathelement location="../externlib/wsdl4j.jar"/>
                <pathelement location="../externlib/jaxrpc-api.jar"/>
                <pathelement location="../externlib/xsdlib.jar"/>
                <pathelement location="../externlib/saaj.jar"/>
            </classpath>
        </java>
to:
       <echo message="Generating client Java classes from server WSDL 
files..."/>
        <java fork="yes" classname="org.apache.axis2.wsdl.WSDL2Java">
            <arg line='
                 -uri server/src/wsdl-gen/VendorSvcWS.wsdl
                 -d xmlbeans
                 -p com.dgi.client.vendorsvc
                 -o client/src/java-gen
                  -ssi
                -uw'/>
            <classpath>
                <fileset dir="externlib" includes="*.jar"/>
            </classpath>
        </java>

When I run the converted wsdl2java task, this exception information is logged:

wsdl2java:
     [echo] Generating client Java classes from server WSDL files...
     [java] Retrieving document at 'server/src/wsdl-gen/VendorSvcWS.wsdl'.
     [java] Exception in thread "main" 
org.apache.axis2.wsdl.codegen.CodeGenerationException: Error parsing WSDL
     [java]     at 
org.apache.axis2.wsdl.codegen.CodeGenConfiguration.loadWsdl(CodeGenConfiguration.java:748)
     [java]     at 
org.apache.axis2.wsdl.codegen.CodegenConfigLoader.loadConfig(CodegenConfigLoader.java:328)
     [java]     at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:53)
     [java]     at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
     [java] Caused by: org.apache.axis2.AxisFault: The binding operation 
validateParticipant is RPC/literal. The message parts for this operation must 
use the type attribute as specificed by WS-I Basic Profile specification 
(4.4.1).  Message part, parameters, violatesthis rule.  Please remove the 
element attribute and use the type attribute.
     [java]     at org.apache.axis2.AxisFault.makeFault(AxisFault.java:431)
     [java]     at 
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:408)
     [java]     at 
org.apache.axis2.description.WSDL11ToAllAxisServicesBuilder.populateAllServices(WSDL11ToAllAxisServicesBuilder.java:107)
     [java]     at 
org.apache.axis2.wsdl.codegen.CodeGenConfiguration.loadWsdl(CodeGenConfiguration.java:742)
     [java]     ... 3 more
     [java] Caused by: 
org.apache.axis2.description.WSDL11ToAxisServiceBuilder$WSDLProcessingException:
 The binding operation validateParticipant is RPC/literal. The message parts 
for this operation must use the type attribute as specificed by WS-I Basic 
Profile specification (4.4.1).  Message part, parameters, violatesthis rule.  
Please remove the element attribute and use the type attribute.
     [java]     at 
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.addPartToElement(WSDL11ToAxisServiceBuilder.java:2252)
     [java]     at 
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.getNewComplextType(WSDL11ToAxisServiceBuilder.java:2110)
     [java]     at 
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.createSchemaForPorttype(WSDL11ToAxisServiceBuilder.java:1760)
     [java]     at 
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.generateWrapperSchema(WSDL11ToAxisServiceBuilder.java:1648)
     [java]     at 
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:352)
     [java]     ... 5 more
     [java] Java Result: 1

I have pasted all references to the  'validateParticipant' from the WSDL below:

>From the schema section:
        <xs:element name="validateParticipant">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="data" nillable="true" 
type="ax22:ParticipantFullVO"/>
                        <xs:element name="useHtmlBreaks" type="xs:boolean"/>
                        <xs:element name="forceCheck" type="xs:boolean"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="validateParticipantResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="return" nillable="true" 
type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

Messages:
    <wsdl:message name="validateParticipantRequest">
        <wsdl:part name="parameters" element="ns:validateParticipant"/>
    </wsdl:message>
    <wsdl:message name="validateParticipantResponse">
        <wsdl:part name="parameters" element="ns:validateParticipantResponse"/>
    </wsdl:message>

Operation:
        <wsdl:operation name="validateParticipant">
            <wsdl:input message="tns:validateParticipantRequest" 
wsaw:Action="urn:validateParticipant"/>
            <wsdl:output message="tns:validateParticipantResponse" 
wsaw:Action="urn:validateParticipantResponse"/>
        </wsdl:operation>

      <wsdl:operation name="validateParticipant">
            <soap:operation soapAction="urn:validateParticipant" style="rpc"/>
            <wsdl:input>
                <soap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>

>From what I can tell, it appears that the above stack trace requires some sort 
>of manual intervention to convert the highlighted 'element' parameter to 
>'type', however I have no idea how to resolve this issue since my hope was 
>that the process of generating the WSDL and the client classes would be 
>automated through ant.

Is it possible that I generated the WSDL incorrectly or have called the 
WSDL2Java with incorrect parameters?

I did try to generate the source code using 'mvn clean install' (using Maven 
3.9.2) to see if I can figure out where it is failing however, I cannot get 
past the plug-in exceptions even after following the instructions in the readme 
to build the plugins individually.

Thank you for whatever advice that you can provide.

-Debra

Reply via email to