2009-11-06 关于Spring和WebLogic版本兼容的一点小提示

刘长炯(BeanSoft@126.com)原创。

首先 WebLogic 的各个版本和 JDK 绑定的很紧, 或者说是专门针对某个 JDK 优化过的代码, 因此, WebLogic 不是说随意修改启动 JDK 都能运行, 高了和低了都不能启动, 举个例子:
WebLogic 8 支持 JDK 1.4, 那么用 JDK 1.5 或者 JDK 1.3 都不能正常启动, 这一点和 Tomcat 是很不一样的.
为什么要扯这个话题呢? 是因为 Spring 的各个版本也对 JDK 略有限制, 并非各个版本的 Spring 都可以在 WebLogic 上正常运行. 有很多同志还在用 WebLogic 8( JDK 1.4), 那么提醒大家, 现在最新的很多开源框架都是不支持或者不直接支持 JDK 1.4 了, 大部分都需要 JDK 1.5 以上版本, 例如 Spring 2.5, Struts 2(Struts 2 需要一个特殊的包才能跑在 JDK 1.4 上), 至于 JPA, 大家根本不要想它能在 WebLogic 8 上跑, 因为 JPA 依赖于 Java 5 的注解.
建议用最新版的 WebLogic 来开发项目, 这样BUG和问题都会少的多.
请参考文末的 Spring 文档的说明: http://docs.huihoo.com/spring/2.5.x/zh-cn/new-in-2.html
Java SE Java EE 支持
Spring Framework继续保持与所有Java版本的兼容性 – 从Java 1.4.2开始(包括1.4.2)。这意味着spring对Java1.4.2,Java 5和 Java 6都支持, 但是Spring Framework的一些高级功能无法在1.4.2中使用。从Spring 2.5起,Spring框架完全支持Java 6,而Spring 2.0则对Java 5支持比较好。
此外,Spring延续了对J2EE 1.3及更高版本的兼容性,同时对Java EE 5提供完全支持。也就是说,Spring可以继续在应用服务器中运行,包括 BEA WebLogic 8.1, 9.0, 9.2 和 10, IBM WebSphere 5.1, 6.0 和 6.1, Oracle OC4J 10.1.3 和 11, JBoss 3.2, 4.0 和 4.2, 以及 Tomcat 4.1, 5.0, 5.5 和 6.0, Jetty 4.2, 5.1 和 6.1, Resin 2.1, 3.0 和 3.1 还有 GlassFish V1 和 V2.

另外 edoc 上也描述了 WebLogic 9 中运行 Spring 可能出现的问题, 地址:
http://edocs.weblogicfans.net/wl … esolved.html#spring
建议大家没事多阅读 edoc…
WebLogic Server 上的 Spring Framework
WebLogic Server 上的 Spring Framework

更改请求编号
描述和变通方法或解决方案
找到位置
解决位置

CR242675
在 RMI 类加载器中发生了 NullPointerException。
变通方法或解决方案
请与 BEA 客户支持联系以获取 WebLogic Server/Spring 合并修补程序。
9.0
9.2

CR236708
在 Hibernate 3 和 WebLogic Server 之间存在 Antlr 冲突。
变通方法或解决方案
将 Antlr2.7.5.jar 放在 CLASSPATH 中的 weblogic.jar 之前。
8.1SP05、9.0
9.2

CR242923
T3 运行时无法对包含基元类型的类描述符进行解码。
变通方法或解决方案
请与 BEA 客户支持联系以获取 WebLogic Server-Spring 合并修补程序。
9.0
9.2

CR242883
IIOP 运行时无法对包含基元类型的类描述符进行解码。
变通方法或解决方案
请与 BEA 客户支持联系以获取 WebLogic Server-Spring 合并修补程序。
9.0
9.2

CR237532
Spring Framework 存在 Web 应用程序类加载问题。
变通方法或解决方案
请与 BEA 客户支持联系以获取 WebLogic Server-Spring 合并修补程序。
8.1SP05、9.0
9.2

CR241195
在 Spring Pet Clinic 示例应用程序中更新记录会导致以下错误:
java.lang.IllegalStateException: Cannot access session scope since the
requested page does not participate in a session. at
weblogic.servlet.jsp.PageContextImpl.getAttribute(PageContextImpl.java:273)
at javax.servlet.jsp.jstl.core.Config.get(Config.java:145) at
javax.servlet.jsp.jstl.core.Config.find(Config.java:393) at
org.apache.taglibs.standard.tag.common.fmt.TimeZoneSupport.getTimeZone(TimeZoneSupport.java:140)
变通方法或解决方案
将 includes.jsp 文件中的第一行标记为注释。
9.0
9.2

CR244683
HP-UX 需要 jdk150_01,而不是 jdk150_03。
变通方法或解决方案
在 medrec-spring 目录中,使用 jdk150_01 替换 jdk150_03。
9.0
9.2

CR244693
当您从远程计算机上访问 MedRec-Spring 时,MedRec-Spring 退出功能不起作用。
变通方法或解决方案
不从远程计算机访问 MedRec-Spring 应用程序,并且不将 localhost 用于请求重定向。
9.0
9.2

CR244691
对 WebLogic 管理控制台的 Spring 扩展仅支持 Web 应用程序 (.war) 文件,无法用于监视非 .war 文件(如 MedRec-Spring)中的 Spring Bean。
9.0
9.2

CR243957
使用 CTRL-C 关闭 WebLogic Server 时,如果正在破坏 bean domainMBeanServerConnection,则可能会发生关闭异常。
变通方法或解决方案
使用标志 -Dweblogic.slc=true 以便确定启动和停止 domainRuntimeServerService 的时间。
9.0
9.2

CR280985
无法通过将 countries_mbeans.war 应用程序复制到 WebLogic Server 域目录的 autodeploy 目录来自动部署该应用程序。countries_mbeans.war Web 应用程序是一个 Spring 测试扩展应用程序。
变通方法或解决方案
使用 WebLogic Server 管理控制台来部署 countries_mbeans.war Web 应用程序,而不是自动部署。
9.2

CR301115
在 Spring Pet Clinic 示例应用程序中运行单元测试会导致以下错误:
从 weblogic.xml.jaxp.RegistrySAXTransformerFactory 中找不到有效的处理器版本实现
变通方法或解决方案:
通过将以下条目添加到 $java.home/lib/jaxp.properties 文件来定义 XML 解析器类:

  • javax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl
  • javax.xml.xpath.XPathFactory=org.apache.xpath.jaxp.XPathFactoryImpl
  • javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
  • javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

9.2

CR300748
访问部署到 WebLogic Server 9.2 的 tiles-samples 时会出现异常。
9.2

 

转载请注明:WebLogic Android 博客 » 关于Spring和WebLogic版本兼容的一点小提示