簡體   English   中英

使用Spring依賴注入部署CXF服務端點

[英]Deploying CXF service endpoint with Spring dependency injection

我正在嘗試將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中定義。 我認為我可以使用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;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM