Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 驼峰码头组件,自定义标题过滤器策略_Java_Jetty_Apache Camel - Fatal编程技术网

Java 驼峰码头组件,自定义标题过滤器策略

Java 驼峰码头组件,自定义标题过滤器策略,java,jetty,apache-camel,Java,Jetty,Apache Camel,我使用camel框架处理jetty组件 我有两个问题: 1) 我处理大消息(大约1mb),jetty组件将消息体读入camel交换头。它会导致以下错误: WARN header full: java.lang.RuntimeException: Header>6144 那个么,我怎样才能使jetty组件不将HttpRequest主体放入头中呢 2) 当我试图覆盖默认的HeaderFilterStrategy时,我编写了这样一段代码: SimpleRegistry registry =

我使用camel框架处理jetty组件

我有两个问题:

1) 我处理大消息(大约1mb),jetty组件将消息体读入camel交换头。它会导致以下错误:

WARN  header full: java.lang.RuntimeException: Header>6144
那个么,我怎样才能使jetty组件不将HttpRequest主体放入头中呢

2) 当我试图覆盖默认的HeaderFilterStrategy时,我编写了这样一段代码:

SimpleRegistry registry = new SimpleRegistry();
CamelContext context = new DefaultCamelContext(registry);

HeaderFilterStrategy strategy = new NewHeaderFilterStrategy();

registry.put("str", strategy);
context.addRoutes(new RouteBuilder() {
  public void configure() {

    from("jetty:http://my.host:32278/general-nr/notify?headerFilterStrategy=str")
    .....
});
它造成了这样的例外:

Exception in thread "main" org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route[[From[jetty:http://my.host:32278/general-nr/notify?hea... because of Failed to resolve endpoint: jetty://http://my.host:32278/general-nr/notify?headerFilterStrategy=str due to: Could not find a suitable setter for property: headerFilterStrategy as there isn't a setter method with same type: java.lang.String nor type conversion possible: No type converter available to convert from type: java.lang.String to the required type: org.apache.camel.spi.HeaderFilterStrategy with value str
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:177)
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:722)
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1789)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1575)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1444)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:60)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1412)
at org.apache.camel.example.jmstofile.ElfRouterExample.main(ElfRouterExample.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
原因:org.apache.camel.ResolveEndpointFailedException:未能解析endpoint:jetty://原因:无法为属性:headerFilterStrategy找到合适的setter,因为没有具有相同类型的setter方法:java.lang.String,也不可能进行类型转换:没有可用于从类型:java.lang.String转换为所需类型:org.apache.camel.spi.HeaderFilterStrategy,带值str 位于org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:479) 位于org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:50) 位于org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:187) 位于org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:108) 位于org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:114) 位于org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:72) 位于org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:90) 在org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:857)上 在org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:172)上 ... 还有12个 原因:java.lang.IllegalArgumentException:找不到属性:headerFilterStrategy的合适setter,因为没有相同类型的setter方法:java.lang.String,也不可能进行类型转换:没有类型转换器可用于将类型:java.lang.String转换为所需类型:org.apache.camel.spi.headerFilterStrategy价值链 位于org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:347) 位于org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:367) 位于org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:297) 位于org.apache.camel.util.EndpointHelper.setProperties(EndpointHelper.java:249) 位于org.apache.camel.impl.DefaultComponent.setProperties(DefaultComponent.java:222) 位于org.apache.camel.component.jetty.JettyHttpComponent.createEndpoint(JettyHttpComponent.java:226) 位于org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:91) 位于org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:461) ... 20多

我做错了什么


关于这一点,Evgeny是我发现的唯一一个决定——它是在jetty组件中扩展DefaultHttpBinding类,并重写populateRequestParameters()方法,JettyComponent在该方法中从HttpMessage填充HttpServletRequest


您好,叶甫盖尼

我知道现在有点晚了,但还是有用的。如果要传递对组件属性的引用,应在其名称前面加上#,如-?headerFilterStrategy=#refName