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.

Avez-vous réussi à faire cela?

OriginalL'auteur JStefan | 2013-10-04