Drools5.2整合到Felix上

来源:互联网 发布:蜘蛛之丝 知乎 编辑:程序博客网 时间:2024/06/03 15:59

      我们这里是将Drools单独作为一个Bundle,所有依赖的包都是放在Bundle的CLASSPATH下,其中标红的包就是。还有另一种方式就是将所有依赖的包都以Bundle的形式部署在Felix上,但是由于包之间依赖关系比较复杂,而且也和其他模块之间没有太多共用的jar包,因此我们采取了当前这种方式。

       这里需要注意的是:

      1)蓝色字体的package实际上是虚拟机自带的rt.jar包中的部分,按常理说不需要显式导入,但是在Felix上必须要这样做,或者是在MANIFEST.MF中用“DynamicImport-Package  *  "的方式,但是一般不赞成这样做。

      2)我们只是使用了规则引擎最基本的部分规则、规则流,并不涉及规则的持久化和管理等部分。因此我们打的是一个很精致的Bundle。

      以下是我整合时的MANIFEST.MF文件。

      Manifest-Version: 1.0
      Bundle-ManifestVersion: 2
      Bundle-Name: Drools_osgi
      Bundle-SymbolicName: drools_osgi
      Bundle-Version: 1.5.4.qualifier
      Bundle-Activator: drools_osgi.Activator
      Bundle-Vendor: zhaic
      Bundle-RequiredExecutionEnvironment: JavaSE-1.6
      Import-Package: javax.security.auth,
       javax.xml.parsers,
       org.osgi.framework,
       org.w3c.dom,
       org.xml.sax,
       org.xml.sax.ext,
       org.xml.sax.helpers
      Bundle-ClassPath: .,
       lib/antlr-runtime-3.3.jar,
       lib/drools-compiler-5.3.0.Final.jar,
       lib/drools-core-5.3.0.Final.jar,
       lib/jbpm-flow-5.1.2.Final.jar,
       lib/jbpm-flow-builder-5.1.2.Final.jar,
       lib/knowledge-api-5.3.0.Final.jar,
       lib/mvel2-2.1.0.drools4.jar,
       lib/xmlpull-1.1.3.1.jar,
       lib/xstream-1.4.1.jar,
       lib/log4j-1.2.15.jar,
       lib/commons-logging-1.0.4.jar,
       lib/ecj-3.5.1.jar

         如果不导入ecj-3.5.1.jar这个包,就会报:The Eclipse JDT Core jar is not in the classpath这个错误。网上有人说需要加入Drools核心包就会解决这个问题,其实引起这个错误有很多原因。具体只需要查看源码就清楚了。

原创粉丝点击