您如何使用.war格式的Camel制作Java DSL servlet,使其可以在Tomcat中部署和运行?

问题描述 投票:2回答:1

过去几天,我一直在寻找如何在不了解Tomcat或Camel的情况下执行以下操作,但很惊讶,我没有在此上找到任何好的资源:

[。war文件将被部署到Tomcat中(例如,从Manager App中部署),该文件将接受给定URI /test上的请求,并将该请求转发到运行在localhost:8222/index.php?q=test上的PHP内部服务。 >

我设法通过在camel-archetype-java的顶部构建一个将请求转发到另一个URL的可行示例,路由器看起来像这样:

package camelinaction;

import org.apache.camel.builder.RouteBuilder;

public class MyRouteBuilder extends RouteBuilder {

    public void configure() {
        String targetUrl = "https://another.service.com/api/test";
        from("jetty:http://127.0.0.1:25566/test?matchOnUriPrefix=true")
                .to("jetty:" + targetUrl + "?bridgeEndpoint=true&throwExceptionOnFailure=false");
    }

}

而且我还设法从camel-example-servlet-tomcat示例中创建了一个.war文件,该文件在Camel中并成功地在tomcat中部署。该示例在其项目文件夹中没有任何Java代码,并且基本上只由.xml文件和.html页面组成,当请求tomcat提供的相关servlet路径时,该页面由Camel servlet提供。该项目的基本xml如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
         http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <camelContext xmlns="http://camel.apache.org/schema/spring">

    <route id="helloRoute">
      <!-- incoming requests from the servlet is routed -->
      <from uri="servlet:hello"/>
      <choice>
        <when>
          <!-- is there a header with the key name? -->
          <header>name</header>
          <!-- yes so return back a message to the user -->
          <transform>
            <simple>Hi I am ${sysenv.HOSTNAME}. Hello ${header.name} how are you today?</simple>
          </transform>
        </when>
        <otherwise>
          <!-- if no name parameter then output a syntax to the user -->
          <transform>
            <constant>Add a name parameter to uri, eg ?name=foo</constant>
          </transform>
        </otherwise>
      </choice>
    </route>

  </camelContext>

</beans>

有人将如何结合这两个示例/功能来实现最终目标,即将来自tomcat的请求与骆驼一起转发到另一个端点?

[过去几天,我一直在寻找如何在不了解Tomcat或Camel的情况下执行以下操作,但很惊讶,我没有在此上找到任何好的资源:制作一个.war文件,该文件应为.. 。

java tomcat servlets apache-camel
1个回答
0
投票

由于您已经将该WAR部署在可以处理HTTP的servlet容器中,因此无需使用camel-jetty组件,但可以利用camel-servlet和camel-servlet-listener组件。

© www.soinside.com 2019 - 2024. All rights reserved.