我有一个问题是:
java.lang.Exception:ServletConfig尚未初始化
我搜索了将近2天,但我没有解决方案。每个人都说过 必须使用 super.init(config)。我试过这个,但对我来说没什么变化。
我的初始化方法;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
AppServiceServlet service = new AppServiceServlet();
try {
service.getir();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
AutoCheckStatus.autoCheckStatus(600000);
}
和我的AppServiceServlet;
public List<SswAppServiceDto> getir() throws Exception {
try {
final WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this
.getServletContext());
setiAppServiceBusinessManager((IAppServiceBusinessManager) context.getBean(BEAN_ADI));
List<SswAppService> result = getiAppServiceBusinessManager().getir();
List<SswAppServiceDto> list = DtoConverter.convertSswAppServiceDto(result);
for (int i = 0; i < result.size(); i++) {
AppService appService = new AppService();
appService.setServiceName(result.get(i).getName());
appService.setUid(result.get(i).getServiceUid());
appService.setHost(result.get(i).getHost());
appService.setPort((int) result.get(i).getPort());
SystemConfiguration.appServiceList.put(appService.getUid(), appService);
}
return list;
} catch (RuntimeException e) {
throw new Exception(e.getMessage(), e.getCause());
}
}
此行中会抛出异常;
final WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
在AppServiceServlet中并说:
java.lang.Exception:ServletConfig尚未初始化。
请帮助。
答案 0 :(得分:2)
这个电话:
AppServiceServlet service = new AppServiceServlet();
通过new
实例化一个servlet实例,它绕过了servlet的正常容器管理创建。因此,关键类变量(例如,servlet配置)无法正确初始化。
稍后,您正在调用getServletContext
,它只是重定向到getServletConfig().getServletContext()
,但由于servlet配置从未完成,因此会出现异常。
事实上,在servlet上调用new
的方式与规范不符 - servlet应该由Web应用程序容器维护。启动启动servlet的正确方法是通过web.xml文件中的配置或通过注释。