Apache camel ApacheCamel:我们如何解析Servlet输入的URL路径,然后将其用作SQL输出中的参数
我希望创建一个通用的restful服务来使用Camel执行crud操作,但不使用Restlet,只使用普通的Servlet和SQL组件 我对Camel只熟悉了2天,我无法获取URL部分以便在SQL查询中使用它们 其思想是只使用XML配置。我尝试了许多不同的方法,开始使用javascript。以下是我目前的代码(见下文) 我不知道如何检查url路径,解析它的各个部分,将其放入“消息体”,这应该是SQL查询参数的来源 在这个特定的场景中,它说,“ReferenceError:“response”未定义Apache camel ApacheCamel:我们如何解析Servlet输入的URL路径,然后将其用作SQL输出中的参数,apache-camel,Apache Camel,我希望创建一个通用的restful服务来使用Camel执行crud操作,但不使用Restlet,只使用普通的Servlet和SQL组件 我对Camel只熟悉了2天,我无法获取URL部分以便在SQL查询中使用它们 其思想是只使用XML配置。我尝试了许多不同的方法,开始使用javascript。以下是我目前的代码(见下文) 我不知道如何检查url路径,解析它的各个部分,将其放入“消息体”,这应该是SQL查询参数的来源 在这个特定的场景中,它说,“ReferenceError:“response”未定
$CamelHttpMethod='POST'
更新!!!路径-${header.CamelHttpPath},url-${header.CamelHttpUrl},uri=${header.CamelHttpUri},基本uri=${header.CamelHttpBaeUri}。请求是${header.CamelHttpServletRequest}
$CamelHttpMethod='PUT'
插入
$CamelHttpMethod='DELETE'
删除。。。
不支持的方法${header.CamelHttpMethod}(${header.CamelHttpPath})
为什么CamelHttpPath
与匹配(/\/(\w+)\/(\w*)/)
匹配并写入正文(结果是类型sun.org.mozilla.javascript.internal.NativeArray
)?为什么要测试response.body!=null
这可能导致错误消息?你能举一个例子来说明CamelHttpPath和你期望的结果吗?例如,“/person/2”我想解析出“person”和“2”为什么不使用REST?您是否已经发现了Restlet组件:?我在一个webapp中运行了它,这里他们建议将Spring扩展包含到Restlet中,而它似乎依赖于错误的Spring版本。我使用4.0.4。
<route>
<from uri="servlet:///crud?matchOnUriPrefix=true"/>
<setBody>
<javaScript><![CDATA[
request.headers.get("CamelHttpPath").match(/\/(\w+)\/(\w*)/)
]]></javaScript>
</setBody>
<choice>
<when>
<javaScript><![CDATA[
request.headers.get("CamelHttpMethod") == "GET" &&
response.body != null
]]></javaScript>
<to uri="sql:select * from person where id=2?dataSource=dataSource"></to>
</when>
<when>
<xpath>$CamelHttpMethod = 'POST'</xpath>
<transform>
<simple>Update!!! path - ${header.CamelHttpPath}, url - ${header.CamelHttpUrl}, uri = ${header.CamelHttpUri}, base uri = ${header.CamelHttpBaeUri}. And request is ${header.CamelHttpServletRequest}</simple>
</transform>
</when>
<when>
<xpath>$CamelHttpMethod = 'PUT'</xpath>
<transform>
<simple>Insert</simple>
</transform>
</when>
<when>
<xpath>$CamelHttpMethod = 'DELETE'</xpath>
<transform>
<simple>Delete...</simple>
</transform>
</when>
<otherwise>
<transform>
<simple>Unsupported method ${header.CamelHttpMethod} (${header.CamelHttpPath})</simple>
</transform>
</otherwise>
</choice>
</route>