我正在看一个关于Servlet的camel示例,它使用这个xml camel定义(camel-context.xml):
<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>
它与uri/hello和/hello一起工作?name=foo。我试图用Java dsl替换xml dsl,如下所示(当Servlet上下文启动时骆驼上下文启动一次,当web应用程序停止时停止):
@WebListener
public class CamelRoutingInitializer implements ServletContextListener {
DefaultCamelContext camctx;
ServletContext ctx;
@Override
public void contextInitialized(ServletContextEvent sce) {
ctx = sce.getServletContext();
RouteBuilder builder = new RouteBuilder() {
/**
*like camel-config.xml but with Java DSL syntax
* @see http://camel.apache.org/java-dsl.html
*/
@Override
public void configure() throws Exception {
from("servlet:camel")
.choice()
.when(header("name").isEqualTo("name"))
.transform(body().append("Hi I am ${sysenv.HOSTNAME}. Hello ${header.name} how are you today? ****"))
.otherwise()
.transform(body().append("Add a name parameter to uri, eg ?name=yourname"));
ctx.log("** Route config ok");
}
};
DefaultCamelContext camctx = new DefaultCamelContext();
try {
camctx.addRoutes(builder);
camctx.start();
System.out.println("** CAMEL STARTED...");
ctx.log("** CAMEL STARTED...");
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
if (camctx!=null && camctx.isStarted()){
try {
camctx.stop();
ctx.log("** CAMEL STOPPED...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果uri是/comale,我会得到“将名称参数添加到uri,例如?name=yourname”,但使用“/comale?name=foo”(而不是“Hi i am xxx Hello foo,你好吗?***”)也会发生同样的情况
Web应用程序同时使用(camel-config.xml和CamelRouting的初始化类)。
谢谢
罗比
我认为您的问题在于行<代码>标题(“名称”)。isEqualTo("name")。它要求头的值等于文字< code >“name”。您应该简单地声明< code>header("name"),就像在xml dsl中一样。
问题内容: 我可以将数组作为url参数传递的最佳方法是什么?我在想这是否可能: 还是这样: 香港专业教育学院阅读示例,但我发现它很混乱: 问题答案: 有一个非常简单的解决方案:。它把您的查询参数作为一个关联数组: 将返回 为您处理所有必需的转义(=> 和=> ),因此此字符串等于。
问题内容: 我有3类调用,和。 在我的课程中,我想要一个这样的方法: 因此,例如,我想: 如何将类名作为参数,并基于该类名从类名创建适当的对象? 问题答案: 使用反射是可能的。这里是给定的className(作为字符串传递)。此类将在内存中搜索(应该已经加载)。 作为字符串传递时要实例化的类的名称应 完全限定
我对JSP/servlets相当陌生,我一直在研究一些东西,它已经工作了一段时间。我有一个名为'telgir.jsp'的jsp,我从这个jsp向一个名为'tel Kayit'的servlet传递一个URL参数。 在LocalHost上运行时JSP页面的一个示例URL: 当我在servlet中接收到参数时,参数发生了变化,因此无法正确地对其进行解码并获得结果。根据我的研究,我意识到“%”符号使我的代
问题内容: 我使用AJAX进行了struts操作,一切都很好,但是Firefox出现了问题,当我将URL中的参数作为请求参数传递给该参数,并且如果该参数最后包含hash(#)符号,则firefox将剥离所有内容在该符号之后,将该参数发送给没有该参数的操作。 例如,如果我在Firefox中通过了test123#abcd,那么我在操作类中仅获得test123,而不是test123#abcd,这对我的要
问题内容: 我尝试发射 可以通过触发参数化的构建来工作,但是问题是没有值传递给构建(即使在作业中设置了令牌,这也很奇怪,我可以在没有它的情况下触发作业)。在jenkins中,该作业具有配置的字符串“ PARAMETER”,带有或不带有某些默认值,但绝不会传递curl启动中的参数。我可能会缺少什么? 问题答案: 我正在使用: 在这里,它就像一种魅力。 注意您粘贴的URL中“ PARAMETER”前面
问题内容: 我需要在ajax请求中将参数传递给服务器。请参见下面的代码。范围:查看范围 没有f:param 托管豆 在这种情况下,方法onCostoBrutoChange()确实会被调用。但是,当我包含f:param时,它不会被调用。请参见下面的代码。 使用f:param 托管豆 无法识别此代码中的错误内容。请指导。 谢谢,Shikha 问题答案: 该只,而不是在输入链接和按钮的工作原理。 如果您