You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by xiangqiuzhao <xi...@gmail.com> on 2012/01/09 09:23:48 UTC

set encoder in netty exception

<bean id="myencoder"
class="org.jboss.netty.handler.codec.string.StringEncoder"/>

my code like:

ApplicationContext appctx =
            new
ClassPathXmlApplicationContext("/org/apache/camel/component/netty/test-codecs.xml");
        Object decoder = appctx.getBean("mydecoder");
        Object encoder = appctx.getBean("myencoder");
        
        SimpleRegistry registry = new SimpleRegistry(); 
        registry.put("myDecoder", decoder); 
        registry.put("myEncoder", encoder); 
        CamelContext context = new DefaultCamelContext(registry);

        context.addRoutes(new RouteBuilder() {
            public void configure() throws Exception {
                from("direct:cpsp")
                .process(new MyToProcessor())
               
.to("netty:tcp://localhost:4096?sync=true&encoder=#myEncoder")
                .process(new MyFromProcessor());
            }
        });
        
        context.start();
        
        Endpoint endpoint = context.getEndpoint("direct:cpsp");
        Exchange exchange = endpoint.createExchange();
        byte[] data = FileUtil.getInputStreamContent(new
FileInputStream("D:/a.xml"));
        
        Producer producer = endpoint.createProducer();
        exchange.getIn().setBody(new String(data).trim());
        producer.process(exchange);
        if (exchange.getException() != null)
            throw exchange.getException();
        
        System.out.println(exchange.getOut().getBody());


but exception with:



Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to
resolve endpoint:
netty://tcp://localhost:4096?encoder=%23myEncoder&sync=true due to: Could
not find a suitable setter for property: encoder 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.jboss.netty.channel.ChannelDownstreamHandler with value
#myEncoder
	at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:450)
	at
org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:47)
	at
org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:180)
	at
org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:110)
	at
org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:116)
	at
org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:61)
	at
org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:55)
	at
org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:410)
	at
org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:181)
	at
org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:812)
	... 9 more
Caused by: java.lang.IllegalArgumentException: Could not find a suitable
setter for property: encoder 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.jboss.netty.channel.ChannelDownstreamHandler with value #myEncoder
	at
org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:341)
	at
org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:291)
	at
org.apache.camel.util.EndpointHelper.setProperties(EndpointHelper.java:225)
	at
org.apache.camel.component.netty.NettyConfiguration.parseURI(NettyConfiguration.java:125)
	at
org.apache.camel.component.netty.NettyComponent.createEndpoint(NettyComponent.java:49)
	at
org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:75)
	at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:432)
	... 18 more

--
View this message in context: http://camel.465427.n5.nabble.com/set-encoder-in-netty-exception-tp5130760p5130760.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: set encoder in netty exception

Posted by xiangqiuzhao <xi...@gmail.com>.
test-codes.xml like :

<beans>
 <bean id="myencoder"
class="org.jboss.netty.handler.codec.string.StringEncoder"/>
</beans>

--
View this message in context: http://camel.465427.n5.nabble.com/set-encoder-in-netty-exception-tp5130760p5131323.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: set encoder in netty exception

Posted by Bilgin Ibryam <bi...@gmail.com>.
All looks correct to me. May be you have a typo somewhere and myencoder is null.

How does your test-codecs.xml looks like?

Bilgin

On 9 January 2012 08:23, xiangqiuzhao <xi...@gmail.com> wrote:
> <bean id="myencoder"
> class="org.jboss.netty.handler.codec.string.StringEncoder"/>
>
> my code like:
>
> ApplicationContext appctx =
>            new
> ClassPathXmlApplicationContext("/org/apache/camel/component/netty/test-codecs.xml");
>        Object decoder = appctx.getBean("mydecoder");
>        Object encoder = appctx.getBean("myencoder");
>
>        SimpleRegistry registry = new SimpleRegistry();
>        registry.put("myDecoder", decoder);
>        registry.put("myEncoder", encoder);
>        CamelContext context = new DefaultCamelContext(registry);
>
>        context.addRoutes(new RouteBuilder() {
>            public void configure() throws Exception {
>                from("direct:cpsp")
>                .process(new MyToProcessor())
>
> .to("netty:tcp://localhost:4096?sync=true&encoder=#myEncoder")
>                .process(new MyFromProcessor());
>            }
>        });
>
>        context.start();
>
>        Endpoint endpoint = context.getEndpoint("direct:cpsp");
>        Exchange exchange = endpoint.createExchange();
>        byte[] data = FileUtil.getInputStreamContent(new
> FileInputStream("D:/a.xml"));
>
>        Producer producer = endpoint.createProducer();
>        exchange.getIn().setBody(new String(data).trim());
>        producer.process(exchange);
>        if (exchange.getException() != null)
>            throw exchange.getException();
>
>        System.out.println(exchange.getOut().getBody());
>
>
> but exception with:
>
>
>
> Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to
> resolve endpoint:
> netty://tcp://localhost:4096?encoder=%23myEncoder&sync=true due to: Could
> not find a suitable setter for property: encoder 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.jboss.netty.channel.ChannelDownstreamHandler with value
> #myEncoder
>        at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:450)
>        at
> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:47)
>        at
> org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:180)
>        at
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:110)
>        at
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:116)
>        at
> org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:61)
>        at
> org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:55)
>        at
> org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:410)
>        at
> org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:181)
>        at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:812)
>        ... 9 more
> Caused by: java.lang.IllegalArgumentException: Could not find a suitable
> setter for property: encoder 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.jboss.netty.channel.ChannelDownstreamHandler with value #myEncoder
>        at
> org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:341)
>        at
> org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:291)
>        at
> org.apache.camel.util.EndpointHelper.setProperties(EndpointHelper.java:225)
>        at
> org.apache.camel.component.netty.NettyConfiguration.parseURI(NettyConfiguration.java:125)
>        at
> org.apache.camel.component.netty.NettyComponent.createEndpoint(NettyComponent.java:49)
>        at
> org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:75)
>        at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:432)
>        ... 18 more
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/set-encoder-in-netty-exception-tp5130760p5130760.html
> Sent from the Camel - Users mailing list archive at Nabble.com.

Re: set encoder in netty exception

Posted by xiangqiuzhao <xi...@gmail.com>.
Camel version is 2.7.2

and run as a java application (main method)  using in eclipse. 

--
View this message in context: http://camel.465427.n5.nabble.com/set-encoder-in-netty-exception-tp5130760p5131372.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: set encoder in netty exception

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

What version of Camel do you use?
And how do you run the app? eg using a maven goal, from Eclipse, or what?


On Mon, Jan 9, 2012 at 9:23 AM, xiangqiuzhao <xi...@gmail.com> wrote:
> <bean id="myencoder"
> class="org.jboss.netty.handler.codec.string.StringEncoder"/>
>
> my code like:
>
> ApplicationContext appctx =
>            new
> ClassPathXmlApplicationContext("/org/apache/camel/component/netty/test-codecs.xml");
>        Object decoder = appctx.getBean("mydecoder");
>        Object encoder = appctx.getBean("myencoder");
>
>        SimpleRegistry registry = new SimpleRegistry();
>        registry.put("myDecoder", decoder);
>        registry.put("myEncoder", encoder);
>        CamelContext context = new DefaultCamelContext(registry);
>
>        context.addRoutes(new RouteBuilder() {
>            public void configure() throws Exception {
>                from("direct:cpsp")
>                .process(new MyToProcessor())
>
> .to("netty:tcp://localhost:4096?sync=true&encoder=#myEncoder")
>                .process(new MyFromProcessor());
>            }
>        });
>
>        context.start();
>
>        Endpoint endpoint = context.getEndpoint("direct:cpsp");
>        Exchange exchange = endpoint.createExchange();
>        byte[] data = FileUtil.getInputStreamContent(new
> FileInputStream("D:/a.xml"));
>
>        Producer producer = endpoint.createProducer();
>        exchange.getIn().setBody(new String(data).trim());
>        producer.process(exchange);
>        if (exchange.getException() != null)
>            throw exchange.getException();
>
>        System.out.println(exchange.getOut().getBody());
>
>
> but exception with:
>
>
>
> Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to
> resolve endpoint:
> netty://tcp://localhost:4096?encoder=%23myEncoder&sync=true due to: Could
> not find a suitable setter for property: encoder 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.jboss.netty.channel.ChannelDownstreamHandler with value
> #myEncoder
>        at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:450)
>        at
> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:47)
>        at
> org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:180)
>        at
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:110)
>        at
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:116)
>        at
> org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:61)
>        at
> org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:55)
>        at
> org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:410)
>        at
> org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:181)
>        at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:812)
>        ... 9 more
> Caused by: java.lang.IllegalArgumentException: Could not find a suitable
> setter for property: encoder 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.jboss.netty.channel.ChannelDownstreamHandler with value #myEncoder
>        at
> org.apache.camel.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:341)
>        at
> org.apache.camel.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:291)
>        at
> org.apache.camel.util.EndpointHelper.setProperties(EndpointHelper.java:225)
>        at
> org.apache.camel.component.netty.NettyConfiguration.parseURI(NettyConfiguration.java:125)
>        at
> org.apache.camel.component.netty.NettyComponent.createEndpoint(NettyComponent.java:49)
>        at
> org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:75)
>        at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:432)
>        ... 18 more
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/set-encoder-in-netty-exception-tp5130760p5130760.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/