Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将java对象转换为soap_Java_Web Services_Soap - Fatal编程技术网

将java对象转换为soap

将java对象转换为soap,java,web-services,soap,Java,Web Services,Soap,我有一个(不太酷的)web服务: import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService() public class WMCWeb { } 我想做点什么 @WebMethod(operationName = "getMyObject") public MyObject getMyObject(@WebParam(name = "id") String id

我有一个(不太酷的)web服务:

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService()
public class WMCWeb {
}
我想做点什么

@WebMethod(operationName = "getMyObject")
public MyObject getMyObject(@WebParam(name = "id") String id) {
        ...
        return new myObject;
}

但我不能只返回一个对象。我真的不知道我应该怎么做才能做到这一点。我读过一些关于编写org.apache.soap.util.Serializer的文章,但它似乎是一个旧的解决方案。如何使Web服务知道如何将对象转换为Soap响应?

请看CXF或axis2。它们实际上将方法公开为web服务,您可以通过使用框架之类的东西(就像EJB的工作方式)轻松调用这些方法。另外,如果您已经有了web服务(意味着WSDL已经发布),您可以执行WSDLtojava,它将为您创建这些对象。

JAX-WS利用JAXB(所使用的JAXB的实际版本取决于JAX-WS的版本)在XML文档(网络上的SOAP消息)和Java类型之间执行绑定。如果用类型为
java.lang.Object
的参数替换字符串参数,那么JAXB运行时在序列化和反序列化过程中肯定会遇到困难,因为不存在确定运行时应如何执行此类过程的绑定

我怀疑您正试图在运行时使用超类执行类型替换。如果是这样,您应该使用JAX-WS2.1和JAXB2.1中的注释来实现这一点;还建议构造适当的超类,即使您确实设法生成了适当的WSDL