<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.