Salut.
J'ai un p'tit souci dans le cadre du développement d'un EJB3 dans un environnement Tomcat 6.0 / JBoss 4.2 / Eclipse WTP 2.0
Pas de problème pour écrire l'EJB (un sample tout simple).
Pas de problème non plus pour l'appeller à partir d'un client Java standard.
Par contre, dès que je veux intégrer l'invocation de cet EJB dans une servlet, j'ai une NamingException "Erreur : Le Nom StatsEJBBean n'est pas lié à ce Contexte"
Je précise que la déclaration de l'EJB et les paramètres des différents projets sont identiques pour l'application Java standard et pour le projet qui abrite la servlet.
Pour faire fonctionner Tomcat en même tant que JBoss, j'ai modifié les ports utilisés par celui-ci (8081 au lieu de 8080 pour http et 8008 au lieu de 8009 pour AJP). A part ça, et je vois pas le rapport a priori, je vois pas du tout ce que ça peut-être. J'ai trouvé pas mal de problème à peu près similaires ici où là, mais rien qui me permettte de solutionner mon problème.
Si quelqu'un a une idée....
Quelques bouts de code.
Le jndi.properties
Le code client (identique pour l'application Java standard et dans la servlet)java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 try { Context context = new InitialContext(); StatsEJB bean = (StatsEJB)context.lookup("StatsEJBBean/remote"); resp.getOutputStream().print(bean.getStats()); } catch(NamingException e) { System.out.println("Erreur : "+e.getMessage()); e.printStackTrace(); } Le code serveur (le bean) import javax.ejb.Stateless; @Stateless public class StatsEJBBean implements StatsEJB{ public String getStats() { return "EJBStats : Statistiques"; } L'interface @Remote public interface StatsEJB { public String getStats(); }
Partager