我试图让this示例为我工作。由于我的jbpm版本是6.3.0.Final,所以this解决方案绝对不能解决我的问题。
我的情景是,首先,我创建了一个JPA&动态Web项目使用Eclipse Mars1,并将所有示例文件复制到我的新项目中,然后修改TaskProcessServlet.java,如下所示,因为原始servlet代码中Runtime
部分的过时和弃用。当我构建我的项目并运行独立的Tomcat 7.0.64而不是Eclipse内的服务器时,jsp出现没有任何问题,但当我点击create Process
将触发TaskProcessServlet时,我收到一条错误消息:< / p>
Error:[PersistenceUnit: org.jbpm.persistence.jpa] Unable to build EntityManagerFactory
我的postgresql-9.4.1207.jar(针对Tomcat8)会出问题吗?我不这么认为,因为我在Tomcat 8中一直遇到同样的错误,因此我将Tomcat从8.0.30降级到Tomcat 7.0.64。
我可以在Tomcat 8和7上从JBOSS运行jbpm-console。这个jbpm-console会干扰我的项目吗?
如何解决这个问题?
非常感谢任何想法,非常感谢。
软件环境:
Ubuntu 64-bit 14.04
Eclipse Mars1
jBPM 6.3.0.Final
PostgreSQL 9.3(postgresql-9.4.1207.jar)
Hibernate 4.2.21.Final
JPA 2.0
Tomcat 7.0.64
NO Spring
NO Maven
TaskProcessServlet.java
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String action = request.getParameter("action");
if (action.equals("CreateProcess")) {
/*
UserTransaction ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
ut.begin();
*
* Get the local task service
*
KieSession ksession = JBPMUtil.getSingletonSession();
TaskService taskService = JBPMUtil.getTaskService();
ksession.startProcess("com.autopal.bpmn.sampleHTformvariables",params);
System.out.println(" after start");
//ksession.fireAllRules();
ut.commit();
*/
// create the entity manager factory
EntityManagerFactory emf = EntityManagerFactoryManager.get().getOrCreate("org.jbpm.persistence.jpa");
TransactionManager tm = TransactionManagerServices.getTransactionManager();
// setup the runtime environment
RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get()
.newDefaultBuilder()
.addAsset(ResourceFactory.newClassPathResource("taskexample/SampleHumanTaskFormVariables.bpmn"), ResourceType.BPMN2)
.addEnvironmentEntry(EnvironmentName.TRANSACTION_MANAGER, tm)
.get();
// get the kie session
RuntimeManager manager = RuntimeManagerFactory.Factory.get().newPerRequestRuntimeManager(environment);
RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get());
KieSession ksession = runtime.getKieSession();
// start the transaction
UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction");
ut.begin();
Map<String, Object> params = new HashMap<String, Object>();
params.put("priority", "High");
params.put("modelNumber", "123");
params.put("quantity", "66");
// perform multiple commands inside one transaction
ksession.startProcess("com.autopal.bpmn.sampleHTformvariables",params);
// commit the transaction
ut.commit();
request.setAttribute("message", "Process Created!");
RequestDispatcher rD = request.getRequestDispatcher("adminuser.jsp");
rD.forward(request, response);
}
...
的persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="org.jbpm.persistence.jpa" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:comp/env/jdbc/jbpm-ds</jta-data-source>
<mapping-file>META-INF/JBPMorm.xml</mapping-file>
<mapping-file>META-INF/Taskorm.xml</mapping-file>
<mapping-file>META-INF/Executor-orm.xml</mapping-file>
<mapping-file>META-INF/Servicesorm.xml</mapping-file>
<mapping-file>META-INF/TaskAuditorm.xml</mapping-file>
<class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.drools.persistence.info.SessionInfo</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.persistence.correlation.CorrelationKeyInfo</class>
<class>org.jbpm.persistence.correlation.CorrelationPropertyInfo</class>
<!-- manager -->
<class>org.jbpm.runtime.manager.impl.jpa.ContextMappingInfo</class>
<class>org.jbpm.services.task.impl.model.AttachmentImpl</class>
<class>org.jbpm.services.task.impl.model.ContentImpl</class>
<class>org.jbpm.services.task.impl.model.BooleanExpressionImpl</class>
<class>org.jbpm.services.task.impl.model.CommentImpl</class>
<class>org.jbpm.services.task.impl.model.DeadlineImpl</class>
<class>org.jbpm.services.task.impl.model.DelegationImpl</class>
<class>org.jbpm.services.task.impl.model.EscalationImpl</class>
<class>org.jbpm.services.task.impl.model.GroupImpl</class>
<class>org.jbpm.services.task.impl.model.I18NTextImpl</class>
<class>org.jbpm.services.task.impl.model.NotificationImpl</class>
<class>org.jbpm.services.task.impl.model.EmailNotificationImpl</class>
<class>org.jbpm.services.task.impl.model.EmailNotificationHeaderImpl</class>
<class>org.jbpm.services.task.impl.model.PeopleAssignmentsImpl</class>
<class>org.jbpm.services.task.impl.model.ReassignmentImpl</class>
<class>org.jbpm.services.task.impl.model.TaskImpl</class>
<class>org.jbpm.services.task.impl.model.TaskDataImpl</class>
<class>org.jbpm.services.task.impl.model.UserImpl</class>
<!--BAM for task service -->
<class>org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL9Dialect"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.jndi.class" value="bitronix.tm.jndi.BitronixInitialContextFactory"/>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.BitronixJtaPlatform"/>
</properties>
</persistence-unit>
catalina.out中
INFO: HHH000205: Loaded properties from resource hibernate.properties: {hibernate.connection.password=****, c3p0.numHelperThreads=10, c3p0.maxIdleTime=60, c3p0.testConnectionOnCheckout=true, c3p0.maxStatements=100, hibernate.show_sql=true, hibernate.default_catalog=mybox, hibernate.jdbc.batch_size=50, hibernate.bytecode.use_reflection_optimizer=false, hibernate.jdbc.fetch_size=100, c3p0.maxPoolSize=30, c3p0.initialPoolSize=3, hibernate.hbm2ddl.auto=create, hibernate.default_schema=public, hibernate.connection.release_mode=after_transaction, hibernate.connection.username=postgres, c3p0.idleConnectionTestPeriod=900, hibernate.connection.driver_class=org.postgresql.Driver, c3p0.minPoolSize=2, c3p0.preferredTestQuery=select now(), c3p0.acquireIncrement=3, hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect, hibernate.connection.url=jdbc:postgresql://192.168.1.80:5432/mybox}
Feb 05, 2016 3:58:09 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Feb 05, 2016 3:58:10 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: META-INF/JBPMorm.xml
Feb 05, 2016 3:58:10 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: META-INF/Taskorm.xml
Feb 05, 2016 3:58:10 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: META-INF/Executor-orm.xml
Feb 05, 2016 3:58:10 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: META-INF/Servicesorm.xml
Feb 05, 2016 3:58:10 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: META-INF/TaskAuditorm.xml
答案 0 :(得分:0)
感谢Anton Giertli,感谢您的关注。
我修改了server.xml并通过引用here为JPA添加了hibernate.cfg.xml,解决了这个问题。
但我仍然需要找出相应的问题。
谢谢你。