2011-09-01 74 views
0

我有一个简单的Web应用程序,通过Web服务接收数据并将其保存在数据库中。我正在使用CXF,Hibernate和Glassfish 3.我对这一切都很陌生,但是我正在努力研究如何开发一个简单的插件模型,以便当应用程序启动时它会搜索文件夹中的插件,为每个插件调用一个实例化(?)类。问题是,我不确定如何启动这个过程(即应用​​程序第一次启动时) - 我怎么知道应用程序何时启动。任何建议/意见表示赞赏!Java EE Web应用程序插件体系结构

确定这里是web.xml中的修改样本类:

package foo.bar.startup; 

import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 

public class AppStartup implements ServletContextListener { 

    public void contextInitialized(ServletContextEvent event) { 
     // App started - do start up stuff 
    } 
    public void contextDestroyed(ServletContextEvent event) { 
     // App stopped - do something 
    } 
} 




    <listener> 
    <listener-class>foo.bar.AppStartup</listener-class> 
    </listener> 

回答

1

当Web应用程序启动时,它会触发ServletContextEvent都到每注册ServletContextListener。这些监听器必须在应用程序的web.xml配置:

<listener> 
    <listener-class>com.foo.bar.MyServletContextListener</listener-class> 
</listener> 
+0

谢谢你 - 我真的很感激指导。我测试了一些代码,并且它运行良好 - 我将为其他人添加上面的示例。 – skyman

1

如果你想知道应用程序启动时/停止,你可以实现一个ServletContextListener并在web.xml中注册文件。

你应该看看OSGI - 如果你需要一个精心制作的插件模型,以支持在运行时部署新的插件,插件等的热重新部署

+0

感谢您还为推荐一下OSGI ..... – skyman