如何使用 OC4J 10g (10.1.3) 中的 Servlet 2.4 特性

最初发布时间:2004 年 11 月 1 日
最后更新时间:2006 年 1 月 16 日
作者:Frances Zhao

简介

本演示将说明 OC4J 支持的某些 Servlet 2.4 特性:

  • 将 Servlet 设置为 welcome 文件
  • 新的监听程序接口,如 ServletRequestListener
  • ServletRequest 中的新方法

前提条件

知识准备

  • 应熟悉以下技术:Servlet、JSP;
  • 指向 OTN 上其他 OC4J 方法文档的链接

软件需求

本演示要求安装并正确配置了以下软件组件:

  • Oracle Containers for J2EE 10g (10.1.3) 单机版,并配置有一个 Web 站点(如 http-web-site)
  • Sun JDK 1.4_02 或更高版本,可以从 Sun 网站获得。
  • 任何 HTML 浏览器,如 Mozilla、Microsoft Internet Explorer、Netscape 等

符号

  • %ORACLE_HOME% — 安装 OC4J 的目录。
  • %JAVA_HOME% — 安装 JDK 的目录
  • %HOWTO_HOME% — 将此演示解压缩到的目录

构建应用程序

将 Servlet 设置为 Welcome 文件

通过 Servlet 2.4,您现在可以将 servlet 用作 welcome 文件,这对于使用 servlet 作为“前端控制器”的应用程序很有用。为此,首先要在 web.xml 中定义 servlet。例如,在本方法文档的 web.xml 文件中写入以下内容:

<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>web.DemoServlet</servlet-class>
</servlet>
<!-- optional -->
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/demoservlet</url-pattern>
</servlet-mapping>

然后,在 web.xml 中创建一个指定上述 servlet 名称的 welcome-file 元素。例如:

<welcome-file-list>
<welcome-file>DemoServlet</welcome-file>
</welcome-file-list>

%HOWTO_HOME%/etc/web.xml 中所示,您同时还可以定义其他 welcome 文件,如果在 web 应用程序中找不到 servlet,可以使用这个方法。

使用新的监听程序接口

Servlet 2.4 提供了两个可用于 HTTP 请求的新的监听程序接口:javax.servlet.ServletRequestListener 和 javax.servlet.ServletRequestAttributeListener。本演示应用程序只实现了前者,并且只要激活已配置的 servlet DemoServlet,就可以将日志消息打印到 OC4J 控制台。

对于实现的监听程序,每当 web 应用程序收到一个新请求,系统就会通知监听程序并调用它的 requestInitialized() 方法。该方法的参数类型为 javax.servlet.ServletRequestEvent。通过调用该对象的 getServletRequest() 方法,开发人员可以访问 javax.servlet.ServletRequest 类型的新请求(可以通过新请求执行所需的任何操作)。请参阅 %HOWTO_HOME%/src/web/java/ServletReqLsnr.java 获取详细信息。

实现的监听程序还必须有一个不带参数的构造函数。您在 web.xml 中定义实现的监听程序,如:

<listener>
<listener-class>web.ServletReqLsnr</listener-class>
</listener>

使用 ServletRequest 中的新方法

Servlet 2.4 为 ServletRequest 接口添加了一些新方法:

  • getRemotePort():返回发送请求的客户端或上一个代理的 IP 源端口
  • getLocalName():返回接收请求的 IP 接口的主机名
  • getLocalAddr():返回接收请求的接口的 IP 地址
  • getLocalPort():返回接收请求的接口的 IP 端口号

这些方法提供了一个机制,用于查询低级 IP 连接详细信息以及了解连接的路由方式。本方法应用程序还举例说明了如何调用这些方法,如 %HOWTO_HOME%/src/web/java/DemoServlet.java 中所示。

构建应用程序

以下说明适用于在 Oracle Containers for J2EE 10g (10.1.3) 的独立实例上运行本演示。

检查方法文档分发

  • build — 编辑过程中创建的临时目录
  • log — 保存构建/部署日志的临时目录
  • etc — 封装此应用程序的所有必要文件
  • lib — 保存可以部署的应用程序存档(如 ear、war、rar 或 jar 文件)
  • doc — 方法文档和 Javadoc
    • javadoc — 不同源文件的 javadoc
    • how-to-web-servlet-intro..html — 此方法文档页面
  • src — 演示程序的源代码
    • web — 包含 HTML 页面和 Servlet 代码

设置应用程序

环境配置

请检查以确保以下属性在示例分发根目录下的 ant-oracle.properties 文件中配置正确(注意:某些属性将默认为相应环境变量的值,如下所示。如果您已经在环境中设置了这些变量,则不必在文件中更改这些值)。如果有必要,将这些变量修改为环境的相应值:

  • oracle.home — oracle 安装的根目录。默认为 ORACLE_HOME 环境变量。
  • java.home — JDK 安装的根目录。默认为 JAVA_HOME 环境变量。
  • oracleas.host — 运行 OC4J 实例的平台的主机名。默认为 localhost。
  • oracleas.http.port — OC4J HTTP 监听器监听的端口。默认为 8888
  • oracleas.admin.port — OC4J 管理处理器监听的端口。默认为 23791
  • oracleas.admin.user — OC4J 管理员的名称。默认为“ oc4jadmin”。
  • oracleas.admin.password — OC4J 管理员的口令。默认为“ welcome”。
  • oracleas.binding.module — 已部署应用程序绑定到的 HTTP Web 站点的名称。默认为“ default-web-site”。

此外,请确保与 OC4J ant 版本关联的 ant 命令位于执行路径 ( %ORACLE_HOME%/ant/bin) 中。

为受管理的 OracleAS 实例配置环境

如果您运行的是 Oracle 应用服务器 10 g 的受管理版本并且要使用 OPMN,则必须更改以下值以符合您的配置:

  • oracleas.http.port — Oracle HTTP Server (OHS) 监听的端口。
  • oracleas.admin.port — OPMN 请求端口,正如在 opmn.xml 中所指定的,默认值为 6003。还可以使用以下命令检查 OPMN 请求端口: %ORACLE_HOME%/opmn/bin/opmnctl status -port
  • oracleas.admin.user — OC4J 管理员的名称。默认为“ oc4jadmin”。
  • oracleas.deployer.uri — 用于执行不同管理操作(部署、取消部署)的 URI。由于应用程序的拓扑结构不同,文件会包含不同的 URI:独立的 OC4J、受管理的单个节点或者受管理的集群。只需去掉与您的拓扑的 URI 相匹配的注释。
  • oracleas.oc4j.instance — 这是受管理的 OC4J 实例,应用程序将在其中部署或取消部署。

启动 OC4J 实例

g
  • 独立安装: %ORACLE_HOME%/bin/oc4j start
    注意, oc4j 命令期望 JAVA_HOME 环境变量指向一个完整的 JDK 安装。

  • 受管理的 OracleAS 安装: %ORACLE_HOME%/opmn/bin/opmnctl startall

生成、编译和部署应用程序

构建应用程序

确保与 OC4J ant 版本关联的 ant 命令位于执行路径 ( %ORACLE_HOME%/ant/bin) 中。

在顶层 %HOWTO_HOME% 目录中,键入命令:

  • ant

%HOWTO_HOME%/lib 目录中现在应包含新建的 servlet_demo.earservlet_demo-web.war

如果构建成功,此命令还将尝试部署此应用程序。它将首先测试 OC4J 是否正在运行。

部署应用程序

还可以使用以下命令分别部署应用程序。确保定义了 %ORACLE_HOME% 环境变量。在顶层 %HOWTO_HOME% 目录中,键入命令:

  • ant deploy

运行应用程序

在浏览器窗口中,浏览到:

如果网站主机名或端口号不同,则使用实际值替换。

还可以使用该链接访问 演示 servlet。重新加载该页面几次。检查结果页面,同时查看演示监听程序是否在 OC4J 控制台中更新了日志。

总结

学习完本文档后,您应可以:

  • 了解到 OC4J 10.1.3 完全支持 Servlet 2.4
  • 了解到如何使用 OC4J 支持的某些 Servlet 2.4 特性

 

Left Curve
热门下载
Right Curve