com.anysoft.webloader.WebApp Maven / Gradle / Ivy
package com.anysoft.webloader;
import com.anysoft.util.DefaultProperties;
import javax.servlet.ServletContext;
/**
* Web应用
*
*
* Web应用是部署在应用服务器(如tomcat,jetty等)中一个context.
*
* 设想一下这样的需求:
*
* 当在应用服务器中构建一个Context的时候,我们希望在远程存放这个Context所需的jar库文件,
* 并希望应用服务器能够下载并动态加载这些库文件,以达到版本集中发布和更新的目的。
*
* 于是有了webloader这个工具,这个工具的功能包括:
* - 将{@link javax.servlet.ServletContextListener ServletContextListener}功能映射到{@link WebApp}
* - 将{@link javax.servlet.http.HttpServlet HttpServlet}功能映射到{@link ServletHandler}
* - 自动下载指定的目录,并动态加载
*
* ### ServletContextListener的配置
*
* 在web.xml中配置Listener,见{@link WebAppContextListener}.
*
* ### SevletHandler的配置
*
* 在web.xml中配置Servlet,见{@link ServletAgent}.
*
* ### 库文件服务端配置
*
* 首先,需要将库文件存放在一个公共服务器之上,可以通过标准URL进行访问,例如file,http等.
*
* 接着,在管理服务器上发布一个更新信息服务,更新信息服务返回XML文档,记录库文件的名称,下载地址,MD5校验码等。例如:
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
*
*
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* @version 1.0.2 [20140319 by duanyy]
* - add servletContext parameter to {@link com.anysoft.webloader.WebApp#init(DefaultProperties, ServletContext) WebApp.init()}
* and {@link com.anysoft.webloader.WebApp#destroy(ServletContext) WebApp.destroy()}
*
* @author duanyy
*
*/
public interface WebApp {
/**
* 初始化应用
* @param props 初始化参数
*/
public void init(DefaultProperties props,ServletContext servletContext);
/**
* 启动应用
*/
public void start();
/**
* 停止应用
*/
public void stop();
/**
* 销毁应用
*/
public void destroy(ServletContext servletContext);
}