具有一个Jetty端点的多个JAXRS Bean

时间:2013-07-18 20:34:31

标签: jetty jax-rs apache-camel blueprint-osgi

任何人都可以帮我配置两个与Apache FUSE ESB具有相同基URI的JAX-RS服务吗?我正在使用带有karaf容器,Apache Camel和CXF(JAX-RS)的JBoss FUSE 6.0版本。配置使用Blueprint完成。当我只配置一个JAX-RS服务时,一切正常。

我正在尝试使用基本URI http://localhost:9001/rs提供两个JAX-RS Bean。第一个bean为http://localhost:9001/rs/rest1,第二个bean为http://locahost:9001/rs/rest2

我已经使用jetty端点定义了两个camel上下文。我想我需要两个只使用一个配置的实例,但无法弄清楚如何做到这一点。

以下是我的Camel Contexts:

<camel:camelContext id="context1">
    <camel:endpoint id="ep1" uri="jetty:http://localhost:9001/rs/?matchOnUriPrefix=true"/>
    <camel:route autoStartup="true">
        <camel:from uri="ep1"/>
        <camel:to uri="cxfbean:restBean1"/>
        <camel:log message="Message received after REST Processor. "/>
        <camel:convertBodyTo type="java.lang.String"/>
        <camel:to uri="log:loggingCategory?level=INFO"/>
    </camel:route>
</camel:camelContext>

<camel:camelContext id="context2">
    <camel:endpoint id="ep2" uri="jetty:http://localhost:9001/rs/?matchOnUriPrefix=true"/>
    <camel:route autoStartup="true">
        <camel:from uri="ep2"/>
        <camel:to uri="cxfbean:restBean2"/>
        <camel:log message="Message received after REST Processor. "/>
        <camel:convertBodyTo type="java.lang.String"/>
        <camel:to uri="log:loggingCategory?level=INFO"/>
    </camel:route>
</camel:camelContext>

两个Bean都作为服务参考注入,当我评论其中一条路线时,一切都有效。

有关如何在camel中配置此内容的任何建议吗?

干杯, 奥利弗

2 个答案:

答案 0 :(得分:1)

2个码头端点应该是唯一的,例如你们两个都有/ rs / 应该可能是

 <camel:endpoint id="ep1" uri="jetty:http://localhost:9001/rs/rest1/?matchOnUriPrefix=true"/>

 <camel:endpoint id="ep2" uri="jetty:http://localhost:9001/rs/rest2/?matchOnUriPrefix=true"/>

答案 1 :(得分:0)

我用两个端点解决了这个问题

<camel:endpoint id="ep1" uri="jetty:http://localhost:9001/rs/rest1/?matchOnUriPrefix=true"/>
<camel:endpoint id="ep2" uri="jetty:http://localhost:9001/rs/rest2/?matchOnUriPrefix=true"/>

REST Bean现在位于@Path("/")。 现在所有REST Bean都有正确的路径。

我需要测试的下一件事是如何将我的两个端点与我的Web应用程序包一起放在同一个URL上。

谢谢!