java - Tomcat Servlet Jnotify目录监控

标签 java tomcat servlets jnotify

我想创建一个包含在 Tomcat 中的 servlet,它使用 Jnotify(可能但对建议持开放态度)来监视目录的更改。

我会使用 Java 7 和 NIO 的东西,但我们的生产系统运行 Ubuntu 10.04,我想坚持使用目前主要在存储库和 deb 包中的东西,出于部署原因。

我的问题是关于如何将 Jnotify 集成到我的 Tomcat 服务器中。我目前的想法是,我使用 GenericServlet 类创建一个 servlet,该类在 init() 方法中在我想要的目录上设置监视。然后,当我在目录上获得 Activity 时,我以某种方式(这是我不明白的一点)调用 service() 方法。然后我可以有一个对目录执行操作的监听器(在这种情况下移动文件)

或者我可以创建一个新的协议(protocol)处理程序(例如使用 PoolTcpEndpoint 作为起点),但它不是一个协议(protocol),所以这看起来很愚蠢。

或者有更好的方法?使用 Tomcat 的唯一原因是我们的许多其他逻辑都保存在我们的 tomcat 服务器中。如果有一种方法可以使 Java 守护进程并以另一种方式获得事件驱动的体系结构,那么我会持开放态度,但我不想做一些事情,例如使用 Jetty,因为这将是另一种技术,可以添加到堆栈来支持这是不可能的。

期待听到您的想法。

谢谢

最佳答案

我不清楚的一点是您希望此功能有多明显? (在单个 servlet 中?到 Tomcat 实例中的所有 servlet?到 Tomcat 实异常(exception)部的资源?)

如果对于您的其他 servlet,您可以(从 servlet)在全局 JNDI 中注册一个接口(interface),然后其他 servlet 可以检索该接口(interface)并向其添加监听器。

对于 Tomcat 之外的资源,您可以公开一个 RMI 对象或一个简单的 REST 类型的服务,带有类似 COMET 的轮询。如果您可以访问 servlet 3.0,您甚至可以实现异步调用。

关于java - Tomcat Servlet Jnotify目录监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651135/

相关文章:

java - Eclipse Gradle 项目 : JAXB doesn't create java classes from nested WSDL file

java - 通过 JCo 以事务方式调用 BAPI RFC

javabridge 设置/安装问题

java - Spring mvc web.xml错误

java - Java 中的收缩数组保持数字分布

java - "\n"换行符和 %n 无法开始换行符

java - 如何在一定时间后停止tomcat处理请求?

java - 为什么 Tomcat 会报 403 错误?

java - 是否可以像JNDI一样在tomcat7中的context.xml中设置值和访问?

java - 无法在jsp页面中调用servlet的doPost()方法