本教程描述如何发布使用空间数据的 web 服务。
大约 1 个小时
本教程包括下列主题:
| 概述 | ||
| 前提条件 | ||
| 配置 OC4J | ||
| 启动 OC4J | ||
| 部署 EAR 文件 | ||
| 配置数据源 | ||
| 验证数据源 | ||
| 配置并运行客户端 | ||
| 总结 | ||
将鼠标置于此图标上可以加载和查看本教程的所有屏幕截图。
(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
本教程介绍了 Oracle Spatial 对空间 Web 服务的支持。Oracle Spatial 提供以下类型的 Web 服务:
| |
Web 地理特征服务 (WFS) 允许用户根据其与位置和其他非空间属性的关系查找/更新各种地理特征(如道路、河流等)。该 web 服务是 WFS 1.0.0 的开放 GIS 协会 (OGC) 规范在 Oracle Spatial 中的具体实现。 |
|
| |
Web 目录服务 (CSW) 可发布和搜索数据、服务和相关信息对象的描述信息(元数据)的集合。该 web 服务是 CSW 2.0.0 的 OGC 规范在 Oracle Spatial 中的具体实现。 |
|
| |
开放位置服务 (OpenLS) 提供基于位置的服务,如地理编码、绘图、路由和黄页。地理编码使用户可将空间位置(经度和纬度坐标)与邮政地址关联起来。 绘图使用户可根据空间位置信息生成地图。黄页使用户可按名称和类别根据公司与某一位置的关系查找公司。路由为单条或多条路线提供行车信息与说明。 利用该 web 服务可访问 Oracle Spatial 中的各种现有功能,如符合 OGC 定义的 OpenLS 1.1 规范的路由、地理编码、绘图和目录功能。 |
|
在本教程中,您将学习如何在 OC4J (Oracle Containers for Java) 中安装并配置 Spatial Web 服务。
您将在标题为“运行 Oracle Spatial Web 服务”的教程中学习如何运行上述各种 web 服务(WFS、CSW 和 OpenLS)的 web 服务客户端演示。
开始本教程之前,您应该:
| |
安装 Oracle 数据库 11g 软件并创建一个数据库。 |
|
| |
安装 Oracle 数据库 11g 配套 CD。 |
|
| |
从 OTN 下载 Oracle JDeveloper 并将其解压缩到任一目录下。 |
|
| |
从 Javasoft 下载并安装最新的 J2SE。 |
|
|
创建一个工作目录并将 wsclient.jar 从 $ORACLE_HOME/md/demo/ws/client 目录复制到工作目录。 |
||
| 将 xsds.jar 文件下载到工作目录。 | ||
| |
确保以下用户未被锁定:mdsys、spatial_csw_admin_usr 和 spatial_wfs_admin_usr。打开 SQL*Plus,并执行以下命令: connect sys/oracle as sysdba alter user mdsys identified by oracle account unlock; alter user spatial_csw_admin_usr identified by oracle account unlock; alter user spatial_wfs_admin_usr identified by oracle account unlock; |
|
本部分描述配置 oc4j(以便安装 Spatial Web 服务)和 Spatial Web 服务演示用户所需的步骤。执行以下步骤:
| 配置示例用户 | ||
| 配置 OC4J 路径设置 | ||
| 创建并注册共享库 | ||
| 复制文件到共享库目录 | ||
| 修补 xmlparserv2.xdk 文件 | ||
| 提取 wsclient.jar 文件 | ||
| 1. |
从终端窗口中,输入以下命令: cd <jdevhome directory>/j2ee/home/config gedit system-jazn-data.xml 其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置。
|
|
| 2. |
从这里打开 exampleusers.txt 文件。选择所有文本,然后按下 Ctrl + C 键进行复制。切换到 Linux 桌面的 gedit 窗口。按下 Ctrl + V 键将以下语句添加到 system-jazn-data.xml 文件中最后的 <user> 后面。 <user> 在 gedit 窗口中,从 File 菜单中选择 Save 保存更改,或单击工具栏上的 Save 图标。从 File 菜单中,选择 Quit 退出编辑器。 |
|
| 1. |
从终端窗口中,输入以下命令: cd <jdevhome directory>/bin gedit oc4j 其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置。
注:如果文件以只读模式打开,请退出编辑器。在终端窗口中,以 root 身份登录,并使用 chmod 命令将访问权限更改为读写并可执行。然后在 gedit 中重新打开该文件。更改访问模式的命令如下: chmod 777 oc4j |
|
| 2. |
将以下语句添加到文件开头。 ORACLE_HOME=<jdevhome directory>
保存文件并退出编辑器。(不能以 oracle 用户身份保存文件;以 su 身份登录可以保存文件。) |
|
| 1. | 从终端窗口中,输入以下命令以创建共享库目录: mkdir <jdevhome directory>/j2ee/home/shared-lib/sdows 其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置。
|
|
| 2. | 要在 server.xml 文件中注册该库,输入以下命令: cd <jdevhome directory>/j2ee/home/config
gedit server.xml
然后在 rmi-config 语句前添加以下语句。 <shared-library name="sdows" version="1.0">
保存文件并退出编辑器。 |
|
| 3. |
确保当前的工作目录为 <jdevhome directory>/j2ee/home/config。要在 application.xml 文件中注册该库,输入以下命令: gedit application.xml
然后在 </imported-shared-libraries> 语句前添加以下语句。 <import-shared-library name="sdows"/>
保存文件并退出编辑器。 |
|
| 1. |
从终端窗口中输入以下命令,将 $ORACLE_HOME/md/jlib 和 $ORACLE_HOME/rdbms/jlib 中的文件复制到刚刚创建的共享库目录中。 cd <jdevhome directory>/j2ee/home/shared-lib/sdows/1.0 cp $ORACLE_HOME/md/jlib/sdowfscs.jar . 其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置,$ORACLE_HOME 是 Oracle 数据库主目录。
|
|
| 1. |
从终端窗口中输入以下命令,将 xmlparserv2.jar 文件从 $ORACLE_HOME/lib 复制到 <jdevhome directory>/lib 目录中。 cd <jdevhome directory>/lib 其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置,$ORACLE_HOME 是 Oracle 数据库主目录。
|
|
| 1. |
从终端窗口中输入以下命令,提取本教程提供的 wsclient.jar 文件。 从终端窗口中,输入以下命令: cd $CLIENT_HOME
jar -xvf wsclient.jar
其中 $CLIENT_HOME 是希望从其提取 wsclient.jar 文件的目录位置。您可以在任一目录中提取 wsclient.jar 文件。 |
|
本部分描述如何启动 oc4j 实例。执行以下步骤:
| 1. | 从终端窗口中,输入以下命令: cd <jdevhome directory>/bin
其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置。 注:系统会提示您指定一个管理员口令,输入 admin。再次输入 admin 确认口令。您应该能看到消息“Oracle Containers for J2EE 10g (10.1.3.1.1) initialized”,这表明 OC4J 服务器已启动。
|
|
本部分描述如何在上一步启动的 oc4j 实例中部署 Spatial Web 服务。执行以下步骤:
| 1. |
打开另一个终端窗口,输入以下命令设置 $JAVA_HOME 变量。确保设置了 ORACLE_HOME 变量。如果没有,使用导出命令将 ORACLE_HOME 变量设置为 Oracle 数据库主目录。 export JAVA_HOME=/usr/java/<jdk dir>/
|
|
| 2. | 现在,可以部署 EAR 文件。从终端窗口中,输入以下命令: $JAVA_HOME/bin/java -jar <jdev_home>/j2ee/home/admin.jar ormi://localhost oc4jadmin admin
-deploy -file $ORACLE_HOME/md/jlib/sdows.ear -deploymentName sdows -bindWebApp
default-web-site
其中 $ORACLE_HOME 是 Oracle 数据库主目录。
|
|
本部分描述如何配置 Spatial Web 服务将要使用的数据源。执行以下步骤:
| 1. |
配置数据源之前,应停止 oc4j。从终端窗口中,输入以下命令: cd <jdevhome directory>\bin ./oc4j -shutdown -port 23791 -password admin
注:在 <jdevhome directory>/j2ee/home/config/rmi.xml 文件中可找到端口号。
|
||||||||||||||||
| 2. |
从终端窗口中,输入以下命令: cd <jdevhome directory>/j2ee/home/applications/sdows/META-INF
gedit data-sources.xml
其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置。 对原生数据源 url、用户和口令参数一一进行配置。 对于以下原生数据源:
将每个 url、用户和口令参数更改为: url="jdbc:oracle:thin:@localhost:1521:orcl" user="mdsys" password="oracle" 对于原生数据源 jdev-connection-CSW_ADMIN_CONN_NAME 和 jev-connection-WFS_ADMIN_CONN_NAME,只将 url 和口令参数更改为: url="jdbc:oracle:thin:@localhost:1521:orcl" password="oracle"
完成后,保存并关闭文件。 |
||||||||||||||||
| 3. |
在任意 URL 位置加载 OGC WFS XSD。提取 xsds.jar 文件到 <jdevhome directory>/j2ee/home/default-web-app/examples/servlets/ 目录。注意,将在此位置存储从 xsds.jar 文件提取出的文件。 要更改为提取 xsds.jar 文件的目录位置,输入以下命令: cd <jdevhome directory/j2ee/home/default-web-app/examples/servlets/ 您必须已经将 xsds.jar 文件(从“前提条件”部分)下载到某一目录位置。要从 xsds.jar 文件中提取文件,输入以下命令: jar -xvf <directorylocation where you downloaded the xsds.jar file>/xsds.jar |
||||||||||||||||
| 4. |
编辑 WSConfig.xml 文件,以指定 xsd 文件位置 url。从终端窗口中,输入以下命令: cd <jdevhome directory>/j2ee/home/applications/sdows/sdows/WEB-INF/conf
gedit WSConfig.xml
其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置。 在 WSConfig.xml 文件中,将 wfs-xsd-loc-url 更改为保存 XSDS 的路径,如下所示: <wfs_xsd_loc_url>http://<machine_name>:8888/examples/servlets/xsds/</wfs_xsd_loc_url> 记得清除注释标记。
保存文件并退出编辑器。 |
||||||||||||||||
| 5. |
编辑 wfsrelmd.sql、wfsdocmd.sql 和 cswmd.sql,将 $DATA_DIR_PATH 更改为 src 目录所在的目录。src 目录在您提取 wsclient.jar 文件时创建。 从终端窗口中,输入以下命令: cd $CLIENT_HOME/src/sql
gedit wfsrelmd.sql
其中 $CLIENT_HOME 是从其提取 wsclient.jar 文件的目录位置。
使用 src 目录替换 $DATA_DIR_PATH,如下面的屏幕截图所示。
保存更改。
同样,对 wfsdocmd.sql 进行编辑(在同一文件夹中),将 $DATA_DIR_PATH 更改为 src 目录的路径,如以下屏幕截图所示。保存文件。
按屏幕截图所示编辑 cswmd.sql:(您将发现 $DATA_DIR_PATH 变量几乎在文件最末端,所以您需要向下滚动窗口。)
|
||||||||||||||||
| 6. |
更改连接字符串(数据库机器名、端口号、Oracle SID 等)以便在以下文件中反映实际信息: - 对于 WFS:oracle.spatial.ws.admindemo.WFSAdminDemo.java 文件 从终端窗口中,输入以下命令: cd $CLIENT_HOME/src/oracle/spatial/ws/admindemo
gedit WFSAdminDemo.java
其中 $CLIENT_HOME 是从其提取 wsclient.jar 文件的目录位置。编辑以下语句:
OracleConnection conn = 保存此文件。 同样地,编辑 CSWAdminDemo.java 文件。
OracleConnection conn=
保存文件并退出编辑器。 |
||||||||||||||||
| 7. |
在 TestWfsCsBase.java 文件中,更该 myPort.setEndpoint("http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort") 以便反映 OC4J 服务器机器名和端口号。对于本教程,您可以输入 localhost 作为机器名,输入 8888 作为端口号。 从终端窗口中,输入以下命令: cd $CLIENT_HOME/src/oracle/spatial/ws/svrproxy
gedit TestWfsCsBase.java
其中 $CLIENT_HOME 是从其提取 wsclient.jar 文件的目录位置。 更改为myPort.setEndpoint ("http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort");
|
||||||||||||||||
| 8. |
现在,您需要重启 oc4j。从终端窗口中,输入以下命令: cd <jdevhome directory>/bin
其中 <jdevhome directory> 是 JDeveloper 解压缩到的目录位置。 |
||||||||||||||||
以下步骤帮助您验证是否已正确配置了演示所需的数据源参数。执行以下步骤:
| 1. |
打开一个浏览器窗口,并输入以下 URL: http://<hostname>:8888/em 对于本教程环境,您可使用 localhost 作为主机名。 以 oc4jadmin 身份登录,口令为 admin。此口令为您启动 oc4j 时创建的口令。然后,单击 Login。 |
| 2. |
在 Supply Administration Credentials 页面中,为 oc4j-administrators 组中的一个用户输入证书。Application Server Control 需要这些证书来维护代理连接。输入 admin 作为口令。
|
| 3. |
单击 Administration 选项卡。
|
| 4. |
单击 Services:JDBC Resources 任务的 Go to Task 图标。
|
| 5. |
会列出您的数据源。单击某一数据源的 Test Connection 图标。
将显示 Test Connection 页面,单击 Test。
将显示成功连接确认信息。
单击 Logout。 |
现在,您可以编译并运行客户端了。执行以下步骤:
| 1. |
在 compileAndRunClient.sh 文件中设置以下变量:
输入以下命令: cd $CLIENT_HOME/src gedit compileAndRunClient.sh 其中 $CLIENT_HOME 是从其提取 wsclient.jar 文件的目录位置。 下面的屏幕截图显示了已配置的参数。
保存文件并退出编辑器。 |
|||||||||||||||||||||
| 2. |
在终端窗口中,输入以下命令: ./compileAndRunClient.sh
|
|||||||||||||||||||||
在本教程中,您学习了如何:
| 配置和启动 OC4J | ||
| 部署 EAR 文件 | ||
| 配置和验证数据源 | ||
| 配置并运行客户端 | ||