我想创建一个包含在Tomcat中的servlet,它使用Jnotify (可能是开放的,但也可以接受建议)来监视目录的变化。
我会使用Java7和NIO的东西,但我们的生产系统运行的是Ubuntu10.04,我想坚持使用目前主要在存储库和deb包中的东西,因为部署原因。
我的问题是如何将Jnotify集成到我的Tomcat服务器中。我目前的想法是使用GenericServlet类创建一个servlet,它在init()方法中设置我想要的目录上的监视。然后,每当我在目录上获得活动时,我就会以某种方式调用service()方法(这是我不明白的一点)。然后,我可以有一个监听器,它在目录上执行操作(在本例中是移动文件)
或者我可以创建一个新的协议处理程序(例如,使用PoolTcpEndpoint作为起点),但它不是一个协议,所以这看起来很愚蠢。
还是有更好的方法?使用Tomcat背后的唯一原因是,我们的许多其他逻辑都保存在tomcat服务器中。如果有一种方法可以将Java守护起来,并以另一种方式获得事件驱动的架构,那么我对此持开放态度,但我不想做像使用Jetty这样的事情,因为这将是另一项添加到堆栈中以支持的技术,而这是不可能的。
期待听到你的想法。
谢谢
发布于 2012-03-13 00:50:48
我不清楚的一点是,你希望这个功能有多明显?(在单个servlet中?Tomcat实例中的所有servlet?Tomcat实例之外的资源?)
对于其他servlet,您可以(从servlet)在全局JNDI中注册一个接口,然后其他servlet可以检索该接口并向其添加侦听器。
对于Tomcat之外的资源,您可以使用类似轮询的COMET公开一个RMI对象或一个简单的REST类型服务。如果您可以访问servlet 3.0,您甚至可以实现异步调用。
https://stackoverflow.com/questions/9651135
复制相似问题