2011年5月31日星期二

OER_002:图解创建 OER Domain

安装完OER 11.1.1.5后,还需要创建Domain,才能使用OER。
1. 运行[oracle_common]下的config.cmd命令 比如:C:\Oracle\Middleware\oracle_common\common\bin\config.cmd。

2. 重要步骤截图说明

(1)


(2)


(3)


(4)为了节省资源,我们把OER部署在Admin server上,删除oer_server1,删除机器oer_machine1。别忘了把admin server的端口改为7601。


(5)


(6)


(7)


(8)


(9)


3. 启动Server,访问http://localhost:7601/oer/,默认用户名/口令:admin/admin。

OER_001:图解安装 Oracle Enterprise Repository 11.1.1.5.0

1. 检查数据库Character Set
sqlplus system/welcome1
select * from nls_database_parameters where Parameter='NLS_CHARACTERSET';
返回值为 UTF-8 Encoding: AL32UTF8 (International support),表明支持UTF-8。
返回值为 ISO-8859-1 Encoding: WE8ISO8859P1 (U.S. English Encoding)。

2. 安装数据库 OER_* Schema

(1)创建 Tablespace
CREATE TABLESPACE OER_DATA
DATAFILE 'C:/Oracle/Database/oradata/XE/OER/oer_data.dbf' SIZE 300M
AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
LOGGING
ONLINE
SEGMENT SPACE MANAGEMENT AUTO;

CREATE TABLESPACE OER_LOB
DATAFILE 'C:/Oracle/Database/oradata/XE/OER/oer_lob.dbf' SIZE 300M
AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
LOGGING
ONLINE
SEGMENT SPACE MANAGEMENT AUTO;

CREATE TABLESPACE OER_INDEX
DATAFILE 'C:/Oracle/Database/oradata/XE/OER/oer_index.dbf' SIZE 300M
AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
LOGGING
ONLINE
SEGMENT SPACE MANAGEMENT AUTO;

(2)创建 User
CREATE USER OER IDENTIFIED BY OER DEFAULT TABLESPACE OER_DATA TEMPORARY TABLESPACE TEMP;
GRANT CREATE MATERIALIZED VIEW TO OER;
GRANT CREATE SEQUENCE TO OER;
GRANT CREATE SESSION TO OER;
GRANT CREATE SYNONYM TO OER;
GRANT CREATE TABLE TO OER;
GRANT CREATE TRIGGER TO OER;
GRANT CREATE VIEW TO OER;
GRANT UNLIMITED TABLESPACE TO OER;

3. 重要步骤截图

(1)


(2)


(3)


(4)


(5)


(6)


4. 卸载
(1)Uninstall Binary




(2)移除发布的应用
如果OER是独占一个Domain的话,删除user_projects/domains/[oer_domain_name]和user_projects/applications/[oer_domain_name]即可。
如果OER是扩展Domain而增加进来的,按照以下步骤操作:
启动Administration Server,访问Console。
在发布的应用中,选择Oracle Enterprise Repository application,选择Delete。
在Servers中,选择oer_server1 managed server, 选择Delete。

(3)移除Database Schema
sqlplus system/welcome1
drop user OER cascade;
DROP TABLESPACE OER_DATA;
DROP TABLESPACE OER_LOB;
DROP TABLESPACE OER_INDEX;

(4)移除DBF 文件
删除三个DBF文件:
C:/Oracle/Database/oradata/XE/OER/oer_data.dbf
C:/Oracle/Database/oradata/XE/OER/oer_lob.dbf
C:/Oracle/Database/oradata/XE/OER/oer_index.dbf

(5)移除[middleware_home]\repository111目录

OSR_002:图解创建 OSR Domain

安装完OSR 11.1.1.2后,还需要创建Domain,才能使用OSR。
1. 运行[oracle_common]下的config.cmd命令
比如:C:\Oracle\Middleware\oracle_common\common\bin\config.cmd。

2. 重要步骤截图说明
(1)


(2)


(3)


(4)


(5)为了节省资源,我们把OSR部署在Admin server上,删除osr_server1,然后将registry和JDBC数据源部署在admin sever上。别忘了把admin server的端口改为7501。



(6)


(7)


(8)


(9)


(10)


3. 启动Server,访问URL
查询 URL:如:http://localhost:7501/registry/uddi/inquiry
发布 URL:如:http://localhost:7501/registry/uddi/publishing
安全 URL:如:http://localhost:7501/registry/uddi/security
订阅 URL:如:http://localhost:7501/registry/uddi/subscription

OSR_001:图解安装 Oracle Service Registry 11.1.1.2.0

1. 创建uddiuser用户
sqlplus system/welcome1 @create_uddiuser_user.sql
grant connect, resource to uddiuser identified by uddiuser;

2. 开始安装
java -jar oracle-service-registry-11.1.1.jar

3. 安装重要步骤截图
(1)


(2)


(3)


(4)


(5)


(6)


(7)


(8)


(9)


(10)


(11)


(12)为了避免与JDeveloper中内嵌的WebLogic Server端口冲突,这里把默认端口7101/7102改为7501/7502。


4. 卸载重要步骤截图
(1)删除开始菜单中的菜单项。
(2)运行registry111\bin\setup.bat,卸载应用服务器中的OSR注册信息。

(3)运行registry111\bin\setup.bat, Drop database。




(4)删除Oracle Service Registry目录:registry111。

2011年5月29日星期日

SOASuite_040:SOA Suite 11g 开发指南之十九:如何使用EDN与ADF集成?

开发运行环境:JDeveloper 11.1.1.5 + SOA Suite 11.1.1.5。

在《SOA Suite 11g 开发指南之十二:使用EDN处理事件》中我们了解了EDN的用法。不过,在那个实验中,我们使用了一个publish脚本来发布事件,测试EDN。
实际应用中,一般是由程序来发布事件,然后由SOA上的Meditator注册事件监听器。
那么如果由程序来发布事件,该如何做呢?这就要用到ADF中一个高级特性:Business Event。
常见的一个场景是:当员工工资发生变化时,可能要做一个动作,比如触发一个SOA应用。

重要步骤说明:
1. 开发ADF Web 应用。

1.1 使用ADF BC 快速创建基于Employees表的Model。

1.2 修改Employee EO的属性Business Event。
当员工工资发生变化时,产生事件UpdateSalaryEvent,该事件将被SOA应用监听。





确定后,会产生两个文件:Employees.edl和Employees.xsd。这两个文件将在SOA应用中用到。


1.3 创建一个JSF页面,修改Employee的各个属性,然后提交。

2. 开发SOA应用。

2.1 复制Employees.edl和Employees.xsd到Project中,与composite.xml在同一级目录。

2.2 拖放Meditator和File Adapter。
其中,右键Meditator,选择Add Publish Event...。

增加Event,选择Employee.edl。


2.3 在Meditator中,设置Transformation。

2.4 设置File Adapter属性。

3. 分别发布ADF应用和SOA应用到同一个SOA Sever上。

4. 访问http://localhost:7001/Application9-ViewController-context-root/faces/untitled1.jspx,修改Salary,提交。
在C:\temp目录下,会产生文件:updateSalary_2.txt,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<ns0:UpdateSalaryEventInfo xmlns:ns0="http://model/events/schema/Employees" xmlns="http://model/events/schema/Employees">
<ns0:EmployeeId>
<ns0:newValue value="100"/>
<ns0:oldValue value="100"/>
</ns0:EmployeeId>
<ns0:Salary>
<ns0:newValue value="25000"/>
<ns0:oldValue value="27000"/>
</ns0:Salary>
</ns0:UpdateSalaryEventInfo>

有些神奇,是不是?
ADF应用与SOA应用并没有任何“直接”的联系,但是我们访问ADF应用后(修改Salary,提交),SOA应用被触发了。
这就是EDN绝妙的作用,Meditator上的事件监听器时刻监听着SOA Server中的UpdateSalaryEvent。

参考文献:
1. ADF应用下载:ADF_Business_Event.7z
2. SOA应用下载:SOA_EDN.7z
3. http://andrejusb.blogspot.com/2009/08/business-events-and-adf-business.html。
4. http://biemond.blogspot.com/2008/05/events-in-adf-bc-and-handled-by-soa.html。

SOASuite_039:SOA Suite 11g 开发指南之十八:如何使用EJB Service Adapter


 开发运行环境:JDeveloper 11.1.1.5 + SOA Suite 11.1.1.5。


传统的JavaEE开发人员转到SOA开发时,不太习惯使用Database Adapter来操作数据。对他们而言,这些逻辑已经写在EJB中了,如果能够在SOA应用中像Web应用那样调用EJB组件就好了。
Oracle SOA Suite 11g中恰好提供了这个特性,哈哈,有了这个特性,调用EJB就方便多啦。

这里假设已经成功Deploy了一个EJB,具体步骤请参考《使用JDeveloper 11g 发布EJB3.0》。注意,这里并不需要把EJB按照Web Service发布。
Java客户端核心代码其实就是这句,查找JNDI:
HelloWorldSession helloWorldSession = (HelloWorldSession)context.lookup("SessionEJB-Project1-HelloWorldSession#project1.HelloWorldSession");

重要步骤说明:
1. 打开一个SOA应用,如CreditCardValidation,拖放EJB Service Adapter放到Reference这边。


这里JNDI Name 就是SessionEJB-Project1-HelloWorldSession#project1.HelloWorldSession。
Java Interface 指向的是EJB Remote Interface。

2. 把Meditator连接到EJB Service,在Meditator中做必要的Transformation。

3. 重新发布CreditCardValidation,并在EM上测试。


这里介绍的是EJB Service Adapter用在Reference端的情况,用在Service端也是可以的。

参考文献:
1. http://biemond.blogspot.com/2009/07/using-ejb-service-reference-in-soa.html。

SOASuite_038:SOA Suite 11g 开发指南之十七:与 OSR(Oracle Service Registry)集成

开发运行环境:JDeveloper 11.1.1.5 + SOA Suite 11.1.1.5 + OSR 11.1.1.2。

本实验要求:
(1)完成《SOA Suite 11g 开发指南之九:为物流商配置JMS Queue 》。
(2)完成《图解安装 Oracle Service Registry 11.1.1.2.0 》。
(3)完成《图解创建 OSR Domain 》。

重要步骤说明:

1. 在JDeveloper中创建与OSR UDDI Server的连接。


2. 把发布在SOA Server上的服务发布到OSR UDDI Server上。
先访问http://localhost:7501/registry/uddi/web,登录后,选择Publish Tab,创建Business Entity,比如SOADemo Service Registry。




3. 发布成功后,在UDDI Server连接中可以看到该服务。


选择查看Report,可以看该服务的详细信息:


4. 修改POProcessing中的ValidateForCC Reference。
选择从OSR UDDI Server中选择WSDL:


选中以下两个选项表明:在运行时再从UDDI上确定该服务的Endpoint。




5. 在EM中的soa-infa的common属性中配置UDDI Query URL:
修改完后,需要重启SOA Server。


6.在OSR的Web管理界面上可以看到ValidateForCC服务。
你可以修改Acess Point,而POProcessing不受任何影响,这就是使用UDDI Server的好处。


如果你去查看composite.xml文件,你会发现ValidateForCC的reference值是一个uddi开头的东东。
这个就是在UDDI Server上的注册的Service Key,一个Key对应一个服务。
<reference name="getStatusByCC" ui:wsdlLocation="getStatusByCC.wsdl">
<interface.wsdl interface="http://oracle.com/sca/soapservice/CreditCardValidation/validationForCC/getStatusByCC#wsdl.interface(execute_ptt)"/>
<binding.ws port="http://oracle.com/sca/soapservice/CreditCardValidation/validationForCC/getStatusByCC#wsdl.endpoint(getStatusByCC/execute_pt)"
location="orauddi:/uddi:0eac65b0-9044-11e0-80fa-da5b907080fa"
soapVersion="1.1">
<property name="oracle.soa.uddi.serviceKey" type="xs:string" many="false">uddi:0eac65b0-9044-11e0-80fa-da5b907080fa</property>
<property name="weblogic.wsee.wsat.transaction.flowOption"
type="xs:string" many="false">WSDLDriven</property>
</binding.ws>
</reference>

7.重新发布POProcessing,测试大订单,成功调用ValidateForCC服务。

Project 下载:POProcessing (OSR).7z

参考文献:
1.http://biemond.blogspot.com/2009/12/using-oracle-service-registry-in-soa.html。