ODI即可以批量处理数据,也可以通过SKM知识模块发布成Web服务方式,结合到SOA架构中,这样就可以通过SOA架构实时地查看数据和修改数据。
(针对DBA)在发布服务之前,先简单了解一下Web服务的基本流程
1.jpg
[size=10.5pt]一个[size=10.5pt]Web Service[size=10.5pt]交互的参与者都称作一个[size=10.5pt]SOAP[size=10.5pt]的节点。[size=10.5pt]SOAP[size=10.5pt]消息在[size=10.5pt]SOAP[size=10.5pt]发送者和接收者之间传递。[size=10.5pt]SOAP[size=10.5pt]消息的传递是基于构建[size=10.5pt]Web Service[size=10.5pt]交互的单元之上。[size=10.5pt]Web Service[size=10.5pt]封装了[size=10.5pt]SOAP[size=10.5pt]消息处理的复杂性,允许用户用他们所熟悉的开发语言进行开发。[size=10.5pt]Axis2[size=10.5pt]就是通过用[size=10.5pt]Java[size=10.5pt]语言开发[size=10.5pt]Web Service[size=10.5pt]的工具,在其内部处理[size=10.5pt]SOAP[size=10.5pt]消息,这一切对于用户都是透明的。[size=10.5pt]
[size=10.5pt]Axis2[size=10.5pt]封装了[size=10.5pt]SOAP[size=10.5pt]消息的处理,同时还有做了其他的大量的工作,这些都进一步简化了[size=10.5pt] Web Service[size=10.5pt]的开发者的工作:
[size=10.5pt]
2.jpg
[size=10.5pt]
[size=10.5pt][size=10.5pt]ODI[size=10.5pt]用[size=10.5pt]AXIS2 [size=10.5pt]在 [size=10.5pt]OC4J [size=10.5pt]或者 [size=10.5pt] Tomcat [size=10.5pt]上处理消息。这个测试的环境已经安装了 [size=10.5pt]OC4J [size=10.5pt]作为 [size=10.5pt]Web Server .
[size=10.5pt]启动 [size=10.5pt]OC4J [size=10.5pt]服务器以后,连接 [size=10.5pt]OC4J/AXIS2 [size=10.5pt]在 [size=10.5pt]ODI [size=10.5pt]的 [size=10.5pt]Topology Manager [size=10.5pt]里面的 [size=10.5pt]Technology [size=10.5pt]里面定义,定义管理界面和 [size=10.5pt]Web [size=10.5pt]服务对象: [size=10.5pt]
[size=10.5pt]定义物理模式以后,还需要定义逻辑模式 [size=10.5pt]:
![](https://i-blog.csdnimg.cn/blog_migrate/c0adc36497d920bbcbe9cfbf882dbc9a.jpeg)
4.jpg
[size=10.5pt]都定义以后,检查 [size=10.5pt]OC4J [size=10.5pt]的配置文件 [size=10.5pt]:
[size=10.5pt]C:/Program Files/oracle/oc4j_extended_101310/j2ee/home/config/data-sources.xml
[size=10.5pt]
[size=10.5pt]配置文件内容: [size=10.5pt]
[size=10.5pt]<data-sources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/data-sources-10_1.xsd" schema-major-version="10" schema-minor-version="1">
[size=10.5pt]- <!--
The following is an example of a data source whose connection factory emulates XA behavior.
[size=10.5pt]
-->
[size=10.5pt]
<managed-data-source name="OracleDS" connection-pool-name="Example Connection Pool" jndi-name="jdbc/OracleDS" />
[size=10.5pt]- <connection-pool name="Example Connection Pool">
[size=10.5pt]
<connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="system" password="system" url="jdbc
![点击图片可在新窗口打开](https://i-blog.csdnimg.cn/blog_migrate/b968e3c74f55b41e8be1caa4cbbe7ad2.png)
[size=10.5pt]
</connection-pool>
[size=10.5pt]我们可以看到数据库密码和连接语法写在里面,要确保可以访问数据库。 [size=10.5pt]
[size=10.5pt]
要配置Web服务器以后,Web服务的代码和运行环境由ODI生成。
在产生和发布服务的过程中,ODI有几个需要大家注意的地方:
进入Designer,选择一个模型,然后双击或者右键选择Edit,在Services界面选择相应的KM
定义Data Source的name时候,大家到
[size=11.5pt]C:/Program Files/oracle/oc4j_extended_101310/j2ee/home/config/data-sources.xml
![](https://i-blog.csdnimg.cn/blog_migrate/1fde6b9090dbc4078b04de374a9cdbcd.jpeg)
5.jpg
这个错误,我们通过Details分析看到,提示JAVA_HOME,这个时候去环境变量定义JAVA_HOME
![](https://i-blog.csdnimg.cn/blog_migrate/73d6cf66f82d7be74c772e8aeb82a40d.jpeg)
6.jpg
定义以后,重新执行仍然失败。这个原因是由于,ODI需要JDK1.5以上执行,前提是需要先修改ODI_JAVA_HOME目录,如果这个目录不存在,ODI才会寻找JAVA_HOME
修改ODI_JAVA_HOME的变量,然后退出所有ODI程序,重新进入:
C:/Program Files/Java/jdk1.5.0_10
选择发布的对象:
![](https://i-blog.csdnimg.cn/blog_migrate/54c07452706d8934eba74d61184337b1.jpeg)
7.jpg
然后选择执行和发布:
![](https://i-blog.csdnimg.cn/blog_migrate/cd98d30545735f4edfab918f15d29c94.jpeg)
8.jpg
选择数据服务存取地点和生成阶段以后,点击”OK”,执行以后,到模型选择测试服务,查看是否可以读取数据:
![](https://i-blog.csdnimg.cn/blog_migrate/af0fb7f7d78978b6ec73d7f02b88a9fa.jpeg)
9.jpg
![](https://i-blog.csdnimg.cn/blog_migrate/aa2b94c760308ce85d457fe149d02fe9.jpeg)
10.jpg