2

我正在尝试将我的应用程序从 Weblogic 8.1 SP 6 升级到 Weblogic 10.3。为此,我安装了 Weblogic 10.3 并创建了一个域。WLS 10.3 从我的域成功启动。我在 Java 1.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

我还有一个问题。在 Weblogic 8.1 上运行的应用程序也使用 apache 服务器来启动静态页面。为了升级 weblogic 10.3 中的应用程序,我们需要 apache 服务器吗?

4

3 回答 3

5

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

通常用于 Weblogic 前端的 Apache 服务器的主要目的是将图像、HTML、JS、CSS 文件等静态内容卸载到 Apache Web 服务器。只有动态请求被传递到 Weblogic,从而减少流量,尤其是跨防火墙时。

这是一个不依赖于 Weblogic 版本的架构决策。相反,这取决于某些问题,例如应用程序服务器的集群(使用 Apache 作为负载平衡器)、静态数据量,因为 Apache 非常快地提供静态数据 - 那么为什么要将负载推到 Weblogic 上。

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

于 2010-11-10T10:20:12.737 回答
2

几个星期前,我也在这个页面上,过滤了互联网,寻找一个合适的解决方案来解决同样的问题spec-version: 'null'] Servlet failed with Exception,直到除经过大量努力,我找到了自己的解决方案。

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

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

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

于 2013-10-19T11:23:40.057 回答
1

getRemoteUser() 返回空值:

由于 getRemoteUser() 方法在 Weblogic 10.3 中已被弃用,因此当用户访问应用程序时它将返回 null。为避免此问题,请使用方法替换getRemoteUser()getHeader(“proxy-remote-user”)将远程用户作为字符串返回。

String usr= request.getHeader("proxy-remote-user");

Servlet 路径映射的问题:

我们在 web.xml 中有以下 Servlet 映射,它在 Weblogic 8.1 中运行良好

<servlet-mapping> in web.xml 
  <servlet>
      <servlet-name>ServletName</servlet-name>
      <servlet-class>com.abc.servlets.servletname</servlet-class>
  </servlet>
   <servlet-mapping>
      <servlet-name> ServletName </servlet-name>
      <url-pattern>/*.*</url-pattern>
  </servlet-mapping>

但是在迁移到 10.3 之后,相同的 Servlet 映射不起作用,因为在启动应用程序主页时请求会进入无限循环。由于 Web 应用程序使用 Servlet 作为控制器,所有请求都到达控制器,然后转发到相应的 JSP。为了避免这个问题,我们在 servlet-mapping 中用“/”替换了 url-pattern “/*”,如下所示。

 <servlet-mapping>
      <servlet-name> ServletName </servlet-name>
      <url-pattern>/ServletName </url-pattern>
 </servlet-mapping>
于 2012-05-22T10:51:01.703 回答