what is SOA Gateway

简介: 转载文章:http://blog.csdn.net/pan_tian/article/details/10159935 Oracle EBS如何与第三方系统相集成?比如这样的需求,X系统知道物料编码,需要从EBS系统里读取具体物料信息,或者X系统想把自己的人员信息同步到EBS,这类集成问题你就可能需要用到Oracle EBS Integrated SOA Gateway。

转载文章:http://blog.csdn.net/pan_tian/article/details/10159935


Oracle EBS如何与第三方系统相集成?比如这样的需求,X系统知道物料编码,需要从EBS系统里读取具体物料信息,或者X系统想把自己的人员信息同步到EBS,这类集成问题你就可能需要用到Oracle EBS Integrated SOA Gateway

Integrated SOA Gateway是EBS里的一个职责,分配给用户后就能看到 ,进入职责(如下图)后,就能看到所有Oracle EBS可以(只是可以,真正放开需要发布和部署的动作)对外开发的接口。

(当然如果这些系统自带接口还不能满足你的集成需求的话,那么你就需要自定义客户化接口了)

首先分享一些收集到的文档,后续有需要可以再详细阅读:

Oracle® Integration Repository User's Guide

Oracle E-Business Suite Integrated SOA Gateway User's Guide
Oracle E-Business Suite Integrated SOA Gateway Implementation Guide R12.1
Oracle E-Business Suite Integrated SOA Gateway Developer's Guide

20 Minute Guide to Oracle Integration Repository

Enable Oracle E-Business Suite Integrated SOA Gateway 
Oracle Integration Repository 

Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide 
Securing E-Business Suite Web Services with Integrated SOA Gateway

Using SOA Gateway in EBS 12 

Enable Oracle E-Business Suite Integrated SOA Gateway

要使用Integrated SOA Gateway,首先要打一些补丁,具体方法可以参见Note 556540.1 或者 我的另一篇文章

普通的用户只能查看EBS的接口信息,但并不能发布接口,以及部署,只有sysadmin账户有这个权限。(注:默认情况下,绝大多数的接口是没有发布及部署的,只有需要sysadmin发布后,第三方系统才能调用。)

如果不想使用sysadmin这个账户来管理接口,那么就要给目标用户分配三个角色,才能做sysadmin同样的事情,这三个角色是:

* Irep Administrator(中文:Irep 管理员
* System Integration Developer(中文:系统集成开发员
* System Integration Analyst(中文:系统集成分析专家

每一个角色都有着对接口库不同的权限,如下图

sysadmin默认是具有上述三个角色的,所以不需要特别设置。其他用户就需要设置了,如何给用户分配角色可以参见Note:861982.1


Interfaces

接下来会以系统默认提供的一个接口为例,演示一下,如何放开接口,允许外部程序调用的一个过程。

以sysadmin账户登录,然后路径:Integrated SOA Gateway > Supply Chain Management > Inventory > Inventory Organization Setup,可以看到两个接口,其中的一个叫Locator Maintenance API,这个接口允许用户创建,修改,删除Locator。

(如果接口的Internal Name为User_XXX_XXX的话,比如USER_PKG_LOT,USER_PKG_SERIAL,表示这个接口是需要用户自定义接口,需要自己实现后台的业务处理逻辑)


再点进去就能看到接口的详细信息。你能看到这个接口是一个PL/SQL接口,后台对应的Package叫INV_LOC_WMS_PUB,这个接口包含四个Locator处理的方法。如果你有兴趣,你可以打开INV_LOC_WMS_PUB这个Package,就能看到具体的实现逻辑。


每一个方法能点进去,就是这个接口方法的描述以及接口参数。



生成WSDL

这里需要把PL/SQL的Package以Webservice方式发布,就需要把这个接口生成WSDL。(如何你自己的客户化PL/SQL注册到Integrated SOA Gateway,见这篇文章

WSDL: Web服务定义语言(Web Service Definition Language),用来定义服务接口。实际上,它能描述服务的两个不同方面:服务的签名(名字和参数),以及服务的绑定和部署细节(协议和位置)。


WSDL生成后,Web Service Status就变成了'Generated'。并且你可以查看WSDL


‘View WSDL‘就能看到WSDL信息



Deploy Webservice 

生成了WSDL后,外部系统还不能调用它,你需要把生成的WSDL部署到应用服务器上,这一步还会安装一些必要的Webservice文件到应用服务器上。这里需要对Webservice的安全类型做一个勾选:Username Token、SAML Token。

关于这两个安全类型,可以详细阅读下Securing E-Business Suite Web Services with Integrated SOA Gateway ,里边有详细的解释。



Create Grant

部署完后,Webservice状态变为了Deployed。这之后还有一步- 授权,你是希望所有用户都能访问接口,还是只是特定用户。


Test Web service

WSDL的地址是http://[host]:[port]/webservices/SOAProvider/plsql/inv_loc_wms_pub/?wsdl

那么Oracle自带测试web service的地址是上边WSDL的地址,但是去掉'?wsdl' (主要不要去掉斜杠/,否则会报No WebService Provider is registered at this URL)

http://[host]:[port]/webservices/SOAProvider/plsql/inv_loc_wms_pub/

Invoke后,就把HTML表单上的信息组成Soap报文,发送到应用服务器,服务器会把返回信息也以Soap报文的形式返回给客户端。

下为SOAP请求报文样例:

  1. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">  
  2.     <soap:Header xmlns:ns1="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/">  
  3.         <ns1:SOAHeader>  
  4.             <ns1:Responsibility>INVENTORY</ns1:Responsibility>  
  5.             <ns1:RespApplication>CUX</ns1:RespApplication>  
  6.             <ns1:SecurityGroup>STANDARD</ns1:SecurityGroup>  
  7.             <ns1:NLSLanguage>SIMPLIFIED CHINESE</ns1:NLSLanguage>  
  8.             <ns1:Org_Id>0</ns1:Org_Id>  
  9.         </ns1:SOAHeader>  
  10.         <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" soap:mustUnderstand="1">  
  11.             <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">  
  12.                 <wsse:Username>ESB_TEST</wsse:Username>  
  13.                 <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">1234567890</wsse:Password>  
  14.             </wsse:UsernameToken>  
  15.         </wsse:Security>  
  16.     </soap:Header>  
  17.     <soap:Body xmlns:ns2="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokews/">  
  18.         <ns2:InputParameters>  
  19.             <ns2:P_IFACE_CODE>XXX</ns2:P_IFACE_CODE>  
  20.             <ns2:P_BATCH_NUMBER>1234567654323</ns2:P_BATCH_NUMBER>  
  21.             <ns2:P_REQUEST_DATA>32424</ns2:P_REQUEST_DATA>  
  22.         </ns2:InputParameters>  
  23.     </soap:Body>  
  24. </soap:Envelope>  

(请求报文头中的Responsibility,RespApplication,SecurityGroup,NLSLanguage,Org_Id节点都是Oracle EBS系统要求的SOAP头信息,用于账户验证)     

SOAP响应报文样例:

  1. <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">  
  2.     <env:Header/>  
  3.     <env:Body>  
  4.         <OutputParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokews/">  
  5.             <X_RETURN_CODE xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokefmsws/">ERROR001</X_RETURN_CODE>  
  6.             <X_RETURN_MESG xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokefmsws/">输入的请求报文格式不正确</X_RETURN_MESG>  
  7.             <X_RESPONSE_DATA xsi:nil="true" xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokews/"/>  
  8.         </OutputParameters>  
  9.     </env:Body>  
  10. </env:Envelope>  

除了这个标准的测试方法外,也可以使用SoapUI这样的专业工具来测试Webservice,见这篇文章


SOA Monitor

可以在SOA Monitor中监视客户端调用EBS的Webservice的执行的效果。

路径:Integrated SOA Gateway –> SOA Monitor


如果调用失败,可以从详细信息或者日志里查看具体内容。


转载请注明出处:http://blog.csdn.net/pan_tian/article/details/10159935


相关文章
|
SQL Java Nacos
SpringCloud+SpringCloudAlibaba+SOA架构搭建,使用nacos注册中心,gateway网关配置
SpringCloud+SpringCloudAlibaba+SOA架构搭建,使用nacos注册中心,gateway网关配置
271 0
|
Web App开发 Oracle 关系型数据库
IGS_学习笔记01_Integrated SOA Gateway介绍(案例)
2014-01-01 Created By BaoXinjian 一、摘要 Oracle EBS 11.5.10的时候,Oracle就开始推动EBS系统中SOA服务架构的支持,作为SOA服务中心的Integration Repository作为预览提早发布出来, 到了Oracle EBS R12.
1587 0
IGS_学习笔记02_Integrated SOA Gateway安装配置(案例)
20150817 Created By BaoXinjian 一、摘要 在使用IREP Parser之前,需要在EBS环境安装补丁9004712,IREP Parser是一个用Perl编写的独立工具,用来验证集成接口标记并生成集成接口描述文件(iLDT)。
1891 0
|
Oracle 关系型数据库 数据库
IGS_学习笔记03_Integrated SOA Gateway设定配置(案例)
20150506 Created By BaoXinjian 一、摘要 在Web服务调用的时候,需要有一个应用数据库用户来连接EBS数据库,因此需要创建一个具备一定权限的用户,而为了简化设置的麻烦, Oracle提供了一个内建的用户 ASADMIN ,只要启用它并重置密码就可以了。
1675 0
|
14天前
|
前端开发 Java Nacos
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
64 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
|
3月前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
216 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
3月前
|
JavaScript Java Kotlin
深入 Spring Cloud Gateway 过滤器
Spring Cloud Gateway 是新一代微服务网关框架,支持多种过滤器实现。本文详解了 `GlobalFilter`、`GatewayFilter` 和 `AbstractGatewayFilterFactory` 三种过滤器的实现方式及其应用场景,帮助开发者高效利用这些工具进行网关开发。
461 1
|
4月前
|
负载均衡 Java API
项目中用的网关Gateway及SpringCloud
Spring Cloud Gateway 是一个功能强大、灵活易用的API网关解决方案。通过配置路由、过滤器、熔断器和限流等功能,可以有效地管理和保护微服务。本文详细介绍了Spring Cloud Gateway的基本概念、配置方法和实际应用,希望能帮助开发者更好地理解和使用这一工具。通过合理使用Spring Cloud Gateway,可以显著提升微服务架构的健壮性和可维护性。
114 0
|
5月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
95 0
|
6月前
|
Java 开发者 Spring
Spring Cloud Gateway 中,过滤器的分类有哪些?
Spring Cloud Gateway 中,过滤器的分类有哪些?
163 3