java ee各类组件_在Java EE组件中使用骆驼路线

java ee各类组件

从现在开始我一直在与Camel合作,我真的很喜欢它的简单性。 在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集成与路由一起提供。

可以通过两种不同的方式使用已定义的CamelContext:a) 通过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."));}
}

路线本身并不完全具有挑战性。 它从direct:start中获取一个空的消息正文,并从CDI bean方法“ sayHello”的输出开始添加前置字符串“ user”。 对此。 作为参考,完整的代码可以在我的GitHub帐户上找到 。 因此,我们接下来需要了解的是如何在各种Java EE组件规范中使用此路由。

从CDI使用骆驼

Camel从2.10版本开始支持CDI。 在子系统之前和之外,需要对其进行引导。 这不再是必须的,您只需在名称中简单地@Inject即可在@Named CDI bean中使用已部署或定义的CamelContext:

@Inject@ContextName("cdi-context")private CamelContext context;

在JSF,JAX-RS和EJB中使用骆驼

hello_jsf

有了有关如何在CDI中使用CamelContext的知识,您将假定,很容易从JSF等中进行相同的操作。 这不是真的。 实际上,您不能将其注入绑定到JSF组件的ManagedBean甚至CDI Bean中。 另外,它在EJB中不起作用。 我没有详细研究它,但假定它与范围有关。 一个合理的解决方法,实际上是一个更好的应用程序设计,是将完整的Camel逻辑放入单独的CDI bean中,然后将其注入。

@Named
public class HelloCamel {@Inject@ContextName("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放入正文中,该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插件,可可视化您的上下文和路由。 请记住,它是自动配置的安全性,您需要添加管理用户才能访问它。

AwsDockerReverseProxy

进一步阅读和帮助

  • 在Freenode上与开发人员交谈
  • WildFly-Camel子系统文档
  • GitHub上的WildFly Camel
  • Apache Camel网站

翻译自: https://www.javacodegeeks.com/2015/07/using-camel-routes-in-java-ee-components.html

java ee各类组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5gnr帧结构特点有哪些_真空离子束刻蚀设备的结构特点有哪些

离子束刻蚀设备有立式、卧式两种结构。通常情况下,该设备以卧式的结构居多,因为采用卧式结构的话,离子源发出的离子束为水平喷射方向,大部分的刻蚀溅射物将落在真空室的底部,可在一定程度上将溅射材料的重新沉积减少。…

老了就不能编程?大龄程序员在线“辟谣”:15 年后,我变得更好了

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删几年前,Quora 上的一个提问在程序员圈内掀起热议:“随着年龄的增长,人们会对编程失去兴趣吗?预计…

wildfly管理控制台_WildFly管理控制台已更新–请求反馈

wildfly管理控制台红帽JBoss企业应用程序平台(EAP)和WildFly具有共生关系 。 简而言之,红帽JBoss企业应用程序平台(JBoss EAP)保留了WildFly社区项目(以前称为JBoss Application Server)的所有创…

linux 的ip 设置lo_Linux服务器设置静态IP的方法

这里以CentOS 7系列为例设置静态IP,原来RedHat系列的Linux发行版可以通过setup工具方便的设置静态IP,但是在版本7之后setup工具的功能就逐渐减弱了,所以这时候采用修改配置文件的方式来设置静态IP,方法如下:首先注意&a…

性能测试中脚本怎么写_脚本在流程中的性能影响

性能测试中脚本怎么写我们经常看到人们出于各种目的而使用脚本(例如,在服务任务,执行侦听器等中)。 使用脚本和Java逻辑通常很有意义: 它不需要打包到jar中并放在classpath上 它使流程定义更易于理解:无需…

vscode 调试参数_如何通过vscode运行调试javascript代码

初次正式要写 javascript 相关的代码,想要用 vscode 直接编译 js 代码,但是发现没有那么简单,需要配置好 launch.json 文件,现已经在vscode上编译过去并且可以调试 javascript 代码,总结了两种方法,分享给大家.方法一: 在 js 后缀文件中写 javascript 代码.1. 环境配置:(1). 需…

超炫酷的C语言技巧

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单,并且仍然有一些非常…

java8默认垃圾收集器_Java 8中最快的垃圾收集器是什么?

java8默认垃圾收集器OpenJDK 8具有几种垃圾收集器算法,例如Parallel GC , CMS和G1 。 哪一个最快? 如果默认GC从Java 8中的并行GC更改为Java 9中的G1(当前建议),将会发生什么? 让我们对其进行基…

u盘启动 联想一体机_联想Y430pAT-ISE(H)U盘安装Win7系统教程

最近听到有人在问联想Y430pAT-ISE(H)笔记本安装WIN 7系统的方法,联想Y430pAT-ISE(H)笔记本从发行到现在也快5年了,不过有人在问该电脑安装系统就说明有人还在使用,关于联想Y430pAT-ISE(H)安装Win 7系统的方法有很多,不过大多过时了…

收藏|C语言常用的一些转换工具函数!

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删1、字符串转十六进制代码实现&#xff1a;void StrToHex(char *pbDest, char *pbSrc, int nLen) {char h1,h2;char s1,s2;int i;for (i0; i<n…

jit编译_意外分配– JIT编译抖动

jit编译在研究ByteWatcher时 &#xff08;请参阅我的上一篇 文章 &#xff09;&#xff0c;我遇到了一些非常奇怪的事情。 这是实际的代码段&#xff0c;用于找出特定线程上的分配量&#xff1a; return (long) mBeanServer.invoke(name,GET_THREAD_ALLOCATED_BYTES,PARAMS,S…

网页设计图片向上浮动_利用js实现图片在浏览器中飘动(浮动窗口自由移动)效果...

首先&#xff0c;设置一个将要飘动的窗口&#xff0c;html代码如下:利用js控制span标签在浏览器内移动var xPos 0;var yPos 0; var step 1;var delay 10;var height 0;var Hoffset 0;var Woffset 0; var yon 0;var xon 0; var xon 0; var interval;var img document…

apache camel_学习Apache Camel –实时索引推文

apache camel在大多数软件开发项目中&#xff0c;有一点需要使应用程序开始与其他应用程序或第三方组件通信。 无论是发送电子邮件通知&#xff0c;调用外部api&#xff0c;写入文件还是将数据从一个地方迁移到另一个地方&#xff0c;您都可以推出自己的解决方案或利用现有框架…

让你不再害怕指针——C指针详解(经典,非常详细)

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删前言:复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型…

dubbo单元测试调用_使用LocalTestServer对HTTP调用进行单元测试

dubbo单元测试调用有时候&#xff0c;您正在对远程服务器进行HTTP调用的单元测试代码。 您可能正在使用诸如ApachesHttpClient或Spring的RestTemplate之类的库。 当然&#xff0c;您不想依靠远程服务进行单元测试。 除了涉及的开销&#xff08;请记住单元测试应该是快速的&…

C语言实现可写入文件的账号密码登录系统

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删账号登录系统在很多系统设计时都时必不可少的&#xff0c;今天这个登录系统功能较全&#xff0c;可以注册&#xff0c;登录&#xff0c;找回密码…

复函数图像怎么画_...1等等.只需大致图象,和大致画法(根据原函数就能画出复合函数的...-复函数的图形-数学-禄凡闷同学...

概述&#xff1a;本道作业题是禄凡闷同学的课后练习&#xff0c;分享的知识点是复函数的图形&#xff0c;指导老师为终老师&#xff0c;涉及到的知识点涵盖&#xff1a;...1等等.只需大致图象&#xff0c;和大致画法(根据原函数就能画出复合函数的...-复函数的图形-数学&#x…

rxjava 循环发送事件_使用RxJava和SseEmitter进行服务器发送的事件

rxjava 循环发送事件Spring Framework 4.2 GA即将发布&#xff0c;让我们看一下它提供的一些新功能。 引起我注意的一个事件是一个简单的新类SseEmitter &#xff0c;它是对Spring MVC控制器中容易使用的发送事件的抽象。 SSE是一项技术&#xff0c;可让您在一个HTTP连接内沿一…

一文搞懂 | Linux 内核的 4 大 IO 调度算法

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删Linux 内核包含4个IO调度器&#xff1a;Noop IO schedulerAnticipatory IO schedulerDeadline IO scheduler CFQ IO scheduler。anticipatory, 预…

众神进入瓦尔哈拉_一时冲动:“通往瓦尔哈拉之路的冒险”

众神进入瓦尔哈拉通过所有有关Java 9和Project Jigsaw的讨论&#xff0c;我们不应忽视Java的另一重大变化。 希望在第10版或第11版中&#xff0c; Valhalla项目能够实现并介绍价值类型和专业化。 那么&#xff0c;这是什么一回事&#xff0c;项目进展如何&#xff0c;面临什么…