[jboss-dev-forums] [jBPM Development] - Problem to use JBPM on gwt project

sahar mohebi do-not-reply at jboss.com
Tue Apr 23 08:18:25 EDT 2013


sahar mohebi [https://community.jboss.org/people/sahar_m] created the discussion

"Problem to use JBPM on gwt project"

To view the discussion, visit: https://community.jboss.org/message/809792#809792

--------------------------------------------------------------
Hi friends,

I am new on jbpm with many problems!!!
I want to use jbpm on my gwt project  and mysql.

I get error when I want to create EntityManagerFactory:



avax.persistence.PersistenceException: PersistenceUnit: org.jbpm.persistence.jpa Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
    at com.ayriksoft.desktopapp.server.TaskServiceManager.getInstance(TaskServiceManager.java:319)
    at com.ayriksoft.desktopapp.server.JBPMServiceImpl.setup(JBPMServiceImpl.java:116)
    at com.ayriksoft.desktopapp.server.JBPMServiceImpl.initializeJbpmSession(JBPMServiceImpl.java:51)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.HibernateException: Could not obtain BTM transaction manager instance
    at org.hibernate.transaction.BTMTransactionManagerLookup.getTransactionManager(BTMTransactionManagerLookup.java:50)
    at org.hibernate.impl.SessionFactoryImpl.(BitronixTransactionManager.java:62)
    ... 45 more



Its my gwt service class:

public class JBPMServiceImpl extends RemoteServiceServlet implements JBPMService {

    protected StatefulKnowledgeSession session;
    private MockWorkItemHandler mockWorkItemHandler;
    Map<Resource, ResourceType> resources;
     TaskServiceManager tc;

    @Override
    public boolean initializeJbpmSession() {

        try {
            setup();

            session = tc.getSession();//kbase.newStatefulKnowledgeSession();
            KnowledgeRuntimeLoggerFactory.newConsoleLogger(session);

            session.addEventListener(new DefaultAgendaEventListener() {
                @Override
                public void afterRuleFlowGroupActivated(org.drools.event.rule.RuleFlowGroupActivatedEvent event) {
                    session.fireAllRules();
                }
            });

            session.addEventListener(new DefaultProcessEventListener() {
                @Override
                public void beforeProcessStarted(ProcessStartedEvent event) {
                    session.insert(event.getProcessInstance());
                }
            });



        } catch (Exception ex) {
            ex.printStackTrace();
            return false;
        }

        return true;
    }

    protected Map<Resource, ResourceType> getResources() {
        try {
            if (resources == null) {
                resources = new HashMap<Resource, ResourceType>();
                resources.put(ResourceFactory.newFileResource(System.getProperty("user.home") + "/V1/EmergencyBedRequestV1.bpmn"), ResourceType.BPMN2);
                resources.put(ResourceFactory.newFileResource(System.getProperty("user.home") + "/V1/bedAssignmentV1.drl"), ResourceType.DRL);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return resources;
    }

    public void setup() {
        try {

              tc=TaskServiceManager.getInstance();
//            tc.startService();

            session = tc.getSession();
            tc.connect();

            KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(session, "testlog", 1000);
            CommandBasedWSHumanTaskHandler taskHandler = new CommandBasedWSHumanTaskHandler(session);
            session.getWorkItemManager().registerWorkItemHandler("Human Task", taskHandler);
            session.getWorkItemManager().registerWorkItemHandler("Notification System", taskHandler);
            taskHandler.connect();

        } catch (Exception ex) {
            Logger.getLogger(JBPMServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
      throw new RuntimeException("error while creating session", ex);

        }

    }




and Its my TaskServiceManager.java:




public class TaskServiceManager {

    private static String ipAddress = "127.0.0.1";
    //private static int port = 5445;
    private static int port = 9123;
    private static TaskClient client;
    private static Map<String, List<String>> groupListMap = new HashMap();
    private static StatefulKnowledgeSession ksession;

static TaskServiceManager instance = null;
    static Thread thread;

    private TaskServiceManager() {
    }

    public static TaskServiceManager getInstance() {
        if (instance == null) {


            instance = new TaskServiceManager();

            EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");

            TaskService taskService = new TaskService(emf, SystemEventListenerFactory.getSystemEventListener());

            MinaTaskServer server = new MinaTaskServer(taskService);


            Thread thread = new Thread(server);

            thread.start();

        }
        return instance;
    }


    public void setConnection(String ipAddress, int port) {
        ipAddress = ipAddress;
        port = port;
    }

    public void connect() {
        if (client == null) {
         client = new TaskClient(new MinaTaskClientConnector("client 1",
         new  MinaTaskClientHandler(SystemEventListenerFactory.getSystemEventListener())));
          client.connect("127.0.0.1", 9123);
            boolean connected = client.connect(ipAddress, port);
            if (!connected) {
                throw new IllegalArgumentException(
                        "Could not connect task client");
            }
        }
}

  public KnowledgeBase readKnowledgeBase(Map<Resource, ResourceType> resources)
            throws Exception {

        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        for (Map.Entry<Resource, ResourceType> entry : this.getResources().entrySet()) {
            kbuilder.add(entry.getKey(), entry.getValue());
        }
          if (kbuilder.hasErrors()) {
            KnowledgeBuilderErrors errors = kbuilder.getErrors();

            for (KnowledgeBuilderError error : errors) {
                System.out.println(">>> Error:" + error.getMessage());

            }
            throw new IllegalStateException(">>> Knowledge couldn't be parsed! ");
        }
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());

        return kbase;
    }

    public StatefulKnowledgeSession getSession()
            throws Exception {
        if (ksession == null) {
            ksession = createSession();
        }
        return ksession;
    }

    public StatefulKnowledgeSession createSession()
            throws Exception {
        System.out.print("ok1");
        KnowledgeBase kbase = readKnowledgeBase(getResources());
        System.out.print("ok2");
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");
        System.out.print("ok3");
        Environment env = KnowledgeBaseFactory.newEnvironment();
        env.set("drools.persistence.jpa.EntityManagerFactory", emf);
        env.set("drools.transaction.TransactionManager", TransactionManagerServices.getTransactionManager());
        env.set("drools.Globals", new MapGlobalResolver());
//
        Properties properties = new Properties();
        properties.put("drools.processInstanceManagerFactory", "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");
        properties.put("drools.processSignalManagerFactory", "org.jbpm.persistence.processinstance.JPASignalManagerFactory");
        KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(properties);

        return JPAKnowledgeService.newStatefulKnowledgeSession(kbase , config, env);
    }
    static Map<Resource, ResourceType> resources;

    static Map<Resource, ResourceType> getResources() {

        try {

            if (resources == null) {
                resources = new HashMap<Resource, ResourceType>();
                resources.put(ResourceFactory.newFileResource(System.getProperty("user.home") + "/V1/EmergencyBedRequestV1.bpmn"), ResourceType.BPMN2);
                resources.put(ResourceFactory.newFileResource(System.getProperty("user.home") + "/V1/bedAssignmentV1.drl"), ResourceType.DRL);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return resources;
    }
}


and its my persistence.xml fil in META_INF:
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/809792#809792]

Start a new discussion in jBPM Development at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2035]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-dev-forums/attachments/20130423/451ca2b1/attachment-0001.html 


More information about the jboss-dev-forums mailing list