GUAOSHITAIDU 2011-09-17
IntelliJ IDEA 是一个Java的可视化开发 工具,可以很方便的将一个wsdl生成一个java工程。但是在生成过程中会出现一些问题:
    <complexType name="HelloWorldRequestType">
     <element name="Message" nillable="true" type="xsd:string"/>
     <element name="bParam"  nillable="true" type="xsd:string"/>
     <element name="pParam" nillable="true" type="xsd:int"/>
     <element name="sParam" type="xsd:int"/>
     <element name="nParam" nillable="true" type="xsd:string" />
     <element name="tParam" nillable="true" type="xsd:string"/>
     <element name="TParameter" nillable="true" type="xsd:string" minOccurs="0"/>
     <element name="rParam" nillable="true" type="xsd:int" minOccurs="0"/>
     <element name="RParameter" nillable="true" type="xsd:string"/>
</complexType>
用来描述一个类型,HelloWorldRequestType 里面含有bParam,Message等字段。在转换成java工程的时候,
开头的小写字母t,b, p,s,n等会自动被转换成大写。而开头的大写字母R会自动被转换成小写。
例如: “bParam”被转换成了“BParams”,需要手工将"BParam"改成"bParam"
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("BParam");
        elemField.setXmlName(new javax.xml.namespace.QName("urn:HelloWorldService", "bParam"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
        elemField.setNillable(true);
        typeDesc.addFieldDesc(elemField); 
wsdl文件中变量描述的不同,生成的java工程中变量的类型也不一样。 同为int类型, <element name="sParam" type="xsd:int"/>被转换成了 private int sParam; 而 <element name="rParam" nillable="true" type="xsd:int" minOccurs="0"/>被转换成了 private java.lang.Integer rParam; 如果该java工程需要通过jni调用c++ dll,则类型描述一定要对应。
更多关于IntelliJ IDEA的详细信息,或者下载地址请点这里