我知道我可以使用Blueprint语法在独立的xml文件中定义Camel路由。如果我在" deploy"中移动此文件之一ServiceMix的文件夹,它自动成为OSGI包。我的问题是,我可以将端点设置为这个新的捆绑包,可以从外部访问吗?
我想做这样的事情:
blue_route1.xml
<blueprint>
<camelContext>
<route>
<from uri="http:my_servicemix:8181/blue_route1_endpoint" />
<to uri="jetty:http://server1" />
</route>
</camelContext>
</blueprint>
blue_route1在部署后成为OSGI包,但我应该在哪里定义&#34; blue_route1_endpoint&#34; ?它可行吗?
[UPDATE]
夏天,我希望外部WS能够向 blue_route1_endpoint 发送消息,其中 blue_route1 包将根据Camel路由重定向消息,而无需创建一个新的WS&#34; Blue_route1 &#34;在ServiceMix中部署 ______________________
| ____________ |
external-->(blue_route1_endpoint)==|==-->|blue_route1|--|-->(http://server1)
WS | |___________| |
|____________________|
ServiceMix
答案 0 :(得分:0)
在ServiceMix中安装camel-jetty组件
features:install camel-jetty
使用Blueprint在blue_route1.xml文件中编写camel-route
<?xml version="1.0" encoding="UTF-8"?>
<blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri:="jetty:http:my_servicemix:8181/blue_route1_endpoint">
<to uri="http://localhost:8080/user/services/user?bridgeEndpoint=true&throwExceptionOnFailure=false"/>
</route>
<route>
<from uri="jetty:http://0.0.0.0:6969/sp_role?matchOnUriPrefix=true"/>
<setHeader headerName="Content-Type">
<groovy>"text/xml; charset=utf-8"</groovy>
</setHeader>
<to uri="http://server1"/>
</route>
</camelContext>
</blueprint>
我使用随机端口8181来监听...但我可以选择每个号码,ServiceMix会自动启动一个码头组件,在该端口/端点上监听和消费。
答案 1 :(得分:0)
对于SOAP消息,您需要{webervice的CXF Component和wsdl文件。您可以在camelContext之外配置端点,如下所示:
<cxf:cxfEndpoint id="yourId" address="/your/address/to/endpoint"
serviceClass="your.java.ServiceClass"
wsdlURL="path/to/your/wsdl/file.wsdl" />
在你的路线中使用这样的标签:
<from uri="cxf:bean:yourId"/>
您需要将命名空间和schemaLocation添加到您的蓝图以使用cxf命名空间,请使用:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd
http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">