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