2011-09-01 70 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