JBoss JBPM 5.2.0 中遇到的几个问题及解决方法

[url]http://cutelion.blog.hexun.com/71681028_d.html[/url]


1. 问题一
(1) [color=red]Caused by: org.hibernate.HibernateException: Errors in named queries:
TasksAssignedAsPotentialOwnerWithGroups, TasksOwned, [/color]TasksAssignedAsPotentialOwner,
TasksAssignedAsRecipient, TasksAssignedAsTaskStakeholder, TasksAssignedAsExcludedOwner,
TasksAssignedAsPotentialOwnerByGroup, GetSubTasksByParentTaskId, TasksAssignedAsTaskInitiator,
TasksAssignedAsBusinessAdministrator, SubTasksAssignedAsPotentialOwner
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:407)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 55 more


(2) [color=red]java.lang.IllegalArgumentException: Named query not found: UnescalatedDeadlines[/color]
at org.hibernate.ejb.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:108)
at org.jbpm.task.service.TaskService.<init>(TaskService.java:109)
at org.jbpm.task.service.TaskService.<init>(TaskService.java:92)

解决办法:src目录下加入 META-INF 文件夹, 将 jbpm-human-task-5.2.0.Final.jar 中的 Taskorm.xml 复制到 META-INF 下面, 并重命名为 orm.xml.


2. 问题二

[color=red]java.lang.RuntimeException: Unable To initialise TaskService, could not find Operations DSL[/color]
at org.jbpm.task.service.TaskService.<init>(TaskService.java:128)
at org.jbpm.task.service.TaskService.<init>(TaskService.java:92)


==> 原因是 jbpm-human-task-5.2.0.Final.jar 中的 org.jbpm.task.service 包中没有 operations-dsl.mvel 文件。
如下源代码:
// Search operations-dsl.mvel, if necessary using superclass if TaskService is subclassed
InputStream is = null;
for (Class c = getClass(); c != null; c = c.getSuperclass()) {
is = c.getResourceAsStream("operations-dsl.mvel");
if (is != null) {
break;
}
}
if (is == null) {
throw new RuntimeException("Unable To initialise TaskService, could not find Operations DSL");
}
Reader reader = new InputStreamReader(is);
try {
operations = (Map<Operation, List<OperationCommand>>) eval(toString(reader), vars);
} catch (IOException e) {
throw new RuntimeException("Unable To initialise TaskService, could not load Operations DSL");
}

解决办法:在工程中新建包结构org.jbpm.task.service,并在其中加入从jbpm-human-task-5.1.0.Final.jar中的org.jbpm.task.service中的operations-dsl.mvel。
或者重新打包 jbpm-human-task-5.2.0.Final.jar 且在其中加入 operations-dsl.mvel 到 org.jbpm.task.service 包中。


3. 问题三
[color=red]java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" [/color]the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/index_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature

解决办法:删除 el-api.jar 即可。

4. 问题四

[color=red]ERROR drools.persistence.SingleSessionCommandService.rollbackTransaction - Could not commit session
java.lang.IllegalArgumentException: Named query not found: ProcessInstancesWaitingForEvent[/color]
at org.hibernate.ejb.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:108)
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)


解决办法: src --> META-INF --> orm.xml 中加入
<named-query name="ProcessInstancesWaitingForEvent">
<query>
select
processInstanceInfo.processInstanceId
from
ProcessInstanceInfo processInstanceInfo join processInstanceInfo.eventTypes eventTypes
where
eventTypes = :type
</query>
</named-query>


[b][color=red]整合Hibernate4.2.x的时候碰到的问题[/color][/b]
1. [color=red]Could not determine type for: java.util.Set, at table: ProcessInstanceInfo, for columns: [org.hibernate.mapping.Column(eventTypes)][/color]
[url]https://community.jboss.org/message/643956[/url]Peter Brewer的解决方

2. [color=red]javax.persistence.spi.PersistenceUnitInfo.getValidationMode() [/color]
解决一: [url]http://openjpa.208410.n2.nabble.com/Error-running-on-Spring-3-td5781867.html[/url]
解决二 [url]http://blog.csdn.net/lusi64/article/details/7717072[/url]
[color=blue]我是这样解决[/color]:
使用这个http://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.0-api,替换jpa1.0的包。
先使用:
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>

再排除依赖
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-spring</artifactId>
<version>${drools.version}</version>
<exclusions>
<exclusion>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
</exclusion>
</exclusions>
</dependency>

drools-persistence-jpa,drools-spring,jbpm-human-task, jbpm-bam都要排除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值