[2.6] Problème UserModule
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:
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:
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:
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