我有一个jax-ws项目正在使用Enunciate与Maven构建一个war文件。当我将它部署到我的app-server时,在尝试使用SoapUI进行测试时会出现奇怪的命名空间问题。 xml请求将具有我的complex类型的正确名称空间前缀,但是当请求提交给服务器时,该对象始终为null。
这是我的网络服务界面:
@WebService(targetNamespace = "http://namespace.com/dog/service")
public interface DogSoapService {
@WebMethod
public Dog submit(
@WebParam(name = "dog")
Dog dog) throws MyWebFault;
使用enunciate可以很好地构建,但是当我尝试通过SoapUI发出请求时,'dog'对象作为null传递给服务器。
如果我在maven中禁用了enunciate的'assemble'目标,并且我将'targetNamespace'添加到我的狗WebParam中,那么该请求与SoapUI完美配合。
@WebService(targetNamespace = "http://namespace.com/dog/service")
public interface DogSoapService {
@WebMethod
public Dog submit(
@WebParam(name = "dog", targetNamespace = "http://namespace.com/dog/model")
Dog dog) throws MyWebFault;
但是,如果我尝试使用“汇编”目标构建项目,则部署会因此错误而失败:
javax.xml.ws.WebServiceException: class com.myproject.dog.ws.jaxws.Submit do not have a property of the name {http://namespace.com/dog/model}dog
at com.sun.xml.ws.server.sei.EndpointArgumentsBuilder$DocLit.<init>(EndpointArgumentsBuilder.java:513)
...
Caused by: javax.xml.bind.JAXBException: {http://namespace.com/dog/model}dog is not a valid property on class com.myproject.dog.ws.jaxws.Submit
...
Caused By: javax.xml.bind.JAXBException: {http://namespace.com/dog/model}dog is not a valid property on class com.myproject.dog.ws.jaxws.Submit
...
Truncated. see log file for complete stacktrace
我发现enunciate生成的'Submit'请求包装器类和我的'Dog'对象之间存在某种脱节,但对于我的生活,我无法解决它。请帮忙!提前谢谢。
答案 0 :(得分:0)
禁用jaxws支持模块会发生什么?
<enunciate>
...
<modules>
...
<jaxws-support disabled="true"/>
</modules>
</enunciate>