首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.Exception: ServletConfig尚未初始化

java.lang.Exception: ServletConfig尚未初始化
EN

Stack Overflow用户
提问于 2013-01-25 08:34:08
回答 1查看 9.9K关注 0票数 3

我有个问题是:

java.lang.Exception: ServletConfig尚未初始化

我找了将近两天,但我没有一个解决办法。每个人都说过必须使用super.init(config)。我试过了,但对我来说没有什么改变。

我的方法;

代码语言:javascript
复制
@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;

代码语言:javascript
复制
    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());
    }
}

在这一行中抛出异常;

代码语言:javascript
复制
          final WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());

在AppServiceServlet中说:

java.lang.Exception: ServletConfig尚未初始化。

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-25 09:03:03

这一呼吁:

代码语言:javascript
复制
AppServiceServlet service = new AppServiceServlet();

通过new实例化servlet实例,该实例绕过常规容器管理的servlet创建。因此,关键类变量(例如servlet配置)没有得到正确的初始化。

稍后,您将调用getServletContext,它只是重定向到getServletConfig().getServletContext(),但是由于servlet配置从未完成,所以会出现异常。

事实上,在servlet上以不符合规范的方式调用new -servlet应该由web应用程序容器来维护。启动servlet的正确方法要么是通过web.xml文件中的配置,要么通过注释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14518089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档