2017-09-14 50 views
0

我正在關注一些教程here,以瞭解如何在部署的Jboss EAP 6.4服務器上使用駱駝路由。我目前的應用程序的目標非常簡單,我想從ActiveMQ主題讀取並註銷。下面的代碼概括了我的行動:未執行的路由: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}"); 

    } 
} 

我也有一個啓動類來測試我的路線:

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); 
    } 
} 

如果我通過以下Maven命令啓動我的路線,我可以接收來的所有消息activemq主題。所以我知道,如果我手動啓動路線,我至少可以檢索數據。

mvn clean install exec:java -Dexec.mainClass=com.mycompany.Launcher 

但是,一旦我將我的應用程序部署到服務器(作爲jar,啓用),同樣不能說。我的system.out語句在日誌中都不明顯。我幾乎覺得我缺少額外的配置來「啓動」應用程序。

注意:我在CamelRoute類中添加了用於啓動的EJB註釋,但這並沒有解決問題。我在這裏錯過了很明顯的東西嗎

從JBoss EAP 6.4日誌

輸出一次我部署的jar:

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

你有沒有在服務器上運行它的工作?我懷疑你的應用一啓動就會死亡。你需要確保它永遠運行。檢查文檔的這一點。 –

+0

@SoucianceEqdamRashti對,我上面提到的maven命令在沒有服務器的情況下運行。它永遠持續下去,沒有終點。 &&部署到eap服務器時,我發現.jar文件是「部署的」,但沒有一個system.out語句正在通過。 – angryip

+0

最好查看保險絲團隊。這是一個商業應用程序。 –

回答

1

有沒有在你的輸出日誌的指針,它表示這個問題的可能原因:

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

你需要確保你添加META-INF/beans.xml到你的JAR。直到CDI 1.1才添加隱式bean檔案。 EAP 6.x/JavaEE 6使用CDI 1.0。如果beans.xml在部署中不存在,那麼您的駱駝CDI應用程序將永遠不會被啓動並啓動。