package org.example; import javax.annotation.Resource; import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.ejb.TransactionManagement; import javax.ejb.TransactionManagementType; import javax.jcr.Node; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import javax.transaction.SystemException; import javax.transaction.UserTransaction; import org.exoplatform.container.ExoContainer; import org.exoplatform.container.ExoContainerContext; import org.exoplatform.services.jcr.RepositoryService; import org.exoplatform.services.jcr.core.ManageableRepository; @Stateless //@TransactionManagement(TransactionManagementType.BEAN) public class HelloBean implements Hello { // @Resource // private UserTransaction ut; @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public String sayHello(String user) { System.out.println("hello"); Session session = doWork(user); //session.logout(); return "Hello"; } public Session doWork(String user) { Session session = null; try { // ut.begin(); session = getSessionFromExoAPI(user); //System.out.println(session.getRootNode()); Node rootNode = session.getRootNode(); rootNode.addNode("mytest" + System.currentTimeMillis()); //Thread.sleep(5000); session.save(); System.out.println("done"); // ut.commit(); // } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); // // try { // ut.rollback(); // } catch (Exception e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } } return session; } private Session getSessionFromExoAPI(String user) throws Exception { Session session = null; ExoContainer container = ExoContainerContext .getContainerByName("portal"); RepositoryService repos = (RepositoryService) container .getComponentInstanceOfType(RepositoryService.class); ManageableRepository repo = repos.getRepository("repository"); SimpleCredentials credencials = new SimpleCredentials(user, "gtn".toCharArray()); session = repo.login(credencials, "portal-system"); return session; } }