[英]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.