Apache CXF + Spring Java config (pas de XML)
Essayer de déployer un JAX-WS point de terminaison à l'aide de Tomcat 7 plugin Maven et CXF
2.7.8. Comme une question de préférence, je ne veux pas avoir tout de configuration XML pour
De printemps ou CXF. Je vois plusieurs blogs, des articles, des messages en utilisant cxf-servlet.xml
et CXFServlet mais aucun que ce soit complètement à l'aide de Java config. La recherche dans le CXFServlet code source, il semble pour le cxf-servlet.xml
ou quoi que ce soit dans le contexte de servlet sous la clé 'config-location'
. J'ai essayé par programmation de l'inscription de l'extrémité au lieu de cxf-servlet.xml
, mais il ne fonctionne pas; j'obtiens une erreur 404 lors de l'accès au service. Des idées?
@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;
}
}
source d'informationauteur Abhijit Sarkar
Vous devez vous connecter pour publier un commentaire.
Tout ce qui est nécessaire est un
endpoint.publish()
l'appel ci-dessus.Tout le posté ici n'est pas à 100% de configuration XML gratuit - tous les postes sont à l'aide de la classpath:META-INF/cxf/cxf.xml, qui est également utilisé dans la plupart des tutoriels sur le web. Mais il y a une solution: Définir un org.apache.cxf.bus.printemps.SpringBus @Bean et configurer nom = Bus.DEFAULT_BUS_ID, venant de org.apache.cxf.Bus.
Comme décrit dans les autres réponses, le org.apache.cxf.jaxws.EndpointImpl doit être instancié - y compris l'envoi des Haricots SpringBus et le SEI-la mise en œuvre de la Classe. Aussi, le publier()-Méthode de EndpointImpl a pour becalled, y compris une Chaîne de caractères contenant une URL se terminant le:
Si vous voulez en savoir plus sur Apache CXF avec SpringBoot, je recommande un regard sur ce projet github.
Ce thread certainement me mettre sur la bonne voie pour l'obtention de CXF à exécuter dans le plus pur du Printemps de configuration Java, mais il n'a pas de fournir tout ce qui est nécessaire.
Pour mon auto, pur Java configuration signifie sans
web.xml
fichier, je pense que cette réponse suppose, est présent. Printemps de Démarrage par exemple ne pas utiliser unweb.xml
fichier.Afin d'enregistrer un CXF point de terminaison sans l'utilisation de tous les fichiers XML, vous aurez besoin d'un fichier de configuration qui a également la charge la
CXFServlet
.Ci-dessus est toute la configuration nécessaire pour réussir à charger un CXF point de terminaison dans le Printemps.
J'ai également créé un petit projet que le démontre.
Je pense que si vous passer vos haricots à l'intérieur de l'usine.setServiceBeans il travaillera
Si vous utilisez le Printemps de Démarrage, vous pouvez utiliser:
Pour ajouter un point:
La documentation officielle de la CXF-l'intégration de la Botte.