解决方案 »

  1.   

    当试图将对象强制转换为不是实例的子类时,抛出该异常。
    比如Object x = new Integer(0);
    System.out.println((String)x);我想一个正常的系统,报错肯定会影响某一部分的功能,楼主可以检查下代码所在的逻辑层,看看是否出现功能的缺失。。
      

  2.   


    对,是类型转换异常,但是在tomcat下一切正常!而且错误中所指的类型转换是将ServletRequest强转为HttpServletRequest为啥会出现这个异常?
      

  3.   

    在开发阶段,对应用程序热部署时,会抛出ClassCastException异常,这是因为类加载器的原因,因为在对程序热部署会由不同的类加载器加载同一个类,解决办法:重启weblogic或在console中WEB模块配置中对问题程序点击重新部署。。
      

  4.   

    代码如下:
    public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain filterChain) throws IOException, ServletException {        if(response.isCommitted())
                return;
            try {
                filterChain.doFilter(request, response);            HttpServletRequest req = (HttpServletRequest) request;
                HttpServletResponse rep = (HttpServletResponse) response;
                HttpSession session = req.getSession(true);
                String contextPath = req.getContextPath();
                RequestDispatcher dispatcher = null;
      

  5.   

    不是热部署的问题,每次都会编译重启weblogic的
      

  6.   

    这里的类型转换应该没问题
    filterChain.doFilter(request, response);
    是否应该放到 HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse rep = (HttpServletResponse) response;
    HttpSession session = req.getSession(true);
    String contextPath = req.getContextPath();
     RequestDispatcher dispatcher = null;
    ...的下面呢
      

  7.   

    其他的就更没问题了
    public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain filterChain) throws IOException, ServletException {        if(response.isCommitted())
                return;
            try {
                filterChain.doFilter(request, response);            HttpServletRequest req = (HttpServletRequest) request;
                HttpServletResponse rep = (HttpServletResponse) response;
                HttpSession session = req.getSession(true);
                String contextPath = req.getContextPath();
                RequestDispatcher dispatcher = null;            //调用这个方法将skin放入session中
                String skin = SkinUtils.getSkin(req, rep);
                req.setAttribute("skin", skin);            // 检查用户登录信息
                String uri = req.getRequestURI();
                if(!NOFILTER_PAGES.containsKey(uri))
                {
                    log.debug("过滤检查【" + uri + "】");
                    // 取session,如果取不到session则提示用户重新登录
                    Object obj = session.getAttribute(Constant.SESSION_AUTH);
                    if(obj == null)
                    {
                      log.error("过滤检查【" + uri + "】"+",未通过检查!没有登陆信息。");
                      String msg = ResourceUtils.getResource(
                          "enp.WebMessage", "filter_nosession");
                      session.setAttribute("message", msg);
                      dispatcher = req.getRequestDispatcher(contextPath +
                          "/enpadmin/common/messages.jsp");
                      if (!rep.isCommitted())
                        dispatcher.forward(req, rep);
                    }
                }
                else
                {
                  log.debug("过滤检查被挑过【" + uri + "】");
                }
            } catch (ServletException sx) {
                log.error("",sx);
            } catch (IOException iox) {
                log.error("",iox);
            }
        }