You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Kurt Sys <ku...@gmail.com> on 2012/11/25 16:27:49 UTC

Injector.get() in websession returns null

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-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Injector.get() in websession returns null

Posted by Martin Grigorov <mg...@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 <ku...@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 <mg...@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 <ku...@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-unsubscribe@wicket.apache.org
> >> For additional commands, e-mail: users-help@wicket.apache.org
> >>
> >>
> >
> >
> > --
> > Martin Grigorov
> > jWeekend
> > Training, Consulting, Development
> > http://jWeekend.com <http://jweekend.com/>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>


-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>

Re: Injector.get() in websession returns null

Posted by Kurt Sys <ku...@gmail.com>.
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 <mg...@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 <ku...@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-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com <http://jweekend.com/>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Injector.get() in websession returns null

Posted by Martin Grigorov <mg...@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 <ku...@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-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>


-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>