0

我有一个 jax-ws 项目,它使用 Enunciate 和 Maven 构建一个 war 文件。当我将它部署到我的应用服务器时,我在尝试使用 SoapUI 进行测试时遇到了奇怪的命名空间问题。xml 请求将具有我的复杂类型的正确命名空间前缀,但是当请求提交到服务器时,该对象始终为空。

这是我的网络服务界面:

@WebService(targetNamespace = "http://namespace.com/dog/service")
public interface DogSoapService {
    @WebMethod
    public Dog submit(
        @WebParam(name = "dog")
        Dog dog) throws MyWebFault;

用发音可以很好地构建,但是当我尝试通过 SoapUI 发出请求时,“狗”对象作为 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;

但是,如果我尝试使用“assemble”目标构建我的项目,部署将失败并出现以下错误:

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

我看到发音生成的“提交”请求包装类和我的“狗”对象之间存在某种脱节,但对于我的生活,我无法解决它。请帮忙!提前致谢。

4

1 回答 1

0

What happens when you disable the jaxws-support module?

  <enunciate>
     ...
     <modules>
       ...
       <jaxws-support disabled="true"/>
     </modules>
  </enunciate>
于 2014-04-09T21:39:08.447 回答