You are on page 1of 41

DEPLOYING A SOA WSDL IN ORACLE EBS

R12 ENVIRONMENT USING ORACLE SOA


INTEGRATED GATEWAY

Overview
Review patching for SOA Integrated
Gateway related to your version of EBS
Writing a custom web service
How to generate and deploy Oracle
Seeded packages
SOAP UI demo/High Level overview
Mobile webservices with SOA Integrated
Gateway (Restful services)

Patching SOA Integrated Gateway


Based on EBS version
Oracle E-Business Suite Integrated SOA Gateway
Implementation Guide
Authorize the ASADMIN user
Apply necessary application patches
Apply Perl patches and updates
Oracle Wallet setup

Oracle E-Business Suite Integrated SOA Gateway


Implementation Guide
Follow the steps in the Oracle E-Business Integrated SOA Gateway
Implementation Guide
Enable ASADMIN
Create a new Oracle EBS user account?
Setting profile options
See oracle Document:

http://
docs.oracle.com/cd/E18727_01/doc.121/e12169/T511175T517162.ht
m

Other references:
Installing Oracle EBS Integrated SOA Gateway Doc
556540.1
Troubleshooting on potential syptoms and corresponding
solutions for Oracle EBS Integrated SOA Gateway see the
Troubleshooting Guide 726414.1
When Attempting to Create a Custom Integration
Repository Loader (*.ildt) File, the
"$FND_TOP/bin/irep_parser.pl" Command Fails

Screen shot of ASADMIN activition

Apply Application Patches


SOA Integrated Gateway Patches, setup and configuration steps for Admin
Sukhvir has come up with the following patches needed to Setup and Configure SOA from the following
document - Installing Oracle E-Business Suite Integrated SOA Gateway, Release 12 [ID 556540.1]

The patch readme files have been placed in - S:\ESC\Dept\Oraproj\patch_history\2013 - Patches\SOA Patches.

Upgrade to Oracle Application Server 10g Release 3 (10.1.3) Patch Set 5 (10.1.3.5.0)
8920270 - INSTALLING AS 10.1.3.5 REQUIRES OCM RESPONSE FILE WHEN OCM IS NOT CONFIGURED
8626084 - PLACEHOLDER BUG TO UPLOAD AS 10.1.3.5 PATCH-SET ON ARU
8999551 - REQEUST TO EVALUATE TO REV UP THE JAVA MAILER APIS TO LATEST TO SUPPORT SSL

Apply the following patches to the Oracle Application Server 10.1.3.5 Oracle Home:
Patch 13800972: Merge Request on Top of 10.1.3.1.0 for Bugs 8857799 9223438 12352047 (Patch 13800972 is
also compatible with Oracle Application Server 10.1.3.5.0.)
Patch 9371120: Web Service Framework Takes More Time for Giving the Response
Patch 7366746: WLP: Enabling "Use SAML Authority: Verify Signature" Doesn't Require SAML Token
Patch 15914125: Merge Request on Top of 10.1.3.5.1 for Bugs 9187189 9668283 13248533

Apply the following Oracle E-Business Suite patches:


Patch 13347633:R12.OWF.B: Performance Issues in PIM Load
Patch 13957925:R12.OWF.B: One-off:13029726:12.1.3: SQL Exception in SOA Monitor Page
Patch 14063221:R12.OWF.B: Consolidated Fixes on Top of 11688301:R12.OWF.B
Patch 9139673:R12.OWF.B: IREP Issues When APPLSYS Schema Name is Changed
Patch 13516999:R12.OWF.B: Performance Degradation of Web Service Calls Hosted in R12 SOA Gateway
Patch 14741766:R12.TXK.B: Need to Add a New Property for Session in OC4J.Properties

DBA hit issues and found additional steps below:


There was some issues/troubleshooting , please add below more patches/steps

Patch 9157774:R12.OWF.B: BUG 9058430 - MLS Issue with Calling Web Service One-Off for 12.1.2
Patch 9070077:R12.OWF.B: One-Off: 9045280:12.1.1:12.1.1:Invoking a Web Service Requires NLS Language
When It Should be

Setup/Update Perl
Apply Perl updates to prepare the parser for use in generating iLDT files for
webservices.
Setup Perl objects in the environment so we can run objects through
the parser to generate iLDT files
DBA run:
Metalink Note that Matt provided to us
Configure PERL 1079218.1
***
a. Find physical path of $FND_TOP/perl.
b. Add this physical path in PERL5LIB variable.
> export PERL5LIB=$FND_TOP/perl:$PERL5LIB

Find the value of $IAS_ORACLE_HOME/perl in your environment,

For example /slot/ems1340/appmgr/apps/tech_st/10.1.3/perl.


b. Locate the $IAS_ORACLE_HOME/perl/lib/5.8.3/i686-linux-thread-multi/Config.pm.
AIX environment: Config.pm was found here
/u07/HRPATCH/apps/tech_st/10.1.3/perl/lib/5.8.3/aix-thread-multi
Our Config.pm file appeared to be setup correctly

We don't need to do the remaining steps of c and d since our settings looked okay

c. Take backup of this file.


d. Replace all occurrences of /ade/smayer_perl58_main_linux/perl58/bin/Linux/Opt with
value of $IAS_ORACLE_HOME/perl.
Step not necessary because Our Config.pm file appeared to be setup correctly

Setup/Update Perl
Compress-Raw-Zlib-2.009
http://search.cpan.org/~pmqs/Compress-Raw-Zlib-2.009
Raymond hit an error getting this to build:
make
cc_r -c -I./zlib-src -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384
-qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -I/usr/local/include -q32 -qlonglong -O
-DVERSION=\"2.009\" -DXS_VERSION=\"2.009\" "-I/u07/HRPROD/apps/tech_st/10.1.3/perl/lib/5.8.3/aixthread-multi/CORE" -DGZIP_OS_CODE=3 -DUSE_PPPORT_H Zlib.c
"/u07/HRPROD/apps/tech_st/10.1.3/perl/lib/5.8.3/aix-thread-multi/CORE/reentr.inc", line 959.170: 1506280 (W) Function argument assignment between types "struct {...}**" and "struct passwd**" is not
allowed.
"Zlib.xs", line 231.1: 1506-046 (S) Syntax error.
make: 1254-004 The error code from the last command is 1.

We were able to get around this by using the more recent version of the Compress-Raw-Zlib-2.060 File
Need to use
Compress-Zlib-2.009
http://search.cpan.org/~pmqs/Compress-Zlib-2.009
Class-MethodMaker-1.12
http://search.cpan.org/~fluffy/Class-MethodMaker-1.12
Unzip files:
gzip -d Compress-Raw-Zlib-2.009.tar.gz
tar -xvf Compress-Raw-Zlib-2.009.tar
cd Compress-Raw-Zlib-2.009

Install files (Repeat for each tar.gz file):


perl Makefile.PL
make
make install

Writing a custom web


service

Write code with annotations included and install in database


Generate ILDT file
Upload ILDT file into database
Generate WSDL
Deploy WSDL
Setup Authentication
Test the Web Service

Package Header
CREATE OR REPLACE PACKAGE emp_info AS
/* this is the emp info package spec */
/*#
* get employee information
* @rep:scope public
* @rep:product PER
* @rep:lifecycle active
* @rep:displayname Get employee information
* @rep:compatibility S
* @rep:category BUSINESS_ENTITY HR_ORGANIZATION
*/
/*#
* get the employee name
* @param p_emp_no employee number
* @return employee name or error
* @rep:scope public
* @rep:lifecycle active

* @rep:displayname get full name


*/
FUNCTION get_name
( p_emp_no IN NUMBER)
RETURN VARCHAR2;
END emp_info;
> sqlplus apps @emp_info.pkh
SQL*Plus: Release 10.1.0.5.0 - Production on Mon Oct 13 13:33:39
2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit
Production
With the Partitioning, OLAP, Data Mining and Real Application
Testing options
Package created.
No errors.

Package Body
CREATE OR REPLACE PACKAGE BODY emp_info AS
FUNCTION get_name (p_emp_no IN NUMBER)
RETURN VARCHAR2 IS
v_full_name VARCHAR2(50);
BEGIN
SELECT full_name INTO v_full_name
FROM per_people_f
WHERE employee_number = p_emp_no
AND sysdate BETWEEN effective_start_date AND
effective_end_date;
RETURN(v_full_name);
END get_name;
END emp_info;

> sqlplus apps @emp_info.pkb


SQL*Plus: Release 10.1.0.5.0 - Production on Mon Oct 13 13:33:39 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Package body created.
No errors.

set serveroutput on
declare
full_name varchar2(50);
begin
full_name := emp_info.get_name(99999);
dbms_output.put_line(full_name);
end;
anonymous block completed
Fife, Robby L

Integration Repository
Annotation Standards
For Details See:
http://docs.oracle.com/cd/E18727_01/doc.121/e12065/T511473T545912.htm
CREATE OR REPLACE PACKAGE <package name> AS
/* this comment line must exist before the annotation begins */
/*#
* <Put your long package description here
* it can span multiple lines>
* @rep:scope <scope>
* @rep:product <product or pseudoproduct short code>
* @rep:lifecycle <lifecycle>
* @rep:displayname <display name>
* @rep:compatibility <compatibility code>
* @rep:businessevent <Business event name>
* @rep:category BUSINESS_ENTITY <entity name>
*/

/*#
* <Put your long procedure description here
* it can span multiple lines>
* @param <param name 1> <param description 1>
* @param <param name 2> <param description 2>
* @rep:scope <scope>
* @rep:product <product or pseudoproduct short code>
* @rep:lifecycle <lifecycle>
* @rep:displayname <display name>
* @rep:compatibility <compatibility code>
* @rep:businessevent <Business event name>
*/
PROCEDURE <procedure name> ( . . .);

/**
* <Put your long function description here
* it can span multiple lines>
* @param <param name 1> <param description 1>
* @param <param name 2> <param description 2>
* @return <return description>
* @rep:scope <scope>
* @rep:product <product or pseudoproduct short code>
* @rep:lifecycle <lifecycle>
* @rep:displayname <display name>
* @rep:compatibility <compatibility code>
* @rep:businessevent <Business event name>
*/
FUNCTION <function name> ( . . .);

Generating ILDT File


Logon to application server and set environment to 10.1.3
$IAS_ORACLE_HOME/perl/bin/perl $FND_TOP/bin/irep_parser.pl -g -v
-username=<a fnd username> <product>:<relative path from
product top>:<fileName>:<version>=<Complete File Path, if not
in currect directory>
Example: $IAS_ORACLE_HOME/perl/bin/perl
$FND_TOP/bin/irep_parser.pl -g -v -username=sysadmin
ihchr:sql:emp_info.pkh:12.0=emp_info.pkh
#
#
#
#
#
#
#
#

Interface Repository Annotation Processor, 12.0.0


Generating annotation output.
Processing file 'emp_info.pkh'.
Using YAPP-based parser.
Found a package-level annotation for 'EMP_INFO'.
Found a detail-level annotation...
Found a function named 'GET_NAME'.
Done all files.

Uploading ILDT file to


Integration Repository
$FND_TOP/bin/FNDLOAD <db_connect> 0 Y UPLOAD
$fnd/patch/115/import/wfirep.lct <ildt file>
Example: $FND_TOP/bin/FNDLOAD apps 0 Y UPLOAD
$FND_TOP/patch/115/import/wfirep.lct
emp_info.pkh.ildt
ORACLE Password:
Log filename : L4011440.log
Report filename : O4011440.out

Generate and Deploy


WSDL

Go to Integrated SOA Gateway -> Integration Repository and


click the Search button
Search on Internal Name (the package name) and click on the
appropriate Web service
Click Generate WSDL
Check Username Token
Click Deploy button
Click Select All
Click Create Grant and add the appropriate user
Go to Functional Administrator > Core Services > Caching
Framework > Global Configuration > Clear All Cache

Use Soapui or other tool to test


Get WSDL URL by clicking on View WSDL in the application and
go to the bottom of the page and copy the url found on the
address location line.
In SoapUI go to New Soap Project
Copy the URL from step above into the Initial WSDL/WADL field
and add ?WSDL to the end of the URL. Then click OK.
If the wsdl loads into soapui without an error then deploy was
successful.
Expand method name and then double click Request 1
Click Aut and add username and password
Right click on XML text and select Add WSS Username Token
then click OK
Remove all question marks from XML and add appropriate
values and then click the green arrow to test.

How to generate and


deploy WSDL for oracle
seeded API
Go to Integrated SOA Gateway -> Integration Repository and
use the tree to search by product family
The rest of the steps are the same as previous slide for a
custom API

You might also like