Bonjour à tous,

J'ai fait un teste sur un petit projet java EE

Servlet------>EJB(Init)--------->EJB(Print)

voici le code des deux ejb:

EJB :init
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
 
@Stateless
@RunAs("SYSTEM")
@DeclareRoles({"SYSTEM"})
public class Init {
 
@Resource
EJBContext ejb;
@EJB
private Print print;
 
public void initialize() {
 
System.out.println("**********" + ejb.getCallerPrincipal().getName());
System.out.println("**********" + ejb.isCallerInRole("SYSTEM"));
 print.printline();
}
}
// EJB Print
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
 
@Stateless
@DeclareRoles({"SYSTEM"})
public class Print {
 
@Resource
EJBContext ejb;
 
public void printline() {
 
System.out.println("**********" + ejb.getCallerPrincipal().getName());
System.out.println("*********" + ejb.isCallerInRole("SYSTEM"));
 
}
}
Et voici le résultat de l’exécution:
INFO: **********ANONYMOUS
INFO: **********false
INFO: **********system
INFO: **********false

Normalement je devrais avoir un true au lieu du 2eme false.

sachant que j'ai fait le mapping dans les deux projets web et ejb:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<security-role-mapping>
  <role-name>SYSTEM</role-name>
  <group-name>system</group-name>
  </security-role-mapping>
Est-ce que quelqu'un aurait une idée ?

Merci par avance.