DroolsWorkbench7.11 源码编译及部署到Tomcat中调试
1. 源码下载及编译
- 源码下载
创建文件夹drools,打开kiegroup,下载kie-wb-distributions、drools-wb两个工程到drools文件夹,并将两个工程切换到7.11分支。 - 导入IDEA
该过程很简单,不多赘述。注意将这两个工程不要单独导入,要放到一起 - 编译kie-wb-distributions和drools-wb,其中为DroolsWorkbench的主项目,两个项目的编译时间都比较长,需要耐心等待,注意选择跳过测试。另外Drools整个工程源码是比较大的,这里仅仅选择了两个模块。
- 获取war包,在kie-wb-distributions工程下的子工程kie-drools-wb-parent的target目录里有:kie-drools-wb-7.11.0.Final-tomcat8.war,该war包就是DroolsWorkbench的完整war包。
2. 将kie-drools-wb-7.11.0.Final-tomcat8.war部署到tomcat
因为该war包无法直接进行debug(或许是我没找到调试方法,对IDEA不是很熟),所以我们选择将其单独部署到tomcat中,并开启远程调试来进行调试,为了将步骤简单化,我们分为两步操作,先将项目运行起来,然后再开启远程调试。
- tomcat版本
apache-tomcat-8.5.38或tomcat8以上,最好与此版本一致,不会有问题 - tomcat配置
- jar包
下载javax.security.jacc-api-1.6.jar、kie-tomcat-integration-7.23.0.Final.jar、slf4j-api-2.0.0-alpha0.jar,放到tomcat的lib目录下。 - server.xml
在Host节加入<Valve className="org.kie.integration.tomcat.JACCValve" />
- tomcat-users.xml,加入如下角色,admin与analyst可二选一
- jar包
<role rolename="admin"/>
<role rolename="analyst"/>
<user username="admin" password="admin" roles="admin"/>
<user username="analyst" password="analyst" roles="analyst"/>
- 部署kie-drools-wb-7.11.0.Final-tomcat8.war
解压至webapps的ROOT目录下即可 - 测试部署
启动tomcat,并访问http://localhost:8080/kie-drools-wb.jsp, 如能正常打开则部署成功,用户名密码即tomcat-users.xml中配置的用户。
3. 调试DroolsWorkbench
3.1 开启Tomcat远程调试(我用的是mac,windows自行修改bat文件)
- 修改startup.sh为jpda启动方式
# exec "$PRGDIR"/"$EXECUTABLE" start "$@"
exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
- 修改catalina.sh,端口号可自行修改
if [ -z "$JPDA_ADDRESS" ]; then
# JPDA_ADDRESS="localhost:8000"
JPDA_ADDRESS="8000"
fi
3.2 开启IDEA远程调试
打开运行–>编辑配置–>新建远程(我的IDEA汉化了,不知道英文对应的是什么),其配置界面如图:
注意将端口好改为与上一步配置的端口号一致,模块选drools-web-screens即可,配置完成后,debug该远程配置,如能看见如下信息,即为成功
连接到目标虚拟机,地址:'localhost:8000',传输:'socket'
3.3 调试源码
在DroolsWorkbench中新建Data Object与Guided Rules,具体的可自行配置。在GuidedRuleEditorServiceImpl类的validate方法打断点,点击Validate,即可进入断点。(断点位置可自行选择,我刚开始看源码,找到这一个断点)
3.4 其他说明
整理匆忙,且刚开始看DroolsWorkbench源码,所以以上整理难免有所遗漏,多多见谅。。。