Tuesday, 9 June 2009

Prerequisites to learn Oracle SOA technology

Here I would like to give brief overview of Oracle SOA technology and prerequisites to learn Oracle SOA, BPEL, and ESB…Etc.

Following are the minimum prerequisites to get into Oracle SOA technology.
XML
XSL, XSLT
XPATH
XSD (XML Schema definition)
WSDL
SOAP

Best sites to gain knowledge on above topics:

http://www.w3schools.com/schema/default.asp
http://www.w3schools.com/xsl/default.asp
http://www.w3schools.com/wsdl/default.asp
http://www.w3.org/Style/XSL/

Once you are fine with above topics then you can download Oracle SOA suite and Oracle JDeveloper10g from Oracle site on following links
http://www.oracle.com/technology/software/tech/soa/index.html
http://www.oracle.com/technology/software/products/jdev/index.html

Oracle SOA suite installation on windows is straight forward and please refers to installation documentation before installing.

Oracle SOA Suite 10.1.3.3 version comes with BPEL Control, ESB Control, and Web services Manager Control, Application Server control, Rule Author and work list application.

BPEL control provides the framework for easily deploying, monitoring and administering BPEL processes.
ESB control provides the facility to monitor and administering the ESB processes.

Web services Manager Control facilitates the implementing security policies for services deployed on SOA environment.

Application Server control provides the functionality to administer application server, OC4J, HTTP Server.

Rule Author provides interface create business rules for the organization which in turn used in BPEL process orchestration using Decision service and Decide activity.

JDeveloper is the tool which facilitates to develop BPEL, ESB, J2EE, Web Services, XML, XSLT, and XSD. Once done with development on JDeveloper which can be deployed to Oracle SOA Suite using ANT tool or JDeveloper itself.

Following are best documents/links on Oracle site to learn about Oracle SOA technology.

Oracle SOA Suite Developer guide:
http://download.oracle.com/docs/cd/B31017_01/core.1013/b28764.pdf

Oracle BPEL process manager developer guide:
http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/toc.htm

Oracle Enterprise service Bus (ESB) developer guide:
http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28211/toc.htm

You can also find some Samples on SOA suite installation on following path:
$ORACLE_HOME/bpel/samples

Thanks for going through the blog. I will provide more information, Simple examples on Oracle SOA technology in my next blogs.

Cheers

Friday, 27 March 2009

BPEL Interaction patterns

Let’s have a look into common interaction patterns between BPEL process and another application.

• One-Way message.
• Synchronous Interaction.
• Asynchronous interaction.
• Asynchronous interaction with time out.
• Asynchronous interaction with a notification timer.
• One request, multiple responses
• One request, one or two possible responses
• One Request, a mandatory Response, and an optional response.
• Partial processing.

I will explain Synchronous, Asynchronous interaction patterns in details in my next blogs.

Sunday, 15 March 2009

Hello World BPEL Process

Here I would like to give steps involved in creating simple Hello World BPEL Project.

Open Jdeveloper 10g (10.1.3.3)

Create HelloWorld Application:
In JDeveloper, perform these steps to create an application called HelloWorld which will contain the HelloWorld BPEL Project:
1. In Oracle JDeveloper, select View > Application Navigator.
2. Right-click the Applications node and select New Application.
3. In the Create Application dialog, enter these values:
Application Name: enter HelloWorld.
Directory Name: Accept the default directory location.
Application Package Prefix: enter oracle.helloworld.
Application Template: select No Template [All Technologies].
Click OK.
4. In the Create Project dialog, click Cancel. You will create the projects later.


Create HelloWorld BPEL Project:

1. Right click on HelloWorld Application and select New Project.
2. In the New Gallery Window select BPEL Process Project.

3. In the BPEL Project Creation wizard – Project settings window enter following values:
Name: HelloWorld
Name Space: Accept Default i.e http://xmlns.oracle.com/HelloWorld
Template: Synchronous BPEL Project.


Click Next button
4. Accept default values in the screen and click finish.
5. Following HelloWorld.bpel file will be opened in Jdeveloper



Now Drop Assign Activity between ReceiveInput & ReplyOutput activities.


Double click on Assign Activity and do following:

1. On copy operation tab click on create then select copy operation.

2. on create copy operation window
On from side -> select Expression -> click on Xpath expression builder
Enter following expression then click OK.

concat('Hello World',bpws:getVariableData('inputVariable','payload','/client:HelloWorldProcessRequest/client:input'))



3. On create copy operation window map from expression to output variable like following and click ok.


4. Then click OK on Assign window.

Now right click on Helloworld BPEL project and deploy to Integration server.

You can test deployed Helloworld project from BPEL console.


The following actions take place:
1. The receiveInput receive activity receives input from the user (client), as defined in the Helloworld.wsdl file.
2. A assign activity concatenate ‘Hello World’ to input and copy into a replyOutput activity so that it can be accepted by the client application.
3. The replyOutput activity sends the repackaged response back to the client.
The following BPEL code performs the HelloWorld process:

<sequence name="main">
<receive name="receiveInput" partnerLink="client"
portType="client:HelloWorld" operation="process"
variable="inputVariable" createInstance="yes"/>


<assign name="Assign_1">
<copy>
<from expression="concat('Hello World',bpws:getVariableData('inputVariable','payload','/client:HelloWorldProcessRequest/client:input'))"/>
<to variable="outputVariable" part="payload"
query="/client:HelloWorldProcessResponse/client:result"/>
</copy>
</assign>

<reply name="replyOutput" partnerLink="client" portType="client:HelloWorld"
operation="process" variable="outputVariable"/>
</sequence>



Thanks for going through the blog.Please post me if you got any queries on this topic.

Monday, 2 March 2009

Oracle 10g Application server - create OC4J, Deploy WAR, Deploy EAR files

Here I would like to explain the steps involved in create custom OC4J (J2EE container), Deploying WAR (Web Archive), EAR (Enterprise Archive) using Oracle Enterprise Manager (OEM).

Step1: Login into OEM as ias_admin/password



Step 2: select middle tier instance on the farm screen.


Step 3: Clik on create OC4J button on following screen.


Step 4: Enter custom OC4J name to be created e.g : mycustom_oc4j.




Step 5: click ok button on confirmation screen.

Now you can see newly created mycustom_oc4j in System components screen.click on mycustom_oc4j link to navigate to following oc4j page.


Click on start button on above page to start OC4J instance.


click on Applications tab to navigate to J2EE applications list page.following will be the applications tab result page:

to deploy EAR file click on Deploy EAR file button and to deploy WAR file click on Deploy WAR file button.

Deploy WAR file screen :Here you can deply your existing WAR file.

Web Application: select WAR file here.

Application Name : give your application name here.

Map URL : give URL name to be accessed from bowser for e.g: /sampleApp


Deploy EAR file screen: here select your EAR file to deploy.


Thanks for going through the blog.Please post me if you got any queries on this topic.


My next blog will on how to create EAR , WAR files using Oracle Jdeveloper 10g.


Thanks


Sunday, 1 March 2009

PMP Exam journey

First, I want to thanks Satyam Computer services ltd for providing me 35 contact hour’s education and thanks to Mr. Ravi from PMSoft for providing valuable inputs in 35 contact hours.

One more thing I strongly recommend for PMP aspirants to go thru http://www.pmhub.net PMP forum.It is such a valuable site/forum , here you can get lot of inputs, suggestions, views from PMP exam appeared people. While going thru this forum you feel like you are already in exam mode. I personally say that it gave me lot of inspiration, motivation for my PMP exam preparation.

For my PMP exam pass, I followed:

Study Material:
1. PMBOK guide (studied 3 times, 2 times each chapter practice questions)
2. Rita Mulcahy PMP exam prep.(studied 3 times)
3. Rajesh Rani Study material (day before the exam)

Mock Exam:
1. Head First PMP Free mock exam (http://www.headfirstlabs.com/PMP/pmp_exam)
2. Pmstudy free mock exam (http://www.pmstudy.com/).

I started preparation in mid DEC 2008 and appeared for exam on 15/01/2009. For last 2 weeks I put lot effort to complete PMBOK guide 3 times and Rita Mulcahy guide 3 times(at least daily I spent 9 hours). I gone thru each process group, each knowledge area thoroughly. I remembered PMBOK guide page 70, formulas thoroughly and written down on the exam sheet.

My suggestion is read PMBOK guide chapter first and read corresponding chapter in Rita Mulcahy repeat same for at least 3 times. After that do mock exams as much as you can. Remember inputs, Tools & Techniques, outputs (ITTO) as much as you can.

I went to the exam centre around 1 hr. before. In this 1 hour time I had gone thru ITTO and time & cost formulas. While taking exam I took 2 minutes break after completing around 100 questions. I marked around 40 questions for revision and I gone thru them in last 30 mins. Finally Congratulations! Screen appeared and I am so happy with result.

Thanks for reading my PMP exam journey.

J2EE Enterprise Archive (EAR), Web Application (WAR), WebServices (WAR) file structure:

J2EE Enterprise Archive (EAR), Web Application (WAR), WebServices (WAR) file structure:
--------------------------------------------------------------------
I will briefly explain here about J2EE applications file(EAR, WAR) structure to follow.

EAR (Enterprise Archive)File Structure

EAR_FILE_NAMe.ear
   WAR file(s) – web modules
   JAR file(s)—EJB modules
   RAR file(s)
   lib/
      JAR and ZIP files for shared libraries with in j2ee application
   META-INF/
      MANIFEST.MF
      application.xml (descriptor for j2ee web applications)

Here EAR (Enterprise Archive) can contain more than one Web modules (WAR files), More than EJB modules (JAR files).

Every Web module, EJB module details need to be entered in application.xml file under META-INF folder.

Example application.xml file format:
-----------------------------------
<?xml version="1.0" ?>
<application>
<display-name>J2EE Application</display-name>
<description>
sample J2EE application
</description>

<module>
<ejb>EJB_JAR_FILE_NAME.jar</ejb>
</module>

<module>
<web>
<web-uri>WAR_FILE_NAME.war</web-uri>
<context-root/MYURL</context-root>
</web>
</module>

<module>
<ava>CLIENT_JAR_FILE_NAME.jar</java>
</module>
</application>


WAR (Web Archive)file structure:

war_file_name.war
   html_folder(optional)
   js_folder(optional)
   JSP_folder(optional)
   Images_folder(optional)
   WEB-INF/ (must be there in War file)
      web.xml (standard J2EE Web descriptor file. This must be in war file)
      classes/
         common util, servlet classes,
      lib/
         JAR and ZIP files for shared libraries within web application

Here web application WAR file must contain WEB-INF folder and under that web.xml file must be included then only it is identified as web application by J2EE container.

WEB-INF can contain classes, lib folders. Java classes under lib folder (.class, or classes in jar, zip files) and classes folder are accessible within web application from anywhere like from jsp’s, servlets.

For modularity you can create/place html, js, images, jsp files under their respective folders. it is totally up to you to follow modularity.

Web.xml format:
----------------------
<?xml version = '1.0' encoding = 'windows-1252'?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<description>web.xml file for Web Application</description>
<servlet>
<servlet-name>SearchServlet</servlet-name>
<servlet-class>com.yourcompany.module.ServletName</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>SearchServlet</servlet-name>
<url-pattern>/search</url-pattern>
</servlet-mapping>

<session-config>
<session-timeout>35</session-timeout>
</session-config>

<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>

<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>

</web-app>

Webservices Archive File Structure:

WebService_FILE_NAME.war
   WEB-INF/
      web.xml (standard J2EE Web descriptor file. Must be in war file)
      webservices.xml (J2EE descriptor)
      mapping_file.xml
      wsdl/
         wsdl_file.wsdl
      classes/
         class files
      lib/
         JAR and ZIP files for dependency classes

Please write back to me if you come up with more queries here.

In my next blog I will explain more about deploying EAR, WAR files on Oracle 10g application server OC4J container.