在 Oracle9i JDeveloper 中开发 Oracle 内容管理 SDK 应用程序

Oracle CM SDK Web Starter Application 概述和部署指南

修订版 1.0 - 2003 年 8 月
作者:Simon Azriel(首席产品经理),Matt Shannon(高级技术产品经理)

目录

  1. 概述和下载
  2. 应用程序细节
  3. 手动部署应用程序
  4. 使用 Oracle JDeveloper 嵌入式 OC4J 服务器设置开发计算机(单一套件)
  5. 使用 Oracle JDeveloper 嵌入式 OC4J 服务器设置开发计算机(两层)
  6. 使用 Oracle JDeveloper 嵌入式 OC4J 服务器设置独立开发环境

概述和下载

下载 Web Starter Application(压缩 EAR 文件,大约 250KB)

Oracle CM SDK Web Starter Application 是一个由 CM SDK 小组开发的示例应用程序。

此示例应用程序演示了如何使用 Oracle CM SDK 开发基于 Web 的应用程序。构建一个基于 Oracle CM SDK 的 Web 应用程序涉及多个复杂步骤,这与大多数应用程序相同。此示例应用程序提供了完成多个标准应用程序任务的示例。它为应用程序开发人员提供了一个包含其源代码的工作应用程序,以供参考,开发他们自己的基于 Oracle CM SDK 的 Web 应用程序。

此示例应用程序旨在帮助开发人员了解各种困难,并为与使用 Oracle CM SDK 构建 Web 应用程序相关的问题提供了示例解决方案。

它并非用于提供 Web 应用程序开发或 Oracle CM SDK API 的知识。要了解有关 oracle CM SDK API 的更多信息,请参阅 oracle.ifs.examples.api 程序包。

它也并非为构建生产应用程序提供一个框架。为了集中介绍使用 Oracle CM SDK 创建 Web 应用程序的细节,我们已经尽力简化了基础体系结构。

在构建大型 Web 应用程序时,开发人员应研究如何使用 Web 应用程序框架。Web 应用程序框架可以解决请求调度、错误处理、答复页面生成、请求更改等。提供此类框架不属于本项目的范围。 为了尽量使该项目简单并集中于 Oracle CM SDK Web 应用程序特定要求,将不对此项目使用这样的框架。

但在适当的情况下,采用了一些普遍接受的做法和公认的设计模式。下列设计目标一直贯穿整个过程:

  • 使用标准技术
  • 模块化设计
  • 可重用性
  • 可扩展
  • 可伸缩性
  • 使示例尽可能地简单
  • 将用户界面代码与业务代码分开
  • 最大限度地减少 JSP 中的 java 代码数量
  • 演示如何支持多种语言
  • 演示 ADA 符合性

此示例应用程序提供了以下基本功能:

  • 建立一个用户会话
  • 列出文件夹的内容
  • 深入挖掘文件夹,显示它的内容
  • 向上导航到上一级文件夹
  • 将文件上载到文件夹
  • 创建一个文件夹
  • 使用文档 servlet 显示文档内容。
  • 按名称、内容和开始文件夹(文件夹限制的查询)搜索文档和文件夹
  • 重命名文档或文件夹
  • 移动文档或文件夹
  • 复制文档或文件夹
  • 修改文档或文件夹描述
  • 断开用户会话连接

返回页首


应用程序详细内容

应用程序组件

此示例应用程序由下列部分组成:

  1. 用于获取所有请求并将其发送给相应的 Action 控制器 servlet,其名称为 WebStarterAppServlet。
  2. 用于与信息库相连以获取连接的 Oracle CM SDK 服务器,其名称为 WebStarterAppServer。
  3. 用于处理特定请求并将其转发/重定向到视图的 Action(操作)。有 21 个 Action 类。它们的名称以“Action”结尾。示例如下:
    • BrowseDirectoryAction 在提供的路径处显示一个目录
    • LogonAction 将用户记录到系统中
    • DeleteAction — 从指定的目录中删除指定项
  4. 通过 JSP 显示用户界面的 View。有 15 个 JSP示例如下:
    • browseDirectory.jsp — 显示目录内容
    • copy.jsp 将一个文件夹中的项目复制到另一个文件夹
    • Delete.jsp 删除文件夹中的项目
  5. 用于要使用的 JSP 的 JSP 标记类。有 13 个定制标记类。它们的名称以“Tag”结尾。示例如下:
    • LoopTag 遍历 PublicObjects 集合
    • AttributeTag 显示 PublicObject 的属性
    • ErrorMessageTag 显示一个错误消息标记
  6. 用于通过请求将操作中的数据传递给视图的 Helper 类。有 3 个 helper 类:
    • CollectionBean 保存 PublicObjects 集合。
    • ErrorBean 保存错误。
    • StringResourceBean 用于将要替换的参数传递到已本地化的字符串中。
  7. 用于各种函数的 Utility 类。有 4 个 Utility 类:
    • Constants 定义类似 http 参数名这样的常数。
    • HttpUtils 包含用于解决类似本地化这样的问题的 helper 方法
    • IfsUtils 用于集中管理 CM SDK 特定调用
    • StringResourceUtils 使用 String 资源提供帮助
  8. 用于本地化的资源文件Resources/StringResources 可本地化字符串
  9. 由应用程序使用的图像
    • brand.gif - 品牌图像
    • default.gif - 文件夹项目的缺省文档 gif
    • folder.gif - 文件夹图标
    • gb-logout.gif - 注销按钮
    • lov.gif - 值列表按钮图标
    • oraclelogo.gif - 甲骨文公司 gif
  10. 一个用于显示文档内容的 servlet,名为 DocServlet
  11. 用于控制 html 样式的样式表。有以下 2 个样式表:
    • /cabo/style/blaf.css - Oracle 外观样式表
    • /styles/webstarterapp.css - 定制样式表

应用程序流

  1. JSP 将请求发送至指定操作的控制器 servlet。
  2. 控制器 servlet 实例化操作,并向操作提供请求。
  3. 此操作从请求中获取参数、进行处理、将参数添加到请求中并将该请求转发/重定向到其他操作或 JSP。
  4. JSP 调用 Tag 以确定动态内容并格式化内容。
  5. 浏览器显示页面,然后此循环重复执行。

返回页首


手动部署应用程序

此示例应用程序已完成部署,因此不必执行以下过程,但我们将介绍这一部署过程。

以下是一个有关如何手动部署 Oracle CM SDK Web Starter Application 的示例。可以将这些步骤用作部署您自己的定制 Oracle CM SDK 应用程序的指导。

手动部署 CM SDK 应用程序分四个主要步骤。这些步骤如下:

  1. 创建一个新的 HTTP 节点
  2. 创建一个 OC4J 实例
  3. 部署定制应用程序
  4. 重新启动 CM SDK 域和 OC4J 实例并访问此应用程序

完成这些步骤后,应能够访问测试应用程序。请注意,以下这些步骤演示了如何使用 Oracle 企业管理器应用程序服务器控制台实现此目标,并且您必须已经拥有 CM SDK 的正常工作的安装程序。

创建一个新的 HTTP 节点

1. 访问 Oracle 企业管理器网站 (http://主机名.域:1810)

2. 输入 Oracle 企业管理器管理员用户名和口令 (ias_admin/<ias_admin password>)

3. 随后将显示 Oracle 企业管理器应用服务器控制台,导航到 CM SDK 安装到的 9iAS 实例。

4. 将显示 Oracle CM SDK 域和 CM_SDK OC4J 实例。以下是列出一个 CM SDK 的组件示例:

  • iFS_ifstst1:1521:ifstst1.us.oracle.com:IFSTRIAGE2_CMSDK(用于 Oracle CM SDK 域)和
  • OC4J_iFS_cmsdk(用于 CM SDK HTTP 节点)

5. 单击 Oracle CM SDK Domain

6. 单击 Configuration 部分下的 Server Configurations 链接。(注意:在 Oracle CM SDK 9.0.4 中,服务器已经存在,因此可以跳过此步骤)。

选择 HttpAdminServerConfiguration 旁边的单选按钮,然后单击 Create Like 按钮。

为服务器输入以下信息:

  1. 名称:TestWebStarterAppServerConfig(注意:可以输入任何名称)
  2. 访问控制:Private
  3. 取消选中 Abstract。
  4. 向下滚动到 Properties 部分
  5. 删除所有项(IFS.SERVER.ClassIFS.SERVER.SESSION.User 除外)
  6. 编辑 IFS.SERVER.Class 属性以拥有值 oracle.ifs.examples.webapps.webstarterapp.WebStarterAppServer
  7. 然后,属性部分应如下所示:
    • IFS.SERVER.Class = oracle.ifs.examples.webapps.webstarterapp.WebStarterAppServer
    • IFS.SERVER.SESSION.User = system

单击 OK 保存 TestWebStarterAppServerConfig Server

7. 将显示 Server Configuration 页面。单机位于页面顶部的 Domain Link 以返回到 Domain 页面。

8. 选择 Configuration 部分下的 Node Configuration。选择当前的 HTTP Node 单选按钮,然后单击 Create Like 按钮。

为 HTTP Node 输入以下信息:

  1. 名称:TestHttpNode(注意:可以输入任何名称)
    选中 Active 复选框
  2. 向下滚动到 Servers 部分并选择 HttpAdminServerConfiguration,然后单击 Remove
  3. 在 Servers 部分中,选择 Add 并输入以下信息:
    1. 名称:WebStarterAppServer(注意:此名称必须匹配在 web.xml 文件中输入的名称)
    2. 配置:TestWebStarterAppServerConfig
    3. 服务:IfsDefaultService
    4. 初始优先级: 5
    5. 选中 Active and Initially Started
    6. 选择 OK
  4. 选择 OK

返回页首


创建一个 OC4J 实例

1. 在应用服务器的主 Oracle 企业管理器应用服务器控制台上,选择 Create OC4J Instance 按钮

  • 输入 OC4J 实例名:TestInstance
  • 单击 Create

2. 在 File System 上,导航到 ORACLE_HOME\j2ee\TestInstance\config\oc4j.properties。首先创建此文件的备份。然后添加以下行:

	IFS.DOMAIN.NODE.IfsHome=<ORACLE_HOME>/ifs/cmsdk
	IFS.DOMAIN.Name=ifs://<DB Host>:<DB port>:<DB Service Name>:<CM SDK Schema>
	IFS.DOMAIN.NODE.Name= TestHttpNode

	IFS.DOMAIN.NODE.OracleHome=<ORACLE_HOME>/
	

保存文件。


注意:可以在 ORACLE_HOME\j2ee\OC4J_iFS_cmsdk\config\oc4j.properties 中找到这些内容。将这四行复制到 TestInstance 的 oc4j.properties 中,然后更改 IFS.DOMAIN.NODE.Name 以表明 TestHttpNode 已经创建。


3. 在 File System 上,导航到 ORACLE_HOME/opmn/conf/。在此目录中,您将找到一个名为 opmn.xml 的文件。先备份此文件,再继续操作。

向下滚动到此文件的底部,然后找到 OC4J_iFS_cmsdk 条目。将 OC4J_iFS_cmsdk 中的环境部分复制到 TestInstance 部分。注意,在不同的平台上,路径的属性名将有所不同(例如,LIBPATH、LD_LIBRARYPATH)

	<environment>
	  <prop name="PATH" value="E:\Portal90201\bin"/>
	  <prop name="NLS_LANG" value=".UTF8"/> 
	</environment> 

以上内容随后将如下所示:

	<oc4j instanceName="TestInstance" gid="TestInstance">
	  <config-file path="E:\Portal90201\j2ee\TestInstance\config\server.xml"/>
	  <oc4j-option value="-properties"/> 
	  <port ajp="3001-3100" rmi="3101-3200" jms="3201-3300"/> 
	  <environment>
	    <prop name="PATH" value="E:/Portal90201\bin"/>
	    <prop name="NLS_LANG" value=".UTF8"/> 
	  </environment>
	</oc4j>

保存 opmn.xml 文件。

4. 停止流程管理器 (OPMN),然后重新启动它。

对于 Windows:在 Services 中,重新启动 <%ORACLE_HOME%>ProcessManager

对于 UNIX:重新启动 opmnctl stopall,然后重新启动 opmnctl startall

返回页首


将 WebStarterApplication 部署到 TestInstance

1. 从 Oracle 企业管理器应用服务器控制台中,单击TestInstance,然后单击 Deploy EAR File 并单击 Next。

2. 在 Select Application 屏幕上,输入:

J2EE 应用程序:WebStartApp EAR 文件的位置
应用程序名称:TestWebStarterApp?(注意:可以选择所需的任何名称)

单击 Next

3. 在 URL Mapping for Web Modules 屏幕上,采用 /webstarterapp 的缺省值,然后单击 Next。??(注意:可以输入任何名称)

4. 在 Resource Reference Mappings 屏幕上,单击 Next。

5. 在 User Manager 屏幕上,单击 Use Custom User Manager 单选按钮。对于 Name 和 Class Name 域,输入 test。?由于应用程序不使用 SSO,因此需要填充此域。然后,依次单击 Finish 和 Deploy

6. 随后将显示 TestInstance 页面,在 Applications 下选择 TestWebStarterApp。

7. 在 Web Modules 下,选择 webstarterapp。

在该页面的 Properties 下的 Administration 部分中,单击 General。

在 Class Paths 下,单击 Add Class Path 按钮

输入 ORACLE_HOME\ifs\cmsdk\lib\cmsdk.jar 文件的物理路径,例如,在 Windows 中您将输入以下路径:E:\Portal90201\ifs\cmsdk\lib\cmsdk.jar

单击 Apply 按钮

返回页首


重新启动 Oracle CM SDK 域和 OC4J 实例并访问应用程序

1. 重新导航到 Oracle 企业管理器应用服务器控制台的 Application Server 页面(其中列出了所有组件)

1. 选择 Oracle CM SDK Domain(例如,iFS_ifstst1:1521:ifstst1.us.oracle.com:IFSTRIAGE2_CMSDK)

2. 选择 Start Local Components 按钮。输入操作系统管理员用户名和口令,然后单击 OK。

2. 重新导航到 Oracle 企业管理器应用服务器控制台的 Application Server 页面,其中列出了所有组件。选择 TestInstance 旁边的单选按钮,然后单击 restart。

3. 打开一个浏览器,然后输入以下 URL 并输入 Oracle CM SDK 用户名/口令

http://hostname.domain:port/webstarterapp

返回页首


使用 Oracle JDeveloper 嵌入式 OC4J 服务器设置开发计算机(单一套件)

  1. 安装 Oracle 应用服务器
  2. 安装 Oracle CM SDK,创建一个域、OC4J 实例,...
  3. 安装 Oracle JDeveloper
  4. 解压缩 webstarterapp.ear 文件
  5. 在 JDeveloper 中
    • 使用 webstarteapp.ear 文件中的 webstarterapp.war 文件创建一个新项目。
    • 在 project properties/Libraries 下,
      • 创建一个指向 <iasHome>\ifs\cmsdk\lib\cmsdk.jar 的新库
      • 创建一个指向 <iasHome>\jlib\uix2.jar 的新库
      • 创建一个指向 <iasHome>\jdbc\lib\classes12.jar 的新库
      • 对于 CM SDK 904,创建一个指向 <iasHome>\jlib\emPid.jar 的新库
    • 您现在应能够编辑此项目
  6. 使用 Enterprise Manager
    • 为 WebStarteAppServer 创建一个 ServerConfiguration
    • 创建一个新的 HTTP 节点
  7. 在 Oracle JDeveloper 中
    • 在 project properties/runner 下
    • 设置虚拟计算机 java 选项

      -DIFS.DOMAIN.Name=<your domain> -DIFS.DOMAIN.NODE=<yourNodeName>


      注意:有关更多信息,请参见本文档中的创建一个 OC4J 实例部分。

      • 运行前可以选择关闭编译 (properties/runner/options)。
      • 将缺省运行目标设置为 index.jsp。


    • 测试
      • Oracle Enterprise Manager
        • 重新启动 Oracle CM SDK 域,这可以确保 Your HttpNode 是域的一部分,并需要 JDeveloper 来启动它。将请求由 WebStarterAppServlet 运行 Http 节点。
        • 重新启动 OC4J CM SDK 实例。

        注意:您不必在每次从 Oracle JDeveloper 中运行 Web 应用程序时重新启动 Oracle CM SDK 域,除非您更改了服务器类 WebStarterAppServer。但如果您遇到问题,则可以尝试执行此操作。


      • JDeveloper
        • 运行此项目,随后将显示登录页
        • 尝试使用 guest 登录
        • 可以在以下位置找到日志文件:

          <JDeveloperHome>/jdev/<workspace>/<workspace>-oc4j-app.log


        注意:再次运行此项目之前,确保终止嵌入的 oc4j 服务器。


返回页首


使用 Oracle JDeveloper 嵌入式 OC4J 服务器设置开发计算机(双层)

A 框

  1. 安装 Oracle 应用服务器
  2. 将 Oracle CM SDK 安装到 Oracle 应用服务器 $ORACLE_HOME 中
  3. 配置新的 Oracle CM SDK 模式

B 框

  1. 安装 Oracle 应用服务器
  2. 将 Oracle CM SDK 安装到 Oracle 应用服务器 $ORACLE_HOME 中,并选择要根据现有域进行配置的选项。在系统提示时,取消选择 Domain Controller 和 NODE(保持 HTTP Node 的选中状态)
  3. 将 Oracle JDeveloper 安装到单独的 $ORACLE_HOME 中。
  4. 解压缩 webstarterapp.ear 文件
  5. 在 Oracle JDeveloper 中
    • 使用 webstarteapp.ear 文件中的 webstarterapp.war 文件创建一个新项目。
    • 在 properties/Libraries 下,创建一个指向以下项的新库(名为 CMSDK)
    	<iasHome>\ifs\cmsdk\lib\cmsdk.jar;
    	<iasHome>\jlib\uix2.jar;
    	<iasHome>\jdbc\lib\classes12.jar; 
    	<iasHome>\jlib\emPid.jar;
    	<iasHome>\jlib\gss-1_1.zip
  6. 使用 Oracle 企业管理器应用服务器控制台
    • 为 WebStarteAppServer 创建一个 ServerConfiguration(请参阅自述文件)
    • 创建一个新的 HTTP 节点(请参阅创建一个 HTTP 节点
  7. 在 Oracle JDeveloper 的 project properties->runner 下,设置虚拟计算机 java 选项:

    -DIFS.DOMAIN.Name=<your domain> -DIFS.DOMAIN.NODE<yourNodeName>
    • 运行前可以选择关闭编译 (properties/runner/options)
    • 将缺省运行目标设置为 index.jsp
  8. Oracle Enterprise Manager
    • 重新启动 Oracle CM SDK 域(从 A 框中),这可以确保您的 HttpNode 是域的一部分,并需要 JDeveloper 来启动它。将请求由 WebStarterAppServlet 运行 Http 节点。
    • ?重新启动 OC4J CM SDK 实例(对 A 框和 B 框均执行此操作)

      注意:您不必在每次从 Oracle JDeveloper 中运行 Web 应用程序时重新启动 Oracle CM SDK 域,除非您更改了服务器类 WebStarterAppServer。但如果您遇到问题,则可以尝试执行此操作。


  9. JDeveloper
    • ?运行此项目
    • ?将显示登录页
    • ?尝试使用 guest 登录
    • ?日志文件位于 <JDeveloperHome>/jdev/<workspace>/<workspace>-oc4j-app.log

      注意:再次运行此项目之前,确保终止嵌入的 oc4j 服务器。


返回页首


使用 Oracle JDeveloper 嵌入式 OC4J 服务器设置独立开发环境

此安装只适用于开发,不应在生产中使用。这一设置避免了在开发计算机上安装 Oracle 应用服务器和 Oracle CM SDK。但由于它需要使用模式口令,因此它并不安全。

  1. 假设 Oracle 应用服务器和 Oracle CM SDK 已安装在另一台计算机上。
  2. ?安装 Oracle JDeveloper
  3. 解压缩 webstarterapp.ear 文件
  4. 在步骤 5 中将以下列出的所需 jar 复制到开发计算机。
  5. ?在 Oracle JDeveloper 中
    • 使用 webstarteapp.ear 文件中的 webstarterapp.war 文件创建一个新项目。
    • 在 project properties/Libraries 下,
    • 创建一个指向 <iasHome>\ifs\cmsdk\lib\cmsdk.jar 的新库
    • 创建一个指向 <iasHome>\jlib\uix2.jar 的新库
    • 创建一个指向 <iasHome>\jdbc\lib\classes12.jar 的新库
    • 对于 CM SDK 904,创建一个指向 <iasHome>\jlib\emPid.jar 的新库
    • 您现在应能够编辑此项目
      ?
  6. 在 JDeveloper 中
    • 在 project properties/runner 下
    • 设置虚拟计算机 java 选项

    -DIFS.DOMAIN.Name=<your domain> -DIFS.STANDALONE.Mode=true -DIFS.SCHEMA.PASSWORD=<your schema password>

    • 运行前可以有选择地关闭编译 (properties/runner/options)
    • 将缺省运行目标设置为 index.jsp
  7. 在 JDeveloper 中进行测试
    • 运行此项目,随后将显示登录页
    • 尝试使用 guest 登录
    • ?日志文件位于 <JDeveloperHome>/jdev/<workspace>/<workspace>-oc4j-app.log

      注意:再次运行此项目之前,确保终止嵌入的 oc4j 服务器。


返回页首


寄送此页面
Printer View 打印机视图