Monday, 21 May 2012

When to use Oracle BPEL and OSB?

Often for the newbies of (Oracle) SOA Technologies, this question pops in mind stating when to use BPEL and OSB.

Fundamentally if you read the docs, you will see that both the now Oracle products have similar orchestration capabilities. This blog is written in the intention to clarify the question.

I will cover the one line answer and provide some references I found in the web.

One Liner:

Use of BPEL: State-full, high involvement of Data Manipulation.
Use of OSB: Stateless, Low involvement of Data Manipulation.

For a briefer differentiation, I found another blog in the web space which made my job easier. I have copied the content across to this blog.

Note: the copyright of the below content belongs to the author of the blog page.

Use OSB for:

  • Endpoint routing (providing location transparency) so that we do not care about the physical location of the endpoint.
  • Endpoint abstraction (interface transparency) so that we do not care about the exact data formats required by the endpoint because the OSB will take care of transformations.
  • Load balancing so that we do not care about which of multiple service implementations will actually service a request. 
  • Throttling so that we do not care about how use of services is restricted.  
  • Enrichment so that we do not care about how additional data is provided to the request to match the expected request and response formats.
  • Simple synchronous composition so that we do not care if our abstract service call is actually made up of two or more physical service calls.
  • Protocol conversion so that we do not care what physical transports are being used.
  • Sync/async abstraction so that we can treat services as fire and forget or query response according to the needs of the client.

Use BPEL for:
  • Complex composition of parallel flows that involve more than a couple of services.
  • Long running compositions that may run for minutes, hours or days.
  • Asynchronous compositions that require correlation of requests and responses.
  • Process abstraction that enables us to track processes and their interactions with multiple services.
  • Human workflow

Thursday, 17 May 2012

Enterprise Integration EAI vs SOA vs ESB

Hi All,

Had some time to browse the net and to brush up on the basics. Came across this interesting paper presentation in the site

ggatz Consulting

Though the site was basic with not much information, I continued reading the paper presented by an author: Anurag Goel.I could not find out the age of the paper as could not find the Source location or date of the article.

I found the article from this link:

I have also made the paper available here.

Note: The copyright of the article belongs to the Author.

This paper takes us through the comparison of EAI, SOA and ESB and their current/future role in the IT integration Industry. Also explains the relevance between EAI Patterns and current so called SOA Integration Patterns.
 

I like the summary section, as follows (on page 6):

6 TAKEAWAYS SUMMARY
1. SOA brings cost effective, reusable and low lead time solutions to an organization
but EAI and SOA are both going to coexist.
2. SOA is more then web services, in fact web services alone can not handle the
complex, secure and SLA based applications of an enterprise.
3. Enterprise service bus would enable low cost integration and would be used by
companies with limited IT resources
4. Packaged EAI solutions in future would have SOA as basic tenet and would continue
to be the prime choice for large scale integration.
 


Happy Reading.

Monday, 9 April 2012

How to achieve dynamic binding by manipulating endpoint references at runtime - BPEL

Web services and service-oriented architecture (SOA) allow business processes to be easily extended through interaction with other business processes and applications. BPEL processes define this interaction through partner links, which define the interface (messages and operations), transport protocol, and most important, the location of each service to be used.
In most basic process designs, partner links are static; they refer to a single external process selected by the developer at design time. This approach is appropriate for highly targeted or constrained systems. However, in larger systems business processes are more complex. They interact with multiple external services and define multiple partner links, and some of these partner links might not be known at design time. As a result, all potential callouts and logic for deciding which partner links to use must be built inside the business process itself—unnecessarily complicating that process. Furthermore, as additional partner links are added, the resulting process grows more and more unwieldy, as any changes to the partner links require modification of the entire business process.
Fortunately, the BPEL language supports the concept of dynamic binding of partner links

To read more on this topic and to know how: please read further in  SOA Best Practices: The BPEL Cookbook Making BPEL Processes Dynamic

Sunday, 21 August 2011

What is the default username and password for Oracle Enterprise Repository 11g

The default username and password for Oracle Enterprise Repository 11g is:

User: admin

Password: admin

This is valid only for the fresh install. After the first login you will be forced to change the password for the admin user.

The admin user is the default administrative account installed with Oracle Enterprise Repository.






Monday, 27 June 2011

Oracle WebLogic Server Basic Concepts - Domain, Admin server, Managed Server

I found this great resource to answer the following questions:

1. What is a weblogic Domain?
2. What is a Weblogic Admin Server?
3. What is a Managed Server?
4. What is a Weblogic Cluster

and many more basic conscepts of weblogic Server.

Please go to this link: Oracle WebLogic Server Basic Concepts

This will be an eye opener presentation, if you are new to Weblogic Server.

Wednesday, 22 June 2011

nohup: Execute Commands After You Exit From a Shell Prompt


Most of the time you login into remote server via ssh. If you start a shell script or command and you exit (abort remote connection), the process / command will get killed. Sometime job or command takes a long time. If you are not sure when the job will finish, then it is better to leave job running in background. However, if you logout the system, the job will be stopped. What do you do?

nohup command

Answer is simple, use nohup utility which allows to run command./process or shell script that can continue running in the background after you log out from a shell:

nohup Syntax:

nohup command-name &
Where,
  • command-name : is name of shell script or command name. You can pass argument to command or a shell script.
  • & : nohup does not automatically put the command it runs in the background; you must do that explicitly, by ending the command line with an & symbol.

nohup command examples

1) Login to remote server
$ ssh user@remote.server.com
2) Execute script called pullftp.sh
# nohup pullftp.sh &
Type exit or press CTRL + D exit from remote server.
# exit
3) Find all programs and scripts with setuid bit set on, enter:
# nohup find / -xdev -type f -perm +u=s -print > out.txt &
Type exit or press CTRL + D exit from remote server.
# exit
Please note that nohup does not change the scheduling priority of COMMAND; use nice for that:
# nohup nice -n -5 ls / > out.txt &
As you can see nohup keep processes running after you exit from a shell. Read man page of nohup and nice command for more information. Please note that nohup is almost available on Solaris/BSD/Linux/UNIX variant.
Update:
# 1: As pointed out by Jason you can use at command to queue a job for later execution. For example, you can run pullftp.sh script to queue (one minute) later execution
$ echo "pullftp.sh" | at now + 1 minute
# 2: You can also use screen command for same. Brock pointed out disown shell internal command for same purpose. Here is how you can try it out:
$ pullftp.sh &
$ disown -h
$ exit

This is a complete copy from the source. 


Aditional Info: less Nohup.out

Provides you with the output of the <command&>. This is some thing similar to tail -f on a live log file. 

Monday, 20 June 2011

SetDb.env - Oracle Database Key environment Settings.

 You need the following environment setting set in your linux environment so that you can start working with the Oracle DB.

ORACLE_SID=<NAME of your DB>
export ORACLE_SID
ORACLE_HOME=<complete path of your oracle home>
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH

you can either have them typed every time you log in to the linux environment or create them as an  environment file which you can execute every time you log in to your Linux Environment.

Steps as follows:
==============
1. vi <Filename>.env or <Sid_ServerName>.env
2. copy paste the below:

ORACLE_SID=<NAME of your DB>
export ORACLE_SID
ORACLE_HOME=<complete path of your oracle home>
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH

3. Replace the parameters <Values> with your Database values.
4. Save the file.
5. Make sure that you have provided execute permissions for the file.
6. Now execute the file (Source the file) as shown below:

.<Space>./<Filename>.env.

Now all your environment variables are set.

If you would like to verify the environment Variables try the following:

$ echo $ORACLE_HOME or $ORACL_SID

You should see the values as set earlier.

Note: When the above environment variables are not set most of the Database utilities will fail to work.

For example when you run sqlplus will return an error such as:

message file spl<lang>.msb not found

SP2-0750 need to set ORACLE_HOME to your ORACLE software directory 


Reference Source: sqlplus not initializing in linux (Oracle Forum)