Comment appeler un appel RESTE (POST avec JSON corps) à partir de Chameau en Java DSL
Avoir la suite de Chameaux flux de l'installation dans un ServletContextListener dans un projet Web en cours d'exécution sur IBM WebSphere, l'arrivée d'un XML est converti en JSON et imprimé sur le Système.et imprimé à l'report.txt. So far So good.
@WebListener
public class SetupCamel implements ServletContextListener {
private CamelContext camelContext;
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("SetupCamel:contextInitialized - enter");
try {
Context ctx = new InitialContext();
QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("jms/TestConnectionFactory");
camelContext = new DefaultCamelContext();
JmsConfiguration jmsConfiguration = new JmsConfiguration(qcf);
JmsComponent jmsComponent = new JmsComponent(jmsConfiguration);
camelContext.addComponent("jms", jmsComponent);
final XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat();
xmlJsonFormat.setEncoding("UTF-8");
xmlJsonFormat.setForceTopLevelObject(false);
xmlJsonFormat.setTrimSpaces(true);
xmlJsonFormat.setRootName("newRoot");
xmlJsonFormat.setSkipNamespaces(true);
xmlJsonFormat.setRemoveNamespacePrefixes(true);
camelContext.addRoutes(new RouteBuilder() {
public void configure() {
onException(Exception.class)
.to("log:GeneralError?level=ERROR")
.end();
from("jms:queue:TestQueue?concurrentConsumers=1")
.marshal(xmlJsonFormat)
.to("file:/tmp/messages?fileName=report.txt&fileExist=Append")
.to("stream:out")
;
}
});
camelContext.start();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("SetupCamel:contextInitialized - leaving");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("SetupCamel:contextDestroyed - enter");
try {
if (camelContext != null) {
camelContext.stop();
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("SetupCamel:contextDestroyed - leaving");
}
}
J'ai d'étendre le flux de POSTER au format JSON à un service REST/consommateur. (Le Reste des ressources est testé et fonctionne..)
De la recherche (web)documentation ne me donne pas une bonne/Java complet DSL exemple que je suis en mesure d'utiliser. Basé sur ce que j'ai trouvé, je pense qu'il devrait être quelque chose de similaire à l'ajout d'un point de terminaison comme:
.to("cxfrs://http://localhost:9080/WebContext/TestResource")
Mais cela ne fonctionne pas et je ne comprends pas comment définir l'converti JSON comme corps et d'en faire une requête POST. Il n'y a aussi aucune exception imprimé.
Comment puis-je ajouter le RESTE d'appel en tant que POST avec JSON corps dans ce flux ?
Cours d'exécution dans IBM WebSphere v8.5.5, IBM jdk 1.7 x, Camel 2.11.2
Les fichiers jar suivants sont dans le dossier WEB-INF/lib classpath:
camel-core-2.11.2.jar
camel-cxf-2.11.2.jar
camel-cxf-transport-2.11.2.jar
camel-jms-2.11.2.jar
camel-servletlistener-2.11.2.jar
camel-spring-2.11.2.jar
camel-stream-2.11.2.jar
camel-xmljson-2.11.2.jar
com.ibm.ws.prereq.jackson.jar
commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
cxf-api-2.7.6.jar
cxf-rt-frontend-jaxrs-2.7.6.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar
slf4j-api-1.7.5.jar
spring-beans-3.1.4.RELEASE.jar
spring-context-3.1.4.RELEASE.jar
spring-core-3.1.4.RELEASE.jar
spring-jms-3.1.4.RELEASE.jar
spring-tx-3.1.4.RELEASE.jar
xom-1.2.5.jar
Grâce.
OriginalL'auteur JStefan | 2013-10-04
Vous devez vous connecter pour publier un commentaire.
Si vous voulez juste pour poster le message JSON pour le RESTE, vous n'avez pas besoin d'utiliser de chameau cxfrs composant, comme vous l'avez déjà a la demande du corps du message, vous avez juste besoin d'utiliser des chameaux point de terminaison http pour envoyer la demande.
Donc la route pourrait être
OriginalL'auteur Willem Jiang
OriginalL'auteur Jobin Thomas