按照WFMOPEN的用户手册上的说明, 短短的几句话,似乎可以在二十来分钟就让WFMOPEN运行起来.但是实际上,我从昨天下午到今天上午9:20,一共用了6个小时才把WFMOPEN的例子运行起来.整个过程中有很多陷井.
PITFALL ONE
预备数据库的时候要注重,假如你用JBOSS自带的HYPERSONIC数据库的话,要知道HYPERSONIC有两种连接方式,一是通过TCP,另外一种是IN-MEMORY.
在TCP方式下, 启动JBOSS以后才能执行初始化数据库的操作.而且在JDBC.PROPERTY ($DIST\wfmopen-1.1-bin\lib\wfdemo)要使用的是database=jdbc:hsqldb:hsql://localhost:1701(不需要改动)因为JBOSS 3.2.0以后默认的是IN-MEMORY方式,所以要用TCP方式,必须要告诉JBOSS,我要用TCP方式,具体方法是: UNZIP JBOSS 以后
1. 在$JBOSS_HOME/server/default/deploy/hsqldb-ds.XML中, UNCOMMENT
<connection-urljdbc:hsqldb:hsql://localhost:1701</connection-url
并且把其它的<connection-url-tags都给COMMENT掉.
2. 在$JBOSS_HOME/server/default/conf/jboss-service.xml"Monitoring and Management"-statements 后面加一句:
<mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss.jdbc:name=HypersonicDatabase"/
这是根据JBOSS 的要求来加的,在JBOSS的文档里有说这个.
完成了这两步以后再按照用户手册上说的去做.
在IN-MEMORY连接方式下,数据不会写到硬盘上,JBOSS一停,数据库中的数据就会消失,所以每次启动JBOSS前或后都要执行一次初始化数据库的操作,由于是IN MEMORY可以在JBOSS 启动前初始化数据库. 但是要注重的一点是: 在JDBC.PROPERTY ($DIST\wfmopen-1.1-bin\lib\wfdemo)要使用的是database=jdbc:hsqldb:hsql:.(要增加的)
NOTE: 我用的是TCP,我不能保证IN-MEMORY也可行.
PITFALL TWO
为什么不能用mysql, 因为WFMOPEN 要求用支持DISTRIBUTE TRANSACTION的数据库,MYSQL显然是不支持DISTRIBUTE TRANSACTION的. 当然你可以在MYSQL.COM中找到MAXDB来用.
PITFALL THREE
JBOSS 用哪个版本? 虽然用户手册上说的是JBOSS3.2.5版本可以用,但是周志军发现JBOSS3.2.5版上关于MQ SERVICE(JMS) 中有漏洞, WFMOPEN 明确用到JMS,所以JBOSS3.2.5版很可能引起WFMOPEN不能运行,表现就是当用”ML”LOGIN的时候无法LOGIN, 同时JBOSS上不断抛出错误信息.为了安全,请使用JBOSS3.2.3版,我用过了,没问题.
PTIFALL FOUR
在把$DIST/lib/wfdemo/login-config.xml.insert添加到
$JBOSS_HOME/server/default/conf/login-config.xml 的时候要注重,要在最后一个</policytag前添加那些内容,手册中写的是在最后,轻易产生误会.假如LOGIN 的时候用”ML”无法LOGIN,那么错误可能在两个地方:一是login-config.xml文件没设置好,另一个就是数据库没有正确初始化.应仔细在这两个地方找错误.
HOW TO GET WFMOPEN SAMPLE UP
I follow user manual C.2 Sample application,6 hours to get up wfmopen 1.1 sample application , you got problem using “ML” to login? Just follow these steps:
WARNING:
First, I use Jboss 3.2.5 with wfmopen 1.2. I can’t login using “ML”, meanwhile, Jboss throw lots of exceptions continuely. I found that Jboss 3.2.5 itself has a bug when using MQ serviece(JMS). Wfmopen need MQ service support, so this bug could cause the problem. Otherwise, unproperly set login-config.xml file and uninitial database could also cause the problem as Michael said previously.
So Jboss 3.2.5 don’t work, try Jboss 3.2.3.
Step 1: unzip Jboss 3.2.3
Step 2: uncomment
<connection-urljdbc:hsqldb:hsql://localhost:1701</connection-urlin $JBOSS_HOME/server/default/deploy/hsqldb-ds.xml and comment all other <connection-url-tags
Step 3:add <mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss.jdbc:name=HypersonicDatabase"/to $JBOSS_HOME/server/default/conf/jboss-service.xml
Step 4: prepare the database as user manual said.
Step 5: make sure you insert the fragment $DIST/lib/wfdemo/login-config.xml.insert before the last </policy tag of $JBOSS_HOME/server/default/conf/login-config.xml( I got wrong when I simply append everything after $JBOSS_HOME/server/default/conf/login-config.xml )
Step 6: try wfmopen 1.1 in case of wfmopen 1.2 don’t work.