使用Websphere 6.1生成WSDL不能正确生成序列参数

时间:2011-07-21 11:13:45

标签: java web-services websphere-6.1

我正在尝试使用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>

正如你所看到的,生成了带有简单参数的方法,但是带有数组参数的方法被搞砸了。

1 个答案:

答案 0 :(得分:0)

原来这是由于WebSphere Application Server的补丁版本。在调查时,安装的WebSphere是6.1.0.0。在升级到补丁级别23或更高级别时,此问题已得到修复。

确保您使用的是最新的补丁版本,这就是我所能说的!