我正在尝试使用Websphere 6.1 Java2Wsdl ant任务从Endpoint类生成WSDL文件
端点编码为
class MySvcEndpoint implements MySvc_SEI {
public SomeOtherComplexType[] myCall(String[] argStrings)
throws javax.xml.soap.SOAPException
{
.
.
}
}
界面是:
public interface MySvc_SEI extends java.rmi.Remote {
public SomeOtherComplexType[] myCall(String[] argStrings)
throws javax.xml.soap.SOAPException;
}
生成的WSDL包含以下条目:
<element name="myCall">
<complexType>
<sequence/>
</complexType>
</element>
<element name="myCallResponse">
<complexType>
<sequence/>
</complexType>
</element>
正如你所看到的,'argStrings'论证已经消失了,虽然它似乎认识到某些应该存在。此外,返回类型似乎也已消失。
无论如何,当我基于WSDL生成存根时,生成的接口是:
public interface MySvc {
public void myCall() throws java.rmi.RemoteException;
}
之前有没有人遇到过这个问题,如果是这样,它是如何解决的?
由于
[编辑]好的,似乎是有一个数组作为输入参数。我尝试了以下内容:
public int m1(String s1) throws SOAPException {
return 0;
}
public int[] m2(String s1) throws SOAPException {
int[] a = { 0 };
return a;
}
public int m3(String[] sArr) throws SOAPException {
return 0;
}
public int[] m4(String[] sArr) throws SOAPException {
int[] a = { 0 };
return a;
}
并获得以下WSDL输出:
<element name="m1">
<complexType>
<sequence>
<element name="s1" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="m1Response">
<complexType>
<sequence>
<element name="m1Return" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="m2">
<complexType>
<sequence>
<element name="s1" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="m2Response">
<complexType>
<sequence>
<element name="m2Return" nillable="true" type="impl:ArrayOf_1368777266_int"/>
</sequence>
</complexType>
</element>
<element name="m3">
<complexType>
<sequence/>
</complexType>
</element>
<element name="m3Response">
<complexType>
<sequence/>
</complexType>
</element>
<element name="m4">
<complexType>
<sequence/>
</complexType>
</element>
<element name="m4Response">
<complexType>
<sequence/>
</complexType>
</element>
正如你所看到的,生成了带有简单参数的方法,但是带有数组参数的方法被搞砸了。
答案 0 :(得分:0)
原来这是由于WebSphere Application Server的补丁版本。在调查时,安装的WebSphere是6.1.0.0。在升级到补丁级别23或更高级别时,此问题已得到修复。
确保您使用的是最新的补丁版本,这就是我所能说的!