apache camel

有许多方法可以在Camel中公开HTTP终结点:jetty,tomcat,servlet,cxfrs和restlet。 其中的两个组件– cxfrs和restlet也仅需几行代码即可支持REST语义。 这个简单的示例演示了如何使用camel-restlet和camel-jdbc进行CRUD操作。 四个HTTP动词执行不同的操作,并映射到以下单个URI模板:

  • POST –创建一个新用户: / user
  • GET –请求URI指定的用户的当前状态: / user / {userId}
  • PUT –使用新信息更新给定URI上的用户/ user / {userId}
  • 删除–删除由给定URI标识的用户: / user / {userId}

还有一个/ users URI,它返回所有用户,无论使用哪种HTTP方法。 用Camel创建这样的应用程序很简单。 添加所有必要的依赖项(restlet,spring,jdbc…)之后,配置web.xml来加载Camel上下文:

<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:camel-config.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

并映射Restlet servlet

<servlet><servlet-name>RestletServlet</servlet-name><servlet-class>org.restlet.ext.spring.SpringServerServlet</servlet-class><init-param><param-name>org.restlet.component</param-name><param-value>RestletComponent</param-value></init-param>
</servlet>
<servlet-mapping><servlet-name>RestletServlet</servlet-name><url-pattern>/rs/*</url-pattern>
</servlet-mapping>

在Spring上下文中,还有更多的Restlet和一个内存中的数据源设置代码:

<bean id="RestletComponent" class="org.restlet.Component"/><bean id="RestletComponentService" class="org.apache.camel.component.restlet.RestletComponent"><constructor-arg index="0"><ref bean="RestletComponent"/></constructor-arg></bean><jdbc:embedded-database id="dataSource" type="HSQL"><jdbc:script location="classpath:sql/init.sql"/></jdbc:embedded-database>

完成所有设置后,下一步是创建将处理HTTP请求并执行适当的CRUD操作的骆驼路由。 第一个是createUser路由,该路由仅使用POST请求中的参数执行SQL插入命令,并在响应正文中返回新创建的用户:

<route id="createUser"><from uri="restlet:/user?restletMethod=POST"/><setBody><simple>insert into user(firstName, lastName) values('${header.firstName}','${header.lastName}');  </simple></setBody><to uri="jdbc:dataSource"/><setBody><simple>select * from user ORDER BY id desc LIMIT 1</simple></setBody><to uri="jdbc:dataSource"/>
</route>

“ manipulateUser”路由处理GET,PUT和DELETE HTTP方法,但是根据使用的方法,它执行不同SQL命令:

<route id="manipulateUser"><from uri="restlet:/user/{userId}?restletMethods=GET,PUT,DELETE"/><choice><when><simple>${header.CamelHttpMethod} == 'GET'</simple><setBody><simple>select * from user where id = ${header.userId}</simple></setBody></when><when><simple>${header.CamelHttpMethod} == 'PUT'</simple><setBody><simple>update user set firstName='${header.firstName}', lastName='${header.lastName}' where id = ${header.userId}</simple></setBody></when><when><simple>${header.CamelHttpMethod} == 'DELETE'</simple><setBody><simple>delete from user where id = ${header.userId}</simple></setBody></when><otherwise><stop/></otherwise></choice><to uri="jdbc:dataSource"/>
</route>

列出所有用户的最后一条路线是不言而喻的:

<route id="listUsers"><from uri="restlet:/users"/><setBody><constant>select * from user</constant></setBody><to uri="jdbc:dataSource"/>
</route>

如果您想查看应用程序的运行情况,请从github获取源代码,并通过键入以下命令使用嵌入式maven-jetty插件运行它如果安装了curl,您甚至可以尝试一些快速查询:

要创建用户,请使用firstName和lastName参数发出http POST请求

curl -d 'firstName=test&lastName=user' http://localhost:8080/rs/user/

要更新现有用户,请使用firstName和lastName参数发出http PUT请求

curl -X PUT -d 'firstName=updated&lastName=user' http://localhost:8080/rs/user/2

要检索现有用户,请发出带有userId作为URL一部分的http GET请求

curl -X GET http://localhost:8080/rs/user/2

要删除现有用户,请发出http DELETE请求,并将userId作为URL的一部分

curl -X DELETE http://localhost:8080/rs/user/2

要检索所有现有用户,请向用户url发出http GET请求

curl -X GET http://localhost:8080/rs/users

参考:来自OFBIZian博客的JCG合作伙伴 Bilgin Ibryam的REST with Apache Camel 。

翻译自: https://www.javacodegeeks.com/2013/03/rest-with-apache-camel.html

apache camel

apache camel_REST与Apache Camel相关推荐

  1. apache camel_发掘Apache Camel的力量

    apache camel 最近几年,ESB软件越来越受欢迎. 如果大多数人通常知道什么是ESB,那么他们很少会清楚地了解这种体系结构的不同组件的确切作用. 例如,Apache ServiceMix由三 ...

  2. apache ignite_使用Apache Storm和Apache Ignite进行复杂事件处理(CEP)

    apache ignite 在本文中, "使用Apache Ignite进行高性能内存计算"一书的作者将讨论使用Apache Strom和Apache Ignite进行复杂的事件处 ...

  3. 使用Apache Storm和Apache Ignite进行复杂的事件处理(CEP)

    在本文中, "使用Apache Ignite进行高性能内存计算"一书的作者将讨论使用Apache Strom和Apache Ignite进行复杂的事件处理. 本文的一部分摘自 书 ...

  4. Apache Flink vs Apache Spark——感觉二者是互相抄袭啊 看谁的好就抄过来 Flink支持在runtime中的有环数据流,这样表示机器学习算法更有效而且更有效率...

    Apache Flink是什么 Flink是一款新的大数据处理引擎,目标是统一不同来源的数据处理.这个目标看起来和Spark和类似.没错,Flink也在尝试解决 Spark在解决的问题.这两套系统都在 ...

  5. 用Apache Hadoop和Apache Solr处理和索引医学图像

    原文链接:Processing and Indexing Medical Images With Apache Hadoop and Apache Solr 作者:Justin Kestelyn 译者 ...

  6. 今日直播 | Apache Hudi x Apache Pulsar Meetup线上专场如期而至 大咖齐聚

    简介:Apache Hudi 与 Apache Pulsar 联合 Meetup 线上专场将于2021 年 8 月 30 日(今天) 14:00开启直播,你准备好了吗? Apache Hudi 与 A ...

  7. 腾讯技术直播间 | Apache IoTDB x Apache Pulsar Meetup

    点击下方图片 收看Apache软件基金会两大孵化器项目 Pulsar x IoTDB 分享会全程直播 ???? >>> 活动介绍 <<< Apache Pulsar ...

  8. Apache Kylin VS Apache Doris

    作者: 康凯森 日期: 2018-04-17 分类: OLAP 1 系统架构 1.1 What is Kylin 1.2 What is Doris 2 数据模型 2.1 Kylin的聚合模型 2.2 ...

  9. apache mesos_在Twitter上使用Apache Mesos和Apache Aurora进行资源调度和任务启动

    apache mesos 播客的第23集是与Bill Farner的谈话 Bill解释了Twitter如何使用Apache Mesos和Apache Aurora在硬件上获得更多收益,并通过在整个基础 ...

最新文章

  1. 使用GPIO模拟I2C总线进行通信
  2. x12arima季节调整方法_降低农村生活污水处理设备运营成本的方法
  3. 开源开放 | 中文相对复杂词汇识别数据集RCWI-Dataset(CCKS2021)
  4. Mysql索引数据结构有多个选择,为什么一定要是B+树呢?_面试 (MySQL 索引为啥要选择 B+ 树)
  5. python爬虫入门四:BeautifulSoup库(转)
  6. solr 6.4 mysql_solr6.4.1搜索引擎(2)首次同步mysql数据库
  7. HDU3065 AC自动机
  8. 背包九讲(例题+代码)
  9. 城市空气质量监测系统解决方案
  10. MSProject的使用教程
  11. Status Register ST1 状态寄存器 (28335)
  12. 虚拟同步发电机VSG高/低电压穿越matlab仿真模型
  13. 期货数据保存到excel里面
  14. unity3D地形编辑器—Terrain
  15. Linux修改时间失败的解决办法
  16. uni的numberbox怎么用_模拟器最强BIOS篇,如何使用uni-bios
  17. CCleaner 垃圾文件清理规则 编写指南
  18. MATLAB | 七夕节快到了,还不给朋友安排上这个咕呱小青蛙?
  19. 如何预防H1N1 - 来自医生的忠告
  20. python ip获取位置

热门文章

  1. 深入理解Java ClassLoader及在 JavaAgent 中的应用
  2. 阿里巴巴对Java编程【Mysql】的规约
  3. 写一个算法统计在输入字符串中各个字符出现的频度
  4. 《白鹿原》金句摘抄(五)
  5. Servlet使用适配器模式进行增删改查案例(EmpServiceImpl.java)
  6. cas 登录之后不跳转_图解JWT如何用于单点登录
  7. elasticsearch7常见查询(term、match、bool、filter)
  8. 自定义类加载器(ClassLoader + URLClassLoader)
  9. 关于Object.clone克隆方法的测试
  10. 最小生成树——Kruskal(克鲁斯卡尔)算法