版本说明

Oracle JDeveloper 11g 技术预览版 2

版本说明

2007 年 10 月 3 日

内容

简介

Oracle JDeveloper 11g 技术预览版 2 产品的发布旨在让您抢先了解 JDeveloper 和 ADF 的下一个主要版本(即,通常说的版本 11)。这只是该产品的一个早期雏形,在完全达到产品级质量要求之前仍有许多方面需要改进。因此,其中不可避免地会存在一些瑕疵,有些我们已事先有所了解,而有些则不然。

阅读本文档以深入了解我们以后的工作以及尚未进行全面测试的领域。我们对于您对此产品表现出的浓厚兴趣深表感激,在此先感谢您在 OTN 的技术预览版专题论坛上提供的反馈。有关 JDeveloper 11g 的更多信息和技术资源,请访问 Oracle 技术网上的 JDeveloper 11g 产品中心

功能完善情况

该版本的功能尚不完善,因此,1) 该版本所演示的功能并不保证一定会出现在最终生产版中,以及 2) 我们计划在生产版中添加一些在技术预览版中没有的功能。请注意,该版本没有包括 10.1.3.2 的一些著名功能,我们计划在生产版中将其纳入,如 SOA/BPEL 设计时、WebCenter 开发以及各种源代码控制扩展。

关于 Oracle JDeveloper 和 Oracle 应用开发框架 (ADF)

Oracle JDeveloper 是一个集成开发环境,它使用最新的 Java、XML、Web 服务以及 SQL 业界标准构建面向服务的应用程序。Oracle JDeveloper 集成了建模、编码、调试、测试、监测、调整和部署应用程序等各种功能,因此它支持完整的开发生命周期。

Oracle 应用开发框架 (Oracle ADF) 是一个端到端应用框架,该框架基于 Java 平台企业版 (Java EE) 标准和开源技术构建而成,可简化并加快面向服务的应用程序的实现。如果要开发使用 Web、无线、桌面或 Web 服务接口来搜索、显示、创建、修改以及验证数据的企业解决方案,那么 Oracle ADF 可以使您的工作变得更轻松。通过按序使用,Oracle JDeveloper 11g 和 Oracle ADF 可为您提供一个涵盖完整开发生命周期(从设计到部署)的环境,其中包括拖放数据绑定、可视 UI 设计以及团队开发功能内置。

该 Oracle JDeveloper 11g 技术预览版将演示可为 Java EE 5(包括 EJB 3.0 和 JSF 1.2)提供完整开发环境的新功能,以及适用于 AJAX 开发人员的新功能(包括优秀的新 ADF Faces 富客户端组件集以及 Javascript 编辑和调试)。Web 服务开发通过更新的 JAX-WS(一个完善的 Web 服务测试框架)和综合 WSDL 编辑器支持得到了极大的改进。还有许多 IDE 和 Java 开发功能得到了增强,可提高开发人员工作效率。此外,通过增加 ADF Faces 富客户端、基于 JSF 的新 ADF 控制器框架以及无数针对产能提高的功能增强,使得利用 Oracle ADF 构建应用程序得到了显著改善。

一般问题

嵌入式 OC4J

由于已知问题(错误 6399289),如果您打算使用“Embedded OC4J Server Preferences”对话框针对嵌入式 OC4J 服务器编辑 jazn.com 域中的用户和角色,需要确保 JDeveloper 11g 系统目录的名称中不包含空格。

例如,默认情况下,Windows 上可能会出现此情形,因为在 11g 中,默认情况下特定于 jdeveloper 的系统设置保存在 %USERPROFILE% 目录中。例如,对于名为 jsmith 的用户,该变量可能设置为:


	USERPROFILE=C:\Documents and Settings\jsmith

这意味着,第一次启动 JDeveloper 11g 时,它将在以下位置创建系统目录:


	C:\Documents and Settings\jsmith\Application Data\JDeveloper\system11.1.1.0.20.46.84

以及嵌入式 OC4J 服务器设置所在的子目录:


	C:\Documents and Settings\jsmith\Application Data\JDeveloper\system11.1.1.0.20.46.84\o.j2ee\embedded-oc4j

因为该目录的名称中包含空格,所以 jsmith 会出现问题。

如果已经在名称未包含空格的目录中安装了 JDeveloper 11g,那么一个解决方案是始终使用 -singleuser 命令行标记启动 JDeveloper。或者,可以将 JDEV_USER_DIR 环境变量设置为目录名(其名称中不要有空格!)。

移植

从 10.1.3.x 到 11g 的移植测试刚刚开始。这一领域很可能会存在问题。请确保在尝试将现有项目移植到 JDeveloper 11g 之前备份您的工作。

注:不支持从技术预览版移植到后续版本(包括未来预览版和生产版),或对此进行测试。

部署

该版本不支持直接从 JDeveloper 部署到任何版本的 Oracle AS SOA 套件或独立的 OC4J。一般的 Java EE 应用程序可通过应用服务器提供的 Ant 脚本部署到该服务器。对于测试使用技术预览版 2 构建的应用程序,我们建议只需通过在 JDeveloper 中运行应用程序来使用嵌入式 OC4J。或者,可以在独立模式下启动提供的 OC4J 以试验部署(请参阅安装指南,以了解如何在独立模式下启动提供的 OC4J)。

性能

这是该软件的早期版本。设计时 (JDeveloper) 与运行时 (ADF 预览版) 都存在一些性能问题。开发团队将在稍后解决这些性能问题。感谢您的参与!

可访问性

该版本并未对可访问性进行测试。其中包括仅使用键盘输入导航开发环境,以及通过 ADF 构建可访问的应用程序。

文档

技术预览版 2 提供的文档只是初稿。其中包括开发人员指南和内部产品文档。我们欢迎您通过技术预览版论坛提供您的反馈。

IDE 和 Java SE 开发

通过 JDK6 运行 JDeveloper 11g IDE 的已知问题

正如安装指南中所述,JDeveloper 11g 技术预览版 2 的 IDE 在使用 JDK 1.5_09 运行时一切正常。如果已下载了“基础”安装,则第一次启动 JDeveloper 11g 时,系统会提示您指定要使用的 JDK 位置。请确保提供 JDK 版本 1.5_09 安装的位置。如果不经意使用了 JDK6 安装,则会收到一个告知您此配置不受支持的警告对话框。要纠正此问题,可以对 JDEVHOME/jdev/bin/jdev.conf 文件中以 SetJavaHome 开头的行进行注释。执行完此操作后,下一次启动 JDeveloper 11g 时,将会再次提示您选取 JDK 目录。

请注意,使用 JDK 1.5 运行 JDeveloper 11g 时,仍可使用它来创建和维护您自己的使用 JDK6 的应用程序。该限制仅针对该版本使用 JDK6 运行 JDeveloper 11g IDE 自身。至于生产版,我们计划默认情况下随附 JDK6。

JUnit 运行时库移植不正确 (6373759)

在以前的 JDeveloper 版本中使用 JUnit 打开并移植项目时,名为“JUnit Runtime”的库将无法正确移植到 JDeveloper 11g 中该库的相应新名称,即“JUnit 3.8.1 Runtime”。解决方法是手动删除“JUnit Runtime”库,然后在移植后将“JUnit 3.8.1 Runtime”库添加到项目。

使用 Subversion 时出现未决更改的重复项 (6398634)

在 Pending Changes 窗口的 Incoming Changes 选项卡上,一个文件可能会多次列出。在某些情况下,在 Windows 操作系统上使用带有 Subversion 的 JDeveloper 时会出现此情形。

使用 CVSNT 服务器时,文件名中的 MB 字符将在签入/签出后受损 (6277841)

如果 JDeveloper 在服务器为 CVSNT 实例时使用其内部 CVS 客户端,则文件名中的 MB 字符将在签入/签出后受损。

“Declare final”选项在引入参数时不起作用 (6413783)

执行 Refactoring > Introduce Parameter 操作时,会出现一个“Declare final”选项,但无论是否选中,该选项都不起作用。

监测器

监测器目前只能在 Windows 和 Linux 上运行。Mac OS X 仍不受支持。

UML 和绘图框架

如果未选择“Show Swimlanes”,则无法在活动图中创建泳道 (6429943)

活动图有两个单独的视图,可通过图的上下文菜单项“Show Swimlanes”进行配置。只有选定“Show Swimlanes”后才可显示泳道并在图中进行创建。在以前的版本中,没有选定“Show Swimlanes”时,组件选项板中的泳道项显示为禁用。这种情况不再出现,该项将始终显示为启用。

数据库开发

oracle.dbdev.profiler 在启动时出现加载错误 (6431970)

启动时,JDeveloper 控制台上将显示一条错误消息,可将其忽略。


	java.lang.NullPointerException
		at oracle.ide.net.URLFileSystemHelper.getPath(URLFileSystemHelper.java:453)
		at oracle.ide.net.URLFileSystem.getPath(URLFileSystem.java:634)
		at oracle.dbtools.raptor.utils.FileUtils.getFilesInPackage(FileUtils.java:35)
		at oracle.dbdev.oviewer.base.ViewerAddin.loadXMLEditors(ViewerAddin.java:233)
		at oracle.dbdev.oviewer.base.ViewerAddin$1$1.run(ViewerAddin.java:134)
		at java.lang.Thread.run(Thread.java:595)
	Could not load:oracle.dbdev.profiler 

不要编辑数据库连接 (6210469)

如果编辑数据库连接,连接将受损;如果之后尝试将其删除,则会收到一条错误消息。解决方法是,如果需要进行更改并希望保留连接名,应先删除该连接,然后利用新的细节信息再次创建连接。

用户在数据库连接删除后仍保持连接 (6269411)

在删除数据库连接时,连接将从导航器中删除,但用户并未断开与数据库的连接。解决方法是关闭 JDeveloper。如果用户在重新启动 JDeveloper 后仍保持连接,则数据库管理员必须断开用户连接。

数据库对象在数据库路径更改后仍未从图中删除 (4879232)

数据库图中包含有来自多条路径的数据库对象,因为路径是作为当前项目(Project Properties 对话框)中包含的其中一个数据库路径列出的。删除包含来自数据库路径的数据库对象的路径后,它们仍会显示在数据库图中。

解决方法是关闭并重新打开 JDeveloper,或者手动从图中删除数据库对象。

数据库依赖项更改后可能无法删除数据库图上的 FK (6140557)

一个脱机数据库可以依赖于另一个脱机数据库(Edit Offline Database 对话框),然后在每个数据库的表之间创建一个外键。在移除依赖关系后,这个外键仍会显示在图中。

解决方法是从图中手动删除这个外键。

从脱机索引编排表生成 SXML (6434841)

在创建脱机索引编排表以及随后根据其生成 SXML 时,您可能会发现 SXML 文档中缺少 INDEX_ORGANIZED_TABLE 标记。

解决方法是,确保访问 Create/Edit Table 对话框的 Index Organized Properties 页面,必要时,重新生成 SXML 文档。

生成的外键子句中“enable/disable”语法前缺少空格致使 DDL 无法运行 (6411290)

在生成包含外键的表后,DDL 在外键的 ENABLE/DISABLE 子句前缺少一个空格。这意味着,您必须编辑生成的 DDL 以便在运行脚本之前 将空格包含在内。

例如,生成的 DDL 是:


ALTER TABLE EMP
ADD CONSTRAINT FK_DEPTNO FOREIGN KEY
(
DEPTNO
)
REFERENCES DEPT
(
DEPTNO
)ENABLE <-- Missing a space
;

“)”和“ENABLE”之间需要添加一个空格。

部署

重新部署包含 ADF 任务流的 ADF 库

作为错误修复 6039981 的一部分,ADF 库部署流程已经过修改,在 ADF 库内增加了元数据。新增的元数据可防止资源目录要求分析 ADF 任务流源文件。

如果您使用的 ADF 库包含 ADF 任务流,建议将其重新部署。这将确保您的 ADF 库将额外元数据包含在内。它还可提高这些 ADF 库的资源目录其他方面的性能。

资源目录仍将使用旧有方式识别和分析 ADF 库,但 ADF 开发团队可能会在最终的 JDeveloper 11g 版本中移除这一功能。

File Groups 面板已经从 ADF 库部署配置文件中删除 (6198098)

因为该 UI 会导致用户混淆受支持和不受支持的功能,该面板已从部署配置文件中删除。当前的面板有:“ADF Options”、“JAR Options”以及“Profile Dependencies”。

将 EJB 会话 Bean 部署到 WebLogic (5653967)

要将 EJB 会话 bean 部署到 WebLogic,应为版本 1.4 创建一个 application.xml,并确保 WebLogic Application Server Connection 属性中 WebLogic 9.x 安装 (weblogic.jar) 的位置正确。

Web 服务开发

可能需要在更改代理设置后重新启动 JDeveloper (6375984)

如果更改了 JDeveloper 的代理设置(在 Preferences 对话框的 Web Browser and Proxy 页面中),并且已经运行了 Web 服务客户端,则需要重新启动 JDeveloper 以使更改生效。

无法为安全的 Web 服务创建 JAX-RPC 客户端 (6131227)

在创建使用身份验证的 JAX-RPC Web 服务客户端后,会在运行时收到一条错误消息。解决方法是,将 JAXB 库和 webservices/lib/jaxws-api.jar 置于项目的类路径中,并确保 JAXB 库靠近类路径条目列表的顶部。

使用针对在嵌入式 OC4J 中运行的 Web 服务生成的代理时出现验证错误 (6174923)

如果要为在嵌入式 OC4J 中运行的 Web 服务创建代理,并且在 Preferences 对话框的 Web Browser and Proxy Settings 页面中设置了代理服务器,那么除非在 WSDL 路径中使用了实际的主机名(完全限定域),否则会收到一个验证错误消息。这是因为 Preferences 对话框的 Web Browser and Proxy Settings 页面中列出的异常受到了忽略。

解决方法是,启动 HTTP Analyzer 以正确处理异常列表。

validateSEI 没有检查通用集合的类型是否可序列化 (5926153)

在将通用集合用作 JAX-WS 或 JAX-RPC 服务的参数时,如果参数化通用集合的类型不可发布,WS 向导也会将方法标记为可发布。选择这些方法将导致在部署后出现运行时错误。

类型发布无效的最可能原因是该类型(或其构成属性类型之一)没有序列化。该问题的解决方法是,为这些需要序列化的属性定义序列化程序。注:常见的不可序列化类型包括日期、时间戳等。

JAX-WS 程序集给出误导警告 (6272248)

在创建 JAX-WS Web 服务时,Java 文件的验证仍使用验证规则的 JAX-RPC 集。一般而言,JAX-WS 验证不太严格,因此在某些情况下会遭到向导的拒绝。解决方法是,在代码中使用批注手动定义 Web 服务(例如,为那些标记为不可发布的方法插入 @WebMethod)。

Web/Ajax 开发

没有使用文本值,除非显式刷新可视化编辑器中的页面 (6433769)

如果使用 List 或 Properties 资源包,在用户为组件创建新项目并单击“Select text resource”对话框中的“Save and Select”后,可视化编辑器中的组件将直接显示 EL 而不是选定的文本值。用户可以单击编辑器工具栏中的刷新按钮,以显式重新加载页面,然后使用文本值。

EL 在与 List 或 Properties 资源包自动同步时使用了错误的变量名 (6363187)

设置项目使用 List 或 Properties 资源包并且一个文件一个包,创建两个 JSF 页面并从 JSP 可视化编辑器的两个页面中选择 Automatically Sync Resource Bundle。第二个页面将“bundle”用作变量名,第一个页面也是如此。因此,第二个页面将引用不正确的资源包。

EJB、JPA 以及 Java EE 开发

构造函数绑定 (6014714)

在调用 persistEntity 方法时,尝试使用基于 JPA 实体的会话 Bean 数据控件的构造函数绑定将会失败。取而代之,请使用基于会话 Bean 的数据控件的 Create 操作。您会发现,Create 操作将嵌套在数据控件选项板中名为 findXXX 的查询方法之下。

运行远程 EJB 3.0 客户端

要运行在利用 JPA 实体的 EJB 对象上调用命令行参数的远程 EJB 3.0 客户端,必须将 -javaagent:lib/java/internal/toplink-agent.jar 作为参数添加到与项目关联的运行程序。请注意,如果示例 EJB 客户端是使用 JDeveloper 提供的工具生成的,则除了默认运行程序外,还会向当前项目添加第二个名为“EJB 3.0 Client”的运行程序。EJB 3.0 客户端必须用于运行示例客户端。

资源目录

编辑动态文件夹时在“Search in”组合框中选择根连接节点将导致 CCE (6432510)

在编辑动态文件夹时,在组合框中选择根连接节点会引发 ClassCastException,并且编辑操作无效。

由 DnD 将多个项从一个目录移至另一个目录始终会在源目录中遗留一个未删除项 (6432551)

选定某目录下的两项,将其拖放至另一个目录,这样,这两项将显示在目标目录之下,但其中一个仍会显示在源目录中。该项应该已经从源目录中删除,因为其已移至目标目录。

保存搜索将导致 NPE (6432566)

目前,还不能跨多个信息库保存搜索。目录可能包含来自多个信息库的项,因此不应保存目录搜索。

ADF Faces 和数据可视化

浏览器支持和问题

  • 受支持的浏览器:仅支持 Internet Explorer 7 和 FireFox 2.0.0.2+ 浏览器
  • 错误 5990166 - 弹出菜单或表中的 InputText 在 Firefox 中不显示光标(IE7 运行良好)
  • 错误 6122936 - 在 Firefox 中使用 inputFile 组件时出现问题(IE7 运行良好)
  • 错误 5893377 - 使用活动数据服务时,DMS 中的 ADF 内存出现增长这可通过在启动 OC4J 时添加 Java 选项“-Doracle.dms.context.dumbasastump=true”来解决。

页面布局技巧

为了帮助指导用户在受支持的浏览器之间创建可靠的布局,布局组件和一些其他非布局组件现在有了自己的宿身之地 — 名为“Geometry Management”的标记文档。该文档详述了哪些组件可以由父组件拉伸,哪些组件可以拉伸出其子组件以及任何其他要求通过可靠方式进行拉伸的特殊环境。此外,文档中还详述了如果要在另一个将拉伸其子组件的组件中放置非拉伸组件时该如何做。

症状

我有一个组件,希望它可以拉伸以便与另一个组件的内部相适应。它在一个浏览器中工作良好,但当我在另一个浏览器中运行相同的页面时,这个组件要么不显示要么就缩短。如果我替换掉该组件,又一切正常。这是怎么回事?

解决方案

上述问题可能是由以下一个或多个问题导致。确定以下要求是否都已满足:

1. “position”样式

在页面的某些位置(可能是靠近组件无法正常显示的地方)是包含“position”设置的 inlineStyle。由于 Web 浏览器对其的处理方式,我们强烈建议设置该样式。如果需要该样式,组件呈现器会在后台为您进行添加。如果您觉得需要对其进行指定,并且没有按预定的方式使用组件,那么页面的显示在不同的 Web 显示器中表现会不同。如果您关注最外边的布局面板组件上的“position”,则可能希望指定“AFVisualRoot”以将组件标记为一个应进行拉伸以适应浏览器视口内部的组件。每个页面只能使用一次,且只能在根可见、可拉伸的布局组件上使用。

2. 基于百分比的高度

页面上的某些位置(可能靠近组件无法正常显示的地方)是包含以“%”为单位的“height(高度)”设置的 inlineStyle。由于 Web 浏览器对其的处理方式,我们强烈建议对该类高度进行设置。ADF Faces 包含若干支持其子组件(如 panelSplitter 和 panelStretchLayout)拉伸的组件。如果您的组件能够进行拉伸,则只需将其置于这些将对其拉伸的组件中的一个即可。如果其不可拉伸(请参阅组件标记文档“geometry management”部分以获取详细信息),则您不能将其置于拉伸其子组件的组件中。相反,如果确实需要父组件,则必须将子组件包装在转换组件内(可拉伸但无法拉伸其子组件的组件),如 panelGroupLayout,其中 layout=“scroll”或 layout=“vertical”。如果不按此说明进行,则子组件将无法在所有受支持的浏览器中可靠地进行拉伸或显示。截至本文撰写之日,允许设置百分比高度的唯一地方是 panelAccordion 或 panelTabbed 的 showDetailItem 内。有关何时这样做安全的详细信息,请参阅 panelAccordion 或 panelTabbed 组件的标记文档。

3. 无效的组件层次结构

许多组件无法可靠地进行拉伸。这是浏览器造成的限制。无法拉伸的容器组件包括:

  • <af:panelBorderLayout>
  • <AF:panelBox>
  • <AF:panelFormLayout>
  • <AF:panelGroupLayout layout="default">
  • <AF:panelGroupLayout layout="horizontal">
  • <AF:panelHeader>
  • <AF:panelLabelAndMessage>
  • <AF:panelList>
  • <trh:tableLayout>
  • 此外,许多输入组件也无法进行拉伸。

您不能将这些组件置于可拉伸其子组件的父组件内,也不能在其上指定 styleClass=“AFVisualRoot”。这样做会导致页面无法在 Web 浏览器之间可靠地显示,并可能无法提供可用布局。相反,如果确实需要父组件,则必须将子组件包装在转换组件内(可拉伸但无法拉伸其子组件的组件),如 panelGroupLayout,其中 layout=“scroll”或 layout=“vertical”。

我们建议的页面组装方式是:构建一个 panelStretchLayout 和 panelSplitter 组件框架,然后,具备了由这些组件定义的布局区域后,可开始创建非拉伸组件区域,其中每个区域为上述转换组件的根。

进一步的帮助

  • 请参阅每个组件的标记文档的“Geometry Management”部分,以获取详细信息。
  • 如果不需要拉伸适应布局,请停止使用可拉伸其子组件的组件。如果希望所有页面都没有拉伸,可将 <AF:document> 的最大属性更改为“false”并从根拉伸布局组件中删除 styleClass=“AFVisualRoot”。

ADF 数据可视化

ADF DVT 图形

  • 在使用带有一系列高亮效果 (seriesRolloverBehavior=“RB_HIGHLIGHT”) 的 Flash 图形时,浏览器可能会意外崩溃。解决方法是,去掉高亮效果或使用 seriesRolloverBehavior=“RB_DIM”。(错误 6152388)
  • 更改系列边框颜色或使用 defaultBorderColor 属性时不起作用。
  • Flash 图形上的 Time Selector 功能没有激活更新事件(错误 6412889)。解决方法是使用 SVG 图形。

ADF DVT 地图

ADF DVT 甘特图

  • 使用 Scheduling Gantt 时,在 Internet Explorer 中将任务移至另一行并非始终凑效。解决方法是使用 Firefox。 (6395952)
  • 在时间量程设置为 HOURS 时,打印 Project Gantt 将返回 NullPointerException。 (6395934)
  • 使用 Project Gantt 中工具栏上的撤消/重做会在某些情况下引发异常。 (6395890, 6395863)
  • Project Gantt 工具栏上的“Show entire project”选项不起作用。 (6395845)
  • 帮助主题不可用于一些设计时甘特图对话框。 (6395922, 6395909)

ADF 模型数据绑定

如果 PageDef“id”属性值与 PageDef 文件名不匹配,则移植后将引发 NoDefException (6401571)

解决方法是,编辑移植页面定义文件的 id 属性,以便与 pageDef XML 文件名(去掉 *.xml 扩展名)保持一样且正确。例如,如果 pageDef 文件是 EmployeeListPageDef.xml,则 pageDef XML 文件内的 id 属性的值应为“EmployeeListPageDef”。

从 JDeveloper/ADF 10.1.2 或 10.1.3 移植应用程序的技巧和问题

删除工作区目录中的现有嵌入式 OC4J 配置文件(如果有)

如果正在移植的项目曾在 JDeveloper 10.1.3 内的嵌入式 OC4J 服务器中运行过,那么根目录中会存在几个嵌入式 OC4J 配置文件。在移植应用程序之前,请删除这些文件。删除后,当首次在 JDeveloper 11g 内的嵌入式 OC4J 服务器中运行移植的应用程序时,JDeveloper 11g 会使用正确的内容重新创建这些文件。保留 10.1.3 版本的文件会导致应用程序在运行时无提示失败 [错误 6159844]。

要从工作区根目录中删除的文件名(如果存在)是:

  • oc4j-connections.xml
  • AppName-data-sources.xml
  • AppName-jazn-data.xml
  • AppName-oc4j-app.xml
  • AppName-oc4j-app.log

受支持的移植路径

备份现有 JDeveloper 10.1.2.x 或 10.1.3.x 工作区后,可在 JDeveloper 11.1.1.0.0 技术预览版 2 中打开该工作区。所有必要文件将在此时进行移植,在某些情况下,需要确认移植向导中的一些选项。一般而言,应接受移植应用程序的默认选择。如果由于任何原因直接从 10.1.2 移植失败,则可尝试先将 10.1.2 项目移植到 10.1.3.3,然后再将其移植到 11g 以查看是否移植更为成功。请在 OTN 论坛上向 Oracle 报告任何针对 11g 预览版的移植问题:http://forums.oracle.com/forums/forum.jspa?forumID=381

移植 10.1.3 ADF Faces 应用程序以使用 Apache Trinidad 组件

Apache Trinidad 组件都是基于 Oracle 捐赠的 ADF Faces 的开源 JSF 组件库。因此,可以理解,Apache Trinidad 组件与其所基于的 ADF Faces 组件非常类似。然而,它们是有着独特标识命名空间的独特组件库,在某些情况下,UI 组件会有不同的名称。JDeveloper 11g 将自动移植 10.1.3 ADF Faces 应用程序,以便在您于 JDeveloper 11g 中打开 10.1.3 ADF Faces 应用程序时使用相应的 Apache Trinidad 组件。在移植向导显示后,选择“yes”将应用程序移植到 Trinidad。将 ADF Faces 页面移植到 Trinidad 可确保您继续在设计页面时拥有可视的 WYSIWYG 设计时支持。JDeveloper 11g 没有为与 10.1.3 ADF Faces 组件库配合使用而提供 WYSIWYG 支持。

以下 wiki 中概述了由移植向导自动完成的从 ADF Faces 到 Trinidad 的移植路径:http://wiki.apache.org/myfaces/from_ADF_to_Trinidad

10.1.3 ADF Faces 到 11g Apache Trinidad 的分步移植教程

若要详细了解如何从使用 ADF Faces 的 JDeveloper/ADF 10.1.3 移植到使用 Apache Trinidad 的 11g 以及相关实践操作,请参阅 OTN 上配套的分步教程将 10.1.3 SRDemo 示例移植到 11g 技术预览版 2

在运行移植的 Struts JSP 数据绑定应用程序时出现运行时错误 (6159844)

从 10.1.3 移植应用程序时,嵌入式服务器配置文件并未得到正确移植。如果应用程序包含任何这些配置文件,则应将其删除并允许重新生成。

解决方法是,删除应用程序根目录中的所有“嵌入式服务器”配置文件:


	<appname>-oc4j-app.xml
	<appname>-data-sources.xml
	<appname>-jazn-data.xml
	<appname>-oc4j-app.log 

10.1.3 ADF Faces 应用程序移植中的已知问题

使用默认 Oracle BLAF 皮肤的应用程序在移植后外观出现改变 (6311994)

在将 10.1.3 ADF Faces 应用程序移植到 Apache Trinidad 组件后,由于我们还未完成 Trinidad 的相应 Oracle BLAF 皮肤,因此应用程序的外观将变为简化外观。我们计划在以后的预览版中为 Trinidad 提供 Oracle BLAF 皮肤。

或者,考虑更改对实用程序类中 adfFacesContext 的引用

ADF Faces 移植程序将更改对 adfFacesContext Bean(显示在 JSP 页面的 EL 表达式中)的引用,以引用 requestContext,这等同于 Trinidad。然而,如果已编写了任何引用 adfFacesContext 的实用程序类,则需要手动更改这些类以引用 requestContext

某些移植到 Trinidad 的组件组合会生成“Illegal Component Hierarchy”错误消息 (6408795, 6412235, 6434519)

在 ADF Faces 中,类似 <af:menuBar> 和 <AF:menuButtons> 的组件允许其中使用除 commandButton 和 commandLink 以外的 UI 组件。当 <AF:menuBar> 和 <AF:menuButtons> 移植到 Trinidad 后,它们会变成 <tr:navigationPane>,其中的呈现器将在包含命令组件以外的组件时引发错误。例如,包含 <AF:objectSpacer> 的 <af:menuBar> 移植到 Trinidad 后成为包含 <tr:spacer> 的 <af:navigationPane>,然而该组合将在运行时引发此类错误:


	SEVERE:Warning:illegal component hierarchy detected, expected UIXCommand but found another type of component instead.
	java.lang.ClassCastException:org.apache.myfaces.trinidad.component.core.output.CoreSpacer
	at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.NavigationPaneRenderer.renderContent(NavigationPaneRenderer.java:124)

包含 <AF:selectOneChoice> 的 <AF:menuButtons> 也会碰到类似问题。移植后,其将变为包含 <tr:selectOneChoice> 的 <tr:navigationPane>,这会在呈现时引发类似错误。

需要使用 JSF EL 表达式向移植代码添加“Servlet Runtime”库 (6402796)

如果已编写了帮助器类以使用 JSF API 来创建/解析 ValueBinding 或 MethodBindings(还有其他操作),那么如果项目在移植前还未在其项目录列表中具有到“Servlet Runtime”库的引用,则需要在移植后对其进行手动添加。否则,将导致如下所示的编译错误:


	Error(223,12):class javax.el.ValueExpression not found  in class javax.faces.component.UIComponentBase
	 in class javax.faces.component.UIViewRoot
	 in class test.view.util.JSFUtils

移植后,<tr:table> 行选择无法正常使用迭代器绑定的新的默认“Deferred”刷新模式 (6402748)

在 OTN 预览版 2 中,移植 ADF Faces 10.1.3 应用程序后,需要访问所有包含 <tr:table> 的页面的页面定义,并手动设置迭代器绑定(其数据收集显示在表中)的 Refresh 属性以具备值“ifNeeded”。在 10.1.3 和 11.1.1 之间,Refresh 属性的默认设置已从“ifNeeded”更改为“deferred”,Faces 表绑定还无法在该预览版中正常使用默认的“deferred”模式。将刷新模式设置为“ifNeeded”可使迭代器绑定的行为与其在 10.1.3 中的一样,并恢复正常的表行选择功能。

移植的 Trinidad 表的“actions”组件中的组件无法引用表的“row”变量 (6412865)

在预览版随附的 Trinidad 实施中,<tr:table> 的“actions”组件中的 UI 组件无法引用表的行变量。因为 <AF:table> 的“selection”组件中的 <AF:tableSelectOne> 或 <AF:tableSelectMany> 组件的 ADF Faces 10.1.3 UI 子组件移植成了 <tr:table> 的“actions”组件内的 Trinidad UI 组件,这意味着,如果其任何一个属性引用了其中的“row”是行变量名称的 EL 表达式(如 row.rowKeyStrrow.SomeAttributeName),则这些组件在移植后将无法正常使用。

例如,假设以下 ADF Faces 10.1.3 页面的片段在其“selection”组件中包含了一个 (Edit) 按钮。它引用 row.rowKeyStrin(一个嵌套的 <AF:setActionListener>)将 processScope.rowKeyToEdit 属性的值设置为表中当前选定行的字符串化行键的值。它还将其 actionListener 配置为在当前页面的绑定容器中触发 setCurrentRowWithKey 操作绑定。


<AF:table value="#{bindings.LoggedInUserServiceRequests.collectionModel}"
var="row"
rows="#{bindings.LoggedInUserServiceRequests.rangeSize}"
first="#{bindings.LoggedInUserServiceRequests.rangeStart}"
selectionState="#{bindings.LoggedInUserServiceRequests.collectionModel.selectedRow}"
selectionListener="#{bindings.LoggedInUserServiceRequests.collectionModel.makeCurrent}">
<-- AF:column components here -->
<f:facet name="selection">
<AF:tableSelectOne text="Select and...">
<AF:commandButton text="Edit"
id="viewButton"
actionListener="#{bindings.setCurrentRowWithKey.execute}"
action="GotoEditPage">
<AF:setActionListener from="#{row.rowKeyStr}"
to="#{processScope.rowKeyToEdit}"/>
</AF:commandButton>
</AF:tableSelectOne>
</f:facet>
</AF:table>

在移植该页面后,上面的片段将如下所示:


<tr:table value="#{bindings.LoggedInUserServiceRequests.collectionModel}"
	  var="row"
	  rows="#{bindings.LoggedInUserServiceRequests.rangeSize}"
	  first="#{bindings.LoggedInUserServiceRequests.rangeStart}"
	  selectionListener="#{bindings.LoggedInUserServiceRequests.collectionModel.makeCurrent}"
	  selectedRowKeys="#{bindings.LoggedInUserServiceRequests.collectionModel.selectedRow}"
	  rowSelection="single">
<!-- tr:column components here -->
<f:facet name="actions">
<tr:panelGroupLayout layout="horizontal">
<tr:commandButton text="Edit"
			id="viewButton"
			actionListener="#{bindings.setCurrentRowWithKey.execute}"
			action="GotoEditPage">
	<tr:setActionListener from="#{row.rowKeyStr}"
			      to="#{processScope.rowKeyToEdit}"/>
</tr:commandButton>
</tr:panelGroupLayout>
</f:facet>
</tr:table>

因为对“actions”组件内的“row”变量的引用在 Trinidad 中不能正常运行,所以需要将 row.rowKeyStr 更改为 bindings.LoggedInUserRequests.rowKeyStr 以便从表绑定引用行键字符串。

此外,如果“selection”组件中的命令组件触发声明式操作绑定的过程与上述 (Edit) 按钮触发 setCurrentRowWithKey 操作绑定的过程一样,则对 row.rowKeyStr 的任何引用
都需要进行类似的更改。例如,假设上述示例页面的移植页面定义包含以下 <action> 绑定定义:



<action id="setCurrentRowWithKey"
IterBinding="ServiceRequestsByStatusIterator"
InstanceName="SRService.ServiceRequestsByStatus"
DataControl="SRService" RequiresUpdateModel="false"
Action="setCurrentRowWithKey">
<NamedData NDName="rowKey" NDValue="${row.rowKeyStr}" NDType="java.lang.String"/>
</action>

您还需要调整表达式中的 row.rowKeyStr 引用,以更改为引用 bindings.LoggedInUserRequests.rowKeyStr

在我们使用 row.rowKeyStrabove 作为示例的地方,您可能还要使用表达式(如 row.SomeAttrName)引用表中当前行的属性值。同样,您需要在从“actions”组件(或 JSF 页面上已不能引用表的“row”变量的其他位置,即使是在 ADF Faces 10.1.3 中)内进行引用时将这些更改为引用 bindings.YourTableBindingName.SomeAttrName。

某些使用三元操作符的 EL 表达式在移植后失败并引发 ELException (6408848)

在一些使用三元操作符的表达式的情况下,?: 字符前后没有空格可能会使 JSF 1.2 EL 表达式引擎引发 javax.el.ELException 错误。解决方法是,确保 EL 表达式中的 ?: 的前后有空格。

可能需要修复 ADF Faces 核心组件使用的辅助 Bean 或实用程序代码,无法在 Trinidad 中找到 API (6361611, 6407811, 6408481)

在从 ADF Faces 自动移植到 Trinidad 时,实用程序类和辅助 Bean 中的 Java import 语句引用的 ADF Faces 核心组件类将被替换为 Apache Trinidad 库中的等同类。然而,在针对相同的事情,ADF Faces 核心类的方法名与 Trinidad 核心类的方法名不同于这一情形,目前它不会对方法调用进行修复。通过编译移植的应用程序,任何需要解决的问题都将显示为编译错误,以便手动修复。

例如,假设 10.1.3 ADF Faces 应用程序的辅助 Bean SRMain 具有一个名为 historyTable 的属性,其类型为 oracle.adf.view.faces.component.core.data.CoreTable,该属性通过页面中 <AF:table> UI 组件的 binding 属性与此组件相关联。而且,假设该辅助 Bean 包含如下所示的一行代码:


	Set keySet = getHistoryTable().getSelectionState().getKeySet();

因为 JDeveloper 11g 移植向导将更改 CoreTable 组件的导入,以反映
org.apache.myfaces.trinidad.component.core.data.CoreTable 的 Apache Trinidad 核心组件类,而这个 Trinidad CoreTable 类没有 *getSelectionState()* 方法,上述代码将在移植后导致编译错误。解决方法是,更改该行以使用正确、对应的 Trinidad API,如下所示:


	// Set keySet = getHistoryTable().getSelectionState().getKeySet();
	Set keySet = getHistoryTable().getSelectedRowKeys();

另一个示例,假设辅助 Bean 要使用 setTip() 通过编程方式设置组件的工具提示文本:



	// Set the tooltip of the "confidential" checkbox to null
	getConfidential().setTip(null);

在此例中,解决该问题时应注意,在 Trinidad 中,工具提示来自组件“Short Description”,因此可以将上述代码更改为以下代码,以维持相同的功能:


	// Set the tooltip of the "confidential" checkbox to null
	// getConfidential().setTip(null);
	getConfidential().setShortDesc(null);

另一种必须手动修复的情形是对静态常量的引用。例如,如果实用程序类类似于 SRDemo 示例中 UserInterface 项目的 MenuItem 类,而该类引用 ADF Faces CoreCommandMenuItem 类中的静态常量,如下所示:


	private String _type           = CoreCommandMenuItem.DEFAULT_TYPE;

您可能需要将静态常量调整为等同项


	// private String _type           = CoreCommandMenuItem.DEFAULT_TYPE


	private String _type           = CoreCommandNavigationItem.COMPONENT_TYPE;

如同最后一个示例,有时等同的 Trinidad 组件可能会更改其接受的参数的数据类型。例如,ADF Faces 类 ProcessMenuModel 的构造函数将 maxPathKey 参数作为 Object 类型接受,而 Trinidad 版本会将该路径作为字符串来处理。这可能需要不断更改代码以进行调整。

10.1.3 ADF 业务组件移植中的已知问题

将“BC4J Generic Domains”库错误地添加到 10.1.2 项目 (6376182)

打开并移植 10.1.2 应用程序后 -- 没有首先在 10.1.3.x 中打开/移植 -- 除了“BC4J Oracle Domains”库位于模型项目的库列表中,移植后您可能会发现“BC4J Generic Domains”库已意外添加到了移植项目的库列表中。如果它与“BC4J Oracle Domains”库位于同一类路径中,将会导致运行时错误,解决方法是手动删除这个多余的库列表项。

移植的数字临时视图对象属性可能会在进行新的精度检查时出现运行时错误 (6373821)

在移植 ADF 业务组件应用程序时,移植程序会向临时视图对象的 XML 定义添加一个属性,即 PrecisionRule=“true”。这将导致任何属性值集在运行时失败,除非将视图对象列定义修改为适用于 Java 属性类型的适当类型。修复该问题的最简单方法是,选中“Mapped to Column of SQL”复选框,然后再将其取消选中。如此,可为该属性正确重设数据库列类型。

“ADF Designtime API”库缺少 oracle.BC4J.jar (6407777)

名为“ADF Designtime API”的预定义库缺少 oracle.BC4J.jar 文件,该文件包含了 ADF 业务组件设计时 API。如果已编写了任何依赖于该存档中的类的 JDeveloper 扩展,则需要手动将 JDEVHOME/jdev/extensions/oracle.BC4J.jar 添加到项目的库列表,以避免在移植到 11g 后出现编译错误。

Struts 移植中的已知问题

移植的 Struts-Config.xml 文件可能会发出警告 (6373969)

在打开并移植 10.1.2 Struts/ADFBC 应用程序后(没有首先在 10.1.3.x 中打开/移植),struts-config.xml 文件可能显示语法警告,该警告与 <set-property> 元素的顺序有关,而该元素与 <action> 元素内其前面的 <forward> 元素相关。解决方法是,在发出警告的各个 <action> 元素内,手动重新排序这些 <set-property> 元素,使其位于相邻的 <forward> 元素之前。即,警告不应影响应用程序的运行时功能。

ADF 业务组件

缺少对只读实体对象的设计时支持 (6211277)

需要在该实体对象的 XML 文件的文档(即,根)元素上的 XML 中手动添加 IsUpdateable=“false”属性。因为此属性在 XML 模式中定义,用于实体对象的 XML 组件描述符,所以在 XML 中进行手动添加时会获得 XML 代码洞察。以后,实体对象编辑器中将提供更多的直接设计时支持。

运行时 XML 模式验证现在可能会针对 XML 组件描述符中的重复成员名引发异常

在该版本中,ADF 模型和 ADF 业务组件运行时默认使用 Oracle 元数据服务 (MDS) 来读取所有 XML 描述符,这样做,也支持它的分层自定义。Oracle MDS 在就运行时 XML 元数据中的 XML 模式验证错误发出信号方面更为严格,因此,任何包含了重复成员名的 XML 文件现在都会在运行时引发错误,以便您可以发现并纠正问题。


	oracle.jbo.PersistenceException:JBO-26000:A Generic exception occurred during loading Customizations.
	at oracle.jbo.mom.MOMParserMDS.parse(MOMParserMDS.java:207)
	at oracle.jbo.mom.MOMParserNonMDS.readAndParse(MOMParserNonMDS.java:70)at
	oracle.jbo.mom.DefinitionContextStandard.readAndParse(DefinitionContextStandard.java:229)

如果出现此情形,解决问题的最简单方法是为 oracle.mds.internal.melement.DuplicateRefException 类设置异常断点,并在调试器中运行应用程序。

命令行客户端程序在类路径中需要新 MDS 库 (6373793)

如果需要运行命令行测试访问 ADF BC 应用程序模块的客户端程序(包括,例如,JUnit 测试),则需要确保以下两个库:

  • MDS 运行时
  • MDS 运行时依赖项

它们都位于项目的项目级库列表中。在未来的版本中,这些库都将进行自动添加。

如果无法确保这样,则将在尝试获取应用程序模块时由于原始异常 oracle.adf.share.ADFShareException(“创建 MDS 会话时发生错误”)而引发 oracle.jbo.common.ampool.ApplicationPoolException。您可能会看到如下所示的错误消息:


	Exception in thread "main"
	JBO-30003:The application pool (test.AppModuleLocal) failed to checkout an application module due to the following exception:
	oracle.jbo.JboException:JBO-29000:Unexpected exception caught:
	oracle.jbo.JboException, msg=JBO-25222:Unable to create application module.
	at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:2152)
	:
	## Detail 0 ##
	oracle.jbo.JboException:JBO-29000:Unexpected exception caught:
	oracle.jbo.JboException, msg=JBO-25222:Unable to create application module.
	at oracle.jbo.pool.ResourcePool.createResource(ResourcePool.java:549)
	:
	## Detail 0 ##
	oracle.jbo.JboException:JBO-25222:Unable to create application module.
	at oracle.jbo.common.ampool.DefaultConnectionStrategy.createApplicationModule(DefaultConnectionStrategy.java:181)
	:
	## Detail 0 ##
	javax.naming.NamingException
	at oracle.jbo.server.InitialContextImpl.createJboHome(InitialContextImpl.java:59)
	at oracle.jbo.common.JboInitialContext.lookup(JboInitialContext.java:77)
	:
	Caused by:oracle.jbo.PersistenceException:JBO-26000:A Generic exception occurred during loading Customizations.
	at oracle.jbo.mom.MOMParserMDS.getMDSSession(MOMParserMDS.java:74)

基于服务的实体对象需要通过外部方式部署的服务接口 (6376977)

要构建基于服务的实体对象,首先需要部署目标服务,然后使用带有“?WSDL”后缀的基于 http 的 URL 引用其 WSDL 描述。

仍不支持重构/重命名 ADF BC 组件

我们仍在努力解决针对 ADF 业务组件的新的重构/重命名支持问题。该功能将在未来版本中提供。

通过服务接口运行项目需要设置 OC4J 首选项 (6333072)

如果已在工作区中针对任何应用程序模块启用了服务接口,那么若要在嵌入式 OC4J 服务器上顺畅地运行应用程序,您需要:

  1. 从 JDeveloper 主菜单中选择 Tools | Preferences...
  2. Preferences 对话框中选择 Deployment 面板
  3. 确保选中复选框 Allow Deployed Module access to OC4J internal classes
  4. 单击 OK

如果不设置首选项,将导致与支持服务接口的 EJB 3.0 会话 Bean 相关的运行时错误,如:


	NoSuchMethodException:SEVERE: 
	[current-workspace-app] An error occurred deploying EJB module:javax.ejb.EJBException: 
	a_b_c_common_MyModuleServiceBean_RemoteProxy_1ckj6ke.<init>(com.evermind.server.ejb.StatelessSessionEJBHome);
	nested exception is:java.lang.NoSuchMethodException:a_b_c_common_MyModuleServiceBean_RemoteProxy_1ckj6ke.<init>(com.evermind.server.ejb.StatelessSessionEJBHome)

启用服务接口后,Toplink Essentials JPA 库添加不正确 (6272130)

在项目中的应用程序模组上首次启用服务接口时,日志窗口中的 EJB 选项卡将显示一条状态消息,用于确认已将“EJB 3.0”库添加到了项目的库列表中。它还将指示“TopLink Essentials JPA”库已添加,然而,服务接口没有使用该库,并且可将其从项目的库列表中删除。

针对 Oracle 9.2 运行使用 ADFBC 的 Web 应用程序时打开 JDBC 连接出错 (6468376)

在针对 Oracle 9.x 数据库运行使用 ADF 业务组件的 Web 应用程序时,如果使用默认的 JDBC URL 连接类型,则会失败并引发错误:


JBO-30003:The application pool (test.model.AppModuleLocal) failed to checkout an application module due to the following exception:
:
etc.
:
oracle.jbo.DMLException:JBO-26061:Error while opening JDBC connection.
at oracle.jbo.server.ConnectionPool.getConnection(ConnectionPool.java:74)
: etc.

解决方法是,通过复制 YourAppModuleLocal 配置添加新的应用程序模块配置,例如 YourAppModuleLocalWeb。更改 YourAppModuleLocalWeb 配置以使用 JDBC 数据源而不是默认的 JDBC URL 连接类型。请参阅 ADF 学习中心 (http://www.oracle.com/technology/products/adf/learnadf.html)《面向 Forms/4GL 开发人员的 ADF 开发人员指南》中的“8.2.4.2 使用 JDBC 数据源连接类型”,以获取详细信息。然后,在 DataBindings.cpx 文件中配置数据控制使用,以使用该 YourAppModuleLocalWeb 而不是 YourAppModuleLocal 配置。可通过在结构窗口中选择数据控制使用,然后在属性检查器中选择不同的配置名来实现此目的。创建第二个配置的理由是,在运行 ADFBC 组件浏览器/测试器时,仍可使用利用 JDBC URL 连接的原始 YourAppModuleLocal 配置。测试器(或任何命令行环境)不支持 JDBC 数据源。它们是 J2EE 容器环境的特性。

ADF 任务流

任务流定义保存点恢复完成器 (6026835)

在该版本中,可以在任务流定义中为保存点恢复完成器 (save-point-restore-finalizer) 添加元数据,然而,完成器方法不可调用。

任务流安全性 (6328052)

在导航到安全的任务流时,还未进行身份验证(登录)的用户会被重定向到指定的身份验证机制。这种重定向会引发异常:


	java.lang.IllegalStateException:Response has already been committed
	at
	com.evermind.server.http.EvermindHttpServletResponse.resetBuffer(EvermindHttpServletResponse.java:2112)
	...

这个异常不会阻止重定向继续或干扰任何已知的身份验证流程,可放心地将其忽略。该错误将在以后的版本中进行修复。

ADF 自定义与个性化

自定义开发人员角色 (5643371)

在“自定义开发人员角色”中,用户可以在 Customizations 窗口中更改自定义上下文。由于错误 5643371,建议使用以下步骤进行更改:

  • 更改了自定义上下文后,单击“Property Inspector”选项卡
  • 确保显示在 Customization 窗口底部的自定义上下文不是斜体
  • 如果它仍为斜体,则单击“Customization”选项卡并再次单击“Property Inspector”选项卡

通过 ADF BC 个性化在 af:query 组件中保存搜索时发生 JBO-25075 错误 (6355857)

某些 ADF 组件能够让用户改变组件的状态。例如,在默认情况下,用户可以重新调整表中列的大小、重新排序列或隐藏列。如果客户选择保留这些个性化功能并在 MDS 中继续使用,这也是可以的。然而,错误 6355857 将导致异常出现。该错误不会在用户首次个性化组件时出现(即,创建保存的搜索或隐藏表中的列)。在用户返回到组件并尝试对组件状态做出其他更改时,该错误将会出现。

该异常是:


	javax.el.ELException:oracle.jbo.ReadOnlyDefObjectException:JBO-25075:Definition OrdersView of type PDefViewObject is read only.  Cannot modify it
	at com.sun.el.parser.AstValue.invoke(AstValue.java:155)

ADF Swing

如果在多字节命名的项目中创建了 ADF Swing 表单,则会出现编译错误 (6432767)

如果项目名包含 MB 字符,则在创建 ADF Swing 表单或面板之后编译项目时会发生错误,因为项目名中的 MB 字符受损,JDeveloper 无法找到 DataBindings.cpx。

错误消息是:


	ERROR:XXXXXX/DataBindings.cpx was not found in the project output directory.

其中,XXXXXX 是受损的 MB 项目名。

文档和教程

文档

技术预览版 2 提供的文档只是初稿。其中包括开发人员指南和内部产品文档。我们欢迎您通过技术预览版论坛提出宝贵的建议和意见。

在运行 refreshSchema Ant 脚本时注册 MBean 出错 (6373780)

运行 refreshSchema Ant 任务以创建用于 Fusion Order Demo 示例(和各种提示卡、教程等)的模式时,您会收到一条类似以下内容的错误消息:


refreshSchema:
[sql] Sep 25, 2007 11:26:10 AM oracle.jdbc.driver.OracleDriver registerMBeans
[SQL] SEVERE:Error while registering Oracle JDBC Diagnosibility MBean.
[SQL] java.lang.NoClassDefFoundError: 
oracle/as/config/persistence/PersistenceManager
[SQL] at java.lang.Class.getDeclaredMethods0(Native Method)
[SQL] at java.lang.Class.privateGetDeclaredMethods(Class.java:2395)
[SQL] at java.lang.Class.getMethod0(Class.java:2642)
[SQL] at java.lang.Class.getMethod(Class.java:1579)
[SQL] at 
oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:273)
[SQL] at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:224)
[SQL] at java.security.AccessController.doPrivileged(Native Method)
[SQL] at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:220)
[SQL] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[SQL] at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
[SQL] at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
[SQL] at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
[SQL] at java.lang.Class.newInstance0(Class.java:350)
[SQL] at java.lang.Class.newInstance(Class.java:303)
[SQL] at org.apache.tools.ant.taskdefs.JDBCTask.getDriver(JDBCTask.java:364)
[SQL] at 
org.apache.tools.ant.taskdefs.JDBCTask.getConnection(JDBCTask.java:304)
[SQL] at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:346)
[SQL] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[SQL] at org.apache.tools.ant.Task.perform(Task.java:364)
[SQL] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:64)
[SQL] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[SQL] at org.apache.tools.ant.Task.perform(Task.java:364)
[SQL] at 
org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:378)
[SQL] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[SQL] at org.apache.tools.ant.Task.perform(Task.java:364)
[SQL] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:64)
[SQL] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[SQL] at org.apache.tools.ant.Task.perform(Task.java:364)
[SQL] at 
org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:378)
[SQL] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[SQL] at org.apache.tools.ant.Task.perform(Task.java:364)
[SQL] at org.apache.tools.ant.Target.execute(Target.java:341)
[SQL] at org.apache.tools.ant.Target.performTasks(Target.java:369)
[SQL] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
[SQL] at 
org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:37)
[SQL] at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
[SQL] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
[SQL] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[SQL] at org.apache.tools.ant.Task.perform(Task.java:364)
[SQL] at org.apache.tools.ant.Target.execute(Target.java:341)
[SQL] at org.apache.tools.ant.Target.performTasks(Target.java:369)
[SQL] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
[SQL] at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
[SQL] at 
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
[SQL] at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
[SQL] at org.apache.tools.ant.Main.runBuild(Main.java:668)
[SQL] at org.apache.tools.ant.Main.startAnt(Main.java:187)
[SQL] at org.apache.tools.ant.Main.start(Main.java:150)
[SQL] at org.apache.tools.ant.Main.main(Main.java:240)
  

该错误无甚大碍,不会阻止任务成功完成。

 

Oracle Corporation
全球总部
500 Oracle Parkway
Redwood Shores, CA 94065, USA
http://www.oracle.com

全球咨询热线:
1-800-ORACLE1
传真 650.506.7200

版权所有 2007,Oracle。保留所有权利。

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