jBPM4中发布流程定义zip包遇到的错误

在尝试使用addResourcesFromZipInputStream方法发布jbPM4的zip流程定义压缩包时,遇到了NullPointerException。错误源于OraclePreparedStatement在设置BinaryStream时的问题,此问题与jdbc驱动版本和数据库版本不匹配有关。解决方案是更新到与当前环境兼容的最新jdbc驱动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接发布xml格式的流程定义文件没有问题,

当使用 addResourcesFromZipInputStream 发布zip格式流程定义压缩包时遇到如下问题:

 

2010-3-7 21:14:24 org.jbpm.internal.log.Jdk14Log info
信息: exception while executing command org.jbpm.pvm.internal.cmd.DeployCmd@7a36a2
java.lang.NullPointerException
 at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431)
 at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528)
 at oracle.jdbc.driver.OraclePreparedStatement.checkBindTypes(OraclePreparedStatement.java:3271)
 at oracle.jdbc.driver.OraclePreparedStatement.setStreamItem(OraclePreparedStatement.java:1178)
 at oracle.jdbc.driver.OraclePreparedStatement.setBinaryStream(OraclePreparedStatement.java:2562)
 at com.p6spy.engine.spy.P6PreparedStatement.setBinaryStream(P6PreparedStatement.java:214)
 at org.hibernate.type.BlobType.set(BlobType.java:69)
 at org.hibernate.type.BlobType.nullSafeSet(BlobType.java:140)
 at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2025)
 at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2271)
 at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2688)
 at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
 at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
 at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:64)
 at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:996)
 at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1141)
 at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
 at org.jbpm.pvm.internal.query.AbstractQuery.execute(AbstractQuery.java:95)
 at org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl.execute(ProcessDefinitionQueryImpl.java:65)
 at org.jbpm.pvm.internal.query.AbstractQuery.untypedList(AbstractQuery.java:70)
 at org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl.list(ProcessDefinitionQueryImpl.java:141)
 at org.jbpm.pvm.internal.repository.ProcessDeployer.checkKey(ProcessDeployer.java:134)
 at org.jbpm.pvm.internal.repository.ProcessDeployer.deploy(ProcessDeployer.java:93)
 at org.jbpm.pvm.internal.repository.DeployerManager.deploy(DeployerManager.java:46)
 at org.jbpm.pvm.internal.repository.RepositorySessionImpl.deploy(RepositorySessionImpl.java:61)
 at org.jbpm.pvm.internal.cmd.DeployCmd.execute(DeployCmd.java:47)
 at org.jbpm.pvm.internal.cmd.DeployCmd.execute(DeployCmd.java:33)
 at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
 at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)
 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.svc.SkipInterceptor.execute(SkipInterceptor.java:43)
 at org.jbpm.pvm.internal.repository.DeploymentImpl.deploy(DeploymentImpl.java:91)
 at demo.workflow.test.DeployProcessDefinition.main(DeployProcessDefinition.java:39)
Exception in thread "main" java.lang.NullPointerException
 at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431)
 at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528)
 at oracle.jdbc.driver.OraclePreparedStatement.checkBindTypes(OraclePreparedStatement.java:3271)
 at oracle.jdbc.driver.OraclePreparedStatement.setStreamItem(OraclePreparedStatement.java:1178)
 at oracle.jdbc.driver.OraclePreparedStatement.setBinaryStream(OraclePreparedStatement.java:2562)
 at com.p6spy.engine.spy.P6PreparedStatement.setBinaryStream(P6PreparedStatement.java:214)
 at org.hibernate.type.BlobType.set(BlobType.java:69)
 at org.hibernate.type.BlobType.nullSafeSet(BlobType.java:140)
 at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2025)
 at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2271)
 at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2688)
 at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
 at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
 at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:64)
 at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:996)
 at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1141)
 at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
 at org.jbpm.pvm.internal.query.AbstractQuery.execute(AbstractQuery.java:95)
 at org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl.execute(ProcessDefinitionQueryImpl.java:65)
 at org.jbpm.pvm.internal.query.AbstractQuery.untypedList(AbstractQuery.java:70)
 at org.jbpm.pvm.internal.query.ProcessDefinitionQueryImpl.list(ProcessDefinitionQueryImpl.java:141)
 at org.jbpm.pvm.internal.repository.ProcessDeployer.checkKey(ProcessDeployer.java:134)
 at org.jbpm.pvm.internal.repository.ProcessDeployer.deploy(ProcessDeployer.java:93)
 at org.jbpm.pvm.internal.repository.DeployerManager.deploy(DeployerManager.java:46)
 at org.jbpm.pvm.internal.repository.RepositorySessionImpl.deploy(RepositorySessionImpl.java:61)
 at org.jbpm.pvm.internal.cmd.DeployCmd.execute(DeployCmd.java:47)
 at org.jbpm.pvm.internal.cmd.DeployCmd.execute(DeployCmd.java:33)
 at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
 at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)
 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.svc.SkipInterceptor.execute(SkipInterceptor.java:43)
 at org.jbpm.pvm.internal.repository.DeploymentImpl.deploy(DeploymentImpl.java:91)
 at demo.workflow.test.DeployProcessDefinition.main(DeployProcessDefinition.java:39)

引发这个错误的原因是工程中使用了老版本的classes14.jar作为jdbc驱动,按照实际数据库及jdk版本下载最新驱动并更换后问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值