java项目在weblogic下运行报错 java.lang.ClassCastException求大神指点

没啥意思了 2014-03-25 06:18:16
java项目在weblogic下运行报错 java.lang.ClassCastException但不影响使用,求大神指点
####<2014-3-25 下午05时56分57秒 CST> <Error> <Kernel> <cms41b> <myserver> <ExecuteThread: '146' for queue: 'weblogic.kernel.Default'> <<WLS Kernel>> <> <BEA-000802> <ExecuteRequest failed
java.lang.ClassCastException.
java.lang.Throwable
at jsp_servlet._enpadmin.__error._jspService(__error.java:147)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:328)
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:535)
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:387)
at weblogic.servlet.internal.WebAppServletContext.handleException(WebAppServletContext.java:4193)
at weblogic.servlet.internal.WebAppServletContext.handleThrowableFromInvocation(WebAppServletContext.java:3966)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3908)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
>
...全文
7197 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
没啥意思了 2014-03-27
  • 打赏
  • 举报
回复
引用 10 楼 magi1201 的回复:
这里的类型转换应该没问题
filterChain.doFilter(request, response);
是否应该放到

 HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse rep = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
String contextPath = req.getContextPath();
 RequestDispatcher dispatcher = null;
...
的下面呢
其他的就更没问题了
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);
        }
    }
姜小白- 2014-03-27
  • 打赏
  • 举报
回复
这里的类型转换应该没问题
filterChain.doFilter(request, response);
是否应该放到

 HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse rep = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
String contextPath = req.getContextPath();
 RequestDispatcher dispatcher = null;
...
的下面呢
没啥意思了 2014-03-27
  • 打赏
  • 举报
回复
引用 6 楼 NNTT2010 的回复:
在开发阶段,对应用程序热部署时,会抛出ClassCastException异常,这是因为类加载器的原因,因为在对程序热部署会由不同的类加载器加载同一个类,解决办法:重启weblogic或在console中WEB模块配置中对问题程序点击重新部署。。
不是热部署的问题,每次都会编译重启weblogic的
没啥意思了 2014-03-27
  • 打赏
  • 举报
回复
引用 7 楼 magi1201 的回复:
楼主能找到抛异常的代码或页面吗?将代码贴出来看看
代码如下:
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;
没啥意思了 2014-03-26
  • 打赏
  • 举报
回复
引用 1 楼 NNTT2010 的回复:
当试图将对象强制转换为不是实例的子类时,抛出该异常。 比如

Object x = new Integer(0);
System.out.println((String)x);
我想一个正常的系统,报错肯定会影响某一部分的功能,楼主可以检查下代码所在的逻辑层,看看是否出现功能的缺失。。
对,是类型转换异常,但是在tomcat下一切正常!而且错误中所指的类型转换是将ServletRequest强转为HttpServletRequest为啥会出现这个异常?
淬心石 2014-03-26
  • 打赏
  • 举报
回复
类型转换异常应该很好找的
姜小白- 2014-03-26
  • 打赏
  • 举报
回复
楼主能找到抛异常的代码或页面吗?将代码贴出来看看
长笛党希望 2014-03-26
  • 打赏
  • 举报
回复
在开发阶段,对应用程序热部署时,会抛出ClassCastException异常,这是因为类加载器的原因,因为在对程序热部署会由不同的类加载器加载同一个类,解决办法:重启weblogic或在console中WEB模块配置中对问题程序点击重新部署。。
没啥意思了 2014-03-26
  • 打赏
  • 举报
回复
大神们都没在么?
没啥意思了 2014-03-26
  • 打赏
  • 举报
回复
前排顶起啊!
长笛党希望 2014-03-25
  • 打赏
  • 举报
回复
当试图将对象强制转换为不是实例的子类时,抛出该异常。 比如

Object x = new Integer(0);
System.out.println((String)x);
我想一个正常的系统,报错肯定会影响某一部分的功能,楼主可以检查下代码所在的逻辑层,看看是否出现功能的缺失。。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧