0

我正在尝试将 spring bean 注入使用 @WebService 和 @SOAPBinding 注释的类中。

@WebService(targetNamespace = JAXWSMessageHandler.MY_URL)
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class JAXWSMessageHandler {

    private StorageManager bufferContainer;

    public void setBufferContainer(StorageManager storageManager){
        this.bufferContainer = storageManager;

    }

我得到以下异常:

Service class soap.service.JAXWSMessageHandler method setBufferContainer part {http://myurl/myproject/v1}setBufferContainer cannot be mapped to schema. Check for use of a JAX-WS-specific type without the JAX-WS service factory bean.

看来spring使用的操作应该是CXF在WSDL中定义的。我想我可以使用允许从 WebService 类到我的业务类的通信的单例中介类来破解它,但是,这对我来说听起来不太好,我想正确地做到这一点。任何提示如何做到这一点?

4

2 回答 2

1

JAX-WS 将注释类上的方法签名解释为 Web 服务操作。我的猜测是,如果您使用构造函数注入(而不是 setter 注入),问题就会消失。

于 2012-05-25T14:36:53.573 回答
1

我想我有一个更好的解决方案:

大概您正在使用@WebMethod 来注释要在 Web 服务上公开的方法?

好吧,您还可以向您的 setter 方法添加 @WebMethod 注释,并将属性“排除”设置为 true。这意味着该方法将不会在您的 wsdl 中定义。

@WebService(targetNamespace = JAXWSMessageHandler.MY_URL)
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class JAXWSMessageHandler {

private StorageManager bufferContainer;

@WebMethod(exclude=true)
public void setBufferContainer(StorageManager storageManager){
    this.bufferContainer = storageManager;

}
于 2013-05-22T14:57:50.887 回答