天天看点

what is SOA Gateway

what is SOA Gateway

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

<a target="_blank" href="http://docs.oracle.com/cd/B34956_01/current/acrobat/120irepug.pdf">Oracle® Integration Repository User's Guide</a>

<a target="_blank" href="http://docs.oracle.com/cd/E18727_01/doc.121/e12064/toc.htm">Oracle E-Business Suite Integrated SOA Gateway User's Guide</a>

<a target="_blank" href="http://docs.oracle.com/cd/B53825_08/current/acrobat/121isgig.pdf">Oracle E-Business Suite Integrated SOA Gateway Implementation Guide R12.1</a>

<a target="_blank" href="http://docs.oracle.com/cd/E18727_01/doc.121/e12065/toc.htm">Oracle E-Business Suite Integrated SOA Gateway Developer's Guide</a>

<a target="_blank" href="http://www.oracleappshub.com/ebs-suite/20-minute-guide-to-oracle-integration-repository/">20 Minute Guide to Oracle Integration Repository</a>

<a target="_blank" href="http://blog.csdn.net/pan_tian/article/details/10097815">Enable Oracle E-Business Suite Integrated SOA Gateway </a>

<a target="_blank" href="http://blog.csdn.net/pan_tian/article/details/8504882">Oracle Integration Repository </a>

<a target="_blank" href="https://blogs.oracle.com/stevenChan/entry/securing_e-business_suite_web_services_with_integr">Securing E-Business Suite Web Services with Integrated SOA Gateway</a>

<a target="_blank" href="http://blog.vennster.nl/2012/01/using-soa-gateway-in-ebs-12.html">Using SOA Gateway in EBS 12 </a>

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

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

* Irep Administrator(中文:Irep 管理员)

* System Integration Developer(中文:系统集成开发员)

* System Integration Analyst(中文:系统集成分析专家)

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

what is SOA Gateway

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

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

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

what is SOA Gateway

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

what is SOA Gateway

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

what is SOA Gateway

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

what is SOA Gateway

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

what is SOA Gateway

‘View WSDL‘就能看到WSDL信息

what is SOA Gateway

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

what is SOA Gateway

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

what is SOA Gateway

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/

what is SOA Gateway
what is SOA Gateway

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

下为SOAP请求报文样例:

&lt;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"&gt;  

    &lt;soap:Header xmlns:ns1="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/"&gt;  

        &lt;ns1:SOAHeader&gt;  

            &lt;ns1:Responsibility&gt;INVENTORY&lt;/ns1:Responsibility&gt;  

            &lt;ns1:RespApplication&gt;CUX&lt;/ns1:RespApplication&gt;  

            &lt;ns1:SecurityGroup&gt;STANDARD&lt;/ns1:SecurityGroup&gt;  

            &lt;ns1:NLSLanguage&gt;SIMPLIFIED CHINESE&lt;/ns1:NLSLanguage&gt;  

            &lt;ns1:Org_Id&gt;0&lt;/ns1:Org_Id&gt;  

        &lt;/ns1:SOAHeader&gt;  

        &lt;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"&gt;  

            &lt;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"&gt;  

                &lt;wsse:Username&gt;ESB_TEST&lt;/wsse:Username&gt;  

                &lt;wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"&gt;1234567890&lt;/wsse:Password&gt;  

            &lt;/wsse:UsernameToken&gt;  

        &lt;/wsse:Security&gt;  

    &lt;/soap:Header&gt;  

    &lt;soap:Body xmlns:ns2="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokews/"&gt;  

        &lt;ns2:InputParameters&gt;  

            &lt;ns2:P_IFACE_CODE&gt;XXX&lt;/ns2:P_IFACE_CODE&gt;  

            &lt;ns2:P_BATCH_NUMBER&gt;1234567654323&lt;/ns2:P_BATCH_NUMBER&gt;  

            &lt;ns2:P_REQUEST_DATA&gt;32424&lt;/ns2:P_REQUEST_DATA&gt;  

        &lt;/ns2:InputParameters&gt;  

    &lt;/soap:Body&gt;  

&lt;/soap:Envelope&gt;  

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

SOAP响应报文样例:

&lt;env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"&gt;  

    &lt;env:Header/&gt;  

    &lt;env:Body&gt;  

        &lt;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/"&gt;  

            &lt;X_RETURN_CODE xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokefmsws/"&gt;ERROR001&lt;/X_RETURN_CODE&gt;  

            &lt;X_RETURN_MESG xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokefmsws/"&gt;输入的请求报文格式不正确&lt;/X_RETURN_MESG&gt;  

            &lt;X_RESPONSE_DATA xsi:nil="true" xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokews/"/&gt;  

        &lt;/OutputParameters&gt;  

    &lt;/env:Body&gt;  

&lt;/env:Envelope&gt;  

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

路径:Integrated SOA Gateway –&gt; SOA Monitor

what is SOA Gateway

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