01 September 2009

Composite Sensors


Composite sensors, as the name suggests, are nothing but sensors on the composite level. They can be configured on services and references in any composite. Once configured these sensors then can be used to track the input and output for a composite instance.

Configuring Composite Sensor:

For the current POC, I created a composite with name SensorPOC which takes input a string and returns Hello attached.

Steps for configuring the sensors are similar to that of the good old BPEL process sensors.
In short:

1) Go to composite.xml design view. Click the button for composite sensors. This is present in the top pane.




2) A new window for configuring the sensors will pop up. Select the service for which you want to configure the sensors and click plus sign


3) Name the sensor. Select the appropriate operation. Selecting the operation is important as the variables will be available based on what operation you select.


4) Click the pencil button to choose the type of sensor to be configured. Three types of sensors can be configured - Variables, Expressions and properties. In variable sensors, we can track only values in the variables. In the expression sensors, we can track values of different expressions created using variables and Xpath functions In the properties sensors, we can get values for different properties of that composite.

5) Click Variables.In the XPath window, select the appropriate node and click OK.


If you want to set any filter, you can set it by adding XPath expression in Filter Part. The meaning of filter is that sensor will work only if the filter condition is true. In the POC, I added a filter that checks whether input string has 'a' present.

Note that Composite sensor action is "DBSensorAction". This is a current restriction in Release1.

Click OK. Configuration is done.


Viewing on Console:

1) After deploying the process, open the process on BPEL Console and create an instance.
2) View the instance by clicking the instance-id. This opens pop-up window. In the same window We have a folded node for sensors.Clicking it will show the sensors. Note that sensors will be only activated if the filter condition is met.


Using the sensors as trackers.

In the Instances tab for the composite, we have Search option available. In the right side, we have a button called "Add Fields". Clicking this button will show the list of sensors which can be added. Once the sensor is added, it can be used to filter the instance based on the input value.



08 August 2009

Creating connection factory for database adapters


While configuring a database adapter, we need to specify the JNDI name for the connection factory. At run time, this name is used by the application server to get the Datasource JNDI and connection parameters for the database.

When any adapter is configured in JDeveloper using the adapter configuration wizard, this name is automatically configured as eis/DB/ <Connection Name>.
In SOA suite 10.1.x , after the adapter was configured, the wsdl file used to have the database connection parameters in the form of .mcf properties. Due to this reason, even though the connection factory was not created on the server, the code used to work fine. In fact even though the connection factory was created and was pointing to some other database, the mcf parameters used to overwrite those values.

In 11g, things are bit different. Now, the JNDI name for the connection factory and name of the connection is no more part of the adapter wsdl file. These values are stored as a part of a .jca file.
Name of the file is < Adapter Name > _db.jca. Also, this file does not contain all those mcf properties which were present earlier. So if the connection factory is not created , or not pointing to expected Datasource JNDI location, then the process throws error saying that the JCA binding was unable to create the connection.

However, there is a small step different here. Even if the correct connection factory JNDI name is mentioned in this jca file and it is present on server, the process still throws the same error.

The reason is that the JNDI name has not been added to the resource adapter that has been deployed on the server. This issue can be solved by adding this connection factory instance to the weblogic-ra.xml file of the datbase adapter application which is deployed on the server

This can be achieved in following steps:

1) Create the corresponding Data source using the console.

2) Go to following location:
<Oracle_SOA1>\(folder where SOA server installed) \soa\connectors
This folder contains the application rar files for all the adpaters that are deployed.
Each of this will contain a weblogic-ra.xml file which stores the resource adapter details.
What we need to do is add our connection factory in this file.

3) Take backup of the folder(so that if you mess up then you have the copy present). Then in some other location on your machine, copy the DbAdapter.rar file and unzip it. It will have a meta-inf folder inside which we have our dear weblogic-ra.xml file present.

4) Open this file. You can see that this file has information about the connection factory for SOA Demo application. This basically means that, it has already given you a sample connection factory which connects to the DEV_SOAINFRA schema of your SOA database.(DEV is the prefix, it is what you chose to give while installing.) However, for all other databases, we would have to add entries in this file. To do this, in the connection-definition-group node, at the end, create one more
connection-instance node. In the following example, I have added a connection-instance node with Connection factory as "eis/DB/XEKetan" and Datasource JNDI as "jdbc/XEKetanDS"







5) Once this is done, save the file and again create the rar file.

6) Replace the adapter's rar file with this new rar file.

7) In the console homepage, go to Deployments (click the link present in the left pane) . This will show list of the deployed applications. It has one application as database adapter (DbAdapter).
Select the check box for the application and click update button.

8) Select "Redeploy this application using the following deployment files:" radio button

9) For the source path, if the path is different, then browse and give this rar files location. Click Next.

10) It will ask for reviewing the choices. If values are correct, click Finish. Adapter will be updated and then it will again come back to deployments page. Server restart is not required.


Once this is done, we can use this connection factory in our SOA project.


28 July 2009

Installing SOA Suite 11g..

In this article, we would see how to install Oracle SOA Suite 11g R1 (11.1.1.1) on a Windows XP machine.

For installing 11g, minimum 1GB RAM is required. However, it is better to have atleast 2 GB RAM available.

Major steps in the installation are :

1) Installation of Oracle Database 11g
2) Creating Oracle SOA Schemas in the database
3) Installing Weblogic Application Server
4) Installing SOA suite 11g
5) Creating Weblogic domain
6) Starting and Accessing the Weblogic server
7) Installing JDeveloper



Step1 : Installation of Oracle Database 11g

This part is not covered here since many blogs are available which detail out the database installation.
1)Download Oracle 11g database setup (11.1.0.6 or higher) from here
2)Create a folder in C:\Windows. I used folder name OracleEleven. This will be your installation directory for all the installations.
3)Create two folders in this directory. One with name as Database and one with name as Middleware.
4)Install the database in the Database directory with basic install


Step2 : Creating Oracle SOA Schemas in the database

1)In SOA 10g, the internal database could be used which was OLite. In 11g, we need to use an external database. SOA needs to store the instance metadata and other data into some tables which are created inside the SOA schemas. For this reason, these schema need to be created in the database.
Download the zip file which contains the schemas to be created.
The file is present at this location. Name of the file is "ofm_rcu_win32_11.1.1.1.0_disk1_1of1.zip"
2)Unzip the file in any location in C:
Make sure that you are unzipping the file in C: and not on desktop or my documents.
The reason for this is that if the files are unzipped in a folder say on desktop, then the absolute path for bin folder contains spaces (documents and settings) and hence the setup is unable to find the batch file.
3)Once the files are unzipped, go to the location where they are unzipped.
Go to rcuHome/bin folder and run the batch file rcu.bat.
4)In the installer window, select create repository option. Give the database credentials. Make sure that you are providing user name with SYSDBA role.
5)Repository creation utility will check for pre-requisites. If any warning for character set pops up, click ignore.
6)Once check is done, on the next page give the name of prefix to be used.
This can be any string but usually given as Dev, representing the development environment.
In the component list, select following schemas:

a) AS Common Schemas > Metadata Services
b) SOA Infrastructure > SOAInfrastructure
c) SOA Infrastructure > User Messaging services (Auto selected)

8)Again, after checking prerequisites, on the next screen, provide schema passwords.
Its better to provide same password - welcome1 - for all schemas so that its easy to remember.
9)Ignore table spaces screen and go to next.Create schemas.

Step3 : Installing Weblogic Application Server

1)Download the executable for Weblogic server. It can be downloaded from here.

2)If you have not installed anything, there won’t be any middleware home present.
Select “create a new middleware home” and middleware directory created earlier in step1 as the Middleware home directory.
3)Uncheck the update
4)Select Typical
5)Check the directories
6)Select “All users”

Installation will start. Once the installation is complete, a screen with Done button will appear.
It will also have an option of run quickstart. Unselect the option.
We create the domain using this option, but only after the installation of SOA suite.


Step4 : Installing SOA suite 11g

1)Download the zip file for the SOA suite 11g from here
2)Name of the file is: ofm_soa_generic_11.1.1.1.0_disk1_1of1.zip
3)Unzip the file and go to the folder in command prompt.
4)Run the command setup.exe –jreLoc <space > <JRE Location>
Where JRE Location is the location of the JRE installed while Weblogic installtion in Step 3 above.
The location is folder named jdk160_11 in the middleware home. Note that we need to provide the absolute path here.
The installer window will open. Specify the Middleware home. Click Install. The setup will complete on its own. Click Finish once done.


Step5 : Creating Weblogic domain

1)Open the folder wlserver_10.3/common/bin in the middleware home
2)Run the file config.cmd
3)The prompt will launch a wizard for configuring the middleware. Select ‘create new Weblogic domain’
4)Select the following products:
a) Oracle SOA Suite - 11.1.1.0 (Oracle_SOA1)
b) Oracle Enterprise Manager - 11.1.1.0 (Oracle_SOA1)
c) Oracle JRF – This gets auto-selected

5)Give domain name. Default is base_domain.
6)On the next page, give username and password
7)On next screen select Development Mode in the left pan and Sun SDK(1.6.0_11) as the JDK in right pan
8)Next screen is for configuring the JDBC component schema. We had selected the four schemas earlier. Now they appear here.
9)For each schema provide the respective details. Values are:
Vendor : Oracle (default value)
DBMS Service : orcl
Driver: Oracle's Driver (Thin) for Service connections; Versions:9.0.1,9.2.0,10,11 (Default value)
Hostname: localhost or hostname where datasbase has been installed.
Schema owner : Don’t change
Port: 1521 or the correct port where DB is listening.
Schema Password: Enter the password which was provided earlier.
10) Click Next. The wizard will test the connections. Once done, click next, next and then click Create for creating the domain. Once complete, click Done to finish.

Step6 : Starting and Accessing the Weblogic server

To start the Weblogic server, go to middleware_home directory. In this, go to user_projects/domains/<domain_name>/bin folder.
Run the file startWebLogic.cmd
To start the managed servers (SOA suite) , run the file startManagedWebLogic.cmd, which is present in the same location.
Here, note that you need to provide the name of server. For SOA suite, the name is soa_server1
This name can be found in file startManagedWebLogic_readme.txt in the domain's home directory. The command is thus startManagedWebLogic.cmd soa_server1
Once the servers are in state running, console can be opened.
So open the browser and go to console main page by going to URL. hostname:port
Weblogic Application server console can be accessed on port 7001.
Once the main page opens, console can be opened by clicking the link on left hand top side of page, which says GO To Fusion Middleware Control. Once there, access the console by entering valid username and password.
Once in, verify that in the left hand side pane, in the Farm, a folder with name SOA appears and has a node with name soa_infra

Step7 : Installing JDeveloper


Once all the above is done, remaining part is very simple. JDeveloper studio version can be downloaded from here. Name of the file is jdevstudio11111install.exe

Along with this, an extension for JDeveloper also needs to be downloaded. This extension is required for developing SOA projects and file name is soa-jdev-extension.zip. You don't need to unzip the file.

Once this is done, start the installation for JDeveloper by running the installer.
If the Weblogic server was installed on the same machine, then you already have the middleware home present.
If not, then create a new middleware home. Once installation is complete, open JDeveloper. (select default role)
Go to Help > Check for Updates.
Select ‘Install from local file’ and browse the zip file downloaded as extension.
JDeveloper will ask for restart. Let it restart on its own.
Once re-started, click new application and verify that in the list of application types "SOA Application" is present.
That is it.. we are done!


Happy learning….