[英]Using JPL (Java + Prolog) in a Java EE web application
我想开发一个Java EE Web应用程序,该应用程序需要通过JPL的Prolog来完成某些与搜索有关的任务。 该Web应用程序将部署在JBoss应用程序服务器中。 Prolog引擎可以是YAP或SWI(afaik是目前唯一与JPL兼容的Prolog引擎)。 Prolog查询取决于存储在(可能很大)数据库中的信息。
如果有人尝试过此方法或类似方法,能否请您对以下问题给我反馈?:
提前致谢!
管理需要访问Prolog引擎的并发http会话的最佳方法是什么?
如果我看一下JPL的源代码,看起来它使用了一个引擎池。 查询数据类型实现枚举器模式以及close()操作。 我猜只要引擎处于活动状态,它就会自动分配给查询。
因此,每个http请求都可以通过新的查询对象独立访问Prolog系统。 如果您不想在http请求期间关闭查询对象,我想您也可以将其附加到http会话。 并重用另一个请求。
如何管理Prolog与数据库的交互?
这取决于数据库中数据的使用模式和可用的访问路径。 可能是您可以在请求期间快速访问大型数据库,并在每个请求期间重新获取数据。 例如,如果所需的匹配数据集很小,并且数据库具有良好的索引,则可以快速访问匹配的数据。
否则,您将需要实现一些智能缓存。 我目前正在使用一种签入/签出模式的解决方案。 但这不适合您有多个用户的Web服务器。 我将此模式用于一个独立的解决方案,其中有一个用户和一个签出的内存中的数据垃圾。 对于具有多个用户的Web服务器,垃圾邮件可能会使Web服务器的内存溢出。
因此,只有在您可以限制和限制垃圾邮件或Web服务器内存很大的情况下,缓存才起作用。 也许您可以为您的应用找到这样的不变式。 否则的结论可能是,无论是否使用Prolog,您都不能独立于Java EE。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.