I’m biased but I would use DS to expose Netty as a service (with factory configurations). I don’t know much about Netty but I’d think the ideal location would be there.
David Jencks > On Dec 27, 2018, at 3:17 PM, Ranx <[email protected]> wrote: > > I've been kicking the tires on Fuse 7 and took at Camel's REST DSL along with > Netty. I've found that Netty as an OSGi service feels very natural and > somehow right for Fuse/OSGi. The question I'm getting to is (1) would it > make sense to create a bundle/factory like PAX JDBC for Netty and (2) what > project would be interested in that? > > While it isn't difficult to set this up in a Blueprint file and export it, > it really feels like a good candidate for the sort of mechanism we have with > PAX JDBC. Just drop in the configuration file and a NettyHttpServer is > configured and exported to the registry. If that configuration is modified, > it is restarted. Different ports and security set ups would be relatively > easy in this case and wouldn't require modification or creation of specific > Blueprint files. > > While I've worked with PAX JDBC and looked at the source, I haven't actually > worked on it or extended it. This would seem extremely useful and easy to > understand but I thought I'd ask to see what others thought. In some ways > this would be simpler than PAX JDBC though it could become a bit more > complex. For example, one might have separate security configurations that > are exported as services that could be shared. > > A bit of the background. Here's a snippet of setting up a server and > exporting it based on a configuration. I'll leave the configuration out > right now but it is a large bean with properties that map well to a .cfg > file. This is now exported to whatever bundle wants to come and go and be > exposed. You could also just instantiate the class and at it via the > addServiceOnStartup method instead. > > > <bean id="httpServer" > class="org.apache.camel.component.netty4.http.DefaultNettySharedHttpServer" > init-method="start" destroy-method="stop"> > <property name="nettyServerBootstrapConfiguration" ref="configuration" > /> > </bean> > > > <service ref="httpServer" > interface="org.apache.camel.component.netty4.http.NettySharedHttpServer" /> > > To use that is relatively simple. In the bundle where you want to use it you > simply grab the reference. > > <reference id="sharedNettyHttpServer" > interface="org.apache.camel.component.netty4.http.NettySharedHttpServer"/> > > > In the Java DSL then you have the following configuration. It indicates to > use the OSGi service which you grabbed in Blueprint as > sharedNettyHttpServer. When the bundle is installed it adds the new REST > endpoints and when uninstalled it removes them. Camel Blueprint Test becomes > very simple in this case as you can just have a test scoped bundle that sets > up a basic 0.0.0.0 and port and the REST DSL is good to go. > > @Override > public void configure() { > restConfiguration().component("netty4-http") > > .endpointProperty("nettySharedHttpServer","#sharedNettyHttpServer") > .bindingMode(RestBindingMode.json); > > > The CBTS just points at your local Blueprint file and because you've listed > the test scoped bundle that exports the OSGi service it works (the > myMockedService is just a Mockito mock of an OSGi service the route is > calling.) > @Test > public void testGetByParticipantID() throws Exception { > SomeModel model = TestDataFactory.createSomeModel(); > //If the id requested matches the model's id, we'll return it. > > when(myMockedService.getByID(model.getSomeID())).thenReturn(model); > //Make sure we're requesting the id that is defined on the data > model via > a REST Get call > //and unmarshal it to a MemberIDModel. > SomeModel id = > doGet(formAddress("foo/id/bar",model.getSomeID()), > SomeModel.class); > > assertNotNull(id); > //The models are not identical as the id model went through > marhsaling/unmarshaling. > assertFalse(id==model); > //The model's data is, however, identical content. > assertEquals(id.toString(),model.toString()); > > } > > > > > > > -- > Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html
