Fair enough. It's just so much more elegant to use the annotation. :)
But I didn't know about this alternate method that doesn't require JNDI.
Thank you...
--
Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com |
Facebook.com/LobosStudios | @LobosStudios
Web Development - Mobile Development - Helpdesk/Tech Support - Computer
Sales & Service
Acer Authorized Reseller - Computers, Windows and Android Tablets,
Accessories
Steve Sobol - CEO, Senior Developer and Server Jockey
[email protected]
------ Original Message ------
From: "Mark Struberg" <[email protected]>
To: "openwebbeans-user" <[email protected]>; "Steve Sobol -
Lobos Studios" <[email protected]>
Sent: 6/8/2016 12:02:35 AM
Subject: Re: OWB, Servlets and Jetty 9
Hi Steve!
Welcome to OWB ;)
I didn’t use Jetty for quite a while to be honest.
In my personal view Tomcat 8 is really as fast and small as it gets
(4MB stripped down) and tc-8.5 and tc-9.0 even provide HTTP2 support.
Or course it’s a personal flavour and OWB should work with Jetty and
other servlet containers as well.
Sadly for injecting into Servlets, Listeners and Filters we would need
an even deeper integration. This is chicken-egg problem. With pure
servlet functionality we cannot ‚create‘ parts of the servlet container
itself.
Anyway, there is not much need anymore to do this nor to use JNDI for
the lookup. Just use
YourBean instance = CDI.current().select(YourBean.class).get();
You can even store away the ‚instance‘ in a member field in your
servlet (so you don’t have to look it up for each request). After all
it’s just a proxy anyway, so once the container is started it doesn’t
change anymore.
Probably the best bet is to use the Servlet#init(ServletConfig) method
to resolve the proxy and store it in a member field inside the servlet.
After all the injection into Servlets, Filters, Listeners, etc is not
much different from what this does anyway.
On the benefit side: this solution works on each and every Servlet
container!
If you need this for the EE6 version of OWB (OWB-1.2.x) then plz look
at Apache DeltaSpike BeanProvider [1].
Side note: In case you don’t know it yet then take a look at
DeltaSpike. It contains a lot of great stuff, e.g. the ConfigResolver
stuff, conditional @Exclude, etc
LieGrue,
strub
[1] http://deltaspike.apache.org/documentation/core.html
Am 07.06.2016 um 19:04 schrieb Steve Sobol - Lobos Studios
<[email protected]>:
Hey all,
New to CDI - I'm working on switching my JEE webapps from JSF managed
beans to CDI.
I use Jetty, exclusively, and JSF works fine with Jetty and OWB, but
@Inject in servlets (and presumably elsewhere) does not.
I started out with JBoss Weld, which ships with Jetty 9, but trying
to get Weld working in my IDE was a nightmare and I gave up. (IntelliJ
IDEA Ultimate 2016.2 if anyone cares, but this morning I upgraded to
2016.3)
So as an alternative to getting the bundled CDI functionality to
work, I tried OpenWebBeans instead and now I'm good to go, except that
I can't use DI in the servlets I'm creating.
I have a workaround (query BeanManager through JNDI), so this is not
a life-or-death urgent issue (not even close!) - but it would be nice
if I could get it working. A mailing list search turned up
http://markmail.org/search/?q=servlet+injection+jetty+list%3Aorg.apache.openwebbeans.user+order%3Adate-backward#query:servlet%20injection%20jetty%20list%3Aorg.apache.openwebbeans.user%20order%3Adate-backward+page:2+mid:gzti4hxxl76lqyhf+state:results
That thread states that Jetty 8 is buggy and that the OWB team even
gave up on working with Jetty and switched to Tomcat* - but the thread
is from 2012, and Jetty 8 was EOL'd a while ago.
So my questions are:
** What is the current state of @Inject using OWB and Jetty?
** If it's not working, what would be required to *get* it working?
Weld can do DI into Servlets and Filters in Jetty 7, 8 or 9, and into
Servlet listeners in 9.1.1 or newer. (according to
https://docs.jboss.org/weld/reference/latest/en-US/html/environments.html#_jetty)
But I'd much rather use OWB.
Thanks,
Steve
* OWB and Tomcat are both ASF projects. Weird that y'all didn't use
Tomcat from the start.
--
Lobos Studios | Phone: 877.919.4WEB | LobosStudios.com |
Facebook.com/LobosStudios | @LobosStudios
Web Development - Mobile Development - Helpdesk/Tech Support -
Computer Sales & Service
Acer Authorized Reseller - Computers, Windows and Android Tablets,
Accessories
Steve Sobol - CEO, Senior Developer and Server Jockey
[email protected]