users@jersey.java.net

Re: [Jersey] Re: NullPointerException

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Fri, 23 Oct 2009 20:58:33 +0200

Hi,

The issue is you are instantiating BaseDAOImpl yourself using "new".
Stateless Session Beans are instantiated and managed by the EJB
container and you get references to them using injection or JNDI. That
is why the emf field is null.

I also presume you want to use EJB 3.1 and EJBs in the war using the
latest GlassFish?

If so you can do:

public class BaseDAO<T> {

     @PersistenceUnit(unitName = "citespacePU")
     public EntityManagerFactory emf;

}

@Stateless
public class CountryDAO extends BaseDAO<Country> {
     ...
}

@Path("/user/")
@ManagedBean
public class UserResource {

     @EJB CountryDAO cdao;

     @GET
     @Produces("text/plain")
     public String registerUser() { ... }


Paul.

On Oct 23, 2009, at 7:29 PM, Roan Brasil Monteiro wrote:

> Ok.
> All are in my src/main/java sourcefolder;
>
> @Stateless
> public class BaseDAOImpl<T> implements BaseDAO<T>{
>
>
> @PersistenceUnit(unitName = "citespacePU")
> public EntityManagerFactory emf;
>
> ...
>
>
> @Remote
> public interface BaseDAO<T> {
> ...
>
>
>
> @Path("/user/")
> public class UserResource {
>
> @GET
> @Produces("text/plain")
>
> public String registerUser(){
>
> BaseDAOImpl<Country> countryDAO = new
> BaseDAOImpl<Country>(emf);
> List<Country> c = countryDAO.listCountry();
> ...
>
> 2009/10/23 Roan Brasil Monteiro <roanbrasil_at_gmail.com>
> Hello,
>
> I got the Bookmark example, it has jersey e JPA integrate, I would
> like to add EJB lib, and I did. My question is, do I need to set up
> the web.xml file? What should I add? Currently my web.xml is like
> bellow. Do I need to configure something else? I am getting
> NullPointerException when I made my BaseDAOImpl with @Stateless
> anotation implementing a @Remote interface BaseDAO and on the
> BaseDAOImpl I am injecting with @PersistenceUnit on
> EntityManagerFactory, but I am getting NullPointerException, can
> someone help me please? P.S.-> My Resource class is calling the
> BaseDAOImpl.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
> ">
> <servlet>
> <servlet-name>Jersey Web Application</servlet-name>
> <servlet-
> class>com.sun.jersey.server.impl.container.servlet.ServletAdaptor</
> servlet-class>
> <init-param>
> <param-name>com.sun.jersey.config.feature.Redirect</
> param-name>
> <param-value>true</param-value>
> </init-param>
> <init-param>
> <param-name>unit:citespacePU</param-name>
> <param-value>persistence/citespace</param-value>
> </init-param>
> <load-on-startup>1</load-on-startup>
> </servlet>
> <servlet-mapping>
> <servlet-name>Jersey Web Application</servlet-name>
> <url-pattern>/resources/*</url-pattern>
> </servlet-mapping>
> <session-config>
> <session-timeout>
> 30
> </session-timeout>
> </session-config>
> <welcome-file-list>
> <welcome-file>
> index.jsp
> </welcome-file>
> </welcome-file-list>
> <persistence-unit-ref>
> <persistence-unit-ref-name>persistence/citespace</
> persistence-unit-ref-name>
> <persistence-unit-name>citespacePU</persistence-unit-name>
> </persistence-unit-ref>
> <resource-ref>
> <res-ref-name>UserTransaction</res-ref-name>
> <res-type>javax.transaction.UserTransaction</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>
> </web-app>
>
>
> --
> Atenciosamente,
>
> Roan Brasil Monteiro
> http://roanbrasil.wordpress.com/
>
>
>
> --
> Atenciosamente,
>
> Roan Brasil Monteiro
> http://roanbrasil.wordpress.com/