2017-09-14 2 views
0

Je suis quelques tutoriels here pour comprendre comment je peux utiliser des routes de chameau sur un serveur JBoss EAP 6.4 déployé. Le but de mon application actuelle est assez simple, en ce sens que je veux lire un sujet ActiveMQ et le déconnecter. Ci-dessous le code résume mes actions:Routes non exécutables: camel/fuse/activemq

package com.mycompany; 

import javax.ejb.Startup; 
import javax.enterprise.context.ApplicationScoped; 
import javax.jms.ConnectionFactory; 

import org.apache.activemq.ActiveMQConnectionFactory; 
import org.apache.camel.builder.RouteBuilder; 
import org.apache.camel.cdi.ContextName; 
import org.apache.camel.component.jms.JmsComponent; 

@ApplicationScoped 
@Startup 
@ContextName("com.mycompany") 
public class CamelRoute extends RouteBuilder { 

    @Override 
    public void configure() throws Exception { 
     System.out.println("### we are in the main"); 

     final ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); 
     getContext().addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(factory)); 

     System.out.println("#### route being called"); 
     from("jms:topic:activemq/topic/myTopic").log("###### we are in here with this message ${body}"); 

    } 
} 

J'ai aussi une classe de lancement pour tester mes itinéraires:

package com.mycompany; 

import org.apache.camel.main.Main; 

public class Launcher { 

    public static void main(final String... args) throws Exception { 
     final Main main = new Main(); 
     main.addRouteBuilder(new CamelRoute()); 
     main.run(args); 
    } 
} 

Si je commence mes itinéraires via la commande maven suivante, je peux recevoir tous les messages qui viennent le sujet activemq. Donc, je sais que si je démarre manuellement la route, je peux au moins récupérer les données. Cependant, une fois que je déploie mon application sur le serveur (en tant que jar, activé), la même chose ne peut pas être dite. Aucune de mes instructions system.out n'est visible dans les journaux. J'ai presque l'impression de manquer une configuration supplémentaire pour "démarrer" l'application.

Remarque: J'ai ajouté les annotations EJB pour le démarrage dans la classe CamelRoute, mais cela n'a pas résolu le problème. Est-ce que je manque quelque chose d'évident ici?

sortie du jboss pae 6.4 journal une fois que je Déployez le pot:

04:18:21,390 INFO [org.jboss.as.repository] (HttpManagementService-threads - 49) JBAS014900: Content added at location C:\bin\jboss-fuse\jboss-eap-6.4\standalone\data\content\99\f271f8372007ee6a2bce37668656acb80ef160\content 
04:18:21,427 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "camel-java-1.0.0-SNAPSHOT.jar" (runtime-name: "camel-java-1.0.0-SNAPSHOT.jar") 
04:18:21,431 INFO [org.wildfly.extension.camel] (MSC service thread 1-4) @ContextName annotation found 
04:18:21,442 WARN [org.jboss.weld.deployer] (MSC service thread 1-6) JBAS016012: Deployment deployment "camel-java-1.0.0-SNAPSHOT.jar" contains CDI annotations but beans.xml was not found. 
04:18:21,464 INFO [org.jboss.as.server] (HttpManagementService-threads - 49) JBAS015859: Deployed "camel-java-1.0.0-SNAPSHOT.jar" (runtime-name : "camel-java-1.0.0-SNAPSHOT.jar") 
+0

L'avez-vous pour fonctionner sans courir sur le serveur? Je soupçonne que votre application meurt dès qu'elle démarre. Vous devez vous assurer que cela fonctionne pour toujours. Vérifiez le document pour cela. –

+0

@SoucianceEqdamRashti à droite, la commande maven dont je parle ci-dessus est en cours d'exécution sans le serveur. ça dure pour toujours, il n'y a pas de fin. && lors du déploiement sur le serveur eap, je vois que le fichier .jar a été "déployé" mais aucune des instructions system.out ne passe. – angryip

+0

Il est préférable de vérifier auprès de l'équipe de fusibles. C'est une application commerciale. –

Répondre

1

Il y a un pointeur dans la sortie de journal qui indique la cause probable de cette question:

JBAS016012: Deployment deployment "camel-java-1.0.0-SNAPSHOT.jar" contains CDI annotations but beans.xml was not found. 

Vous aurez besoin de vous assurer d'ajouter un META-INF/beans.xml à votre JAR. Les archives de bean implicites n'ont pas été ajoutées avant CDI 1.1. EAP 6.x/JavaEE 6 utilise CDI 1.0. Si beans.xml n'est pas présent dans le déploiement, votre application CDI Camel ne sera jamais renforcée et démarrée.