从 Oracle9i Forms 调用 Web 服务。

Oracle9iAS Forms Services 是一个使用丰富的 Java 接口在互联网上部署企业级应用程序的全面的应用程序架构。Oracle Forms 的一个关键特性是它提供了许多集成点,以允许 Forms 与其他技术通信。

现在最为流行的一项新兴技术是 Web 服务。Web 服务能够用于封装任何种类的商务信息,从整个应用程序到提供一个简单服务。Oracle Forms 允许您使用 Java Importer 轻松地将 Web 服务与现有的 Forms 应用程序集成。

 

从 Forms 调用 Web 服务

为了从 Forms 应用程序调用 Web 服务,您必须完成两个主要步骤。第一步是创建 Web 服务 stub,这一步骤通过 Oracle9i JDeveloper 执行,第二步是从 Forms 应用程序调用这个 stub。

创建一个 Web 服务 Stub

第一步是创建Web 服务 stub。在这个例子里,我们将使用可以在互联网上获得的一个简单的提供货币兑换汇率 Web 服务。此 Web 服务由它的 WSDL 定义。我们将使用 Oracle9i JDeveloper 来创建这个 Web 服务 stub。这个 stub 是一个 Java 类,它提供与 Web 服务之间的接口,而这个接口将被 Forms 调用

1.

在 Oracle9i JDeveloper 内的一个新工程中选择 File> New> General> Web Services>Web Service Stub/Skeleton 然后点击 OK

 

2.

如果出现欢迎屏幕则点击 Next> 进入 screen 1 of 2。在这个屏幕中的 WSDL Document URL 内输入指向该 Web 服务的 WSDL 的 URL 的名称。在这个例子里,我们将使用:

http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl .

点击 Next>

 

3.

Screen 2 of 2 显示了在这个 Web 服务中可以调用的工具。这些将会被默认选中,点击 Finish

 

4.

JDeveloper 自动创建调用 Web 服务所需的代码。保存并重新编译工程。

 

5.

(可选步骤)。当您在 JDeveloper 内运行一个 Web 服务时,可以从 IDE 读取代理设置 (Tools > Preferences > Web Browser/Proxy)。因为您将要从 Forms 调用 Web 服务,所以您可能需要在代码中定义代理设置。如果您使用代理,那么您需要替换 CurrencyExchangeServiceStub 构造器中的下列代码。

m_httpConnection = new OracleSOAPHTTPConnection();

替换为

Properties prop = new Properties();
prop.setProperty(OracleSOAPHTTPConnection.PROXY_HOST, "myproxy"); prop.setProperty(OracleSOAPHTTPConnection.PROXY_PORT,"80"); m_httpConnection = new OracleSOAPHTTPConnection(prop);

 

6.

虽然您只创建了一个类,但这个类依赖于许多其他的 Java 类。下一个步骤就是把所有相关的文件"打包"到一个 Jar 文件中。

选择 File > New > General > Deployment Profiles > JAR File - Simple Archive 并点击 OK

将会出现一个对话框,显示部署描述符的名字和位置。接受默认值设置并点击 Save

 

7.

将会出现JAR Deployment Profile Settings 对话框。选择 Dependency Analyzer 并选中 Oracle SOAP 复选框。点击 OK

 

8.

这将在系统导航器中创建一个部署节点。选中此节点,单击鼠标右键选中 Deploy to JAR File。这将把 JAR 文件保存到磁盘。记下这个 JAR 文件的完整目录路径和名称。

 

   

 

创建一个表单

在这一部分的练习中,我们假设您已经成功安装了 Oracle9i Forms 并能够正常运行。

一旦您创建了 Web 服务 stub,下一个步骤就是创建一个简单的表单来调用此 Web 服务。为了使这个测试尽可能简单,我们将简单地添加一个按钮,它将会调用 Web 服务并返回(并显示信息)汇率。当然,您可以对这个程序进行精心修改,以使其满足您的应用程序的需求。

 

1.

选择 Start > Settings > Control Panel.双击 System,然后点击 Advanced 标签,再点击 Environment Variables 按钮。从系统变量中选择 CLASSPATH,然后点击 Edit。添加我们在上面的步骤 7 中创建的 JAR 文件的完整目录名。点击 OK 按钮关闭此对话框。

 

 

2.

下一步是更新 Forms 环境文件以显示 Jar 文件位置(此文件在默认安装中的名称是 default.env。)

将完整的目录路径和 Jar 文件名添加到 CLASSPATH 条目。

例如

CLASSPATH=
D:\9.0.4.11.71\jdev\mywork\Webservice\Project1\deploy\archive1.jar;D:\...

 

3.

启动 Oracle9i Forms 并创建一个新的表单。创建一个块和画布。

 

4.

选择 Program > Import Java Classes 并选择在 JDeveloper 中创建的 Java 类。点击 Import。这将会为 CurrencyExchangeServiceStub Java 类创建一个 PL/SQL 包。

 

5.

Import Classes 字段改变为 java.lang.Float 并点击 Import。这将会为 Float Java 类创建一个 PL/SQL 包。这是必需的,因为 CurrencyExchangeServiceStub 返回一个 Float 类型的对象。由于Float 对象不是 Forms 的本地对象,所以我们需要导入它。

 

6.

Import Classes 字段改为 java.lang.Exception 并点击 Import。这将为 Exception Java 类创建一个 PL/SQL 包。虽然这不是必需的,但它能够使错误报告更容易。现在点击 Close 关闭这个对话框。

 

 

7.

向画布添加一个按钮,然后添加一个 When-Button-Pressed 触发器并增加下列代码

DECLARE
jo ora_java.jobject;
rv ora_java.jobject;
ex ora_java.jobject;
BEGIN
jo := CurrencyExchangeServiceStub. new;
--
--这将获取从美元到英镑的汇率。
--
rv := CurrencyExchangeServiceStub.getRate (jo,' USA',' UK' );
message (float_.floatValue (rv ));
EXCEPTION
WHEN ORA_JAVA.JAVA_ERROR then
message (' Unable to call out to Java, ' ||ORA_JAVA.LAST_ERROR );
WHEN ORA_JAVA.EXCEPTION_THROWN then
ex := ORA_JAVA.LAST_EXCEPTION;
message (Exception_.toString (ex ));
END;

这段代码将使用两个参数调用 Java 类,然后返回汇率并以消息的形式显示。

 

 

8.

运行表单并点击按钮。这将会显示从美元到英镑的汇率。

 

   

 

示例代码与更多信息

下列的链接指向与此主题相关的更多信息资源。

Oracle9iAS Forms Services
从 Forms 调用 Web 服务演示
在 OTN 的 Web 服务中心了解关于 Web 服务的更多信息
使用 WSDL 创建 stub
了解关于 Forms Java Importer 的更多信息

 

 

 

 

 

Left Curve
热门下载
Right Curve