Bonjour,
J'ai un problème d'utilisation du module "UserModule" dans une portlet, dans mon fichier XML de configuration des portlet je déclare bien ce module :
mon code est le suivant :
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 <service> <service-name>UserModule</service-name> <service-class>org.jboss.portal.identity.UserModule</service-class> <service-ref>:service=Module,type=User</service-ref> </service> <service> <service-name>RoleModule</service-name> <service-class>org.jboss.portal.identity.RoleModule</service-class> <service-ref>:service=Module,type=Role</service-ref> </service> <service> <service-name>UserProfileModule</service-name> <service-class>org.jboss.portal.identity.UserProfileModule</service-class> <service-ref>:service=Module,type=UserProfile</service-ref> </service>
l'objet "UserModule" est bien dans mon contexte de portlet et lors de l'exécution de la methode "findUserByUserName" j'ai l'erreur :
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 import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.Map; import javax.naming.InitialContext; import javax.portlet.GenericPortlet; import javax.portlet.PortletException; import javax.portlet.PortletSecurityException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.jboss.portal.identity.User; import org.jboss.portal.identity.UserModule; import org.jboss.portal.identity.UserProfileModule; public class UserPortlet extends GenericPortlet { @Override protected void doView(RenderRequest request, RenderResponse response) throws PortletException, PortletSecurityException, IOException { String sDiv = "<div id='utilisateur'>"; response.setContentType("text/html"); PrintWriter writer = response.getWriter(); try{ UserModule userModule = (UserModule)new InitialContext().lookup("java:portal/UserModule"); UserProfileModule userProfileModule = (UserProfileModule)new InitialContext().lookup("java:portal/UserProfileModule"); if (userModule == null) { throw new PortletException("Pas de module utilisateur"); } User user = userModule.findUserByUserName(request.getUserPrincipal().getName()); Map map = userProfileModule.getProperties(user); for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();) { Object cle = iterator.next(); Object valeur = map.get(cle); System.out.println(cle + " : " + valeur.getClass().getName() + " - " + valeur); } sDiv += "<span class=\"usermessage\">Utilisateur connecté : " + user.getUserName() + "</span>"; }catch(Exception e){ e.printStackTrace(); if ( request.getUserPrincipal() != null ) sDiv += "<span class=\"usermessage\">Utilisateur connecté : " + request.getUserPrincipal().getName() + "</span>"; } sDiv += "</div>"; writer.write(sDiv); response.setTitle(""); writer.close(); }
Quelqu'un aurait-il une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 16:46:35,703 ERROR [HibernateUserModuleImpl] Cannot find user by name admin org.hibernate.HibernateException: Unable to locate current JTA transaction at org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:61) at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:542) at org.jboss.portal.identity.db.HibernateUserModuleImpl.getCurrentSession(HibernateUserModuleImpl.java:291) at org.jboss.portal.identity.db.HibernateUserModuleImpl.findUserByUserName(HibernateUserModuleImpl.java:91) at com.macif.users.UserPortlet.doView(UserPortlet.java:38) at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:133) at javax.portlet.GenericPortlet.render(GenericPortlet.java:306)
Merci
Partager