SSM报错-JDBC驱动被强制取消注册

严重: The web application [] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

翻译后:

严重:Web应用程序[]注册了JDBC驱动程序[com.mysql.jdbc.Driver],但在Web应用程序停止时未能将其注销。为了防止内存泄漏,JDBC驱动程序被强制取消注册。

出错原因:
Spring 容器被重复加载。(这个原因可能仅适用于我的工程)

ItemController.java

@Controller
public class ItemController {
    ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
    ItemService itemService = (ItemService)ac.getBean("itemServiceImpl");

    @RequestMapping(value = "/item/itemlist.action")
    public ModelAndView itemList() {
        List itemsList = itemService.selectAllItems();
        // 获取视图对象
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("itemList");
        // 将数据显示在指定的视图中
        modelAndView.addObject("itemList", itemsList);
        return modelAndView;
    }
}

web.xml



	......
    
    
        contextConfigLocation
        classpath:bean.xml
    
    
    
    
        org.springframework.web.context.ContextLoaderListener
    

在 web.xml 中已经编写了加载Spring的配置行(加载bean.xml文件),但是在控制层(ItemController.xml),再次使用了ClassPathXmlApplicationContext()方法对 bean.xml 文件进行加载。

解决方案
将控制层中加载 bean.xml 文件的代码去掉。

@Controller
public class ItemController {
    @Autowired
    private ItemService itemService;
    
    @RequestMapping(value = "/item/itemlist.action")
    public ModelAndView itemList() {
        List itemsList = itemService.selectAllItems();
        // 获取视图对象
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("itemList");
        // 将数据显示在指定的视图中
        modelAndView.addObject("itemList", itemsList);
        return modelAndView;
    }
}

你可能感兴趣的:(debug_ssm,ssm,tomcat)