`
windywindy
  • 浏览: 167575 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jbpm4.3不能查看流程图

    博客分类:
  • jbpm
阅读更多

错误代码为:

org.jbpm.api.JbpmException: couldn't extract bytes out of blob
	at org.jbpm.pvm.internal.lob.BlobStrategyBlob.get(BlobStrategyBlob.java:27)
	at org.jbpm.pvm.internal.lob.Lob.extractBytes(Lob.java:102)
	at org.jbpm.pvm.internal.repository.DeploymentImpl.getBytes(DeploymentImpl.java:182)
	at org.jbpm.pvm.internal.repository.RepositorySessionImpl.getBytes(RepositorySessionImpl.java:143)
	at org.jbpm.pvm.internal.cmd.GetResourceAsStreamCmd.execute(GetResourceAsStreamCmd.java:45)
	at org.jbpm.pvm.internal.cmd.GetResourceAsStreamCmd.execute(GetResourceAsStreamCmd.java:31)
	at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
	at org.jbpm.pvm.internal.tx.SpringCommandCallback.doInTransaction(SpringCommandCallback.java:45)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
	at org.jbpm.pvm.internal.tx.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:55)
	at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53)
	at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
	at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
	at org.jbpm.pvm.internal.repository.RepositoryServiceImpl.getResourceAsStream(RepositoryServiceImpl.java:81)
	at com.tepper.wfe.action.DrawGraphAction.drawActive(DrawGraphAction.java:90)
	at com.tepper.wfe.action.DrawGraphAction.execute(DrawGraphAction.java:50)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.tepper.common.SessionFilter.doFilter(SessionFilter.java:60)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:619)

 

 

debug后找到这里:

public byte[] get(Lob lob) {
    if (lob.cachedBytes!=null) {
      return lob.cachedBytes;
    }
    
    java.sql.Blob sqlBlob = lob.blob;
    if (sqlBlob!=null) {
      try {
        return sqlBlob.getBytes(1, (int) sqlBlob.length());
      } catch (SQLException e) {
        throw new JbpmException("couldn't extract bytes out of blob", e);
      }
    } 
    return null;
  }

 

这里调用的是hibernate的代码,然后使用LOB定位器,如果是新的部署,是会返回byte[]!

 

从现有的部署中我们来开启一个流程,他的调用是这样的:

log.trace("loading deployment "+deploymentId+" from db");
 DeploymentImpl deployment = (DeploymentImpl) session.load(DeploymentImpl.class, Long.parseLong(deploymentId));
 deployerManager.deploy(deployment);
 object = repositoryCache.get(deploymentId, objectName);
 if (object==null) {
 throw new JbpmException("deployment "+deploymentId+" doesn't contain object "+objectName);
 }

 

这段代码是从数据库加载,而它不会加载BLOB数据 和用LOB定位器代替;然后, deployerManager.deploy(deployment); LOB定位器将调用来获取数据, 由于ResultSet已经关闭,异常发生!

解决方法是:

把<prop key="hibernate.connection.release_mode">auto</prop>此属性去掉!

hibernate.connection.release_mode的用途是:指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用after_statement, 这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的. auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction. 取值 on_close | after_transaction | after_statement | auto

 

分享到:
评论
2 楼 windywindy 2012-10-08  
fatter 写道
lz用的是什么数据库?我用的db2上报这样的错误,前提是我没有添加
<prop key="hibernate.connection.release_mode">auto</prop>
这个属性,但是还是报这样的错误

用的是oracle
1 楼 fatter 2012-08-06  
lz用的是什么数据库?我用的db2上报这样的错误,前提是我没有添加
<prop key="hibernate.connection.release_mode">auto</prop>
这个属性,但是还是报这样的错误

相关推荐

    开源工具 jbpm4.3

    它提供了流程的图形化设计的界面,是一个开源的工作流软件,将业务流程转化为计算机识别的语言,并部署在项目中

    jbpm4.3实例源码

    jbpm4.3实例源码,及流程实例图,欢迎大家下载

    jbpm4.3 中文乱码解决

    jbpm4.3插件,解决中文乱码,主要修改org.jboss.tools.flow.jpdl4_4.3.0.v201007071649.jar中的JbpmLocationsPage 和 org.jboss.tools.jbpm.common_4.3.0.v201007071649.jar 中的JpdlSerializer和ProcessSerializer

    jBPM-4.3开发手册

    jBPM-4.3开发手册,转至family168 1.1. 目标读者 这个开发指南是为了给有经验的开发者看的, 这样就可以获得jBPM的完全的灵活性。在这个开发文档中提及的特性 可能当前不会被支持到。请自行使用。 1.2. 概述 第 2...

    jbpm4.4学习笔记

    4.6 JBPM在MyEclipse画流程图时出现乱码: 14 5 核心API 14 5.1ProcessEngine 14 5.2RepositoryService 15 5.3ExecutionService 16 5.4TaskService 16 5.5ProcessDefinition 16 5.6ProcessInstance 16 5.7Execution ...

    JBPM4工作流应用开始指南.rar

    53 第4章 把流程部署到服务器上去 54 4.1 部署流程定义和资源文件 54 4.2 部署流程Java类的3个方法 57 4.3 例程:部署业务流程定义 58 4.4 小结 61 第5章 使用jBPM4 Service API控制流程 62 5.1 流程定义、流程实例...

    深入浅出jBPM完整版part1

    .........................................7 1.3 jBPM版helloworld.....................................10 1.3.1 创建helloworld流程......................13 1.3.2 设计流程图 ..................................

    使用过滤器和监听器_第9页_下载资料

    java过滤器和监听器的使用 1.1. 安装流程设计器插件(Graphical Process Designer) 1, jBPM4.4包含了一个图形化设计流程的工具(GPD),它是...5, 流程定义文件的xsd文件的路径为:JBPM_HOME/src/jpdl-4.3.xsd

    深入浅出jBPM完整版part2

    .........................................7 1.3 jBPM版helloworld.....................................10 1.3.1 创建helloworld流程......................13 1.3.2 设计流程图 ..................................

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码....................................

Global site tag (gtag.js) - Google Analytics