首页 > 解决方案 > Eclipse 中带有 SOAP Web 服务的 Drools

问题描述

在eclipse中,我正在开发一个基于soap的web服务,我决定使用Drools来编写业务逻辑。这就是我将 drools 集成到 eclipse 中所做的: - 使用“安装新软件”选项在 eclipse 中安装了 drools 插件。- 将所有的drools jar 文件复制到“Referenced Libraries”文件夹中。- 使用新添加的 drools jar 文件继续使用我之前创建的动态 Web 项目。

在我构建知识库的线程的一个阶段(使用线程池执行程序的提交方法启动),我有 kieServices 初始化,如下所示:

kieServices ks = kieServices.Factory.get();

但是此时应用程序崩溃了。当我尝试在 Eclipse 中调试时,应用程序到达了这个初始化点,当我作为调试的一部分进入它时,它会将我带到 java.util.concurrent.FutureTask.class 的 catch 块之一。

所以,这个工厂抛出了一些异常,即使使用基 Exception 类我也无法捕获。它既没有被捕获,我也无法在任何 tomcat 日志中看到任何堆栈跟踪。

    try {
        // load up the knowledge base
        KieServices ks = KieServices.Factory.get();
        KieContainer kContainer = ks.getKieClasspathContainer();
        KieSession kSession = kContainer.newKieSession("ksession-rules");
        ...
        ...
         }
    catch(Exception e) {
              e.printStackTrace(); }

任何帮助将不胜感激。

注意:如果我在 eclipse 中的一个单独的 Drools 项目(不是动态 Web 项目)中使用相同的 drools jar,这个 kieServices 工厂调用就可以正常工作。

标签: javaeclipseweb-servicessoapdrools

解决方案


我能够自己弄清楚这个问题。抛出了 Throwable 类型的异常,代码中缺少 catch 块。抛出的异常是 NoClassDefFoundError。添加了 catch 块并通过在运行时环境中复制丢失的 jar 来消除异常。


推荐阅读