命令空间与Enunciate有关

时间:2014-02-27 23:13:39

标签: java maven jaxb jax-ws enunciate

我有一个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'对象之间存在某种脱节,但对于我的生活,我无法解决它。请帮忙!提前谢谢。

1 个答案:

答案 0 :(得分:0)

禁用jaxws支持模块会发生什么?

  <enunciate>
     ...
     <modules>
       ...
       <jaxws-support disabled="true"/>
     </modules>
  </enunciate>