我的一次weblogic 8升级到weblogic9遇到的问题.

  • Post author:
  • Post category:其他


[b]1、web应用的乱码问题。[/b]

原来的基于weblogic8的应用,后来部署到weblogic 9 上面,所有的web应用都能正常部署,而且不需要经过太多修改,就是有一个应用出现乱码,原因是我直接在JSP文件中写汉字,而没有使用国际化。后来将weblogic.xml配置成如下方式解决了该问题:

[code]<?xml version=”1.0″ encoding=”UTF-8″?>

<!DOCTYPE weblogic-web-app PUBLIC “-//BEA Systems, Inc.//DTD Web Application 8.1//EN” “http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd”>

<weblogic-web-app>

<jsp-descriptor>

<jsp-param>

<param-name>encoding</param-name>

<param-value>GBK</param-value>

</jsp-param>

<jsp-param>

<param-name>compilerSupportsEncoding</param-name>

<param-value>true</param-value>

</jsp-param>

</jsp-descriptor>

<context-root>/james</context-root>

</weblogic-web-app>[/code]

[b]2、jsp的相对路径问题

jsp的前面有如下所示声明代码:[/b][code]<%@ include file=”include/header.jsp” %>[/code]

如果在weblogic 8 中,即使该相对当前jsp的文件不存在,也就是说上面的路径有问题,也不会报任何错误。

而在9.2上部署则不允许通过。

[b]3、EJB 部署问题[/b]

这个实际与webloigc的版本无关,EJB使用了JNI调用一个dll,而部署好以后,当访问的时候老是报如下错误:

[code] java.rmi.RemoteException: EJB Exception: ; nested exception is:

java.lang.NoClassDefFoundError: com/jamesby/SessionBean_n66q2o_Impl

at weblogic.ejb.container.internal.EJBRuntimeUtils.throwRemoteException(EJBRuntimeUtils.java:95)

at weblogic.ejb.container.internal.BaseEJBObject.handleSystemException(BaseEJBObject.java:724)

at weblogic.ejb.container.internal.BaseEJBObject.handleSystemException(BaseEJBObject.java:681)

at weblogic.ejb.container.internal.BaseEJBObject.preInvoke(BaseEJBObject.java:229)[/code]

搞的我百思不得其解,而这个错误只有发布到服务器上才出现如上错误,而本地没有任何问题,后在服务器建立一个Develop Mode方式的domain,后启动server报一个又一个的dll 找不到。而product mode方式不会报这个错误,因为我的系统需要通过JNI调用一个DLL,而该DLL需要访问一个C/S模式的软件的客户端的dll。而客户端我并没有安装。

我气愤地是对于Product mode weblogic竟然如此严重的错误也不报,而报什么class 找不到,害的我忙了好长时间。

[b]4、sqlserver 2005数据库驱动问题[/b]

用微软发布1.1的驱动,Bea的Connection Pool出现如下问题:

[code]com.microsoft.sqlserver.jdbc.SQLServerException: 服务器无法继续执行该事务。说明: 3c000005b9。

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Lcom.microsoft.sqlserver.jdbc.SQLServerConnection;Lcom.microsoft.sqlserver.jdbc.IOBuffer;Ljava.lang.String;Lcom.microsoft.sqlserver.jdbc.StreamError;Z)V(Unknown Source)

at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Lcom.microsoft.sqlserver.jdbc.SQLServerConnection;[Lcom.microsoft.sqlserver.jdbc.PacketRequestor;ILjava.lang.String;Z)Lcom.microsoft.sqlserver.jdbc.StreamPacket;(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult()Z(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(Lcom.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest;Lcom.microsoft.sqlserver.jdbc.TDSWriter;)V(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerStatement$StatementExecutionRequest.executeStatement(Lcom.microsoft.sqlserver.jdbc.TDSWriter;)V(Unknown Source)

at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Lcom.microsoft.sqlserver.jdbc.TDSWriter;)V(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Lcom.microsoft.sqlserver.jdbc.ExecutableRequest;I)V(Unknown Source)

at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(Ljava.lang.String;)Ljava.sql.ResultSet;(Unknown Source)

at weblogic.jdbc.wrapper.Statement.executeQuery(Statement.java:412) [/code]

原因不清楚,也懒的找,后来改用Bea的驱动,到目前为止比较正常.

[b]5、JSP文件名大小写问题[/b]

系统部署在windows操作系统,系统的web层采用Spring MVC 并采用ResourceBundleViewResolver,urlMapping 采用SimpleUrlHandlerMapping,本来在weblogic8 上的时候如果在jamesby.properties配置为viewName.url=/WEB-INF/jsp/Abc.jsp

而实际的jsp的文件名为abc.jsp的时候,是没有任何问题的.

而在weblogic 9上则文件名必须为Abc.jsp才可以,否则报404错误.

当然unix或者linux是区分大小写肯定有这个要求的.但是windows系统的weblogic 9平台也有这个要求

以上就是我的一次升级经历,希望对大家有帮助。另外weblogic 9耗资源好高,本来PC跑weblogic8很轻松的,跑weblogic 9则根本跑不动.