在安装EOS Platform的时候,会有选择插件的界面,包括bps、cap、mobile(7.3提供)、sso。当选择的bps之后,在EOS的default包(应该称为基础包)中,将包含BPS的内容。EOS导出EAR包的原理是,将新建的EOS项目中的内容添加到default包中,然后将default整体导出为EAR包。在某些使用EOS项目中没有用到BPS,并且不需要BPS引擎启动,需要通过修改配置,禁用BPS服务。
1 直捣黄龙 - 修改EAR包
导出的EAR包中,包含了所有的内容,所以想要禁用BPS服务,可以直接修改EAR包。
设项目名称为project,导出的EAR包为project.ear。
在project.ear/project.war/WEB-INF/_srv/work/system/com.primeton.workflow.core/META-INF中,handler-contribution.xml
文件中配置了BPS服务启动的功能:
<handlers>
<handler handle-class="com.primeton.workflow.api.listener.WFStartUpListener"/>
<handler handle-class="com.primeton.workflow.message.startup.WFStartUpListenerMessage"/>
</handlers>
删除或注销所有的handler配配置,下面的内容即可:
<handlers>
</handlers>
这样在启动部署EAR的时候,不会启动BPS服务了。
2 釜底抽薪 - 修改default包
每次修改EAR包实在太麻烦,干脆直接把default包中关于BPS服务的内容删除得了。
设EOS Platform的安装目录为EOS_HOME,需要修改的文件在:%EOS_HOME%\ide\eclipse\dropins\PLATFORM_7.2.0.0\plugins\com.primeton.studio.ear.core_7.1.0.0\template\ear\default\war\WEB-INF_srv\work\system\com.primeton.workflow.core\META-INF。
与第一步中相同,修改handler-contribution.xml
,将所有的handler删除或注销。因为这里是default包,建议采用注销:
<handlers>
<!--
<handler handle-class="com.primeton.workflow.api.listener.WFStartUpListener"/>
<handler handle-class="com.primeton.workflow.message.startup.WFStartUpListenerMessage"/>
-->
</handlers>
3 斩草除根 - 清理
通过上面两种方式后,可以在EOS项目部署的过程中禁用BPS服务,但是EOS项目中还是包含了BPS的其他内容,并且导出的EAR包中存在其他内容,虽然现在硬盘不值钱,但是作为有洁癖的程序员,绝对不希望这样。那就手动清理EOS项目及EAR包。
3.1 清理构建库
在EOS项目上右键,点击属性,选择Java 构建路径,选择选项卡库,删除BPS Libraries
、CAP程序全量库
。
3.2 清理配置文件
在EOS项目的系统配置文件夹中,保存了系统级的配置文件,需要清理一些BPS相关的配置文件,包括:log4j-wf.xml
、wfengine-config.xml
、wfsys-config.xml
三个配置文件。
3.3 清理BPS配置内容
在第2步中已经删除了BPS相关配置文件,但是在公共的配置文件中,还存在BPS相关的内容需要清理。
3.3.1 log4j-trace.xml
在log4j-trace.xml
中存在bps日志打印配置,全部删除:
<!-- bpslogger -->
<logger additivity="false" name="com.primeton.bps">
<level value="ERROR"/>
<appender-ref ref="ROLLING_FILE"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger additivity="false" name="com.eos.workflow">
<level value="ERROR"/>
<appender-ref ref="ROLLING_FILE"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger additivity="false" name="com.primeton.workflow">
<level value="ERROR"/>
<appender-ref ref="ROLLING_FILE"/>
<appender-ref ref="CONSOLE"/>
</logger>
3.3.2 user-config.xml
3.3.2.1 登录过滤
在user-config.xml
中需要修改(修改也算是清理的一种吧)的是关于登录过滤器的内容:
<group name="Login-Filter">
<!-- pages that can be accessed by any one including those not login -->
<configValue key="Exclude">/ap/sce/help/tabsTree.jsp,/ap/see/form/swfupload/upload.jsp,/gocom/cap/auth/see/login/login/login.jsp,/login/login.jsp,/login/clientLoginFailure.jsp,/login/clientLoginSuccess.jsp,/common/**.jsp,/index.jsp,/common.remote,/jmxDefault.jmx,/common.download,/gocom/cap/workflow/client/login/main/login.jsp,**/com.primeton.workflow.client.UserLogin.flow,**/org.gocom.cap.auth.see.login.login.flow,**/org.gocom.components.coframe.auth.LoginManager.login.biz.ext,**/org.gocom.components.coframe.auth.login.login.flow</configValue>
<configValue key="Include">*.flow,*.flowx,*.jsp,*.html,*.ajax,*.ext,*.action,*.beanx</configValue>
<!-- the page to display when user not login -->
<configValue key="LoginPage">/coframe/auth/login/login.jsp</configValue>
</group>
修改为:
<group name="Login-Filter">
<!-- pages that can be accessed by any one including those not login -->
<configValue key="Exclude">/common/**.jsp,/index.jsp,/common.remote,/jmxDefault.jmx,/common.download</configValue>
<configValue key="Include">*.flow,*.flowx,*.jsp,*.html,*.ajax,*.ext,*.action,*.beanx</configValue>
<!-- the page to display when user not login -->
<configValue key="LoginPage">/index.jsp</configValue>
</group>
3.3.2.2 SSO及CAP
需要删除关于SSO和CAP所需数据源的相关配置:
<module name="Party">
<group name="SSO">
<configValue key="RemoteIp"></configValue>
<configValue key="RemotePort"></configValue>
<configValue key="AppName"></configValue>
<configValue key="passwordEncoder">com.primeton.cap.sso.encrypt.MD5PasswordEncoder
</configValue>
</group>
</module>
<module name="Cap">
<group name="DataSouceName">
<!-- 系统数据源映射配置 -->
<!--<configValue key="System">default</configValue> -->
<!-- 用户数据源映射配置 -->
<!--<configValue key="User">default</configValue> -->
</group>
</module>
3.3.2.3 门户(Portal)模式
因为上面删除了SSO登录,在登录过滤中设置*.jsp的文件需要登录,所以这里暂时将项目修改为门户(Portal)模式:
<group name="Accessed-Mode">
<configValue key="Portal">false</configValue>
</group>
修改为:
<group name="Accessed-Mode">
<configValue key="Portal">true</configValue>
</group>
3.4 删除工作流相关文件
生成的EOS项目中,默认生成工作流相关的web内容和bps配置文件夹,直接删除。
3.5 清理EAR包 - 慎用
最后就是清理EAR包中的内容了,因为我这里是一个空项目,可以很清楚的看到那些是默认的内容,如果是在正式项目中,可能就不是很明显了,所以需要不要轻易走这步。
除了自己创建的文件夹、common
、css
、WEB-INF
之外,其他的全部可以删除,因为删除内容过多,所以需要谨慎。
4 总结
通过上面几步,可以禁用BPS服务,并一定程度的清理EAR包中的内容,但是不负责任的说,并不能完全清理,就像Windows系统,即使再高级的垃圾清理软件,也不能把所有垃圾清理干净。
所以需要在创建项目前,规划好是否真的不需要BPS服务,如果是,那就废点功夫,重新安装一个干净的EOS Platform,这样导出的EAR包绝对是干净的。
5 补充
其实在上面删除的过程中,并没有将所有有关BPS工作流的内容删除。在project.ear/project.war/WEB-INF/_srv/work/system中,有几个bps、workflow相关的文件夹,在 1 直捣黄龙 - 修改EAR包 中,也是修改的这个文件夹中的内容,其实可以直接将这些文件夹删除。
个人主页: https://www.howardliu.cn
个人博文: 在EOS项目中禁用BPS服务
CSDN主页: http://blog.csdn.net/liuxinghao
CSDN博文: 在EOS项目中禁用BPS服务