欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

我的一次weblogic 8升级到weblogic9遇到的问题. 博客分类: Java WeblogicJSPJDBCMicrosoftEJB 

程序员文章站 2024-03-22 13:08:10
...
1、web应用的乱码问题。
原来的基于weblogic8的应用,后来部署到weblogic 9 上面,所有的web应用都能正常部署,而且不需要经过太多修改,就是有一个应用出现乱码,原因是我直接在JSP文件中写汉字,而没有使用国际化。后来将weblogic.xml配置成如下方式解决了该问题:
<?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>


2、jsp的相对路径问题

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


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

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

3、EJB 部署问题

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

 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)


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

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

4、sqlserver 2005数据库驱动问题

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

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) 


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

5、JSP文件名大小写问题
系统部署在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则根本跑不动.