JBoss 6 + Spring 3.0.5 + JAX-WS/CXF
Wir haben unser Projekt läuft auf JBoss 6 mit Spring 3.0.5. Alles ging glatt, bis wir implementieren versucht, einige Web-Services mit JAX-WS. Wenn ich versuchen Sie, einige einfache WS (wie das hinzufügen von 2 zahlen), es funktioniert einfach - ich lege Anmerkungen und fügen Sie Anmerkungen Klasse als servlet.
Aber die Dinge werden immer schwerer, wenn ich versuche, mein JAX-WS-Klassen aufgefüllt, mit Abhängigkeiten.
Hier ist mein code:
@WebService(name = "principal")
public class PrincipalWebService extends SpringBeanAutowiringSupport {
@Autowired
private PrincipalManager manager;
@WebMethod
public int add(int a, int b) {
return a + b;
}
@WebMethod
public Principal getById(int i) {
return manager.getById(i);
}
}
Add-Methode funktioniert, aber getById schlägt mit NPE. Ich habe debugging SpringBeanAutowiringSupport und es sieht aus wie ContextLoader.getCurrentWebApplicationContext() null zurück. Es bedeutet SpringBeanAutowiringSupport Konstruktor wird aufgerufen, bevor Kontext initialisiert wird.
Versucht habe ich bisher folgende CXF Anweisungen ausgeführt app mit Feder. Ich habe nicht diesen code jetzt, aber ich habe registriert PrincipalWebService wie eine Bohne, erstellt der Frühling-Datei zu konfigurieren, CXF und fügte hinzu, die bean mit der ID als Endpunkt. Es ging gut am Steg, aber nicht auf JBoss. Ich habe Empfang verschiedene Arten von Ausnahmen, je nachdem, wie ich konfigurieren, CXF, aber die Ursache war die gleiche - JBoss 6 CXF-version kompiliert, die gegen Spring 2.5, wir hatten also die Bibliothek zu kommen.
Hat jemand irgendwelche Ideen hat, immer IoC-arbeiten für Jax-ws services auf JBoss 6?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, ich habe einen workaround gefunden. Alles, was wir tun müssen, ist zu bewegen, dependency injection zu @PostConstruct-Methode:
ContextLoader.getCurrentWebApplicationContext()
gibt null in der MethodeprocessInjectionBasedOnCurrentContext()
. So noch DI war, der nicht funktioniert. Irgendeine Idee?Sollten Sie sich Ihrem Endpunkt im spring-Kontext mit jaxws:endpoint, und beziehen sich auf Ihre Bohne mit der Implementierung Attribut. Zum Beispiel:
Endpunkt Umsetzung:
Ich hade gleiche problem, aber auf WebLogic und ich habe es gelöst, wie hier beschrieben,https://jira.springsource.org/browse/SPR-5652 .