在安装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 LibrariesCAP程序全量库

清理构建库

3.2 清理配置文件

在EOS项目的系统配置文件夹中,保存了系统级的配置文件,需要清理一些BPS相关的配置文件,包括:log4j-wf.xmlwfengine-config.xmlwfsys-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包中的内容了,因为我这里是一个空项目,可以很清楚的看到那些是默认的内容,如果是在正式项目中,可能就不是很明显了,所以需要不要轻易走这步。

除了自己创建的文件夹、commoncssWEB-INF之外,其他的全部可以删除,因为删除内容过多,所以需要谨慎。

清理EAR包

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服务