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 :

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>
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
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();
	}
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
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)
Quelqu'un aurait-il une idée?

Merci