WebSphere Application Server V 5.x 迁移 Web 应用程序组件

无需迁移先前版本的 WebSphere® Application Server 中部署的 Web 应用程序。 除非在 Servlet 3.1 或 JSP 2.3 规范中更改了行为,否则仍支持 Java™ Servlet 规范的 2.2 和更高版本以及 JavaServer Pages (JSP) 规范的 1.2 和 1.4 版本。 这些更改通常在其相应规范中作了更详细的描述。

有关此任务

在以下情况下,Servlet 迁移可能是一个问题:

  • 实现 WebSphere Application Server 内部 servlet 以绕过 WebSphere Application Server V 4.x 单个应用程序路径限制
  • 扩展依赖 Servlet 配置 XML 文件中配置信息的 PageListServlet
  • 通过使用 encodeRedirectURL 函数或在非上下文根中启动来调用 servlet 的 response.sendRedirect 方法
  • 取决于要设置的缺省 Content-Type 响应头或者进行getWriter 调用后 setContentType 调用的行为。 此行为由 WebSphere Application Server 版本级别使用具有值 V4 V5的 Web 容器定制属性 com.ibm.ws.webcontainer.contenttypecompatibility 进行设置。 V6或 V7。 每个版本的行为如表 1 中所述。
    表 1. Web 容器定制属性。此表在第一列中描述了定制属性信息。 第一列后的每一列都描述了特定版本的版本行为。 描述的版本为 V 4 , V 5 , V 6 和 V 7。
    定制属性信息 V4 V5 V6 V7
    缺省 Content-Type 文本/html text/html; charset= <default_ encoding>
    如果 Content-Type 上不存在属性,那么将 Charset 追加到 getWriter

    示例:response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml"); response.getWriter();

    文本/html 文本/html text/xml; charset=UTF-8 text/xml; charset=UTF-8
    如果在 getWriter 后使用“;charset=”部分调用了 setContentType 属性,那么从 Content-Type 属性中除去 charset

    示例:setContentType("text/html;charset=ISO-8859-7"); getWriter(); setContentType("text/xml;charset=UTF-8");

    文本/html 文本/html 文本/html text/xml; charset=ISO-8859-7

如果应用程序引用未命名包中的 JSP 页面实现类,或者如果在 V 5.x中安装 WebSphere Application Server V 4.x EAR 文件 (在 V 4.x 中使用 JSP Precompile 选项部署) ,那么 [AIX Solaris HP-UX Linux Windows][IBM i]JSP 迁移可能会引起关注。 从 WebSphere Application Server V 5.x迁移时,需要重新编译所有 JSP 页面。

如果应用程序引用未命名包中的 JSP 页面实现类,或者如果在 V 5.x中安装 WebSphere Application Server V 4.0.1 EAR 文件 (在带有 JSP Precompile 选项的 V 4.0.1 中部署) ,那么可能会引起 [z/OS]JSP 迁移问题。 从 WebSphere Application Server V 5.x迁移时,需要重新编译所有 JSP 页面。

受支持的配置: 对于 IBM® 扩展和绑定文件, 根据您是使用Java EE 5 之前的应用程序或模块,还是使用 Java EE 5 或更高版本的应用程序或模块, .xmi.xml 文件扩展名有所不同。 IBM 扩展或绑定文件名为 ibm-*-ext.xmiibm-*-bnd.xmi ,其中 * 是扩展或绑定文件的类型,例如 appapplicationejb-jarweb。 存在下列条件:
  • 对于使用版本 5 之前的 Java EE 版本的应用程序或模块,文件扩展名必须为 .xmi
  • 对于使用 Java EE 5 或更高版本的应用程序或模块,文件扩展名必须为 .xml。 如果应用程序或模块随附 .xmi 文件,那么产品会忽略 .xmi 文件。

但是, Java EE 5 或更高版本的模块可以存在于包含Java EE 5 之前的文件并使用 .xmi 文件扩展名的应用程序中。

ibm-webservices-ext.xmiibm-webservices-bnd.xmiibm-webservicesclient-bnd.xmiibm-webservicesclient-ext.xmiibm-portlet-ext.xmi 文件继续使用 .xmi 文件扩展名。

如果迁移问题应用于您的 Web 应用程序,请遵循这些步骤:

过程

  1. IBM 内部 servlet 用于启用特殊行为,例如按类名提供文件服务和服务 servlet。 如果迁移的应用程序引用内部 Servlet ,那么最佳实践是通过位于每个 Web 模块 WEB-INF 目录中的 IBM WebSphere 扩展 XMI 文件 ibm-web-ext.xmi或通过使用组装工具来启用或禁用该功能。
  2. 如果这些配置选项不可行,请验证以下内部 Servlet 的包名是否与 V7 Web 部署描述符中使用的包名相匹配。
    特性 配置选项 Servlet 类
    目录浏览 directoryBrowsingEnabled="true" com.ibm.ws.webcontainer.servlet.DirectoryBrowsingServlet
    自动映射 Servlet 路径 serveServletsByClassnameEnabled="true: com.ibm.ws.webcontainer.servlet.SimpleFileServlet
    文件服务 fileServingEnabled="true" com.ibm.ws.webcontainer.servlet.FilterProxyServlet
  3. [z/OS] 迁移扩展 并依赖相关 XML servlet 配置文件中配置信息的 servlet。 PageListServlet
    在 V4.0.1 中,XML Servlet 配置文件提供页列表的配置数据,并扩充 Servlet 配置信息。 此文件命名为 servlet_class_name.servletservlet_name.servlet,并与 servlet 类文件存储在同一目录中。
  4. 添加值为 V4, V5, V6和 V7等的 Web 容器定制属性 com.ibm.ws.webcontainer.contenttypecompatibility。 该值由应用程序所依赖的版本确定。
    有关如何修改此定制属性的详细信息,请参阅 "修改缺省 Web 容器配置" 主题。 因为此属性是全局设置,所以必须考虑对其他应用程序的影响。