我有一个连接到数据库的Servlet,并将数据加载并存储到一些集合对象中,以便以后在我的webapp启动时使用。我在部署描述符中定义了这个servlet。
<servlet>
<servlet-name>MasterDataLoader</servlet-name>
<servlet-class>com.istore.web.controllers.MasterDataLoader</servlet-class>
<load-on-startup>10</load-on-startup>
</servlet>
我试图用我的Servlet中的注释替换上面的用法,因此修改了我的MasterDataLoader servlet如下并删除了web.xml条目但是这个servlet由于某种原因永远不会被Tomcat 8选中,因此数据永远不会被加载服务器启动。我没有在错误日志中看到任何错误。我错过了什么吗?
MasterDataLoader.java(带注释)
@WebServlet(name = "MasterDataLoader", loadOnStartup=10)
public class MasterDataLoader extends HttpServlet {
private static final String DATASOURCE = "dataSource";
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
loadAll();
}
private void loadAll() {
ServletContext appContext = getServletContext();
appContext.setAttribute("menuCategories", getAllMenuCategories());
}
private List<Category> getAllMenuCategories() {
LOG.debug("Fetching all menu categories from the db....");
List<Category> categoriesLst = null;
try {
DataSource dataSource = (DataSource) getServletContext().getAttribute(DATASOURCE);
categoriesLst = new MasterDao(dataSource).getAllCategories();
} catch (SQLException sqle) {
LOG.error("Exception while fetching all menu categories from the db....");
LOG.error(sqle);
}
return categoriesLst;
}
....
}
答案 0 :(得分:0)
在注释中添加urlPatterns
并且它有效。虽然urlPatterns
未在代码库中的任何地方被引用/调用。看起来urlPatterns
是强制属性。
@WebServlet(name = "MasterDataLoader", urlPatterns = {"/dataLoader"}, loadOnStartup = 10)