apache camel

REST是一种用于组织资源的体系结构样式,当应用于基于HTTP的服务时,REST可以构建无状态,分离的可伸缩服务。 HTTP方法,HTTP标头和mime类型都允许开发人员实现REST样式。 诸如Jersey和Fuse Services Framework(Apache CXF)之类的框架可用于加速服务的开发和部署,以尝试实现RESTful风格,在本博文中,我想讨论如何构建资源的后端依赖于Fuse中介路由器(也称为Apache Camel)提供的集成。

顺便说一句,对于那些想知道您的体系结构是否确实是RESTful还是REST试图缓解的高度耦合的RPC样式的人来说,我藏在书签凹槽中的链接可能会引起您的兴趣。 关于REST撰写论文的Roy Fielding积极主张资源表示中的超链接对于REST风格必不可少的观点,甚至进一步阐明了实现REST的不确定性。

该示例的源代码可以在我的github存储库中找到

Fuse中介路由器是FuseSource的企业级硬化版Apache Camel,提供了舒适的DSL,用于描述集成,中介和路由。 它是免费的开放源代码,并具有Apache许可证。 对于那些不熟悉Mediation Router / Camel的人,请看DZone企业集成区Apache Camel:Integration Nirvana的 Jon Anstey( Camel in Action的合著者)的介绍。

我们将使用中介路由器来帮助在REST端点和文件系统上的资源文件之间编写简单的集成。 我将使用camel-cxfrs组件公开REST端点,并将使用camel-file组件读取文件系统上的目录。 该样本的目的是描述必要的配置,以通过中介路由器公开REST接口,以某种方式与后端集成,将数据转换为适当的REST响应并发送回该响应。

首先,让我们集中讨论如何设置REST端点。 为此,您将创建一个JAX-RS资源,该资源描述将用作REST端点的java方法。 此示例代码要求熟悉RESTful Web服务 (又名JAX-RS)的Java API 。 对于那些不熟悉的人,这里有一些不错的教程,可以帮助您理解JAX-RS。

@Path("/customerservice/")
public class CustomerServiceResource {// NOTE: The instance member variables will not be available to the
// Camel Exchange. They must be used as method parameters for them to
// be made available
@Context
private UriInfo uriInfo;public CustomerServiceResource() {
}@GET
@Path("/customers/{id}/")
@Produces("text/xml")
public Customer getCustomer(@PathParam("id") String id) {return null;
}@PUT
@Path("/customers/")
public Response updateCustomer(Customer customer) {return null;
}}

如您所见,注释是JAX-RS注释,用于描述REST端点所涉及的操作,HTTP方法和mime类型。 注意,返回值全为空,因为此类实际上将不会用于处理进入端点的请求。 中介路由器路由将负责处理和响应。 但是请注意,实例成员不可用于中介路由器交换,即,通过JAX-RS @Context注释注入的任何实例成员将不可用。 要使它们可用,请将它们作为参数添加到您的方法中。

可以使用以下两种方法之一来声明使用中介路由器的CXF-RS端点:直接在端点配置中,如下所示:

from("cxfrs://http://localhost:9090/route?resourceClasses=com.fusesource.samples.CustomerServiceResource")

直接在配置中创建它需要较少的xml配置,但灵活性有限。 另一个选择是创建一个负责端点的单独的bean,然后在端点配置中引用它:

from("cxfrs:bean:rsServer")

Bean rsServer应该在骆驼上下文中定义。 例如:

<cxf:rsServer id="rsServer" address="http://localhost:9090/route"serviceClass="com.fusesource.samples.CustomerServiceResource"/>

这种方法允许您解耦端点配置,并允许端点配置更快,更省力。 尽管使用了第一个选项,但两个选项都显示在示例代码中。

这就是使用中介路由器公开REST端点所需的全部配置。 很简单。 下一步是根据来自REST端点的内容使用文件系统中的文件。 该文件的内容将返回给REST调用的客户端。 为此,我们使用骆驼文件组件,并通过DSL中的pollEnrich调用丰富Exchange:

.setHeader(Exchange.FILE_NAME, simple("test-${body}.xml"))
.pollEnrich("file:src/data?noop=true", 1000, new CustomerEnricher())

我们不能在pollEnrich调用中使用任何动态表达式,因此我们在进行扩展之前设置文件组件可以理解的标头。 在这种情况下,REST消息的主体是可用于对文件系统资源进行模板化的标识符。

最后,我们可以对路线进行一些附加处理:

.process(new CustomerServiceProcessor())

如上所述,该示例的目的是显示如何配置终结点并将其附加到进一步的中介路由器处理中。 请注意,REST端点的消息交换模式(MEP)为InOut并期望响应。 该示例并不意味着是完整的端到端解决方案,因为该解决方案将根据预期的功能而有所不同。 请注意上面有关Roy关于什么是REST和不是REST 的讨论的链接。

如果我遗漏了一些内容,或者您​​需要对示例进行更多说明,请给我评论,我们可以进行讨论。

参考: Christian Posta软件博客上的REST端点,用于使用我们的JCG合作伙伴 Christian Posta的Apache Camel进行集成 。

翻译自: https://www.javacodegeeks.com/2012/05/rest-endpoint-for-integration-using.html

apache camel

apache camel_REST端点,可使用Apache Camel进行集成相关推荐

  1. REST端点,可使用Apache Camel进行集成

    REST是一种用于组织资源的体系结构样式,当应用于基于HTTP的服务时,REST可以构建无状态的,解耦的,可伸缩的服务. HTTP方法,HTTP标头和mime类型都允许开发人员实现REST样式. 诸如 ...

  2. 【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk

    Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk httpd版本: httpd-2.4.17 jk版本: tomcat-connectors-1.2.41 参考 ...

  3. Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动、停止、重新启动...

    Atitit.   软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动.停止.重新启动 能够通过"netstat  ...

  4. linux apache 文件服务器,Linux下搭建Apache服务器全过程详解

    什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件) ...

  5. apache 隐藏php版本,PHP+Apache环境中怎么隐藏Apache版本

    PHP+Apache环境中怎么隐藏Apache版本 发布时间:2021-02-08 09:57:43 来源:亿速云 阅读:104 作者:小新 小编给大家分享一下PHP+Apache环境中怎么隐藏Apa ...

  6. Hive启动报错org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeE...

    Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExce ...

  7. 祝贺!两位 Apache Flink PMC 喜提 Apache Member

    摘要:近期 Apache 软件基金会(以下简称 ASF )举行了一年一度的董事会选举会议,两位 Apache Flink PMC 当选为 2020 年 ASF 新成员,即 Apache Member. ...

  8. linux下安装配置apache+php,linux下安装apache与php;Apache+PHP+MySQL配置攻略

    linux下安装apache与php;Apache+PHP+MySQL配置攻略 时间:2019-10-09 20:04 1.apache 在如下页面下载apache的for Linux 的源码包 ht ...

  9. pom文件报错,错误如下:(org.apache.maven.project.MavenProject,org.apache.maven.archiver.MavenArchiveConfigurat

    导入新项目时,pom文件报错,错误如下: org.apache.maven.archiver.MavenArchiver.getManifest (org.apache.maven.project.M ...

最新文章

  1. 图神经网络:方法与应用 | 一文展望,四大待解问题
  2. HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out的解决方法
  3. 区块链BaaS云服务(21)腾讯CCGP“治理链”
  4. JavaScript + Thymeleaf + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十八)模板脚本
  5. python统计窗口函数怎么处理_python时间序列:移动窗口函数前篇
  6. 想调试Angular框架的@HostBinding,应该在哪里设置断点
  7. jsp输出所有请求头的名称
  8. 当自动化遇见数字化——德资企业儒拉玛特的数字化实践
  9. PMOS 和 NMOS区别
  10. java1234 webservice 第4 课 拦截器
  11. 2018杭电多校第六场1009(DFS,思维)
  12. JSP九大内置对象总结
  13. 背景图片轮播html代码,一款常见的背景图片轮播动效
  14. Unity全新的版本发布计划(2018)【转自游戏蛮牛】
  15. 进阶篇:3.1)注塑件设计
  16. Java线程的死锁和活锁
  17. [巩固培元]Python文件操作案例——用户登录
  18. Cobar分布式关系数据库访问代理
  19. 头条 | 全国首家导航定位高精度软件与算法联合实验室成立
  20. 【Unity3D】UGUI概述

热门文章

  1. 2017派卧底去阿里、京东、美团、滴滴带回来的面试题
  2. 装饰器模式(讲解+应用)
  3. win10操作技巧介绍,很实用!
  4. 《走遍中国》珍藏版(四)
  5. jquery给轮播图的第一张设置class样式
  6. php 错误提示开启,php开启与关闭错误提示,php开启错误提示_PHP教程
  7. HttpServletRequest中getAttribute()和getParameter()的区别
  8. 登录系统 提示框_实物资产管理软件操作手册(职员和系统用户)
  9. java数据库编程——执行查询操作(一)
  10. maven原型_创建自定义Maven原型