Java 使用Spring依赖项注入部署CXF服务端点

Java 使用Spring依赖项注入部署CXF服务端点,java,web-services,spring,soap,cxf,Java,Web Services,Spring,Soap,Cxf,我试图将Springbean注入到用@WebService和@SOAPBinding注释注释的类中 @WebService(targetNamespace = JAXWSMessageHandler.MY_URL) @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) public class JAXWSMessageHandler { private StorageManager bufferContainer;

我试图将Springbean注入到用@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中定义。我想我可以用singleton mediator类来破解它,该类允许从WebService类到我的业务类进行通信,但是,这对我来说听起来不太好,我希望能够正确地做到这一点。有什么提示吗

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

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

假设您正在使用@WebMethod来注释要在web服务上公开的方法

您还可以向setter方法添加@WebMethod注释,并将属性“exclude”设置为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;

}

我也很感激任何对类似问题的引用。你能尝试构造函数注入而不是setter注入吗?当然,但没有选择接受评论作为答案(或者至少我不知道如何做-我在这里很新)哦,对。。。我实际上没有提供答案。我马上就去