Problème avec les Bean Remote JEE
Bonjour à tous,
J'ai décidé de faire une petite application en archi n-tiers et je rencontre un problème qui est récurrent sur le web. Malgré un bon nombre de posts existant sur le web, je crois ne pas encore avoir trouvé la solution... Pour info, j'utilise JBOSS AS 7.1.1 et JAVA 1.7.
L'application se divise en 3 projets: projet jpa, projet business et projet web.
Voici un exemple de classe JPA que j'utilise:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @Entity
@NamedQuery(name="Stream.findAll", query="SELECT s FROM Stream s")
public class Stream implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="id_stream")
private int idStream;
private String description;
private String name;
public Stream() {
}
...
} |
J'ai mes classes dite business qui s'occupe du traitement métier. Ce sont des Beans qui manipule Les classes JPA par le biais du fameux Entity Manager.
Voici l'interface:
Code:
1 2 3 4 5
| @Remote
public interface StreamServiceRemote {
public List<Stream> getHomeStreams();
} |
Voici la classe implémentant l'interface:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @Stateless(name="StreamService")
public class StreamService implements StreamServiceRemote {
@PersistenceContext(unitName="jpa")
EntityManager em;
public StreamService() {
}
public List<Stream> getHomeStreams() {
Query q = em.createQuery("SELECT s FROM "+Stream.class.getName()+" s");
List<Stream> results = (List<Stream>) q.getResultList();
return results;
}
} |
La problématique vient de mon projet Jax-RS qui n'injecte pas correctement mon Bean à l'aide de l'annotation @EJB.
Voici un exemple d'injection:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @Stateless
@Path("home")
public class HomeController {
@EJB
private StreamServiceRemote streamService;
@GET
@Path("")
public Viewable index(@Context HttpServletRequest request, @Context HttpServletResponse response) {
List<Stream> listStream = streamService.getHomeStreams();
request.setAttribute("listStream", listStream);
return new Viewable("/home", null);
}
} |
A savoir que quand je lance mon serveur jboss, je n'ai pas d'erreur apparente et les EJB sont bien pris en compte:
Code:
1 2 3 4 5 6 7 8 9
| 11:29:06,431 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named StreamService in deployment unit subdeployment "business.jar" of deployment "ear.ear" are as follows:
java:global/ear/business/StreamService!com.popme.business.remote.StreamServiceRemote
java:app/business/StreamService!com.popme.business.remote.StreamServiceRemote
java:module/StreamService!com.popme.business.remote.StreamServiceRemote
java:jboss/exported/ear/business/StreamService!com.popme.business.remote.StreamServiceRemote
java:global/ear/business/StreamService
java:app/business/StreamService
java:module/StreamService |
L'erreur qui pose problème est un simple NullPointer Exception lors de la manipulation de "private StreamServiceRemote streamService;" dans mon projet Jax-RS.
Merci de vos réponses ;)