API
management is concerned with managing external APIs
where consumers are unknown. SOA Governance, on the other hand, is
about managing services with known consumers.
SOA
and API management are the same but different approach. SOA has its
reusability and loose coupling, web based access values, but it may not
suitable for every enterprise. SOA work will maintain its worth because
it is always amenable to use in the newer Web technologies, for both
development and integration. API Management is about connecting different
parts of a hybrid IT infrastructure including social, mobile and cloud.
oAPI
Management solution needs to integrate with SOA (at least Enterprise Service
Bus) for sharing the metadata about the available enterprise data.
oAPIs
are created as business approach to reach new markets with BYOD model, where
are SOA is to reach web customers.
oAPIs
provide SOA with a way to reach beyond the controlled environment of the
enterprise, while SOA provides APIs with acceleration and proven design
principles.
oDefining
a strategy for how to merge SOA and API management will be important(long term)
to the enterprises.
oSo,
we can say that both have close
relation and both help customers for business agility.
Comparisons
API Management
SOA Services
API
Management is natural extension of SOA. All API are services, but not
all APIs are good services.
A set of
components which can be invoked, and whose interface descriptions can be
published and discovered.
API
management is concerned with managing external APIs where consumers
are unknown
SOA
Governance, on the other hand, is about managing services with known
consumers.
Web APIs more truly reflect the nature of the
Web
SOA reflects the nature of Web services
More suitable for cloud, mobile, big data
platforms to involve external world to innovate new ideas.
More suitable within the enterprise integration
API management enables enterprise services through channels and
new forms of innovative products and services.
A business centric architectural approach.
The API security model says ‘good old SSL is
good enough.
Security
is handles with high standards at the message lever in a complex way.
Its
more on REST and JSON services
Its
standards based and mostly on SAOP
In a lot of ways, you can think of it as the
web for machine-to-machine communication
Its
machine-to-machine and machine-to-people as well
Doesn’t require you to sit down and install
special infrastructure or libraries to do machine-to-machinecommunication
Needs
special software
Designed for reuse by many apps
platforms. API provides
Designed
to reuse in standards basis over the web/connectors
Oracle E-Business Suite Integrated SOA Gateway
(ISG) provides a customer-focused robust communication and integration
infrastructure between an external system and ISG for inbound and outbound communication
that does not require a special class of middleware software. This will not only save license costs but
also reduce maintenance costs as the existing EBS system support team can
maintain the infrastructure easily. This infrastructure not only enables greater
and effective business integration with standard SOA concept between
heterogeneous applications, but also facilitates the development and execution
of complex business processes into highly flexible and reusable Web services.
With this standardized and interoperable Web service platform, ISG provides a powerful framework that
accelerates publishing of custom PL/SQL procedures as web services over the
Web.
Integration Architecture
ISG Integrations require some configurations and customizations to enable the
functionality in the ISG module. The
functionality would be written in PL/SQL procedures and then enabled as a web
service. The Outbound calls are made
using the Service Invocation Framework (SIF) of EBS, which internally uses built-in
Business Events for initiating the transaction or web service call. Organizations would not need to hire new
resources to develop this functionality as Apps technical resources possessing PL/SQL
skills can easily deploy this functionality. This helps the firm in saving recruitment
and resource management costs. This
cross-industry integration can be performed on EBS versions R12.1 and above.
Implementation Steps
Here is a
detailed illustration of web services implementation and calling web services
from EBS. Oracle E-Business Suite
(R12.1.3) must be installed and ready to use for Integrated SOA Gateway (ISG)
setup and implementation. This
implementation requires some setup configuration and development of several components
for Inbound and Outbound as given below:
Inbound
1.ISG
Setup
a.Enable
ASADMIN user
b.Create
ISGUSER
2.Write
a Custom PL/SQL procedure
3.Write
the annotation into Procedure
4.Generate
and Upload the ILDT file
5.View
the Published Custom Web Service developed
6.Monitoring
SOA Requests
Outbound
1.Run
SQL script for Security Parameters to Support UsernameToken based WS-Security
WSSE password (If the external services
are WSSE enabled only)
2.Creating
Business Events
3.Creating
Invoke Web Service Subscriptions
4.Creating
Error Notification Subscriptions
5.Creating
Call back event Subscriptions in PL/SQL
6.Testing
the Setup (Don’t DO in the production environments)
7.Resubmitting
Failed Business Events
Note: For detailed implementations details contact me.
Using OAuth2.0 authenticating your web application with Google API is very easy. This will help your applications to maintain sing user repository from Google logging, and no need to maintain any password at your application side. Here the idea is to give an idea of complete Web Server flow (Oauth2 web server side dance ) and understand it completely with complete open source technologies.
First step is go to Google API Console and register a project then create a Web Application userid and secret key. (Make sure that the registering URL will have your application's context path).
Note: Modify the userid/secretkeys as per your settings.
Create a web project ( say TestProject) and then create a servlet as shown below:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
System.out.println("Callback to URI that is configured in Google API Console"); resp.setContentType("text/html"); resp.getWriter().println(" OAuth2.0 example in Web Server Flow"); resp.getWriter().println(" "); resp.getWriter().println("
"); resp.getWriter().println("To login with Google Account click here "); resp.getWriter().println(""); resp.getWriter().println("resp.getWriter().println(" alt='Powered by Google App Engine' />"); resp.getWriter().println("
");resp.getWriter().println("
");} } else { resp.getWriter().println("
// Exchange the code for token HttpClient httpclient = new HttpClient(); BufferedReader bufferedreader = null; PostMethod postmethod = new PostMethod( "https://accounts.google.com/o/oauth2/token"); postmethod.addParameter("code", auth_code); postmethod.addParameter("client_id", client_id); postmethod.addParameter("client_secret", client_secret); postmethod.addParameter("redirect_uri", redirectURL); postmethod.addParameter("grant_type", "authorization_code"); String access_token = null; String token_type = null; int expires_in = 0; String id_token = null; try { int rCode = httpclient.executeMethod(postmethod); System.out.println("HTTP POST for Token rCode is" + rCode);
if (rCode == HttpStatus.SC_NOT_IMPLEMENTED) { System.err.println("The Post postmethod is not implemented by this URI"); postmethod.getResponseBodyAsString(); } else if (rCode == HttpStatus.SC_NOT_ACCEPTABLE) { System.out.println(postmethod.getResponseBodyAsString()); } else {
"); resp.getWriter().println("Access Token = " + access_token); resp.getWriter().println("Refresh Token = " + id_token); resp.getWriter().println("Expire Time (Seconds) = " + expires_in); resp.getWriter().println("Token Type = " + token_type); } } catch (Exception e) { System.err.println(e); } finally { postmethod.releaseConnection(); if (bufferedreader != null) try { bufferedreader.close(); } catch (Exception fe) { fe.printStackTrace(); } } //Calling Google account info API User user = null; httpclient = new HttpClient(); bufferedreader = null; GetMethod getmethod = new GetMethod("https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + access_token); try { int rCode = httpclient.executeMethod(getmethod); System.out.println("HTTP GET for User rCode is" + rCode);
if (rCode == HttpStatus.SC_NOT_IMPLEMENTED) { System.err .println("The Get method is not implemented by this URI"); getmethod.getResponseBodyAsString(); } else if (rCode == HttpStatus.SC_NOT_ACCEPTABLE) { System.out.println(getmethod.getResponseBodyAsString()); } else {
How to invoke a JBPM process from a Servlet/JSP page? All the examples talks about the API, but the example expecting is where to mention the HOST, PORT , and the PATH to connect the JBPM Flow?
However If there are two developers one is working on JBPM5 process and deploys to server A. and nother developer is working on Web application he deploys his web application on server B?
Now how to submit the request (or invokes the JBPM Process) from server B ?
2.Copy the build.xml,
build.properties, Test_RepairApp_build.properties, TESTRMASOADEPLOY.bat in the directory where
there the Test_RepairApp workspace
folder exist.
(Create these files using the following content)
3.Don’t do any changes
to the build.xml file
4.Change the values in
the TESTRMASOADEPLOY.CMD that suites to your system, If required make this as a .sh file
accordingly change the paths to support on Unix systems.
5.In the
build.properties change the following things a.deployment.plan.environment=dev (based on the environment change the value) b.Change all the paths i.wn.bea.home=D:/JDeveloper11115 ii.java.passed.home=${wn.bea.home}/jdk160_24 iii.oracle.home=${wn.bea.home}/jdeveloper iv.wl_home=${wn.bea.home}/wlserver_10.3 v.# temp vi.tmp.output.dir=D:/temp vii.junit.output.dir=junitout viii.# my settings ix.applications.home=../myWorkspace
c.Set the SOA server
details i.# dev deployment server weblogic ii.dev.serverURL=http://localhost:7001 iii.dev.overwrite=true iv.dev.user=weblogic v.dev.password=welcome123 vi.dev.forceDefault=true vii.dev.server=localhost viii.dev.port=8001 6.Change the partition
name in the from TEST_Rep_Offshore to the required partition in the Test_RepairApp_build.properties file.
a.All all the Project
names with comma separation b.All the properties for
each project with projectname prefixed as shown in below example i.TEST_Rpr_Inbound_EBS.revision=1.0 ii.TEST_Rpr_Inbound_EBS.enabled=true iii.TEST_Rpr_Inbound_EBS.partition=TEST_Rep_Offshore
7.Create three
configuration plans for each project with _cfgplan.xml
8.In each projects
change the configuration plan xml files with right URL that points to the correspoing
environment’s XSD, WSDLs.
Note: Similarly we need to check all other
projects.
TESTSOADEPLOY .BAT
=====================
set ORACLE_HOME=D:/JDeveloper11115
set ANT_HOME=%ORACLE_HOME%/jdeveloper/ant
set PATH=%ANT_HOME%/bin;%PATH%
set JAVA_HOME=%ORACLE_HOME%/jdk160_24
set CURRENT_FOLDER=D:/myWorkspace
D:
CD D:/myWorkspace
ant -f build.xml deployAll
build.properties
======================
# demo = true , then no soa scripts will be called.