聊城手机网站建设费用,注册网站需要什么条件,容桂免费网站建设公司,成都百度推广优化从现在开始我一直在与Camel合作#xff0c;我真的很喜欢它的简单性。 在Java EE之上始终使用它一直是一个挑战#xff0c;而我最近发表的有关如何做到这一点的演讲之一以及Java EE中引导Camel的不同方法实际上建议使用WildFly-Camel Subsystem 。 在正在进行的系列文章中我真的很喜欢它的简单性。 在Java EE之上始终使用它一直是一个挑战而我最近发表的有关如何做到这一点的演讲之一以及Java EE中引导Camel的不同方法实际上建议使用WildFly-Camel Subsystem 。 在正在进行的系列文章中我将探索实现此目标的不同方法并提供大量示例而这些示例仍是演讲中所缺少的。 我很高兴在评论中或通过Twitter上的myfear收到您的反馈和要求。 WildFly 8.2骆驼入门 Wildfly-Camel子系统提供了Apache Camel与WildFly Application Server的集成。 它允许您将骆驼路线添加为WildFly配置的一部分。 路由可以部署为Java EE应用程序的一部分。 Java EE组件可以访问Camel Core API和各种Camel Component API。 您的企业集成解决方案可以构造为Java EE和Camel功能的组合。 注意WildFly-Camel的3.x版本预计将支持最新的WildFly 9。 准备好 将WildFly 8.2.0.Final下载并解压缩到您选择的文件夹中。 将wildfly-camel补丁 2.3.0下载并解压缩到wildfly文件夹。 从开始WildFly bin/standalone[.bat|.sh] -c standalone-camel.xml 建立和运行最快的方法之一是使用Docker和WildFly Camel映像 。 该映像与WildFly 8.1和已安装的Camel子系统捆绑在一起。 定义和使用骆驼上下文 CamelContext表示单个Camel路由规则库。 您使用CamelContext的方式类似于Spring ApplicationContext的方式。 它包含您应用程序的所有路由。 您可以根据需要拥有任意数量的CamelContext只要它们具有不同的名称即可。 WildFly-Camel让我们将它们定义为a作为子系统定义本身的一部分在standalone-camel.xml和domain.xml中定义以及b或在包含-camel-context.xml后缀文件的受支持的部署工件中进行部署 c可以通过RouteBilder和CDI集成与路由一起提供。 可以通过两种不同的方式使用已定义的CamelContexta 通过Camel-CDI Injected注入或b从JNDI树访问。 示例上下文和路由 对于以下示例我将使用上下文以及通过CDI和RouteBuilder提供的关联路由。 它是一个应用程序范围的Bean它随应用程序启动自动启动。 ContextName批注为CamelContext提供了一个特定的名称。 ApplicationScoped
Startup
ContextName(cdi-context)
public class HelloRouteBuilder extends RouteBuilder {InjectHelloBean helloBean;Overridepublic void configure() throws Exception {from(direct:start).transform(body().prepend(helloBean.sayHello()).append( user.));}
} 路线本身并不完全具有挑战性。 它从directstart中获取一个空的消息正文并在CDI bean方法“ sayHello”的输出之前添加内容并在字符串后附加“ user”。 对它。 作为参考可以在我的GitHub帐户上找到完整的代码。 因此接下来我们需要找出的是如何在各种Java EE组件规范中使用此路由。 从CDI使用骆驼 Camel从2.10版本开始支持CDI。 在子系统之前和之外需要对其进行引导。 这不再是必须的您只需在名称中简单地Inject即可在Named CDI bean中使用已部署或定义的CamelContext InjectContextName(cdi-context)private CamelContext context;在JSFJAX-RS和EJB中使用骆驼 有了有关如何在CDI中使用CamelContext的知识您将假定很容易从JSF等中进行相同的操作。 这不是真的。 实际上您不能将其注入绑定到JSF组件的ManagedBean甚至CDI Bean中。 另外它在EJB中不起作用。 我没有详细研究它但假定它与范围有关。 一个合理的解决方法实际上是一个更好的应用程序设计是将完整的Camel逻辑放入单独的CDI bean中然后将其注入。 Named
public class HelloCamel {InjectContextName(cdi-context)private CamelContext context;private final static Logger LOGGER Logger.getLogger(HelloCamel.class.getName());public String doSomeWorkFor(String name) {ProducerTemplate producer context.createProducerTemplate();String result producer.requestBody(direct:start, name, String.class);LOGGER.log(Level.INFO, result);return result;}
} ProducerTemplate接口允许您以各种不同的方式将消息交换发送到端点以使其易于使用Java代码处理Camel Endpoint实例。 在这种情况下它只是开始路由并在主体中放置一个String它表示我正在使用它的组件的名称。 CDI Bean充当组件的后备bean仅使用它 InjectHelloCamel helloCamel;public String getName() {return helloCamel.doSomeWorkFor(JSF);} 返回字符串为“ Hello JSF user”。 这也将写入WildFly服务器日志。 对于所有其他Java EE组件最好使用相同的方法。 从EJB使用骆驼 如果您使用EJB作为man应用程序组件模型那么仅使用JNDI方法也是非常合理的 CamelContext camelctx (CamelContext) inicxt.lookup(java:jboss/camel/context/cdi-context);Hawtio –骆驼控制台 子系统中的另一个隐藏的宝石是Hawtio控制台的捆绑。 它是一个用于管理Java内容的模块化Web控制台并具有一个Apache Camel插件可可视化您的上下文和路由。 请记住它是自动配置的安全性您需要添加管理用户才能访问它。 进一步阅读和帮助 在Freenode上与开发人员交谈 WildFly-Camel子系统文档 GitHub上的WildFly Camel Apache Camel网站 翻译自: https://www.javacodegeeks.com/2015/07/using-camel-routes-in-java-ee-components.html