将java对象转换为soap
我有一个(不太酷的)web服务:将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
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