Bonjour,
J'ai un problème que je n'arrive pas à résoudre depuis 2 jours maintenant, je ne trouve pas réponse sur le web si ce n'est :
Ma config est :Principal propagation: Cannot find principal information in subject
Description : Cannot find principal information in the subject. The security mechanisms are trying to extract the principal from the subject.
Action : Check client authentication token propagated. Also refer to security documentation for supported security mechanisms.
2 serveurs glassfish V2, le premier est sur mon ordi local avec le conteneur d'EJB metier et l'autre est sur une machine virtuelle et contient me EJB-WebService qui font appel à mes EJB metiers.
Lorsque je teste tout en déployant sur mon poste local, cela marche, mais lorsque je teste le WebService quand il est deployé sur la machine virtuelle, cela ne marche pas et dans les logs j'ai droit à l'erreur décrite ci-dessus.
Voici mes EJB et fichiers de cfg :
EJB-WS :
puis le sun-ejb-jar.xml de mon EJB-WS :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ecml.tchat.ejb.ws; import ecml.tchat.ejb.interfaces.ISiteClient; import ecml.tchat.metier.SiteClient; import javax.annotation.Resource; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.jws.WebMethod; import javax.jws.WebService; import javax.servlet.http.HttpServletRequest; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; /** * * @author Denis */ @Stateless @WebService(serviceName="SiteClientService") public class SiteClientWSBean { @Resource private WebServiceContext _wsContext; @EJB(name="ISiteClient") private ISiteClient _siteClientEJB; /** * * @return */ private String getIpClient() { MessageContext mc = _wsContext.getMessageContext(); HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST); return req.getRemoteAddr(); } /** * * @param dns * @return */ @WebMethod public Long getIdSiteClient(String dns) { if(dns!=null && !dns.equals("")){ SiteClient site = _siteClientEJB.getSiteByDns(dns); if(site != null && getIpClient().equals(site.getIp())) { return site.getId(); } else return null; } else return null; } }
Puis mon EJB-Metier :
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd"> <sun-ejb-jar> <enterprise-beans> <name>TCHAT-EJB-WS</name> <ejb> <ejb-name>SiteClientWSBean</ejb-name> <ejb-ref> <ejb-ref-name>ISiteClient</ejb-ref-name> <jndi-name>corbaname:iiop:172.16.10.180:3700#ecml.tchat.ejb.interfaces.ISiteClient</jndi-name> </ejb-ref> </ejb> </enterprise-beans> </sun-ejb-jar>
Enfin mon sun-ejb-jar.xml partie metier :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ecml.tchat.ejb.dao; import ecml.tchat.ejb.interfaces.ISiteClient; import ecml.tchat.metier.SiteClient; import java.util.List; //import javax.annotation.security.RolesAllowed; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; /** * * @author Denis */ @Stateless public class SiteClientBean implements ISiteClient { @PersistenceContext private EntityManager _em; /** * * @param ip * @param dns * @param nomdesc * @return */ // @RolesAllowed("admin") public Boolean createSite(String ip, String dns, String nomdesc) { // Si l'Ip et le dns ne sont pas déjà référencées try { SiteClient obj = new SiteClient(dns, ip, nomdesc); _em.persist(obj); return true; }catch (Exception ex){ return false; } } /** * * @param dns * @return */ public SiteClient getSiteByDns(String dns) { try { SiteClient site = (SiteClient) _em.createQuery("SELECT tab FROM SiteClient tab WHERE tab._dns=:dnsSite").setParameter("dnsSite", dns).getSingleResult(); return site; }catch (Exception ex){ //NonUniqueResultException - if there is no result //NoResultException - if more than one result //IllegalStateException - if called for a Java Persistence query language UPDATE or DELETE statement System.err.println("getSiteByDns" + ex.getMessage() + "\n\n" + ex.getStackTrace()); return null; } } /** * * @param id * @param ip * @param dns * @param nomdesc * @return */ // @RolesAllowed("admin") public Boolean updateSite(Long id, String ip, String dns, String nomdesc) { if(id!=null){ try { SiteClient obj = this.getSiteClient(id); obj.setDns(dns); obj.setDns(ip); obj.setNomDesc(nomdesc); return true; }catch (Exception ex) { return false; } }else return false; } /** * * @param id */ // @RolesAllowed("admin") public void deleteSite(Long id) { _em.remove(getSiteClient(id)); } /** * * @return */ // @RolesAllowed("admin") public List<SiteClient> getSites() { return _em.createQuery("SELECT tab FROM SiteClient tab ORDER BY tab._dns").getResultList(); } /** * * @param id * @return */ public SiteClient getSiteClient(Long id) { return _em.find(SiteClient.class, id); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd"> <sun-ejb-jar> <enterprise-beans> <name>TCHAT-EJB</name> <ejb> <ejb-name>SiteClientBean</ejb-name> </ejb> </enterprise-beans> </sun-ejb-jar>
J'ai vraiment besoin d'aide assez rapidement si possible.
Merci d'avance
PS: n'hesitez pas si vous avez besoins de precisions
Partager