假设这是正确的,我有一个实际的问题:最佳实践决定部署您的应用程序的ESB /骆驼路由?我应该将其打包成自己的JAR,还是值得成为自己的EAR充满EJB,Web服务和其他JAR?
我想我在问骆驼路线或ESB应该如何部署/架构,如:
my-esb.ear/ ejb1.jar/ MyEJB_1.class ejb2.jar/ MyEJB_2.class webservice.war/ MyWebService.class
要么…
my-esb.jar/ MyEJB_1.class MyEJB_2.class MyWebService.class
解决方法
嵌入到Java应用程序中:您可以将Camel嵌入到独立的Java应用程序中.在这种情况下,您将在您的应用程序中启动一个骆驼上下文,这将启动路由等.当您的应用程序需要与服务等进行通信时,这是非常好的.为此,您需要部署骆驼和组件的第三方jar类路径.
嵌入在Web应用程序中:正如人们已经指出的那样,这似乎是一个受欢迎的选择.骆驼罐和第三方罐被包装在WAR文件中,并基本上部署到诸如Tomcat之类的网络容器以托管骆驼服务.
>嵌入在应用服务器中:我已经阅读了一些关于如何将Camel部署到诸如JBoss之类的应用服务器的文章,甚至还读到了部署到Glassfish的人.这似乎非常类似于您如何部署到Tomcat. JBoss有一些类加载问题,你需要解决,这使得它很棘手.所以是的,您可以通过走WAR路由部署到应用程序服务器.
>部署到OSGi:您可以相对较快地使您的Camel jar成为OSGi包,并部署到OSGi框架(如Apache Felix).将jar转换为适当的OSGi包然后部署是相对简单的.这里的一个大问题是某些第三方可能没有OSGi兼容的捆绑包供您部署.
我个人喜好是OSGi路线.它是轻松轻松的,并允许我托管我的骆驼路线作为持久服务(即Window服务,Unix Deamon)与非常小的脚印.
您现在应该意识到的是,Apache骆驼可以通过多种方式进行部署,由您自己决定如何做.花了我一段时间来了解如何部署骆驼,因为我不得不使用不同的部署模式来获得良好的感觉.我没有碰到的唯一一个是部署到应用服务器,因为我觉得这些服务器大部分都足够重.
就建筑而言,我喜欢将不同的路线/应用程序保存在不同的罐子中.由于我使用OSGi,我喜欢能够更新一个特定的路由并部署它,而无需重新部署所有的东西.如果您将所有内容部署在一个jar中,那么您需要重新整理并重新部署该jar.然而,这是个人喜好,你的里程可能会有所不同
希望这有帮助.