1
我有一個使用Spring容器的Jax-Ws Metro項目。我無法在SoapHandler內自動裝入字段。我嘗試了一切從互聯網資源,但沒有成功。該字段始終爲空。字段名稱是「paymentPortalService」。在Spring容器中使用@Autowire Jax-Ws
我的處理程序類:
public class CustomSoapHeaderHandler extends SpringBeanAutowiringSupport implements SOAPHandler<SOAPMessageContext> {
private static final Logger log = Logger.getLogger(CustomSoapHeaderHandler.class);
@Autowire
private PaymentPortalService paymentPortalService;
}
我有調用遠程服務的代理服務。添加了這個處理程序在調用遠程服務方法HandlerChain的:
@Service
public class CustomServiceProxy {
private final Logger log = Logger.getLogger(CustomServiceProxy.class);
private RemoteServicePort pspPort;
public CustomServiceProxy() {
try {
pspPort = new RemoteService_Service(new URL("https://x?wsdl")).getRemoteServicePort();
Binding binding = ((BindingProvider) pspPort).getBinding();
List<Handler> handlers = binding.getHandlerChain();
handlers.add(new CustomSoapHeaderHandler());
binding.setHandlerChain(handlers);
}
}
我試圖改變@Autowire到@Resource和從互聯網上一些其他的解決方案,沒有成功。我使用沒有EE容器的Apache Tomcat 8。
提前致謝!
而爲什麼它不應該是'null'。你正在自己創建'CustomSoapHeaderHandler'的實例。它不是由任何種類的容器管理的,無論是球衣還是春天。所以什麼都不會注入。我建議閱讀球衣文檔,而不是解釋如何使用Spring設置球衣。 –
感謝您的回覆!是的,我知道這是一個愚蠢的錯誤,我將它改爲: Autowired private CustomSoapHeaderHandler customSoapHeaderHandler; 但它仍然無法正常工作。處理程序對象爲null。我還將Component註釋添加到CustomSoapHeaderHandler類。 – 0bj3ct
正如前面提到的,閱讀[文檔](https://jersey.java.net/documentation/latest/spring.html)而不是嘗試錯誤的東西。接下來你的'SoapHandler'需要是@ @ Component',我假設你已經設置了組件掃描。 (請刪除擴展'SpringBeanAutowiringSupport',因爲這不會增加任何內容 –