我们知道jBPM自带例子是运行在其默认的HSQLDB中的, 这个HSQLDB是有其优点, 但一般情况下很少当作项目的正式库来用. 这样,想通过jBPM自带的这个starterKit来往正式库里发布项目定义的流程就不可能了. 那怎么办? 能不能改下jBPM自带starterKit运行的数据库呢? 也就是说让starterKit运行在自己指定的数据库上. 我们这里还是以Mysql为例来梳理总结怎么来修改配置.
修改starterKit关于数据库方面配置前,我们先做下准备工作,先采用"jBPM(五): 部署jBPM所用表到数据库_2 "中的ant命令来建表(并部署自带的websale实例已定义好的流程).
这样准备工作做完好了, 下面来看怎么来改starterKit里关于数据库方面的配置. 以下是具体步骤:
1, 在JBPM_HOME/jbpm-server/server/jbpm/deploy目录下新建一名为"jbpm-ds.xml"的文件, 文件内部如下:
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>JbpmDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/jbpm</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>yourmysqlrootpw</password> <metadata> <type-mapping>MySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
如果用的不是MySQL, 可参考JBoss Application Server distribution里docs/examples/jca文件夹下的data source定义文件.
2, 拷MySQL的驱动到JBPM_HOME/jbpm-server/server/jbpm/lib文件夹下.
3, 修改JBPM_HOME/jbpm-server/server/jbpm/deploy/jbpm.sar/META-INF文件夹下jboss-service.xml文件的内容. 替换为如下内容:
<?xml version="1.0" encoding="UTF-8"?> <server> <mbean code="org.jbpm.db.jmx.JbpmService" name="jboss.jbpm:name=DefaultJbpm,service=JbpmService" description="Default jBPM Service"> <attribute name="JndiName">java:/jbpm/JbpmConfiguration</attribute> <depends>jboss.jca:service=DataSourceBinding,name=JbpmDS</depends> </mbean> </server>
也就是将depends中的name由原来的DefaultDS改为JbpmDS.
4, 找到JBPM_HOME/jbpm-server/server/jbpm/deploy/jbpm.sar文件夹下jbpm.sar.cfg.jar文 件, 解压到一个地方, 修改里面的hibernate.cfg.xml文件. 只有两处可改:
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.datasource">java:/JbpmDS</property>
修 改完后, 利用WinRaR压缩jbpm.sar.cfg.jar解压后的文件(一共三个文件(夹): jbpm.cfg.xml, hibernate.cfg.xml和META-INF文件夹),并命名为jbpm.sar.cfg.jar,替换原来的 jbpm.sar.cfg.jar文件 .
这里有一个注意点,如下图所示:
压缩时选定ZIP, 并将压缩名设置为jbpm.sar.cfg.jar 这样产生的文件名将是 jbpm.sar.cfg.jar.zip, 我们得再通过重命名的方式将".zip"去掉. 这样再替换掉原来的 jbpm.sar.cfg.jar文件.
至此, 我们修改完毕,双击JBPM_HOME\ jbpm-server下的start.bat,启动服务器. 在cmd的显示信息中,我找到如下的证明:
21:03:07,046 INFO [SettingsFactory] RDBMS: MySQL , version: 5.0.67-community-nt
21:03:07,046 INFO [SettingsFactory] JDBC driver: MySQL-AB JDBC Driver, version: mysql -connector-java-3.1.7 ( $Date: 2005/01/25 19:11:41 $, $Revision: 1.27.4.54 $ )
21:03:07,078 INFO [Dialect] Using dialect: org.hibernate.dialect.MySQLDialect
这样从结果上也证明我们配置成功!