Apache Camel查询字符串通过exec编写脚本

时间:2018-10-03 15:06:42

标签: apache-camel

我是Apache Camel的新手,正在尝试执行在我的系统之一上运行的PHP脚本。我正在重写PHP,并以为我将Apache Camel放在首位。为此,我将apache-servlet和apache-exec脚本一起使用,以下是代码段:

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;

public class apiRoute extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        /* PHP Script execution */
        from("servlet://runPhp?matchOnUriPrefix=false")     
        .transform().simple("${headers.CamelHttpQuery.replaceAll('&','-')}")        
        .to("stream:out")
        .toD("exec:/usr/bin/php?args=/antique/consume_orders.php ${headers.CamelHttpQuery}");
    }
}

当我使用一个查询字符串对象(http://localhost:8080/antiques/api/runphp?order=123)调用webapp时,查询字符串order=123将传递给php脚本并执行它。

当我使用不止一个查询字符串参数(http://localhost:8080/antiques/api/runphp?order=123&type=new调用webapp时,Apache Camel会因错误而摆动。有人可以建议我如何解决这个问题。我曾尝试使用Google搜索,但没有帮助,因此请专家咨询。

错误:

org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: exec:///usr/php/bin/php?args=%2Fantique%2Fconsume_orders.php+order%3D123&type=new due to: Failed to resolve endpoint: exec:///usr/php/bin/php?args=%2Fantique%2Fconsume_orders.php+order%3D123&type=new due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{type=new}]
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:758) ~[camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:80) ~[camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.util.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:91) ~[camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.SendDynamicProcessor.resolveEndpoint(SendDynamicProcessor.java:239) ~[camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:134) ~[camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:181) ~[camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) [camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) [camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) [camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97) [camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.http.common.CamelServlet.doService(CamelServlet.java:208) [camel-http-common-2.22.1.jar:2.22.1]
at org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:78) [camel-http-common-2.22.1.jar:2.22.1]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.5]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.5]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.5]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.5]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.5]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:185) [catalina.jar:9.0.5]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.5]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) [catalina.jar:9.0.5]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [catalina.jar:9.0.5]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651) [catalina.jar:9.0.5]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:9.0.5]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [catalina.jar:9.0.5]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:409) [tomcat-coyote.jar:9.0.5]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.5]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754) [tomcat-coyote.jar:9.0.5]
at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1728) [tomcat-coyote.jar:9.0.5]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.5]
at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1007) [tomcat-coyote.jar:9.0.5]
at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$4.completed(Nio2Endpoint.java:540) [tomcat-coyote.jar:9.0.5]
at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$4.completed(Nio2Endpoint.java:518) [tomcat-coyote.jar:9.0.5]
at org.apache.tomcat.util.net.SecureNio2Channel$1.completed(SecureNio2Channel.java:918) [tomcat-coyote.jar:9.0.5]
at org.apache.tomcat.util.net.SecureNio2Channel$1.completed(SecureNio2Channel.java:851) [tomcat-coyote.jar:9.0.5]
at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) [?:1.8.0_161]
at sun.nio.ch.Invoker$2.run(Invoker.java:218) [?:1.8.0_161]
at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) [?:1.8.0_161]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_161]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_161]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.5]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: exec:///usr/php/bin/php?args=%2Fantique%2Fconsume_orders.php+order%3D123&type=new due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{type=new}]
at org.apache.camel.impl.DefaultComponent.validateParameters(DefaultComponent.java:215) ~[camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:139) ~[camel-core-2.22.1.jar:2.22.1]
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:711) ~[camel-core-2.22.1.jar:2.22.1]
... 43 more

0 个答案:

没有答案