Servlets 如何在tomcat启动时设置数据库
我正在使用纯Servlet API编写一个简单的应用程序,没有框架。该应用程序在用户文件夹中的预定义位置使用HSQLDB。我需要在第一次启动或部署期间从应用程序内部创建表结构Servlets 如何在tomcat启动时设置数据库,servlets,deployment,Servlets,Deployment,我正在使用纯Servlet API编写一个简单的应用程序,没有框架。该应用程序在用户文件夹中的预定义位置使用HSQLDB。我需要在第一次启动或部署期间从应用程序内部创建表结构 我该怎么做呢?经过一点研究,我找到了使用ServletContextListener的解决方案。我将跳过解释并向您显示代码 @WebListener public class DatabaseCreator implements ServletContextListener { protected final L
我该怎么做呢?经过一点研究,我找到了使用ServletContextListener的解决方案。我将跳过解释并向您显示代码
@WebListener
public class DatabaseCreator implements ServletContextListener {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource(
name = "jdbc/rssDS",
type = javax.sql.DataSource.class,
authenticationType = Resource.AuthenticationType.CONTAINER
)
private DataSource dataSource;
@Override
public void contextInitialized(ServletContextEvent sce) {
if (dataSource == null) {
logger.error("Data source wasn't initialized");
}
String sql = readStreamToString(sce.getServletContext());
if (StringUtils.isBlank(sql)) {
logger.error("SQL script is empty");
}
try {
logger.debug("Executing SQL script");
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
statement.execute(sql);
} catch (SQLException e) {
logger.error("Unable to create database table structure", e);
}
}
private String readStreamToString(ServletContext ctx) {
//skipped, reads stream contents into String
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
,这些链接会帮助你吗?@YeWin不,实际上我已经有了功能齐全的应用程序。我只想自动化部署过程。基本上,我需要一种在部署或第一次启动时执行SQL脚本的方法。哦,我明白了,您不想也使用Spring??因为应用程序已经准备好了,现在使用Spring已经太晚了:-)