<HTML><BODY>Hi all,<br><br>I found out that in order to control instance creating in Grizzly it is necessary<br>to override some methods in WebappContext. So I created these two classes:<br><a href="https://github.com/PavelKastornyy/weld-core/tree/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/grizzly" rel=" noopener noreferrer" target="_blank" data-snippet-id="c8edd021-f1d5-790f-1e00-fe0cdb34d0b9" data-mce-href="https://github.com/PavelKastornyy/weld-core/tree/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/grizzly">https://github.com/PavelKastornyy/weld-core/tree/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/grizzly</a> <br>However, objects are not injected in servlets as expected. Could anyone of Weld developers comment my code?<br><br>Best regards, Alex<br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Понедельник, 21 мая 2018, 17:49 +03:00 от Martin Kouba <mkouba@redhat.com>:<br>
        <br>
        <div id="">
<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base target="_self" href="https://e.mail.ru/">
                
<div id="style_15269141780000000879_BODY">Dne 21.5.2018 v 16:44 Alex Sviridov napsal(a):<br>
> Hi Martin,<br>
> <br>
> Thank you for your answer. I implemented half of container -<br>
> <a href="https://github.com/PashaTurok/core/blob/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/grizzly/GrizzlyContainer.java" target="_blank">https://github.com/PashaTurok/core/blob/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/grizzly/GrizzlyContainer.java</a> <br>
> <br>
> and changed WeldServletLifecycle <br>
> <a href="https://github.com/PashaTurok/core/blob/20398c204f4e24d2a6f1c1ea3bc1d9381ff8f25f/environments/servlet/core/src/main/java/org/jboss/weld/environment/servlet/WeldServletLifecycle.java#L363" target="_blank">https://github.com/PashaTurok/core/blob/20398c204f4e24d2a6f1c1ea3bc1d9381ff8f25f/environments/servlet/core/src/main/java/org/jboss/weld/environment/servlet/WeldServletLifecycle.java#L363</a> <br>
> <br>
> <br>
> To use my Context I do:<br>
> WebappContext webContext = new WebappContext("WebappContext", "");<br>
> Listener listener = new Listener();<br>
> webContext.addListener(listener);<br>
> webContext.deploy(server);<br>
> <br>
> to add some servlet/filter to Grizzly WITHOUT CDI I do :<br>
> ServletRegistration registration = <br>
> webContext.addServlet("ServletContainer", (Class<Servlet>) <br>
> Class.forName("org.temp.TestServlet"));<br>
> registration.addMapping("/");<br>
> <br>
> I've looked through undertow WeldServletExtension but can't understand <br>
> when and where this extension is called.<br>
<br>
In undertow an extension is a service provider of <br>
io.undertow.servlet.ServletExtension, loaded automatically during <br>
startup (see also java.util.ServiceLoader). You need to find out how and <br>
where Grizzly allows to customize the instantiation/injection of <br>
components.<br>
<br>
> As I understand I need to make Grizzly webContext use CDI, so I need to <br>
> make some factory for every<br>
> servlet/filter/listener that will create instances of them using <br>
> BeanManager and make Grizzly to use<br>
> these factories. But where is the point where these factories will be <br>
> used? Could you show me the direction?<br>
> <br>
> Best regards, Alex<br>
> <br>
> Понедельник, 21 мая 2018, 15:23 +03:00 от Martin Kouba<br>
> <<a href="mailto:mkouba@redhat.com">mkouba@redhat.com</a>>:<br>
> <br>
> Hi Alex,<br>
> <br>
> do you have some publicly available project so that we can discuss a<br>
> real code?<br>
> <br>
> In general, if you want to integrate Weld servlet with a custom servlet<br>
> container:<br>
> <br>
> 1. Implement org.jboss.weld.environment.servlet.Container, e.g.<br>
> GrizzlyContainer<br>
> - Container#touch() should return true if a specific container is<br>
> detected<br>
> - Container#initialize() and Container#destroy() can be used to<br>
> init/cleanup the container<br>
> - note that ContainerContext#getManager() returns a BeanManager<br>
> which<br>
> could be used later, e.g. for dependency injection; you can also obtain<br>
> a BeanManager from the servlet context - see for example [1]<br>
> <br>
> 2. Implement a container specific "injection support"<br>
> - each servlet container should provide its own SPI - you should<br>
> implement this SPI so that injection into servlets, listeners and<br>
> filters is supported; see for example [2] how undertow support is<br>
> implemented<br>
> <br>
> 3. There is no need to "connect" EnhancedListener in any way. It should<br>
> be registeded automatically. However, if you're trying to run an<br>
> embedded servlet container you will need to register<br>
> org.jboss.weld.environment.servlet.Listener manually.<br>
> <br>
> Martin<br>
> <br>
> <br>
> [1]<br>
> <a href="https://github.com/weld/core/blob/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/undertow/WeldInstanceFactory.java#L56" target="_blank">https://github.com/weld/core/blob/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/undertow/WeldInstanceFactory.java#L56</a><br>
> <br>
> [2]<br>
> <a href="https://github.com/weld/core/blob/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/undertow/WeldServletExtension.java" target="_blank">https://github.com/weld/core/blob/master/environments/servlet/core/src/main/java/org/jboss/weld/environment/undertow/WeldServletExtension.java</a><br>
> <br>
> Dne 18.5.2018 v 19:52 Alex Sviridov napsal(a):<br>
> > Hi all<br>
> ><br>
> > Could anyone explain how to connect WebappContext that implements<br>
> > ServletContext, to<br>
> > Weld servlet env? I've read the code, but still can't understand<br>
> how to<br>
> > connect SomeContainer,<br>
> > that implements servlet.Container, EnhancedListener and Grizzly<br>
> > WebappContext? Could anyone<br>
> > describe main principles how to do it? I would be very thankful.<br>
> ><br>
> > --<br>
> > Best regards, Alex Sviridov<br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > weld-dev mailing list<br>
> > <a href="mailto:weld-dev@lists.jboss.org">weld-dev@lists.jboss.org</a> <mailto:weld-dev@lists.jboss.org><br>
> > <a href="https://lists.jboss.org/mailman/listinfo/weld-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/weld-dev</a><br>
> ><br>
> <br>
> -- <br>
> Martin Kouba<br>
> Senior Software Engineer<br>
> Red Hat, Czech Republic<br>
> <br>
> <br>
> <br>
> -- <br>
> Alex Sviridov<br>
<br>
-- <br>
Martin Kouba<br>
Senior Software Engineer<br>
Red Hat, Czech Republic<br>
</div>
                <base target="_self" href="https://e.mail.ru/">
        </div>
        
</div>
</div>
</blockquote>
<br>
<br>-- <br>Alex Sviridov<br></BODY></HTML>