Estou tendo um problema ao tentar injetar um EJB em um serviço, segue um exemplo de como estou fazendo:
UserService.java
[code]
@Path(value="/user")
public class UserService{
@EJB
private UserDAO dao;
@POST
public Response create(@FormParam(“name”) String name) {
User user = new User(name);
dao.create(user);
Response.ok.build();
}
}[/code]
UserDAO.java
[code]
@Stateless
public class UserDAO{
@PersistenceContext
private EntityManager entityManager;
public void create(User user){
this.entityManager.persist(user);
}
}[/code]
O meu web.xml ficou assim:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>br.com.test.services</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
Na UserService quando tento usar a minha dao, que teoricamente o container deveria injetar, dá um NullPointerException. Indo atrás do problema dei um “print” no objeto “dao” e o mesmo estava nulo.
Já tentei usar outra anotação que era a @Resource, mas também não funciona.
Estou esquecendo de algo? Ou não tem como injetar esse objeto neste serviço?
Estou usando o Glassfish v3.1 com a JDK 6.
Desde já agradeço a ajuda.