如何在两个不同的应用程序或战争之间共享骆驼背景

时间:2017-10-10 15:24:11

标签: apache apache-camel camel-ftp

我创建了2个不同的应用程序,并在其中一个中启动了camel上下文。如何在第二个应用程序中使用此已启动的上下文?

我尝试使用lookUpByname()获取上下文,并使用jndi上下文绑定camel上下文,但可以加载现有上下文。

还尝试通过在应用程序1中的上下文中设置NameStrategy并在应用程序2中获得相同但看起来像camel auto在DefaultCamelContextNameStrategy中生成名称和前缀。

code snippet:  

Application 1 :  

public static void main(String[] args)  
{  
CamelContext ctx = new DefaultCamelContext();  
String camelContextId= "sample";  
ctx.setNameStrategy(new DefaultCamelContextNameStrategy(
                camelContextId));  
ctx.start();  

}  

Application 2:  
public static void main(String[] args)  
{  
sampleRouter testobj = new sampleRouter();  
testobj.test();  
}  

public class sampleRouter extends RouteBuilder  
{  

public static CamelContext camelContext;  
public void test()  
try  
{  

camelContext = getContext();  
    try {
        camelContext.stop();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

请指导我在不同的应用程序中获取已经启动的上下文,因为我希望每次都避免创建新的上下文。

1 个答案:

答案 0 :(得分:0)

为什么要避免使用多个CamelContexts?你想要达到什么目标?
没有明确的要求,这对你来说并不容易,但我会尝试提出一些想法。

查看您的代码,您使用了两个不同的 JVM,因为您有2个main方法。
如果您的应用程序在不同的JVM中运行,请使用JMS Message Broker之类的ActiveMQ作为通信层。

如果在相同 JVM中部署2个战争/应用程序,则可以使用两个CamelContexts并让它们通过VM端点进行通信,如seda-vmdirect-vm