使用Jbpm的朋友对JobExecutorServlet不会陌生.
我在web.xml中进行了如下配置
<servlet>
<servlet-name>JobExecutorServlet</servlet-name>
<servlet-class>org.jbpm.job.executor.JobExecutorServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JobExecutorServlet</servlet-name>
<url-pattern>/jobexecutor</url-pattern>
</servlet-mapping>
这样,当Tomcat启动时,JobExecutorServlet也会自动启动.
load-on-startup的值可以设置成1,2,3或-1,表示启动顺序,如果是-1的话表示不启动.
JobExecutorServlet 自动启动给我带来了一些麻烦,导致正常应用系统启动不起来或者错误.其中一个原因就是我在Jbpm的Job中放置了一些代码,这些代码会调用应用系统中的某些javabean,应用系统启动没有JobExecutorServlet快,就导致了错误.
刚开始,我总是在启动tomcat的同时去启动应用系统(向浏览器发送请求),如果迅速的话可以避免错误,但是如果慢的话,可能就会产生错误.
后来,想想,能不能手动启动JobExecutorServlet呢?等我需要的时候在启动它.回答是肯定的.
JbpmConfiguration.getInstance().startJobExecutor();
这个地方使用JbpmConfiguration,而不是自己创建的jbpmConfiguration对象或实例,要不然将不会有任何现象.
记得要注释掉web.xml中的JobExecutorServlet配置.