Deploying a SOA WSDL in Oracle EBS R12

• 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)
• 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
• 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.htm
• 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 "Can't Locate Class/MethodMaker.pm" (Doc ID
1079218.1)
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
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
• 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: 1506-280 (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
•
•
•
•
•
•
•
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
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.
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
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> ( . . .);
• 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.
• $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
• 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
• 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.
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
•