camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antonin Stefanutti <anto...@stefanutti.fr>
Subject Re: How to use cdi annotation to reference shared netty server in karaf?
Date Fri, 06 May 2016 13:56:25 GMT
Hi Leon,

In order to get the NettySharedHttpServer service exposed as a named bean in your Java DSL
bundle, you could do:

@ContextName("sample") 
public class SampleRoute extends RouteBuilder { 

  @Inject
  @OsgiService
  private NettySharedHttpServer server;

  @Produces
  @Named("sharedNettyHttpServer")
  private NettySharedHttpServer server() {
    return server;
  }

  @Override 
  public void configure() { 
    restConfiguration().component("netty4-http").endpointProperty("nettySharedHttpServer",
"#sharedNettyHttpServer"); 
    rest("/say").get("/hello").to("mock:hello"); 
  }
}

That’d be the equivalent of the declaration in blueprint hereafter:

 <reference id=“sharedNettyHttpServer” interface="org.apache.camel.component.netty.http.NettySharedHttpServer”/>

I’ve updated the Netty HTTP example accordingly:

https://github.com/apache/camel/blob/62ac1a9ef9c8f61754de2450303023ee165edabf/examples/camel-example-netty-http/myapp-cdi/src/main/java/org/apache/camel/example/netty/cdi/NettyHttpRoute.java#L31-L39

And tested it successfully with Camel 2.17.0 and Karaf 2.4.4.

Let us know if you need further assistance.

Antonin

> On 05 May 2016, at 18:13, leon <itsmrchang@gmail.com> wrote:
> 
> Hi guys,
> 
> I just followed this example
> (http://camel.apache.org/netty-http-server-example.html) and successfully
> deployed a shared netty http server to apache karaf. But I could not figure
> out how to reference this shared netty http server in my Rest Java DSL route
> file. Here is my route file:
> 
> import javax.inject.Inject;
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.cdi.ContextName;
> import org.apache.camel.component.netty4.http.NettySharedHttpServer;
> import org.ops4j.pax.cdi.api.OsgiService;
> 
> @ContextName("sample")
> public class SampleRoute extends RouteBuilder {
> 
>  @Inject @OsgiService
>  private NettySharedHttpServer server;
> 
>  @Override
>  public void configure() {
> 
> restConfiguration().component("netty4-http").endpointProperty("nettySharedHttpServer",
> "#WHAT_IS_THIS_ID");
>    rest("/say").get("/hello").to("mock:hello");
>  }
> 
> }
> 
> I wonder to know if I inject netty shared http server into my route file
> like above sample code instead of using OSGi blueprint, what is the id of
> netty shared http server? Must I use blueprint xml configuration file? Could
> someone shed some light on this please? Thanks in advance!
> 
> Leon
> 
> 
> 
> --
> View this message in context: http://camel.465427.n5.nabble.com/How-to-use-cdi-annotation-to-reference-shared-netty-server-in-karaf-tp5782250.html
> Sent from the Camel - Users mailing list archive at Nabble.com.

Mime
View raw message