4

RESTWebサービスとして公開したいCamelルートがあります。アプリケーションはWebコンテナ(Jetty / Tomcat)にデプロイされ、SpringはDIやその他の「インフラストラクチャ」にも使用されます。

camel-restletとコンポーネントの両方を調べましたが、どちらもcamel-cxfrsルートをRESTサービスとして公開するためのサポートを提供していますが、別々のサーバーの起動を回避する方法を見つけることができませんでした。私が本当に探しているのは、Spring-WSインバウンドエンドポイントのルートを定義する方法と同様の方法でCamelルートを定義する機能です。

from("restlet://application/user/{id}").to(...)

Webアプリケーションの構成では、要求を受け入れて適切なエンドポイントに転送する必要があります。

トピックに関する十分な情報を見つけることができず、私の要件が非常にエキゾチックであるとは思わないことに、私はかなり驚いたことを認めなければなりません。

4

2 に答える 2

5

この例を参照して くださいhttp://camel.apache.org/cxf-tomcat-example.html

Apache CXFの場合、ホストコンテナであるTomcat/Jettyを利用できるサーブレットトランスポートを使用できます。

また、OSGiを使用している場合は、次の項目を参照してください。http: //camel.apache.org/cxf-example-osgi.html これは、CXFRSで同様に機能するOSGiHTTPサービスでCXFを使用する方法を示しています。

于 2011-04-14T15:54:01.297 に答える
3

これは遅い答えですが、他の人を助けるかもしれません。

Apache Camelは、ホストコンテナ(Tomcat / Jettyなど)を使用してRestletWebサービスを公開することをサポートしているようです。

============== 8 <snip snip ========================

Webアプリケーション内でのRestletサーブレットの使用

Camel 2.8以降で利用可能サーブレットコンテナ内でRestletアプリケーションを構成する方法は3つあり、サブクラス化されたSpringServerServletを使用すると、Restletコンポーネントを挿入することでCamel内で構成できます。サーブレットコンテナ内でRestletサーブレットを使用すると、URI内の相対パスを使用してルートを構成し(ハードコードされた絶対URIの制限を削除)、ホスティングサーブレットコンテナが着信要求を処理できるようになります(個別のサーバープロセスを生成する必要はありません)。新しいポートで)。構成するには、camel-context.xmlに以下を追加します。

<camelContext>
  <route id="RS_RestletDemo">
    <from uri="restlet:/demo/{id}" />
    <transform>
      <simple>Request type : ${header.CamelHttpMethod} and ID : ${header.id}</simple>
    </transform>
  </route> 
</camelContext>



<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>
And add this to your web.xml;
<!-- 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>

その後、展開されたルートにアクセスできるようになります。

http://localhost:8080/mywebapp/rs/demo/1234

where localhost:8080 is the server and port of your servlet container

============== snip snip> 8 ========================

この情報は、2014年1月16日にhttp://camel.apache.org/restlet.htmlの下部にありました。

于 2014-01-16T19:28:45.553 に答える