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&...]