Ich habe ein Jax-Ws Metro-Projekt mit Spring-Container. Ich kann ein Feld innerhalb von SoapHandler nicht automatisch ansteuern. Ich habe alles aus Internetquellen versucht, aber keinen Erfolg. Das Feld ist immer null. Der Feldname lautet "paymentPortalService".Verwenden Sie @Autowire in Jax-Ws mit Spring Container
Meine Handler-Klasse:
public class CustomSoapHeaderHandler extends SpringBeanAutowiringSupport implements SOAPHandler<SOAPMessageContext> {
private static final Logger log = Logger.getLogger(CustomSoapHeaderHandler.class);
@Autowire
private PaymentPortalService paymentPortalService;
}
Ich habe einen Proxy-Dienst, die einen Remote-Service aufruft. Hinzugefügt diese Handler in Remote-Service-Call-Methode zu Handler:
@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);
}
}
Ich versuchte @Autowire @Resource und einige andere Lösungen aus dem Internet zu ändern, keinen Erfolg. Ich benutze Apache Tomcat 8 ohne EE-Container.
Vielen Dank im Voraus!
Und warum sollte es nicht "null" sein. Sie erstellen Instanzen des 'CustomSoapHeaderHandler' selbst. Es wird nicht von irgendwelchen Behältern gehandhabt, sei es Jersey oder Spring. Also wird nichts injiziert. Anstatt zu hacken, empfehle ich eine Lektüre der Trikot-Dokumentation, die ziemlich klar erklärt, wie man Jersey mit Spring einrichtet. –
Danke für Ihre Antwort! Ja, ich weiß, dass dies ein dummer Fehler ist. Ich habe ihn folgendermaßen geändert: Autowired private CustomSoapHeaderHandler customSoapHeaderHandler; Aber es funktioniert immer noch nicht. Das Handler-Objekt ist null. Ich habe der CustomSoapHeaderHandler-Klasse auch die Komponente Annotation hinzugefügt. – 0bj3ct
Wie bereits erwähnt, lesen Sie [die Dokumentation] (https://jersey.java.net/documentation/latest/spring.html) anstatt die falschen Dinge zu probieren. Daneben muss Ihr 'SoapHandler' eine' @ Component' sein und ich nehme an, dass Sie den Komponenten-Scan eingerichtet haben. (Und entfernen Sie bitte die extends "SpringBeanAutowiringSupport", da fügt nichts hinzu. –