过去几天,我一直在寻找如何在不了解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文件,该文件应为.. 。
由于您已经将该WAR部署在可以处理HTTP的servlet容器中,因此无需使用camel-jetty组件,但可以利用camel-servlet和camel-servlet-listener组件。