java - Tomcat 上的流口水

标签 java tomcat web-applications tomcat7 drools

我是流口水的新手,所以这个问题可能是基于个人意见。我在我们的独立 Java 应用程序中使用了 drools6.5,但现在想将它添加到我们现有的 Tomcat7(JDK8) 上的/webapps。 Web 应用程序是基于简单的 jsp/servlet/html(主要是手工编码 - 没有 Spring)。

是否有任何示例可以帮助我让 Drools6.5 在我们的 Tomcat/web 应用程序上运行?我已经尝试创建以下结构,希望它能起作用。 网络应用/ 网络信息/ |--classes/all_my_classes.class 元信息/ |--maven |---pom.properties |--kmodule.xml |--rules/myrule.drl

但是在调用kSession.insert()时代码产生了一个空指针异常。

DroolsPojoIn message = new DroolsPojoIn();
//## message setters.
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
kSession.insert(message);  //Generated NullPointerException.

相同的代码和结构在独立应用程序中运行良好。

谢谢和最好的问候 肖恩

最佳答案

我在下面的网址找到了解决方案

Loading and updating rules from a database in Drools 6

首先我删除了 META-INF 文件夹(没有必要)。然后我在任何函数之外声明了主要的 3 个类变量。我们通过/paths 手动加载 drools 文件比配置环境更容易。

KieServices ks = null;
KieContainer kContainer;
KieSession kSession;

然后我将以下代码添加到 servlet public void init() 函数中。

ks = KieServices.Factory.get();         
/* File System Handler */
KieFileSystem kfs = ks.newKieFileSystem();
kfs.write("/data/rules/lesson01.drl", "/data/rules/sample02.drl"); 
KieBuilder kieBuilder = ks.newKieBuilder( kfs ).buildAll();
Results results = kieBuilder.getResults();
if( results.hasMessages( Message.Level.ERROR ) ){
  System.out.println( results.getMessages() );
        throw new IllegalStateException( "### errors ###" );
  }
kContainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId());
KieBase kieBase = kContainer.getKieBase();
kSession = kContainer.newKieSession();

public void doGet() 中,我触发了规则。

DroolsPojo message = new DroolsPojo(); /*My Simple Pojo object*/
message.setMessage("Marketing Strategy");
message.setStatus(DroolsPojo.MARKET);
kSession.insert(message);
kSession.fireAllRules();

如果有更好的方法,请告诉我。

关于java - Tomcat 上的流口水,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44559425/

相关文章:

tomcat - java.lang.IllegalArgumentException : The servlets are both mapped to the url-pattern [/foo] which is not permitted 异常

tomcat - Tomcat 类加载器的顺序 : common, 共享,和服务器

java - ViewPager 中 fragment 之间的通信

java - `checkstyle-suppressions.xml` 的位置?

internet-explorer - .msi 以文本形式下载

java - 权衡类的数量与可读性

http - CORS 和 HTTP 基本身份验证

model-view-controller - 与Web应用程序中的三层体系结构相比,MVC有何优势?

java - 随机分布在动态数组中

java - 使用 Java 加载 .NET 4.5 可执行文件