Apache CXF + Spring Java config (kein XML)
Versuchen zum bereitstellen eines JAX-WS-Endpunkt mit Tomcat 7 Maven-plugin und CXF
2.7.8. Als eine Frage der Präferenz, ich will nicht irgendwelche XML-config für
Frühlings-oder CXF. Ich sehe mehrere blogs, Artikel, Beiträge über cxf-servlet.xml
und CXFServlet aber nicht die geringste komplett mit Java-config. Der Blick in die CXFServlet source-code, sieht es für die cxf-servlet.xml
oder irgendetwas in der servlet-Kontext unter dem Schlüssel 'config-location'
. Ich habe versucht, programmgesteuert Registrierung der Endpunkt statt in cxf-servlet.xml
, aber es funktioniert nicht; bekomme ich einen 404 beim Zugriff auf den service. Irgendwelche Ideen?
@Configuration
@ImportResource({ "classpath:META-INF/cxf/cxf.xml" })
public class CXFConfig {
@Autowired
Bus cxfBus;
//More code
@Bean
public Endpoint calculator() {
EndpointImpl endpoint = new EndpointImpl(cxfBus, new Calculator());
endpoint.setAddress("/CalculatorService");
return endpoint;
}
}
InformationsquelleAutor der Frage Abhijit Sarkar | 2014-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alles, was benötigt wird ist ein
endpoint.publish()
Aufruf oben.InformationsquelleAutor der Antwort Abhijit Sarkar
Alles, was hier veröffentlicht wird, nicht 100% XML-Konfiguration frei - alle Beiträge sind über die classpath:META-INF/cxf/cxf.xml, die auch in den meisten tutorials im web. Aber es gibt eine Lösung: Definieren Sie eine org.apache.cxf.bus.Frühling.SpringBus wie @Bean und konfigurieren name = Bus.DEFAULT_BUS_ID, kommen aus org.apache.cxf.Bus.
Wie beschrieben in den anderen Antworten, die org.apache.cxf.jaxws.EndpointImpl hat, um instanziiert zu werden - einschließlich der Weiterleitung der Bohnen SpringBus und die SEI-die Umsetzung Klasse. Auch die publish()-Methode der EndpointImpl hat becalled, darunter ein String mit einer URL endet:
Wenn Sie mehr darüber erfahren möchten, Apache CXF zusammen mit SpringBoot, empfehle ich einen Blick auf dieses github-Projekt.
InformationsquelleAutor der Antwort jonashackt
Diesem thread auf jeden Fall setzen mich auf die richtige Spur zu bekommen, CXF laufen in reinem Java Spring-Konfiguration, aber es hat nicht bieten alles, was erforderlich ist.
Für mein selbst, Reine Java-Konfiguration bedeutet, dass ohne eine
web.xml
- Datei, die ich denke, diese Antwort geht davon vorhanden ist. Spring Boot zum Beispiel nicht, verwenden Sie eineweb.xml
Datei.So registrieren Sie eine CXF-endpoint ohne die Nutzung von XML-Dateien überhaupt benötigen Sie eine Konfigurationsdatei, die auch die Lasten der
CXFServlet
.Oben ist die ganze Konfiguration erforderlich, um erfolgreich zu laden Sie eine CXF-endpoint im Laufe des Frühlings.
Habe ich auch erstellt eine kleines Projekt veranschaulicht dies.
InformationsquelleAutor der Antwort Karl Bennett
Ich denke, dass wenn Sie Ihre Bohnen in der Fabrik.setServiceBeans es funktioniert
InformationsquelleAutor der Antwort arthurfnsc
Wenn man mit Spring Boot, die Sie verwenden können:
Hinzufügen, um einen Endpunkt:
Offizielle Dokumentation des CXF-Boot-integration.
InformationsquelleAutor der Antwort imgx64