That looks nicer than what I had :). Great, thanks a lot! Kurt 2012/11/25 Martin Grigorov <mgrigo...@apache.org>: > I don't use Wicket-CDI in my applications so I don't have much experience > with it but I just took a look at the APIs and here is how I would do it: > > CdiContainer.get().getNonContextualManager().inject(this); > > > On Sun, Nov 25, 2012 at 4:59 PM, Kurt Sys <kurt....@gmail.com> wrote: > >> Hey Martin, >> >> Thanks. The init-method of MySession looks now like this: >> -- >> private void init() { >> BeanManager manager = null; >> try { >> manager = (BeanManager) >> InitialContext.doLookup("java:comp/BeanManager"); >> } catch (NamingException e) { >> e.printStackTrace(); >> } >> >> NonContextual.of(MySession.class, manager).inject(this); >> } >> -- >> >> I don't now if this is the proper way of injecting into the session. I >> don't really get how NonContextual works, but so far, this is how I >> understand it: the class-parameter in the 'of'-method defines which >> non-contextual classes can be injected in (managed by) the manager, >> and inject actually makes the instance managed by the container. >> >> And well... there might be an easier way to get the BeanManager, but >> at least, it works now. Should I make BeanManager from MainApp >> accessible so MySession can get it from there, or should I leave it >> like it? >> >> Thanks again, that was pretty easy, >> Kurt >> >> >> 2012/11/25 Martin Grigorov <mgrigo...@apache.org>: >> > Hi, >> > >> > Wicket is a bit inconsistent with its CDI integration. >> > It doesn't use wicket-ioc Injector at all. >> > You have to use NonContextual.of(...).inject(this) instead. >> > >> > >> > On Sun, Nov 25, 2012 at 4:27 PM, Kurt Sys <kurt....@gmail.com> wrote: >> > >> >> Hey all, >> >> I'm trying to get cdi/injection to work with wicket. So far, >> >> everything seems to be allright except for one thing: injecting into a >> >> wicket-websession. Seems logical in some way, since a session is not a >> >> component, so I tried using 'Injector.get().inject(this)', but >> >> apparently, Injector.get() returns null. Injection into components >> >> does work flawlessly (DaoService as well as other components are >> >> injected into HomePage.java). >> >> What am I missing? >> >> >> >> Thanks, >> >> Kurt >> >> >> >> >> >> Mainapp.java >> >> -- >> >> package mypackage; >> >> >> >> import javax.enterprise.inject.spi.BeanManager; >> >> import javax.naming.InitialContext; >> >> import javax.naming.NamingException; >> >> import org.apache.wicket.Application; >> >> import org.apache.wicket.Session; >> >> import org.apache.wicket.cdi.CdiConfiguration; >> >> import org.apache.wicket.protocol.http.WebApplication; >> >> import org.apache.wicket.request.Request; >> >> import org.apache.wicket.request.Response; >> >> >> >> public class MainApp >> >> extends WebApplication { >> >> >> >> public MainApp() { >> >> } >> >> >> >> @Override >> >> public void init() { >> >> super.init(); >> >> >> >> BeanManager manager = null; >> >> try { >> >> manager = (BeanManager) >> >> InitialContext.doLookup("java:comp/BeanManager"); >> >> } catch (NamingException e) { >> >> e.printStackTrace(); >> >> } >> >> new CdiConfiguration(manager).configure(this); >> >> } >> >> >> >> @Override >> >> public void onDestroy() { >> >> } >> >> >> >> public Class<? extends org.apache.wicket.Page> getHomePage() { >> >> return HomePage.class; >> >> } >> >> >> >> @Override >> >> public final Session newSession(Request req, Response res) { >> >> return new MySession(req); >> >> } >> >> } >> >> -- >> >> >> >> MySession.java >> >> -- >> >> package mypackage; >> >> >> >> import javax.inject.Inject; >> >> import org.apache.wicket.Session; >> >> import org.apache.wicket.injection.Injector; >> >> import org.apache.wicket.protocol.http.WebSession; >> >> import org.apache.wicket.request.Request; >> >> >> >> public class MySession >> >> extends WebSession { >> >> >> >> @Inject >> >> DaoService daoService; >> >> >> >> public static MySession get() { >> >> return (MySession) Session.get(); >> >> } >> >> >> >> MySession(Request req) { >> >> super(req); >> >> init(); >> >> } >> >> >> >> private void init() { >> >> Injector.get().inject(this); >> >> } >> >> >> >> private void test() { >> >> daoService.someMethod(); >> >> } >> >> } >> >> -- >> >> I added the private void test-method to test if daoService is null. >> >> However, there is a nullpointerexception earlier, at line >> >> 'Injector.get().inject(this)'. I avoid 'this' in the constructor, so I >> >> put it in a init-method. That keeps the code a little cleaner, I >> >> think. >> >> >> >> DaoService.java: >> >> -- >> >> package mypackage; >> >> >> >> import java.util.List; >> >> import javax.ejb.Stateless; >> >> import javax.persistence.EntityManager; >> >> import javax.persistence.PersistenceContext; >> >> >> >> @Stateless >> >> public class DaoService { >> >> >> >> @PersistenceContext(unitName="testPU") >> >> private EntityManager entityManager; >> >> >> >> public void someMethod() { >> >> } >> >> >> >> [...] >> >> } >> >> -- >> >> Injecting persistencecontext into daoservice does work fine. >> >> >> >> HomePage.java >> >> -- >> >> package mypackage; >> >> >> >> import javax.inject.Inject; >> >> import org.apache.wicket.markup.html.basic.Label >> >> import org.apache.wicket.model.PropertyModel; >> >> >> >> public class HomePage >> >> extends BasePage { >> >> >> >> @Inject >> >> DaoService daoService; >> >> @Inject >> >> Clock clock; >> >> >> >> public HomePage() { >> >> add(new Label("time", new PropertyModel(this, >> >> "clock.time"))); >> >> daoService.someMethod(); >> >> } >> >> } >> >> -- >> >> No nullpointerexception or any other problem here. >> >> >> >> I don't get any issues as long as I don't open the webapp (the >> >> application starts fine). Some logs (line numbers are incorrect: line >> >> number 28 is the one with 'Injector.get()'; I deleted some comments to >> >> keep it a little more readable): >> >> -- >> >> INFO: Server startup in 6005 ms >> >> 25-nov-2012 16:00:59 org.apache.wicket.DefaultExceptionMapper >> internalMap >> >> SEVERE: Unexpected error occurred >> >> java.lang.NullPointerException >> >> at mypackage.MySession.init(MySession.java:28) >> >> at mypackage.MySession.<init>(MySession.java:24) >> >> at mypackage.MainApp.newSession(MainApp.java:45) >> >> at >> >> >> org.apache.wicket.Application.fetchCreateAndSetSession(Application.java:1557) >> >> at org.apache.wicket.Session.get(Session.java:152) >> >> at org.apache.wicket.Restart >> >> [...] >> >> 25-nov-2012 16:00:59 org.apache.wicket.DefaultExceptionMapper map >> >> SEVERE: unexpected exception when handling another exception: null >> >> java.lang.NullPointerException >> >> at mypackage.MySession.init(MySession.java:28) >> >> at mypackage.MySession.<init>(MySession.java:24) >> >> at mypackage.MainApp.newSession(MainApp.java:45) >> >> at >> >> >> org.apache.wicket.Application.fetchCreateAndSetSession(Application.java:1557) >> >> at org.apache.wicket.Session.get(Session.java:152) >> >> at >> >> >> org.apache.wicket.RestartResponseAtInterceptPageException$InterceptData.get(RestartResponseAtInterceptPageException.java:146) >> >> [...] >> >> 25-nov-2012 16:00:59 org.apache.wicket.DefaultExceptionMapper map >> >> SEVERE: unexpected exception when handling another exception: null >> >> java.lang.NullPointerException >> >> at mypackage.MySession.init(MySession.java:28) >> >> at mypackage.MySession.<init>(MySession.java:24) >> >> at mypackage.MainApp.newSession(MainApp.java:45) >> >> at >> >> >> org.apache.wicket.Application.fetchCreateAndSetSession(Application.java:1557) >> >> at org.apache.wicket.Session.get(Session.java:152) >> >> at >> >> >> org.apache.wicket.RestartResponseAtInterceptPageException$InterceptData.get(RestartResponseAtInterceptPageException.java:146) >> >> -- >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> >> >> > >> > >> > -- >> > Martin Grigorov >> > jWeekend >> > Training, Consulting, Development >> > http://jWeekend.com <http://jweekend.com/> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> > > > -- > Martin Grigorov > jWeekend > Training, Consulting, Development > http://jWeekend.com <http://jweekend.com/>
--------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org