Persistence.createEntityManagerFactory not working in JBoss AS 7.0.2
renez Mar 31, 2012 2:23 AMHi @ll,
I created a Webservice which should start a process. I want this process to be persisted in my database. I had a look a this example (https://community.jboss.org/people/bpmn2user/blog/2011/03/25/jbpm5--persistence-hello-process-example) and configured my project like this:
Webservice.class
package com.example.webservices;
import java.io.Serializable;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.jws.WebService;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceUnit;
import javax.transaction.TransactionManager;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.agent.KnowledgeAgent;
import org.drools.agent.KnowledgeAgentFactory;
import org.drools.base.MapGlobalResolver;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.persistence.jpa.JPAKnowledgeService;
import org.drools.runtime.Environment;
import org.drools.runtime.EnvironmentName;
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.StatefulKnowledgeSession;
import org.jbpm.process.workitem.wsht.WSHumanTaskHandler;
import org.opentrans.xmlschema._2.INVOICE;
import bitronix.tm.TransactionManagerServices;
import com.example.bpm.workItemHandler.BelegdatenbankWorkItemHandler;
import com.example.bpm.workItemHandler.LeistungServiceWorkItemHandler;
import com.example.bpm.workItemHandler.RechnungsExtractorWorkItemHandler;
import com.example.bpm.workItemHandler.SiebelServiceWorkItemHandler;
import com.example.bpm.workItemHandler.VertragServiceWorkItemHandler;
import com.example.webservices.glasbruch.Glasbruch;
import com.example.webservices.glasbruch.SubmitInvoiceFault;
@WebService(serviceName = "glasbruchService", endpointInterface = "com.example.webservices.glasbruch.Glasbruch", targetNamespace = "http://example.com/GlasbruchService/")
public class GlasbruchWS implements Glasbruch {
//@PersistenceUnit(unitName="org.jbpm.persistence.jpa")
//EntityManagerFactory emf;
private final String CS_URL = "http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/com.example.glasbruch/LATEST/ChangeSet.xml";
private final String PROC_NAME = "com.example.Glasbruch";
public boolean submitInvoice(org.opentrans.xmlschema._2.INVOICE invoice)
throws SubmitInvoiceFault {
return false;
}
public boolean submitInvoiceRepo(INVOICE invoice) throws SubmitInvoiceFault {
try {
URL url = new URL(CS_URL);
// KBase initialisieren
KnowledgeAgent kagent = KnowledgeAgentFactory
.newKnowledgeAgent("GlasbruchAgent");
kagent.applyChangeSet(ResourceFactory.newUrlResource(url));
KnowledgeBase kbase = kagent.getKnowledgeBase();
// Prozess-Parameter initialisieren
Map<String, Object> params = new HashMap<String, Object>();
params.put("rechnung", invoice);
// Session öffnen
StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory
.newFileLogger(ksession, "test");
// WorkitemHandler registrieren
// HT-Service starten
ksession.getWorkItemManager().registerWorkItemHandler("Human Task",
new WSHumanTaskHandler());
ksession.getWorkItemManager().registerWorkItemHandler(
"Belegdatenbank", new BelegdatenbankWorkItemHandler());
ksession.getWorkItemManager().registerWorkItemHandler(
"RechnungsExtractor",
new RechnungsExtractorWorkItemHandler());
ksession.getWorkItemManager().registerWorkItemHandler(
"SiebelService",
new SiebelServiceWorkItemHandler());
ksession.getWorkItemManager().registerWorkItemHandler(
"VertragService",
new VertragServiceWorkItemHandler());
ksession.getWorkItemManager().registerWorkItemHandler(
"LeistungService",
new LeistungServiceWorkItemHandler());
// Prozess starten
ksession.startProcess(PROC_NAME, params);
logger.close();
return true;
}
catch (Throwable t) {
t.printStackTrace();
return false;
}
}
private StatefulKnowledgeSession createKnowledgeSession(KnowledgeBase kbase) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.jbpm.persistence.jpa" );
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );
try {
TransactionManager jbossTXM = (TransactionManager) new InitialContext().lookup("java:jboss/TransactionManager");
env.set( EnvironmentName.TRANSACTION_MANAGER, jbossTXM);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//env.set( EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager() );
env.set( EnvironmentName.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);
}
}
Maven pom
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>glasbruch</artifactId> <groupId>com.example</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>glasbruch-webservice</artifactId> <packaging>war</packaging> <name>glasbruch-webservice Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>glasbruch-lib-opentrans</artifactId> <version>1.0.0.Final</version> <type>jar</type> <exclusions> <exclusion> <artifactId>hibernate-entitymanager</artifactId> <groupId>org.hibernate</groupId> </exclusion> <exclusion> <artifactId>persistence-api</artifactId> <groupId>javax.persistence</groupId> </exclusion> <exclusion> <artifactId>dom4j</artifactId> <groupId>dom4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <artifactId>hibernate-core</artifactId> <groupId>org.hibernate</groupId> <version>4.0.0.CR2</version> <scope>provided</scope> <exclusions> <exclusion> <artifactId>dom4j</artifactId> <groupId>dom4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <artifactId>hibernate-entitymanager</artifactId> <groupId>org.hibernate</groupId> <version>4.0.0.CR2</version> <scope>provided</scope> <exclusions> <exclusion> <artifactId>dom4j</artifactId> <groupId>dom4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.example</groupId> <artifactId>glasbruch-workitems</artifactId> <version>0.0.1-SNAPSHOT</version> <type>jar</type> <exclusions> <exclusion> <artifactId>persistence-api</artifactId> <groupId>javax.persistence</groupId> </exclusion> <exclusion> <artifactId>dom4j</artifactId> <groupId>dom4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.codehaus.btm</groupId> <artifactId>btm</artifactId> <version>1.3.3</version> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-bpmn2</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-persistence-jpa</artifactId> <exclusions> <exclusion> <artifactId>persistence-api</artifactId> <groupId>javax.persistence</groupId> </exclusion> <exclusion> <artifactId>dom4j</artifactId> <groupId>dom4j</groupId> </exclusion> </exclusions> </dependency> </dependencies> <build> <finalName>glasbruch-webservice</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <archive> <manifestEntries> <Dependencies>org.slf4j org.dom4j</Dependencies> </manifestEntries> </archive> </configuration> </plugin> </plugins> </build> </project>
persistence.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <persistence version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="org.jbpm.persistence.jpa" transaction-type="JTA"> <!-- <provider>org.hibernate.ejb.HibernatePersistence</provider> --> <jta-data-source>java:jboss/datasources/jbpmDS</jta-data-source> <class>org.drools.persistence.info.SessionInfo</class> <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class> <class>org.jbpm.persistence.processinstance.ProcessInstanceEventInfo</class> <class>org.drools.persistence.info.WorkItemInfo</class> <class>org.jbpm.process.audit.ProcessInstanceLog</class> <class>org.jbpm.process.audit.NodeInstanceLog</class> <class>org.jbpm.process.audit.VariableInstanceLog</class> <class>org.jbpm.task.Task</class> <class>org.jbpm.task.Comment</class> <class>org.jbpm.task.Attachment</class> <class>org.jbpm.task.I18NText</class> <class>org.jbpm.task.SubTasksStrategy</class> <class>org.jbpm.task.Deadline</class> <class>org.jbpm.task.Escalation</class> <class>org.jbpm.task.Reassignment</class> <class>org.jbpm.task.Notification</class> <class>org.jbpm.task.BooleanExpression</class> <class>org.jbpm.task.User</class> <class>org.jbpm.task.PeopleAssignments</class> <properties> <!-- H2 dialect --> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" /> <!-- mysql dialect --> <!-- <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> --> <property name="hibernate.connection.autocommit" value="false" /> <property name="hibernate.max_fetch_depth" value="3" /> <property name="hibernate.hbm2ddl.auto" value="create" /> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit> </persistence>
Project structure:
my-war -META-INF -- MANIFEST.MF -WEB-INF -- classes ---META-INF ----orm.xml ----persistence.xml ---com --- ws classes
When I call the service I always get
15:54:09,534 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) javax.persistence.PersistenceException: No Persistence provider for EntityManager named org.jbpm.persistence.jpa 15:54:09,534 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.example.webservices.GlasbruchWS.createKnowledgeSession(GlasbruchWS.java:119) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.example.webservices.GlasbruchWS.submitInvoiceRepo(GlasbruchWS.java:76) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.lang.reflect.Method.invoke(Method.java:601) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.ws.common.invocation.AbstractInvocationHandlerJSE.invoke(AbstractInvocationHandlerJSE.java:111) 15:54:09,535 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.wsf.stack.cxf.JBossWSInvoker._invokeInternal(JBossWSInvoker.java:169) 15:54:09,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:117) 15:54:09,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) 15:54:09,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 15:54:09,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 15:54:09,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.util.concurrent.FutureTask.run(FutureTask.java:166) 15:54:09,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) 15:54:09,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106) 15:54:09,536 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) 15:54:09,537 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:118) 15:54:09,537 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:208) 15:54:09,537 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:91) 15:54:09,537 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:162) 15:54:09,537 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:87) 15:54:09,537 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184) 15:54:09,537 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:107) 15:54:09,538 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 15:54:09,538 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:135) 15:54:09,617 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:138) 15:54:09,617 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 15:54:09,617 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) 15:54:09,617 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 15:54:09,618 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) 15:54:09,618 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) 15:54:09,618 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 15:54:09,618 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 15:54:09,618 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:161) 15:54:09,619 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) 15:54:09,619 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) 15:54:09,619 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) 15:54:09,619 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) 15:54:09,619 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 15:54:09,619 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 15:54:09,620 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) 15:54:09,620 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 15:54:09,620 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) 15:54:09,620 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) 15:54:09,620 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.lang.Thread.run(Thread.java:722)
In my code this is position
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.jbpm.persistence.jpa" );
Any suggestion are very welcome!
René
-
server.log.zip 6.9 KB