0

我有一个实现接口的 Bean 类。Bean 有几个方法,其中一些返回List<...>。Web 服务调用适用于所有不返回的方法List。但是,当我尝试调用返回的方法时,我得到一个肥皂错误字符串List

这是我的界面

@WebService
public interface Cart {

     @WebMethod(operationName="getOptionsData")   
     public List<OptionsData> getOptionsData(int id,int searchYear);
 }

豆类

@WebService 
public Class CartBean implements Cart {

@WebMethod(operationName="getOptionsData")
public List<OptionsData> getOptionsData(int id,int searchYear) {

  return List<...>;
}

}

当我尝试使用我的 Web 服务调用它时,我收到以下响应消息。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

 <soapenv:Body>
   <soapenv:Fault>  
      <faultcode>soapenv:Client</faultcode>
      <faultstring>A Java method was not found for the operation. If the 
                  WSDL operation name is different from the Java method name, 
                  make sure that the @WebMethod annotation name is present
      </faultstring> 
      <detail />
    </soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

我已将这两个注释都添加到我的实现类中。但是我不明白为什么只有返回List<...>和接受参数的方法没有被识别。返回List<..>空参数的方法被识别,我得到了预期的响应。是 SOAP 无法处理Lists还是有什么我实施它的方式有问题吗?有人帮我解决这个问题。。

提前致谢 !!

4

3 回答 3

0

I was able to solve the problem myself. Looks like SOAP cannot handle generics. Simple thing i did was to remove the generics and use just List. And my problem got solved

于 2013-07-09T09:24:15.040 回答
0

SOAP 绝对可以处理List<>。我有返回的 SOAP WebService 实现List<>

问题可能出在您的方法参数规范中。尝试像这样注释您的参数:

...
import javax.jws.WebParam;
...
@WebMethod(operationName="getOptionsData")   
     public List<OptionsData> getOptionsData(@WebParam(name = "id")int id,
                                             @WebParam(name = "searchYear")int searchYear);

更新

过时的 JAX-RPC 可能不支持它。您可能应该尝试更新到 JAX-WS。您可以按照下面的教程进行操作。

http://www.myeclipseide.com/documentation/quickstarts/webservices_jaxws/

Eclipse Indigo的更新
教程。http://www.softwareagility.gr/index.php?q=node/29

于 2013-06-25T14:59:17.963 回答
-1

您可以从 List 中获取 JSON 并发送 JSON 文件的字节数组。

在调用方法中,您获取该字节数组,创建一个临时文件(如果有必要),从 JSON 文件中获取列表。

我这样做是我在 Android 和 Java 之间的应用程序,它的工作速度比发送对象快,因为我也压缩了文件。

[]s 威廉·伯坦

于 2013-06-25T13:20:19.087 回答