Servlet 2.5自动导入

时间:2011-11-25 10:35:48

标签: java jsp servlets weblogic

这是一个奇怪的事我希望有人能说清楚。我们正在从Weblogic 8.1迁移到10.3.4,作为其中的一部分,我们正在更新各种事情,包括我们的部署描述符。在我们的webapp中,我们的web.xml是Servlet版本2.3,带有以下<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

我们现在将其更改为2.5,如下<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

由于更改,我们遇到了一些在运行时无法编译的jsps。它们失败了,因为我们没有为该jsp导入一些必要的类。例如,在一个我们使用Calendar(java.util)但无论出于何种原因未能为其编写导入声明。出于某种原因,2.3这似乎并不重要。有没有人知道这是2.3的一个特性,当未声明导入时,某些类是动态导入的。我完全理解它们应该被正确导入但是我担心我们可能会有一些其他的jsps会失败。

2 个答案:

答案 0 :(得分:4)

来自http://docs.oracle.com/cd/E12840_01/wls/docs103/webapp/weblogic_xml.html

  

隐式Servlet 2.5包导入

Servlet 2.5规范规定只隐式导入java.lang。*,javax.servlet。*,javax.servlet.jsp。*和javax.servlet.http。*包。根据Servlet 2.5规范,WebLogic Server将仅导入这些强制包。而以前版本的WebLogic Server还导入了java.io. *,java.util。*和javax.servlet.jsp.tagext。*包。

如果发生以下任何一种情况,WebLogic Server将遵循之前的2.4或更早版本的行为并导入非强制包:

在weblogic.xml描述符文件中,向后兼容标志设置为true。

Web应用程序版本为2.4或更早版本。

2.5版Web应用程序中的各个JSP / TAG文件是2.0或更早版本。

答案 1 :(得分:0)

也许以前版本的WebLogic执行了导入,因为它在内部使用了Calendar(或java.util。*)。但这不在规范中。

您可以使用weblogic appc编译器(或jspc,但不推荐使用)来预编译JSP并查看哪些不编译。

请参阅http://docs.oracle.com/cd/E12840_01/wls/docs103/webapp/reference.html#wp57794