`
Kyll
  • 浏览: 101807 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Jbpm + Spring 配置

    博客分类:
  • Java
阅读更多
配置问题, 苦!

以前用 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 代码
 
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:jee="http://www.springframework.org/schema/jee"  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  6.             http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">  
  7.   
  8.     <description>JBPM Configure File<!---->description>  
  9.   
  10.     <!---->  
  11.     <bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">  
  12.         <property name="sessionFactory">  
  13.             <ref bean="sessionFactory"/>  
  14.         <!---->property>  
  15.         <property name="configuration">  
  16.             <value>/WEB-INF/jbpm.cfg.xml<!---->value>  
  17.         <!---->property>  
  18.         <property name="createSchema">  
  19.             <value>false<!---->value>  
  20.         <!---->property>  
  21.     <!---->bean>  
  22.   
  23.     <bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">  
  24.         <constructor-arg index="0" ref="jbpmConfiguration"/>  
  25.     <!---->bean>  
  26.     <!---->  
  27. <!---->beans>  


jbpm.cfg.xml
xml 代码
 
  1. <jbpm-configuration>  
  2.   
  3.     <jbpm-context>  
  4.         <service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory"/>  
  5.         <service name="tx" factory="org.jbpm.tx.TxServiceFactory"/>  
  6.         <service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory"/>  
  7.         <service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory"/>  
  8.         <service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory"/>  
  9.         <service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory"/>  
  10.     <!---->jbpm-context>  
  11.   
  12.     <!---->  
  13.     <!---->  
  14.   
  15.     <!---->  
  16.     <string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties"/>  
  17.     <string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties"/>  
  18.     <string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties"/>  
  19.     <string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml"/>  
  20.     <string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml"/>  
  21.     <string name="resource.parsers" value="org/jbpm/jpdl/par/jbpm.parsers.xml"/>  
  22.     <string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml"/>  
  23.     <string name="resource.mail.templates" value="jbpm.mail.templates.xml"/>  
  24.   
  25.     <int name="jbpm.byte.block.size" value="1024" singleton="true"/>  
  26.     <string name="jbpm.mail.smtp.host" value="localhost"/>  
  27.     <bean name="jbpm.task.instance.factory" class="org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl"  
  28.           singleton="true"/>  
  29.     <bean name="jbpm.variable.resolver" class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true"/>  
  30.     <bean name="jbpm.mail.address.resolver" class="org.jbpm.identity.mail.IdentityAddressResolver" singleton="true"/>  
  31.   
  32.     <!---->  
  33.     <bean name="jbpm.job.executor" class="org.jbpm.job.executor.BpmJobExecutor">  
  34.         <field name="jbpmConfiguration">  
  35.             <ref bean="jbpmConfiguration"/>  
  36.         <!---->field>  
  37.         <field name="name">  
  38.             <string value="JbpmJobExector"/>  
  39.         <!---->field>  
  40.         <field name="nbrOfThreads">  
  41.             <int value="1"/>  
  42.         <!---->field>  
  43.         <field name="idleInterval">  
  44.             <int value="5000"/>  
  45.         <!---->field>  
  46.         <field name="maxIdleInterval">  
  47.             <int value="3600000"/>  
  48.         <!---->field>  
  49.         <!---->  
  50.         <field name="historyMaxSize">  
  51.             <int value="20"/>  
  52.         <!---->field>  
  53.         <field name="maxLockTime">  
  54.             <int value="600000"/>  
  55.         <!---->field>  
  56.         <!---->  
  57.         <field name="lockMonitorInterval">  
  58.             <int value="60000"/>  
  59.         <!---->field>  
  60.         <!---->  
  61.         <field name="lockBufferTime">  
  62.             <int value="5000"/>  
  63.         <!---->field>  
  64.         <!---->  
  65.     <!---->bean>  
  66. <!---->jbpm-configuration>  


org.jbpm.job.executor.BpmJobExecutor
java 代码
 
  1. public class BpmJobExecutor extends JobExecutor {  
  2.     public static JbpmConfiguration jbpmConfig;  
  3.   
  4.     public synchronized void start() {  
  5.         jbpmConfiguration = jbpmConfig;  
  6.         super.start();  
  7.     }  
  8.   
  9.     public static void setJbpmConfiguration(JbpmConfiguration config) {  
  10.         jbpmConfig = config;  
  11.     }  
  12. }  


com.rathink.bpm.servlet.JobExecutorServlet
java 代码
 
  1. public class JobExecutorServlet extends HttpServlet {  
  2.   
  3.     private static final long serialVersionUID = 1L;  
  4.   
  5.     JbpmConfiguration jbpmConfiguration;  
  6.   
  7.     public void init() throws ServletException {  
  8.         JbpmTemplate jbpmTemplate = (JbpmTemplate) WebApplicationContextUtils  
  9.                 .getWebApplicationContext(this.getServletContext()).getBean(  
  10.                 "jbpmTemplate");  
  11.         jbpmConfiguration = jbpmTemplate.getJbpmConfiguration();  
  12.         BpmJobExecutor.setJbpmConfiguration(jbpmConfiguration);  
  13.         jbpmConfiguration.startJobExecutor();  
  14.     }  
  15.   
  16.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  17.         PrintWriter out = response.getWriter();  
  18.         out.println("");  
  19.         out.println("");  
  20.         out.println("

    JBoss jBPM Scheduler Servlet

    );  
  21.         Collection threads = jbpmConfiguration.getJobExecutor().getThreads().values();  
  22.         for (Object thread1 : threads) {  
  23.             Thread thread = (Thread) thread1;  
  24.             out.println("

    " + thread.getName() + "

    "
    );  
  25.             out.println("isAlive:" + thread.isAlive());  
  26.         }  
  27.         out.println("");  
  28.         out.println("");  
  29.     }  
  30.   
  31.     String getInitParameter(String name, String defaultValue) {  
  32.         String value = getInitParameter(name);  
  33.         if (value != null) {  
  34.             return value;  
  35.         }  
  36.         return defaultValue;  
  37.     }  
  38. }  


web.xml
xml 代码
 
  1. ......  
  2.     <servlet>  
  3.         <servlet-name>JobExecutorServlet<!---->servlet-name>  
  4.         <servlet-class>com.rathink.bpm.servlet.JobExecutorServlet<!---->servlet-class>  
  5.         <load-on-startup>3<!---->load-on-startup>  
  6.     <!---->servlet>  
  7.   
  8.     <servlet-mapping>  
  9.         <servlet-name>JobExecutorServlet<!---->servlet-name>  
  10.         <url-pattern>/jobexecutor<!---->url-pattern>  
  11.     <!---->servlet-mapping>  
  12. ......  
分享到:
评论
1 楼 rmn190 2009-03-26  
看下这个类: org.jbpm.web.JbpmThreadsServlet

相关推荐

Global site tag (gtag.js) - Google Analytics