Servlets Weblogic 10.3-Servlet因异常而失败

Servlets Weblogic 10.3-Servlet因异常而失败,servlets,weblogic,weblogic-10.x,Servlets,Weblogic,Weblogic 10.x,我正在尝试将我的应用程序从Weblogic 8.1 SP 6升级到Weblogic 10.3。为此,我安装了Weblogic 10.3并创建了一个域。WLS 10.3已从我的域成功启动。 我在Java1.6中重新编译了代码,并在没有任何代码更改的情况下成功部署 我已经部署了应用程序并尝试启动应用程序欢迎(登录)页面 然后我看到以下错误: Predefined Constants Object: com.abc.xyz272.businessclasses.PredefinedConstants@

我正在尝试将我的应用程序从Weblogic 8.1 SP 6升级到Weblogic 10.3。为此,我安装了Weblogic 10.3并创建了一个域。WLS 10.3已从我的域成功启动。 我在Java1.6中重新编译了代码,并在没有任何代码更改的情况下成功部署

我已经部署了应用程序并尝试启动应用程序欢迎(登录)页面

然后我看到以下错误:

Predefined Constants Object: com.abc.xyz272.businessclasses.PredefinedConstants@3d80183
DataSourceName='null'
sessionTimeOutLimit='36000'
00:39:31==>Servlet:  getRemoteUser=null
00:39:31==>Servlet:  getHeader=null
00:39:31==>count=0
<Oct 29, 2010 12:39:31 AM MDT> <Error> <HTTP> <BEA-101020> <[weblogic.servlet.internal.WebAppServletContext@2e28f75 - appName: 'mbqccrpt', name: 'xyzControllerServlet', context-path: '/xyzControllerServlet', spec-version: 'null'] Servlet failed with Exception
java.lang.NullPointerException
        at com.abc.xyz272.servlets.xyzControllerServlet.processRequest(Unknown Source)
        at com.abc.xyz272.servlets.xyzControllerServlet.doPost(Unknown Source)
        at com.abc.xyz272.servlets.xyzControllerServlet.doGet(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        Truncated. see log file for complete stacktrace
预定义常量对象:com.abc.xyz272.businessclasses。PredefinedConstants@3d80183
DataSourceName='null'
sessionTimeOutLimit='36000'
00:39:31=>Servlet:getRemoteUser=null
00:39:31=>Servlet:getHeader=null
00:39:31==>计数=0

我可以回答你问题的第二部分

面向Weblogic的Apache服务器通常使用的主要目的是将静态内容(如图像、HTMLs、JS、CSS文件)卸载到Apache web服务器。只有动态请求才会传递到Weblogic,从而减少流量,尤其是在穿越防火墙时

这是一个体系结构决策,不取决于Weblogic的版本。相反,这取决于某些问题,比如应用服务器集群(使用Apache作为负载平衡器)、静态数据量,因为Apache提供静态数据的速度非常快——所以为什么要将该负载推到Weblogic上呢

关于NullPointerException,这似乎是因为您的数据源没有正确定义(它显示为null),但您正在对其调用一些操作

getRemoteUser()返回空值:

由于Weblogic 10.3中不推荐使用getRemoteUser()方法,因此当用户访问应用程序时,它将返回null。要避免此问题,请将
getRemoteUser()
替换为
getHeader(“代理远程用户”)
方法,以字符串形式返回远程用户

String usr= request.getHeader("proxy-remote-user");
Servlet路径映射问题:

我们在web.xml中有下面的Servlet映射,它正在工作 在Weblogic 8.1中很好

web.xml中的

服务器名
com.abc.servlets.servletname
服务器名
/*.*
但是在迁移到10.3之后,当启动应用程序主页时,请求进入无限循环时,相同的Servlet映射不起作用。因为web应用程序使用Servlet作为控制器,所有请求都会到达控制器,然后转发到相应的JSP。为了避免这个问题,我们在servlet映射中将url模式“/*”替换为“/”,如下所示

 <servlet-mapping>
      <servlet-name> ServletName </servlet-name>
      <url-pattern>/ServletName </url-pattern>
 </servlet-mapping>

服务器名
/服务器名

几周前,我也在这一页上,从互联网上筛选出一个合适的解决方案来解决这个同样的问题规范版本:“null']Servlet异常地失败了,直到除了我经过大量努力找到的解决方案之外,其他一切都不起作用

我在将一个应用程序从Oracle的10g App Server迁移到Weblogic 10.3.5时遇到了这个问题

按照传说中的做法,在进行迁移时,我们在/WEB-INF/文件夹中放置了一个weblogic.xml文件,这就是实际的问题。我刚刚用自己版本的weblogic.xml文件替换了不正确的weblogic.xml文件,一切正常


尽管由于最初放置它的人最清楚的原因,错误的weblogic.xml文件在根元素中有许多其他元素,但在我的DD文件版本中,我只有根元素。于是问题终于解决了。因此,值得考虑这一点。

您是否阅读了升级指南?
 <servlet-mapping>
      <servlet-name> ServletName </servlet-name>
      <url-pattern>/ServletName </url-pattern>
 </servlet-mapping>