Java Web服务中无参数返回列表的方法

Java Web服务中无参数返回列表的方法,java,web-services,Java,Web Services,我有一个实现接口的Bean类。Bean有几个方法,其中一些方法返回List。Web服务调用适用于所有不返回List的方法。但是,当我尝试调用返回List的方法时,会得到一个soap错误字符串 这是我的界面 @WebService public interface Cart { @WebMethod(operationName="getOptionsData") public List<OptionsData> getOptionsData(int id,i

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

这是我的界面

@WebService
public interface Cart {

     @WebMethod(operationName="getOptionsData")   
     public List<OptionsData> getOptionsData(int id,int searchYear);
 }
@WebService
公共接口车{
@WebMethod(operationName=“getOptionsData”)
公共列表getOptionsData(int-id,int-searchYear);
}
豆类

@WebService 
public Class CartBean implements Cart {

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

  return List<...>;
}

}
@WebService
公共类CartBean实现了Cart{
@WebMethod(operationName=“getOptionsData”)
公共列表getOptionsData(整数id,整数搜索年份){
退货清单;
}
}
当我尝试使用我的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>

soapenv:客户端
找不到该操作的Java方法。如果
WSDL操作名称与Java方法名称不同,
确保@WebMethod注释名称存在
我已经将这两个注释添加到我的实现类中。然而,我不明白为什么只有返回
List
并接受参数的方法没有被识别。返回
List
且参数为空的方法正在被识别,我得到了预期的响应。是SOAP无法处理
List
还是有什么问题我实施它的方式?谁来帮帮我


提前谢谢

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

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

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

[]s
威廉·伯坦(William Bertan)

SOAP肯定能处理
列表
。我有正在工作的SOAP Web服务实现,它返回
List

问题可能在于方法参数的规范中。 尝试按如下方式注释参数:

...
import javax.jws.WebParam;
...
@WebMethod(operationName="getOptionsData")   
     public List<OptionsData> getOptionsData(@WebParam(name = "id")int id,
                                             @WebParam(name = "searchYear")int searchYear);
。。。
导入javax.jws.WebParam;
...
@WebMethod(operationName=“getOptionsData”)
public List getOptionsData(@webgram(name=“id”)intid,
@WebParam(name=“searchYear”)在searchYear中;
更新

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

更新
eclipse教程Indigo

我自己能解决这个问题。看起来SOAP无法处理泛型。我做的一件简单的事情就是删除泛型并使用justlist。我的问题得到了解决

你能从webservice发布你的一小部分回复吗?@Android28:我已经用回复信息更新了这个问题。我遇到了一些奇怪的错误。我已经更新了这个问题。请看一下,帮我做这个。提前感谢!!!如果我理解正确,你会从web服务得到问题的响应吗?我是对的吗?是的。。我已经在上面发布了响应消息,我不知道JSON到底是如何工作的。我第一次从web服务开始。然而,这并不能回答我的问题,即为什么返回列表的方法没有得到认可,而其他方法却得到认可?好吧,这并不能直接回答你的问题,但这是针对你的案例的另一个解决方案。我不知道为什么,但我在开始的几天里一直被同一个问题困扰着,我放弃了,开始使用XML,然后升级到JSON。正如我所说,我用它提高了性能,即使它只是一个字符串数组,使用JSON和压缩JSON,我也能获得更好的性能,因为JSON文件大约是50Mb,压缩后的大小就像3Mb。也许你可以试一试,或者等待另一个回答你的问题。正如你所说,这并不能回答我的问题。但我听说过JSON及其性能。我很想知道为什么会这样?你能从一个JSON片段开始吗?在接口或bean类中,我一直在尝试一个简单的web服务示例。。当我试图公开一个返回列表的方法时,它向我发出警告:“服务类“com.example.WebServices”不符合JAX-RPC 1.1规范的一个或多个要求,可能无法正确部署或运行。服务类“com.example.WebServices”上的方法“getString”使用JAX-RPC规范不支持的数据类型“java.util.List”。该类型的实例可能无法正确序列化或反序列化。可能会导致数据丢失或Web服务完全失败。“您正在使用JAX-RPC吗?”?现在已经很过时了。您是否可以更新到JAX-WS?当我尝试从ecipse创建web服务时,我得到了通过JAX-RPC实现的唯一选项。。如何将其更新为JAX-WS?好的,谢谢。我将尝试将其更新为JAX-WS。那么,是不是因为JAX-RPC,列表没有被识别?