配置问题, 苦!
以前用 spring-modules-0.8 中的 3.1 模块配置了 Jbpm + Spring,
但是, 当我使用 Timer 时, 却抛出异常:
org.jbpm.svc.JbpmServiceException: service 'scheduler' unavailable
看来是 scheduler 服务不可用。
查jbpm.cfg.xml 文件, 里面有关于 scheduler 的配置, 如下:
<service factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" name="scheduler">
查了很长时间, 一直不知道什么原因。
今天, 在网上搜索到了一篇文章(CSDN鸟之家), 发现我的配置中少了一个 serlvet。
于是, 加上, 结果, 异常。
还有一个警告:
WARN: no info for object 'jbpmConfiguration'. defined objects: [resource.parsers, resource.mail.templates, jbpm.task.instance.factory, jbpm.mail.smtp.host, jbpm.variable.resolver, resource.action.types, jbpm.byte.block.size, resource.varmapping, resource.business.calendar, resource.default.modules, jbpm.job.executor, resource.node.types, jbpm.mail.address.resolver, default.jbpm.context, resource.converter]
现在我的代码就是以下的样子了。 (有不少是网上摘抄的, 不要告我侵权啊, 我只想解决异常, 嘿嘿。)
除了 scheduler, 一切正常, 愁啊!!!!!!!!
环境:
IDE: IntelliJ IDEA 6.0.4
JDK: 1.6.0_02
DB: MySQL 5.0.41
Jbpm: 3.2 GA
Spring: 2.0.6
Spring-modules: 0.8
Hibernate: 3.2.4
Spring 的 jbpm.xml
</service>
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jee="http://www.springframework.org/schema/jee"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
-
- <description>JBPM Configure File<!---->description>
-
-
- <bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
- <property name="sessionFactory">
- <ref bean="sessionFactory"/>
- <!---->property>
- <property name="configuration">
- <value>/WEB-INF/jbpm.cfg.xml<!---->value>
- <!---->property>
- <property name="createSchema">
- <value>false<!---->value>
- <!---->property>
- <!---->bean>
-
- <bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
- <constructor-arg index="0" ref="jbpmConfiguration"/>
- <!---->bean>
-
- <!---->beans>
jbpm.cfg.xml
xml 代码
- <jbpm-configuration>
-
- <jbpm-context>
- <service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory"/>
- <service name="tx" factory="org.jbpm.tx.TxServiceFactory"/>
- <service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory"/>
- <service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory"/>
- <service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory"/>
- <service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory"/>
- <!---->jbpm-context>
-
-
-
-
-
- <string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties"/>
- <string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties"/>
- <string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties"/>
- <string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml"/>
- <string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml"/>
- <string name="resource.parsers" value="org/jbpm/jpdl/par/jbpm.parsers.xml"/>
- <string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml"/>
- <string name="resource.mail.templates" value="jbpm.mail.templates.xml"/>
-
- <int name="jbpm.byte.block.size" value="1024" singleton="true"/>
- <string name="jbpm.mail.smtp.host" value="localhost"/>
- <bean name="jbpm.task.instance.factory" class="org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl"
- singleton="true"/>
- <bean name="jbpm.variable.resolver" class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true"/>
- <bean name="jbpm.mail.address.resolver" class="org.jbpm.identity.mail.IdentityAddressResolver" singleton="true"/>
-
-
- <bean name="jbpm.job.executor" class="org.jbpm.job.executor.BpmJobExecutor">
- <field name="jbpmConfiguration">
- <ref bean="jbpmConfiguration"/>
- <!---->field>
- <field name="name">
- <string value="JbpmJobExector"/>
- <!---->field>
- <field name="nbrOfThreads">
- <int value="1"/>
- <!---->field>
- <field name="idleInterval">
- <int value="5000"/>
- <!---->field>
- <field name="maxIdleInterval">
- <int value="3600000"/>
- <!---->field>
-
- <field name="historyMaxSize">
- <int value="20"/>
- <!---->field>
- <field name="maxLockTime">
- <int value="600000"/>
- <!---->field>
-
- <field name="lockMonitorInterval">
- <int value="60000"/>
- <!---->field>
-
- <field name="lockBufferTime">
- <int value="5000"/>
- <!---->field>
-
- <!---->bean>
- <!---->jbpm-configuration>
org.jbpm.job.executor.BpmJobExecutor
java 代码
- public class BpmJobExecutor extends JobExecutor {
- public static JbpmConfiguration jbpmConfig;
-
- public synchronized void start() {
- jbpmConfiguration = jbpmConfig;
- super.start();
- }
-
- public static void setJbpmConfiguration(JbpmConfiguration config) {
- jbpmConfig = config;
- }
- }
com.rathink.bpm.servlet.JobExecutorServlet
java 代码
- public class JobExecutorServlet extends HttpServlet {
-
- private static final long serialVersionUID = 1L;
-
- JbpmConfiguration jbpmConfiguration;
-
- public void init() throws ServletException {
- JbpmTemplate jbpmTemplate = (JbpmTemplate) WebApplicationContextUtils
- .getWebApplicationContext(this.getServletContext()).getBean(
- "jbpmTemplate");
- jbpmConfiguration = jbpmTemplate.getJbpmConfiguration();
- BpmJobExecutor.setJbpmConfiguration(jbpmConfiguration);
- jbpmConfiguration.startJobExecutor();
- }
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- PrintWriter out = response.getWriter();
- out.println("");
- out.println("");
- out.println("
JBoss jBPM Scheduler Servlet
);
- Collection threads = jbpmConfiguration.getJobExecutor().getThreads().values();
- for (Object thread1 : threads) {
- Thread thread = (Thread) thread1;
- out.println("
" + thread.getName() + "
");
- out.println("isAlive:" + thread.isAlive());
- }
- out.println("");
- out.println("");
- }
-
- String getInitParameter(String name, String defaultValue) {
- String value = getInitParameter(name);
- if (value != null) {
- return value;
- }
- return defaultValue;
- }
- }
web.xml
xml 代码
- ......
- <servlet>
- <servlet-name>JobExecutorServlet<!---->servlet-name>
- <servlet-class>com.rathink.bpm.servlet.JobExecutorServlet<!---->servlet-class>
- <load-on-startup>3<!---->load-on-startup>
- <!---->servlet>
-
- <servlet-mapping>
- <servlet-name>JobExecutorServlet<!---->servlet-name>
- <url-pattern>/jobexecutor<!---->url-pattern>
- <!---->servlet-mapping>
- ......
分享到:
相关推荐
【jbpm+spring配置】是将业务流程管理(Business Process Management, BPM)框架jbpm与企业级应用开发框架Spring相结合的实践。jbpm是一个开源的BPM解决方案,它提供了流程定义、执行、监控和管理的一整套工具。而...
【jbpm+spring web简单借款工作流实例项目详解】 jbPM(Java Business Process Management)是一个开源的工作流程管理系统,它提供了一套完整的业务流程自动化解决方案,包括流程设计、部署、执行、监控和管理等...
2. 配置Spring框架,设置数据源连接到你的MySQL数据库,并配置jbpm的相关bean。 3. 配置Struts2框架,定义Action类和对应的视图模板。 4. 将项目部署到应用服务器,如Tomcat或Jetty。 5. 测试项目,确保所有流程和...
整合这些技术时,开发者通常会创建一个综合的配置文件体系,例如Spring的配置文件可以管理所有组件的依赖和配置,通过引入Struts、Hibernate、JPA、Lucene、JBPM和Compass的相关配置。这需要对每个框架的原理有深入...
1. 项目源码:包含Java源文件和配置文件,如Spring的bean配置、jbpm的流程定义文件等。 2. 数据库脚本:用于创建和初始化数据库表,存储流程实例、任务、变量等信息。 3. 测试用例:展示如何单元测试和集成测试流程...
FlowTest01可能是该项目中的一个流程测试示例,它可能包含了jbpm流程定义文件、Struts动作配置、Spring的bean配置以及相关的Java源代码。这个测试案例可以帮助初学者理解如何在实际应用中结合这些技术,实现业务流程...
配置文件是整合的关键部分,例如jbpm.cfg.xml是jbpm的主要配置文件,通常需要导入多个子配置,如jbpm.spring.default.cfg.xml、jbpm.spring.hibernate.cfg.xml等,这些配置文件会定义流程引擎、Spring上下文、...
在整合过程中,通常会创建一个Spring配置文件,其中包含Jbpm4和Hibernate的相关配置。例如,会配置Jbpm4的数据源、流程引擎工厂,以及Hibernate的SessionFactory。同时,需要确保所有必需的JAR文件,包括Jbpm4、...
这些问题通常需要检查配置文件的正确性,例如Spring的bean配置、Struts2的Action配置以及JBPM的流程定义。同时,确保所有的jar包都已经正确引入且版本匹配。 **5. 请假流程例子(S2SH+JBPM)** 这个例子展示了如何...
- **配置Spring**:在Spring配置文件中定义JBPM相关的bean,如TaskService、ProcessEngine等。 - **集成EXT**:建立EXT客户端应用,连接到Spring MVC或RESTful服务,获取并展示流程信息。 - **工作流接口**:在...
2. **Spring**:Spring是Java企业级应用的核心框架,提供依赖注入(DI)和面向切面编程(AOP)等功能,简化了组件的配置和管理。Spring还包含了Spring MVC,与Struts类似,用于构建Web应用的控制器。在这个项目中,...
Struts、Hibernate、Spring 和 jBPM 是四个在企业级应用开发中广泛使用的开源框架,它们结合在一起可以构建出高效且灵活的智能工作流系统。下面将分别介绍这些技术及其在工作流系统中的作用。 **Struts** Struts 是...
【jbpm+ssh整合】是将企业级工作流引擎jbpm与流行的SSH(Struts、Spring、Hibernate)框架集成,实现一个完整的业务流程管理系统。jbpm是一个开源的工作流引擎,可以处理复杂的业务流程自动化,而SSH是Java开发中...
Struts2、Spring、Hibernate和Jbpm是Java开发中常用的技术栈,它们结合在一起可以构建出高效、灵活的企业级应用。在这个“struts2+spring+hibernate+jbpm工作流实例”中,主要展示了如何利用这些技术实现一个公文...
这是一个基于Java技术栈,采用Spring、Struts、Hibernate、jbpm和DWR等多种框架整合开发的OA(Office Automation)办公系统源码项目。这个系统的构建旨在实现企业的日常办公自动化,提高工作效率,简化工作流程,...
这个实例可能包含了配置文件(如spring.xml、hibernate.cfg.xml)、实体类(Entity)、DAO接口和实现(Data Access Object)、服务层接口和实现(Service)、控制器(Controller)以及流程定义文件(jbpm的工作流...
在S2SH框架中,你需要了解如何配置Struts2的Action、Spring的Service以及Hibernate的DAO层,以便将请假申请的提交、审批等操作与jbpm的工作流引擎对接。同时,Spring的AOP(面向切面编程)可以用来实现细粒度的权限...
**jbpm+ssh** 的集成意味着开发者可以在Spring中配置jbpm的工作流服务,通过Struts处理用户交互,而Hibernate则负责数据持久化。这种集成可以提供一个统一的平台,用于处理复杂的业务流程和数据管理,同时利用SSH的...
3. **Spring配置:** 掌握Spring的IoC容器和AOP,配置服务bean,并为jBPM和Struts2提供依赖注入。 4. **数据源集成:** jBPM和Spring通常都需要数据库支持,需要配置数据源并确保它们共享同一个数据库连接。 5. **...