tag:blogger.com,1999:blog-58798620829231201442024-02-20T23:44:24.760+05:30Creative SOALooking SOA through my eyesLalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-5879862082923120144.post-73577991970935376162012-01-29T15:38:00.005+05:302012-01-29T19:13:36.622+05:30Special Character Handling in XSL (&) Ampersand<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<span style="font-family: inherit;">This special character handling is specifically for Oracle SOA 10g. When a XML payload comes in string format, with all characters escaped and the data contains special character like '&', this trick will be helpful in handling this payload.</span><br />
<span style="font-family: inherit;"><br /></span><br />
<span style="font-family: inherit;">Follow below steps to be parse XML string containing special character in XSL file-</span><br />
<br />
<span style="font-family: inherit;">1. Add following namespace in the xsl file</span><br />
<span style="font-family: inherit;"> <b>xmlns:str=http://www.oracle.com/XSL/Transform/java/java.lang.String</b></span><br />
<span style="font-family: inherit;">2. Declare a variable to hold escaped format of input</span><br />
<span style="font-family: inherit;"> <b> <xsl:variable name="EscapedEBM" select="....."/></b></span><br />
<span style="font-family: inherit;">3. Add an ampersand variable</span><br />
<span style="font-family: inherit;"> <b><xsl:variable name="fixedAmpersand">&amp;amp;amp;</xsl:variable></b></span><br />
<span style="font-family: inherit;">4. Call the replace all method and hold the output to EBM variable-</span><br />
<span style="font-family: inherit;"> <b> <xsl:variable name="EBM"></b></span><br />
<span style="font-family: inherit;"><b> <xsl:value-of select="str:replaceAll($EscapedEBM,'\u0026(amp;)*+',$fixedAmpersand)"/></b></span><br />
<span style="font-family: inherit;"><b> </xsl:variable></b></span><br />
<span style="font-family: inherit;">5. Now use the<b> orcl:parsedEscapedXML($EBM)</b> to get XML representation of string.</span><br />
<div>
<br /></div>
</div>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-88361889438077010512010-06-13T23:01:00.000+05:302010-06-13T23:01:39.658+05:30Enable Broadcom Wireless on Linux Mint 9 IsadoraThe next thing to do in Linux mint is to browse...Internet. But what is this? You are unable to connect to the wifi router, which was working fine in Windows. This solution approach is only for Broadcom Wireless Device as I have Dell Inspiron Laptop...<br />
<br />
So the steps are:<br />
<br />
<ol><li>Download the Broadcom drivers: <a href="http://www.broadcom.com/support/802.11/linux_sta.php" target="_blank">http://www.broadcom.com/support/802.11/linux_sta.php</a></li>
<li>Unpack and modify the <b>‘src/wl/sys/wl_linux.c‘</b>:<br />
Line 35 (after #include <linux/etherdevice.h>) add:<br />
<b>#include < linux/sched.h ></b></linux/etherdevice.h></li>
<li>Compile the code with: make</li>
<li>Copy the new driver: <b>sudo mv wl.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless</b></li>
<li>Update dependencies: <b>sudo depmod -a</b></li>
<li>Modify the blacklist to include the ‘b43′ and ’ssb’ drivers /etc/modprobe.d/blacklist.conf (Add below the bcm43xx blacklist)</li>
<li>Modify the /etc/rc.local to include before the exit(0):</li>
<b> rmmod ssb </b></ol><ol><b>modprobe wl</b></ol>Restart your system!!!<br />
<br />
You will notice at bottom right corner of the desktop, network manager started detecting the wireless networks available in your area...Connect to your Home Network by giving security key...<br />
<br />
Happy browsing...Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com1tag:blogger.com,1999:blog-5879862082923120144.post-47858116996754405052010-06-05T18:20:00.000+05:302010-06-05T18:20:29.060+05:30Install Linux MintThe latest version of Linux Mint (Linux Mint 9 Isadora)got released last month. It has lot of new features.<br />
My plan is to Install Oracle SOA Suite 11g on Linux Mint....<br />
I'm going to install Linux Mint in my laptop i.e. Dell Inspiron 1545 (Icy Blue ;)))<br />
Here I’m showing simple steps to install it using a USB drive -<br />
<br />
<ol><li>Download ISO file from <a href="http://www.linuxmint.com/edition.php?id=52" target="_blank">http://www.linuxmint.com/edition.php?id=52</a></li>
<li><a href="http://www.linuxmint.com/edition.php?id=52" target="_blank"></a>Download Universal USB Installer from <a href="http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/" target="_blank">http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/</a></li>
<li><a href="http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/" target="_blank"></a>Run Universal USB Installer</li>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFumwDIlR-cUtLJWKBclQfvxIBWYxdEffmemYqFLf8SmeLAhyphenhyphenWZN_n6jZEVezzfgRmTrIsuLtD98AUlw7f0YIbe-G20YMCH0ERl5N3gLENX-0Trarra7mUroyJVs4FacX4Io-gwCZ-Wh8_/s1600/usbinst.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFumwDIlR-cUtLJWKBclQfvxIBWYxdEffmemYqFLf8SmeLAhyphenhyphenWZN_n6jZEVezzfgRmTrIsuLtD98AUlw7f0YIbe-G20YMCH0ERl5N3gLENX-0Trarra7mUroyJVs4FacX4Io-gwCZ-Wh8_/s320/usbinst.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Universal USB Installer</td></tr>
</tbody></table>
<li>Provide the location of LinuxMint ISO file downloaded in Step 1. This will create a bootable Linux Mint USB drive.</li>
<li>Restart the system and boot it from USB drive.</li>
<li>Finally, you will get Live Linux OS running. Click Install LinuxMint</li>
<li>Follow the steps during installation.</li>
</ol><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://www.linuxmint.com/img/screenshots/isadora/welcome.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://www.linuxmint.com/img/screenshots/isadora/welcome.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Linux Mint</td></tr>
</tbody></table>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-57899074110480299942009-01-01T15:29:00.014+05:302010-01-24T14:14:42.233+05:30Domain-Value Maps and Cross References<b>>>Requirement -</b><br />
<p align="justify">When an object flows from one system to another system, both using their own entities to represent the same type of object, transformation is required to map the entity from one system to another. For example, when a new customer is created in a SAP application, you might want to create a new entry for the same customer in your Oracle E-Business Suite application named as EBS.<br />
<br />
So the functionality is required to map the entities from different domains. Even if in future, another domain gets added, again is the requirement to represent that entity in some common entity format. For example when an object gets created in system A with unique identifier A001, the same object is propagated in system B with identifier B001. The decode functionality is required to map B from A.<br />
<a name='more'></a><br />
<b>>> Solution -</b><br />
Oracle ESB provides two solutions for this problem -<br />
<br />
<b>>>1 Domain-value map –</b><br />
A domain-value map can be created and populated using Oracle ESB Control. It can than be used with the Oracle JDeveloper Mapper tool while developing XSLT data transformations during design time. Then, at runtime the lookups for application-specific values occur. It uses xml file to store the mapping values.<br />
<br />
For example, suppose we want to use a domain-value map to perform a runtime lookup to convert source id to the target id. Using Oracle Service Bus, the source id is passed and the target id returned using lookup function in transformation.<br />
<br />
<b>>>1.1 Architecture -</b> <br />
Oracle ESB DVM uses xml to store the mapping values. The response time of the first call of lookup-dvm is high, as internal cache manager loads the xml document into the memory. If the data is frequently changing than the response time increases, because internal cache manager has to reload it again and again. The search algorithm used by lookup-dvm is sequential search. If the value to be found exists in the last row of dvm file, than the response time increases. The DVM functionality of Oracle ESB is memory intensive if it has large set of mapping values.<br />
<br />
DVM is best when having small set of mapping values. Internal cache manager increases the performance tremendously in this case, as xml document always resides in runtime memory.<br />
<br />
<b>>>2.1.2 How to use –</b> <br />
Creating and populating DVM – There are two ways of creating and populating data value maps in Oracle ESB. Either to manually edit the dvm using Oracle ESB Console or import values using import command provided in Oracle ESB console. DVM does not allow to enter two rows having same set of values. Manual edit functionality should be used, when we don’t have large set of mapping values and which are frequently changing. Importing dvm files is the other options, provided the dvm files have specific format.<br />
<br />
Looking up – To lookup the values we have lookup-dvm function. This function can be used in both Oracle ESB and Oracle BPEL through transformation. If the lookup target domain has multiple values for specific source domain value then it returns the first value, as this search is sequential. If lookup fails to find the target domain value, then it returns the default value passed in lookup-dvm function.<br />
<br />
<b>>>2.2 Cross References –</b><br />
A cross reference table consists of following two parts, metadata and the actual data. The metadata is created by using the cross reference command line utilities and is stored in the repository as an XML file. The actual data is stored in the database.<br />
<br />
You can use a cross reference table to look up column values at run time. However, before using a cross reference to look up a particular value, you need to populate it at run time. This can de done by using the cross reference XPath functions. The XPath functions enable you to populate a cross reference, perform lookups, and delete a column value. These XPath functions can be used in the Expression builder dialog box to create an expression or in the XSLT Mapper dialog box to create transformations.<br />
<br />
<b>>>2.2.1 How it works -</b> <br />
This functionality of finding the cross domain mapping uses both xml and database. XML is used to store the metadata of the xref table and actual data get stored in database. Creation of xref tables is done using xreftool command line utility. Default datasource used by cross reference has jndi name jdbc/xref. Other datasources can be used are jdbc/esb and jdbc/BPELServerDataSource. To start working with cross reference, it is required to create a table in any of the above datasources. Following sql query is used to create XREF_DATA table -<br />
<br />
<code><br />
CREATE TABLE XREF_DATA ( XREF_TABLE_NAME VARCHAR2(4000) NOT NULL, XREF_COLUMN_NAME VARCHAR2(4000) NOT NULL, ROW_NUMBER VARCHAR2(48) NOT NULL, VALUE VARCHAR2(4000) NOT NULL, IS_DELETED VARCHAR2(1) NOT NULL, LAST_MODIFIED VARCHAR2(100) NOT NULL, LAST_ACCESSED VARCHAR2(100) NOT NULL );<br />
</code><br />
So here for each lookup, a jdbc call is made to select target domain value. So this type of referencing is not memory intensive. This proved to be best if we have large set of mapping values, and is dynamic. The performance is totally depends on the type and the location of the datasource. It also supports 1:M mapping of domain values.<br />
<br />
<b>>>2.2.2 How to use –</b> XPath functions provided can be used in transformation and assign activity of Oracle BPEL. These functions have better exception handling capability. To import and export the cross reference tables, command line utilities such as xrefexport and xrefimport are provided.</p>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com1tag:blogger.com,1999:blog-5879862082923120144.post-41183063545321315182008-10-03T15:38:00.004+05:302010-01-24T14:25:28.842+05:30Cloud Computing and SOA<p align="justify">There are lot of things happening in the field of SOA, which is making SOA always hot. As far as banefits of SOA is considered, the first banefit comes to our mind is Reusability. Reusability is making our implementation faster as a incremental approach. When our reusable component is attached with the most of the application for integration, it gives the real visibility of SOA. Succes of SOA.<br />
<br />
But the time comes when this reusability become resource expensive. This is the time when we need to think of using reuable component in the highly available and computing environment. Initially we would not face any challenges by using reuable component. But day by day our reusable component can go into the heavly used zone.<br />
<br />
To overcome this kind of situation Cloud computing comes into picture. Its about creating data centers for higly scalable environment. Not the grid, but the fluid i.e. Cloud. The term called Cloud Computing. The Cloud can be contracted or expanded according to the need of your application at any point of time. Its in evolution process that comes out of grid or distributed computing. Cloud computing is very useful where you need to run high backend as well as front end processing. This all emerged due to the Web 2.0 era. According to the study made, by 2010 there will be 4 billion cell phones. To support these much devices, we need highly scalable, responsive model. To achieve this target Cloud Computing will be very useful.</p>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-25504831986570774892008-08-29T11:47:00.008+05:302009-10-16T01:04:33.998+05:30ESB : Error Hospital<span style="font-family: Georgia, 'Times New Roman', serif;">Its time to handle errors occured in Oracle ESB.<br />
I would like to describe Error Hospital using a simple<br />
usecase...<br />
<br />
</span> <span style="color: red;"><strong><span style="font-family: Georgia, 'Times New Roman', serif;">-->execute-->(RS)--async-->callWebService-->(WS)</span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span> </span><span style="font-family: Georgia, 'Times New Roman', serif;">RS - Routing Service<br />
WS - Web Service<br />
<br />
Suppose while invoking callWebService some error occured,<br />
as we are calling web service asynchronously it can be retried.<br />
<br />
To automate the process of retring the web service, we need to implement<br />
Error Hospital, which is nothing but a BPEL process.</span> <br />
<a name='more'></a><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
<br />
</span> <span style="color: red;"><strong><span style="font-family: Georgia, 'Times New Roman', serif;">Why BPEL process not ESB ?</span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span> </span><strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">1></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;">Suppose some error occured in ESB Error Hospital process, than the error hospital can recursively invoked again and again, which can make our server unstable.<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">2></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;">In BPEL, we have the option of Human Task, as in such kind of errors we need human intervention, which is not possible in ESB.<br />
<br />
</span> <span style="color: #009900;"><strong><span style="font-family: Georgia, 'Times New Roman', serif;">Solution :</span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span> </span><strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">1></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Create an empty BPEL process.<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">2></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Create an JMS Adapter as follows :<br />
</span> <span style="color: #009900;"><strong><span style="font-family: Georgia, 'Times New Roman', serif;"> a></span></strong></span><span style="font-family: Georgia, 'Times New Roman', serif;"> Service Name : ReadESBError<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> b></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> JMS provider : Oracle Enterprise Messaging Service(OEMS) Memory/File<br />
</span> <span style="color: #009900;"><strong><span style="font-family: Georgia, 'Times New Roman', serif;"> c></span></strong></span><span style="font-family: Georgia, 'Times New Roman', serif;"> Connection : <your application server><br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> d></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Operation Type : Consume Message<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> e></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Consume Operation Parameters :<br />
Destination Name :</span><strong><span style="font-family: Georgia, 'Times New Roman', serif;">jms/topic/ESB_ERROR</span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
Message Body Type : TextMessage<br />
Message Selector : This is an important parameter which will filter your errors.<br />
This criteria can be given as operation name (in our case : "execute")<br />
and system guid which can be fetched from oraesb schema using following query<br />
</span> <strong><span style="font-family: Georgia, 'Times New Roman', serif;"> "SELECT GUID FROM WF_SYSTEMS WHERE NAME = 'LALIT';"</span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
This will filter errors of your importance.<br />
Hence value will be :<br />
</span> <strong><span style="font-family: Georgia, 'Times New Roman', serif;"> ESB_SYSTEM_GUID = '<system guid>' AND ESB_EVENT_KEY = 'execute'</span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> f></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Schema will be the same as used while executing RS.<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> g></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Finish<br />
<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">3></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Create Recieve operation for incoming JMS Adapter.<br />
Add Header Variable in Adapters tab of recieve activity.<br />
Header variable will be of message type : InboundHeader_msg which is defined in jmsAdapterInboundHeader.<br />
<br />
<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">4></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Create one more JMS Adapter<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> a></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Service Name : RetryESBError<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> b></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Operation Type : Produce Message<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> c></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Produce Operation Parameter<br />
Destination name : </span><strong><span style="font-family: Georgia, 'Times New Roman', serif;">jms/topic/ESB_ERROR_RETRY</span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
everything else default<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> d></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> same schema as above.<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> e></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Finish<br />
<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">5></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Create invoke Activity for RetryESBError.<br />
Attach header variable in adapters tab.<br />
Header variable will be of message type : OutboundHeader_msg which is defined in jmsAdapterOutboundHeader.<br />
<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">6></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Add activity Human Task and attach input variable to be reviewed by human. Assign Reply from human task to outputVariable.<br />
<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">7></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Header Transformation<br />
This is an important part of Error Hospital.<br />
Use transformation from inputHeader to outputHeader.<br />
Use automap feature to transform. Assign all input properties to output properties as it is.<br />
<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">8></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Now we require to modify some of the output header properties.<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> a></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> ESB_RECEIPIENT_LIST : ',LALIT,'<br />
If you dont know the esb system name that can be found using property<br />
ESB_SYSTEM_GUID value.<br />
Use query on oraesb schema<br />
"SELECT NAME FROM WF_SYSTEMS WHERE GUID = <ESB_SYSTEM_GUID>"<br />
Databse adapter can be used.<br />
<br />
</span> <strong><span style="color: #009900;"><span style="font-family: Georgia, 'Times New Roman', serif;"> b></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> ESB_EVENT_KEY<br />
Extract flowid from inboundHeader property ESB_FLOW_ID<br />
Then the value will be 'Resubmitted-<flowid>'<br />
<br />
</span> <strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">9></span></span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"> Error Hospital completed.<br />
<br />
Try to invoke RS using some invalid values, you can see a new bpel error hospital instance. Update values using workflow console and resubmit it.</span>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com1tag:blogger.com,1999:blog-5879862082923120144.post-5668732280348059292008-08-25T14:12:00.008+05:302009-10-16T01:10:32.893+05:30OWSM : Using Keystores<span style="font-family: Georgia, 'Times New Roman', serif;">Today I'm going to talk about the creation of the keystore</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">for client side and server side, using java keytool.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">As in earlier post, I talked about the policies to be applied</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">to secure web service, now I'll show you the creation of keystore</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">to sign and encrypt your channel between client and server.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">> Create Keystores</span></span></strong><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Here I'm going to use java keytool to generate keystores.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">This tool can be found at location</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><java_home>/bin</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Create two keystores to be used by client and server as :</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Go to cmd prompt</span><br />
<pre class="java" name="code">keytool -genkey -alias server -keyalg RSA -keysize 1024 -keystore server.jks -storepass oracle_server -keypass server_key -dname "cn=Lalit Jolania, ou=oracle, o=lntinfotech, c=IN"</pre><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Above command will create a keystore file called : server.jks</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">with</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">private key alias : server</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">private key password : server_key</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">keystore password : oracle_server</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"></span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"></span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><a name='more'></a></span><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Similarly create keystore for client : client.jks</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">with</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">private key alias : client</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">private key password : client_key</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">keystore_password : oracle_client</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">You can modified the command line option as per your requirement.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Details about keytool can be found </span><a href="http://java.sun.com/j2se/1.3/docs/tooldocs/win32/keytool.html"><span style="font-family: Georgia, 'Times New Roman', serif;">here</span></a><span style="font-family: Georgia, 'Times New Roman', serif;">.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">>Export Certificate</span></span></strong><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Now we need to export certificates for above private keys.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">To export certificate use following command -</span><br />
<pre class="java" name="code">keytool -export -alias server -file server.cert -keystore server.jks -storepass oracle_server</pre><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Above command will create a certificate file named server.cert</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Similarly export client.cert from client.jks</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">> Import Certificate</span></span></strong><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Now we need to exchange these cetificates between client and server keystores.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">To import client.cert to server.jks use below command -</span><br />
<pre class="java" name="code">keytool -import -alias client_cert -trustcacerts -file client.cert -keystore server.jks -storepass oracle_server</pre><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Alias for client's certificate will be client_cert</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Similarly import server.cert to client.jks</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Alias for server's certificate will be server_cert.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">In this way we have created keystores, which are now available</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">to secure your channel.</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Go to OWSM -</span><br />
<strong><span style="color: #3366ff;"><span style="font-family: Georgia, 'Times New Roman', serif;">Steps for ServerAgent</span></span></strong><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">>Request pipeline</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Add step Decrypt and verify signature</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Now you can configure it using server.jks</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Decryptor's keystore password : oracle_server</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Decryptor's private-key alias (*) : server</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Decryptor's private-key password : server_key</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Verifying Keystore password : oracle_server</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Signer's public-key alias (*) : client_cert</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">>Response pipeline for server agent</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Add step Sign Message And Encrypt</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Configure it with server.jks</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Signing Keystore password :oracle_server</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Signer's private-key alias (*): server</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Signer's private-key password : server_key</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Encryption Keystore password : oracle_server</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Decryptor's public-key alias (*) : client_cert</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="color: #3366ff;"><strong><span style="font-family: Georgia, 'Times New Roman', serif;">Similiary for client agent</span></strong><span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span> </span><span style="font-family: Georgia, 'Times New Roman', serif;">> Request pipeline</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Add step Sign Message And Encrypt</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">> Response pipeline</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Add step Decrypt and verify signature</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Configure above steps using client.jks</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">Hence we have secured our channel in a standard way. You can</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">clearly visualize how exchange between client and server is</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">happening. Use Log step in OWSM to see the encrypted and signed</span><br />
<span style="font-family: Georgia, 'Times New Roman', serif;">contents of Message.</span>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-5371178485141312282008-08-22T18:06:00.003+05:302008-08-29T14:11:45.316+05:30Words from OSHO<em><span style="color:#ff6600;"><strong>"Without meditation, energy remains passion; with meditation, the same energy becomes compassion. Passion and compassion are not two energies, they are one and the same energy. Once it passes through meditation, it is transformed, transfigured; it becomes qualitatively different. Passion moves downwards, compassion moves upwards; passion moves through desire, compassion moves through desirelessness; passion is an occupation to forget the miseries in which you live, compassion is a celebration, it is a dance of attainment, of fulfillment...you are so fulfilled that you can share."</strong></span></em>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com2tag:blogger.com,1999:blog-5879862082923120144.post-73967277625091222392008-08-18T11:49:00.003+05:302008-08-18T13:04:30.544+05:30OWSM : Applying PoliciesTo make message flows between client and server secure, <br />we need to maintain following Policies<br /><strong>1> Authentication</strong> - Check whether the user is authenticated<br /><strong>2> Integrity</strong> - Check whether message is being altered<br /><strong>3> Confidentiality </strong>- Check whether message is being encrypted<br /><br />Using OWSM you can apply all of the above policies.<br /><br />Use any one step below to apply authentication :<br />1> Active Directory Authenticate<br />2> File Authenticate<br />3> Ldap Authenticate and others...<br /><br />Here there are two things to be considered,<br />one is authenication and other is authorization.<br />Authentication is simply checking whether the user is providing the right username and password or not...but second thing that is Authorization, meaning whether the person has permission to access particular operation or not.<br /><br />OWSM allows you to manage authorization also using:<br />1> Active Directory Authorize<br />2> File Authorize<br />3> Ldap Authorize<br />4> Oracle Access Manager Authenticate Authorize and others...<br /><br />Everything is happening at OWSM, dont need to worry about...<br /><br /><strong>Next comes Integrity</strong><br />Sign the message, so nobody can alter it...forcing integrity..<br />OWSM provides option to sign the message...<br />SIGN it with your private key on one side...<br />on the other side VERIFY SIGNATURE with your public key<br /><br /><strong>Next is Confidentiality</strong><br />The message should not be readable.....no spy can see what are you sending....<br />Encrypt it using XML Encryption in OWSM...<br />Decrypt it on other side using XML Decryption....<br /><br />Applying above policies makes your transaction highly secure...<br /><br />Just do it...Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com1tag:blogger.com,1999:blog-5879862082923120144.post-5081972087619165022008-07-30T16:55:00.007+05:302008-08-14T16:49:18.623+05:30BPEL MailBox<strong> BPELMailBox</strong><br />Its all about how to utilize emails to make better Business Process.<br /><br /><strong>Use Case :</strong><br /><strong>Case 1></strong> A sends a mail to service@fusion.com<br /> with subject : <strong>upload to fusion directory</strong><br /><br /><strong>Case 2></strong> B sends a mail to service@fusion.com<br /> with subject : <strong>leave request from 10/10/2008 to 13/10/2008<br /></strong><br /><br /><strong>Case 3></strong> C sends a mail to service@fusion.com<br /> with subject : <strong>book conference room conf2</strong><br /><br /><strong>Case 4> </strong>D sends a mail to service@fusion.com<br /> with subject : <action code><br /><br />In above cases, each request says different actions to do using email subject code.<br /><br /><strong>Requirements:</strong><br /><strong>1></strong> Use same email id for each request.<br /><br /><strong>2></strong> Service should authenticate users.<br /><br /><strong>3></strong> Service should be <strong>hot-pluggable </strong>(meaning more services can be added later on.)<br /><br /><strong>Solution:</strong><br /><strong>1></strong> Create one BPEL Process which will be initialised by incoming mail.<br /> The inputvariable should be of type mailMessage. <br /> <a href="http://lalit-jolania.blogspot.com/2008/07/notification-based-initialization-of.html">Refer notification based initialization of BPEL process</a><br /><br /> Message recieved should be passed to ESB Service as :<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbKUauN5dYZGJ8WT1ZAD3hmtVkzrYkv2k37YcMPqX5WeMFd4gtilBS454mFAi76z5OkaVrtAH8gFqHrsq1TrrXAYhyy0r-wBUsLAYxCHOtcE3QQIzFciuIcM7fxJCPA-JPO9QAsqxVNcc4/s1600-h/BPELWrap.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbKUauN5dYZGJ8WT1ZAD3hmtVkzrYkv2k37YcMPqX5WeMFd4gtilBS454mFAi76z5OkaVrtAH8gFqHrsq1TrrXAYhyy0r-wBUsLAYxCHOtcE3QQIzFciuIcM7fxJCPA-JPO9QAsqxVNcc4/s400/BPELWrap.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5228770771973506482" /></a><br /><br /><strong>2></strong> Create ESB service with input type mailMessage again :<br /> Plug all service to be called as action using routing rules with filter expression.<br /> Filter expression will decide the actionable bpel process.<br />Note : All BPEL process should be asyncronous with input variable type mailMessage.<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioCfIQGSlUbHBz_htXhnsCfXzdf569KsnN8hN601HCQXA27rHkyiSQ0MPKNLxC_ZYC_uCdmaa5MPinCkw4tb8bUUIxq318joGYrxE7y3NP4oqHnyZOroVTviixTnfKikP7dD4iHN_MhYUN/s1600-h/ESBWrap.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioCfIQGSlUbHBz_htXhnsCfXzdf569KsnN8hN601HCQXA27rHkyiSQ0MPKNLxC_ZYC_uCdmaa5MPinCkw4tb8bUUIxq318joGYrxE7y3NP4oqHnyZOroVTviixTnfKikP7dD4iHN_MhYUN/s400/ESBWrap.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5228772143859578690" /></a><br /><br />There is no need to authenticate...as email server will authenticate you...<br /><br />Thats all...Now u can hot plug your services to this ESB Mail Box....<br /><br /><strong>Nice IDEA...</strong>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com3tag:blogger.com,1999:blog-5879862082923120144.post-8634875307628894052008-07-29T13:40:00.004+05:302008-08-14T16:46:17.530+05:30Invoking BPEL from Java<strong>1></strong> Import following libraries to project properties -<br /> a> <jdev_home>/intergration/lib<br /> orabpel.jar, orabpel-common.jar, orabpel-thirdparty.jar<br /> b> <jdev_home>/j2ee/home<br /> oc4jclient.jar<br /> c> Add J2EE<br /><br /><strong>2></strong> Create <strong>Properties</strong>, add following properties in java client<br /> Properties props = new java.util.Properties();<br /> //sets target bpel platform, oracle installation, this will be oc4j_10g<br /> props.setProperty("orabpel.platform","oc4j_10g");<br /> //sets jndi factory class, this is used to locate remote RMI server<br /> props.setProperty("java.naming.factory.initial","com.evermind.server.rmi.RMIInitialContextFactory");<br /> //sets target url for target rmi server (oc4j<br /> props.setProperty("java.naming.provider.url","opmn:ormi://172.28.10.138:6003:oc4j_soa/orabpel");<br /> //sets user name for the remote server<br /> props.setProperty("java.naming.security.principal","oc4jadmin");<br /> //sets password for the remote server<br /> props.setProperty("java.naming.security.credentials","welcome1");<br /><br /><strong>3></strong> Create message to be post to BPEL process<br /> String ssn = "lalit";<br /> // construct the normalized message<br /> String xml = "<input xmlns=\"http://xmlns.oracle.com/HelloWorld\">" + ssn + "</input>";<br /> NormalizedMessage nm = new NormalizedMessage();<br /> //payload is specific to the process you invoke, it is defined in the WSDL used by your BPEL process<br /> nm.addPart("payload", xml ); <br /><br /><strong>4></strong> Call BPEL using orabpel api as<br /> Locator locator = new Locator("<domain name>", "<domain password>", props);<br /> <br /> DeliveryService deliveryService = (DeliveryService)locator.lookupService(DeliveryService.SERVICE_NAME);<br /><br /> //Invoking bpel process<br /> NormalizedMessage res = deliveryService.request("<bpel process name>", "<operation name>", nm);<br /> <br /> //Since we used request, we can retrieve the return message<br /> Map payload = res.getPayload();<br /><br /> Using Map object you can extract payload.Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com2tag:blogger.com,1999:blog-5879862082923120144.post-16934484430335314482008-07-26T01:36:00.002+05:302008-08-14T16:46:17.530+05:30Error Directory<strong>Small information, but useful</strong><br />While dealing with File Adapters, if you translation fails in between then you can find the rejected messages in particular directory. Information about that is specified below.<br /><br />Oracle BPEL Process Manager: The errored records during translation are placed by default in the following directory:<br /><br /><SOA_HOME>\bpel\domains\domain_name\jca\project_directory\rejectedMessages<br /><br />Oracle Enterprise Service Bus: The errored records during translation are placed by default in the following directory:<br /><br /><SOA_HOME>\j2EE\jca\event_name\rejectedMessages<br /><br />Happy learning....Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-71827491981121105022008-07-24T10:16:00.003+05:302008-08-14T16:44:28.331+05:30Match made in HeavenOracle's aquisition of BEA is making everybody curious. In this post I am going to highlight some of the key features that we will going to see in future - in SOA arena, after BEA addition to the Oracle family.<br /><br /><strong>Highlights:</strong><br /><br />1) Oracle has integrated WebLogic into both JDeveloper and the Application Server, replacing OC4J. This will be good for performance and stability.<br /><br />2) Oracle has announced convergence of Oracle ESB and AquaLogic Service Bus towards <strong>Oracle Service Bus </strong>(will contain strong points of both ESB and AquaLogic-SB.<br /><br />3) Now JRockit, the world’s leading VM, will be the standard VM for Oracle.<br /><br />4) Coherence will be the central component for dehydration. So we get zero latency in the VM and unparallelled performance for the dehydration store.<br /><br />5) Integration of BPM Studio into the BPA Suite is the another good news. I must say that the Oracle BPA Suite, in conjunction with the Oracle SOA Suite (BPEL PM in particular) is the world’s best-of-breed for process management, design and execution. The added functionality from BPM Studio will create a comprehensive set of tools to support both process architecture, design and execution in a fully supported roundtrip engineering environment.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-85654875104611598962008-07-23T14:19:00.003+05:302008-08-14T16:44:28.331+05:30Oracle and BEA: The road ahead...Probably no other news has created waves like the news of Oracle acquiring BEA for $8.5 billion in April has done. In a recent web conference, Oracle president Charles Phillips and Oracle Fusion Middleware Senior Vice President Thomas Kurian covered product plans in the SOA, development tools, identity management and other middleware spaces.<br /><br /><br />Taking cue from what Oracle had to say, it plans to categorize BEA products into three areas:<br /><br /><ol><li>Strategic products : These will be adopted immediately with limited re-design into the Oracle Fusion Middleware platform.</li><li>Continue and converge products : These are BEA products being incrementally re-designed to integrate with Fusion Middleware. These products will continue to be developed and maintained for at least nine years.</li><li>Maintenance products : These are the ones that BEA had put on an end-of-life status and will get continued maintenance for five years.</li></ol>Kurian has promised that BEA customers will not need to make forced migrations on account of this acquisition. Customers who are already using BEA products will not have much of a haggle in terms of new licensing, and will continue to recieve maintainance support.<br /><br />Oracle shall move in the direction of using BEA WebLogic server as the OC4J container. Oracle Service Registry will serve as a UDDI-compliant registry to publish and register services.<br /><br />The Oracle Data Integration product continues as Oracle's entry in data integration and Oracle BPEL Process Manager provides SOA service orchestration. For event processing, BEA's Weblogic Event Server will be merged with Oracle Complex Event Processor.<br /><br />Oracle also plans to strengthen BEA's Tuxedo transaction processing software. Tuxedo is geared for C, C++, and Cobol applications as well as customers looking to migrate off of mainframes.<br /><br />In business process management, the Oracle BPA (Business Process Analysis) designer will be converged with BEA Aqualogic BPM Designer on a common BPM and BPEL-compliant metadata model to move information between these two tools.<br /><br />So far as development tools are concerned, Oracle will continue with JDeveloper as its integrated toolset.<br /><br />Oracle Technology Network, the developer's resource, will merge with BEA Dev2Dev and BEA Arch2Arch programs for developers and architects to provide homogenous repository of resources.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-3904298792266507142008-07-23T11:07:00.003+05:302008-08-14T16:44:28.332+05:30Oracle AIA (Application Integration Architecture)Oracle AIA combines the power of Oracle’s Fusion Middleware along with a set of best in class application Enterprise Business Objects and Services.<br /><br /><strong>FOUNDATION PACK COMPONENTS</strong><br />> <strong>Enterprise Business Object (EBO)</strong><br />A data model consisting of standard business data object definitions and reusable data components representing a business object<br /><br />> <strong>Enterprise Business Services (EBS)</strong><br />The application independent web service definition for performing a business task.<br /><br />> <strong>SOA Governance</strong><br /> - <strong>Business Service Repository</strong><br /> Catalog of the objects, messages, and services that compose the integration scenarios in your Oracle Application<br /> - <strong>Composite Application Validation System</strong><br /> Test integration web services without the deployed participating applications in place. <br /> - <strong>Composite Application Error Management and Resolution</strong><br /> Route the error back to the correct application and to the right application user.<br /><br />> <strong>Reference Architecture</strong><br />Comprehensive documentation to assist in integration development.Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-9349168076549235662008-07-22T16:24:00.002+05:302008-08-14T16:47:44.322+05:30WSIF - Web Service Invocation Framework> It supports a simple Java API for invoking Web services, no matter how or where the services are provided.<br /><br />> The WSIF API allows clients to invoke services focusing on the abstract service description-the portion of WSDL that covers the port types, operations and message exchanges without referring to real protocols.<br /><br />> The abstract invocations work because they are backed up by protocol-specific pieces of code called <strong>providers</strong>.<br /><br />> The decoupling of the abstract invocation from the real provider that does the work results in a flexible programming model that allows dynamic invocation, late binding, clients being unaware of large scale changes to services - such as service migration, change of protocols,etc.<br /><br />> WSIF also allows new providers to be registered dynamically, so you could enhance your client's capability without ever having to recompile its code or redeploy it.Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-40693212958108679452008-07-22T11:55:00.000+05:302008-08-14T16:47:44.322+05:30J2EE Connector architectureThe J2EE Connector architecture defines a standard architecture for connecting the J2EE platform to heterogeneous EIS systems. Examples of EIS systems include ERP, mainframe transaction processing, database systems, and legacy applications not written in the Java programming language. By defining a a set of scalable, secure, and transactional mechanisms, the J2EE Connector architecture enables the integration of EISs with application servers and enterprise applications. <br /><br />The J2EE Connector architecture enables an EIS vendor to provide a standard resource adapter for its EIS. The resource adapter plugs into an application server, providing connectivity between the EIS, the application server, and the enterprise application. If an application server vendor has extended its system to support the J2EE Connector architecture, it is assured of seamless connectivity to multiple EISs. An EIS vendor needs to provide just one standard resource adapter which has the capability to plug in to any application server that supports the J2EE Connector architecture. <br /><br />Multiple resource adapters (that is, one resource adapter per type of EIS) are pluggable into an application server. This capability enables application components deployed on the application server to access the underlying EIS systems.<br /><a href="http://java.sun.com/j2ee/images/Connector.jpg"><img style="cursor:pointer; cursor:hand;width: 400px;" src="http://java.sun.com/j2ee/images/Connector.jpg" border="0" alt="" /></a>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-36444752770860061732008-07-22T11:30:00.000+05:302008-08-14T16:47:44.322+05:30JMS Queue vs Topic<strong>JMS Queue</strong><br /><br />> A staging area that contains messages that have been sent and are waiting to be read. As the name queue suggests, the messages are delivered in the order sent. A message is removed from the queue once it has been read. <br /><br />> point-to-point<br /><br />> Only one consumer will get the message <br /><br />> The producer does not have to be running at the time the consumer consumes the message, nor does the consumer need to be running at the time the message is sent <br /><br />> Every message successfully processed is acknowledged by the consumer <br /><br /><br /><strong>JMS Topic</strong><br /><br />> A distribution mechanism for publishing messages that are delivered to multiple subscribers<br /><br />> Multiple consumers can get the message <br /><br />> There is a timing dependency between publishers and subscribers. The publisher has to create a subscription in order for clients to be able to subscribe. The subscriber has to remain continuously active to receive messages, unless it has established a durable subscription. In that case, messages published while the subscriber is not connected will be redistributed whenever it reconnects.Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com5tag:blogger.com,1999:blog-5879862082923120144.post-80287213582498048962008-07-22T09:45:00.000+05:302008-08-14T16:46:17.531+05:30Creating users for Human WorkflowFollowing steps to create users in Human Workflow -<br />1> Open file <soa_home>/bpel/system/services/config/users-properties.xml<br />add user as<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn1_VsdQMADxybLKZeFCIYx1N3MqDFME5VgLL4PLmVkOsJ3eAQguQBOOSUbzeZbzpTMAOcwyuo7qp7H22BuSka6w4U1BVmgeqcfzT_DTz6lgKfUiUThZqLI8zDlUIrl3Q3ui50fJW0hpgK/s1600-h/users-properties.jpg"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn1_VsdQMADxybLKZeFCIYx1N3MqDFME5VgLL4PLmVkOsJ3eAQguQBOOSUbzeZbzpTMAOcwyuo7qp7H22BuSka6w4U1BVmgeqcfzT_DTz6lgKfUiUThZqLI8zDlUIrl3Q3ui50fJW0hpgK/s400/users-properties.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5225691253351735074" /></a><br /><br />2> Go to Administration control for <strong>hw_services </strong>in Oracle Application Server Control<br />Click on <strong>Security provider</strong><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif1ciNxo1h1-3G3fRovJ4-v_2sSk_YywaktBYtoG_1qjILN6OJZUf4FJ5xZTZFc3ZBHdF7EPB7oTA2kVvvH18Wd2lnVvrFg9t6B4jfiFniCwwsvqFvRVphsjoDhzC76LbAMZWQHtCzq8NU/s1600-h/hw_services.jpg"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif1ciNxo1h1-3G3fRovJ4-v_2sSk_YywaktBYtoG_1qjILN6OJZUf4FJ5xZTZFc3ZBHdF7EPB7oTA2kVvvH18Wd2lnVvrFg9t6B4jfiFniCwwsvqFvRVphsjoDhzC76LbAMZWQHtCzq8NU/s400/hw_services.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5225691926472736722" /></a><br /><br />3> Create user -<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD5oqE_w8mf3dIpDDrf1rKSXN4uQ2LvFBJFetDhS_4inCci2sR-S3BJd6wtYljOIZDObknYNMmi1AQ6Gf-4FEUZWmmlp7g4GI7_jqFuWtThusBFWf-4iqcD8rI_W2sKPrIRDLJcpHJzFnk/s1600-h/carete-user.jpg"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD5oqE_w8mf3dIpDDrf1rKSXN4uQ2LvFBJFetDhS_4inCci2sR-S3BJd6wtYljOIZDObknYNMmi1AQ6Gf-4FEUZWmmlp7g4GI7_jqFuWtThusBFWf-4iqcD8rI_W2sKPrIRDLJcpHJzFnk/s400/carete-user.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5225692181279689970" /></a><br /><br />Thats all...Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com1tag:blogger.com,1999:blog-5879862082923120144.post-23072170741417187872008-07-21T10:28:00.000+05:302008-08-14T16:46:17.531+05:30Notification based initialization of BPEL ProcessFollow following steps to initiate BPEL Process using Email notification :<br />1> Create async bpel process with inputvariable type : mailMessage<br /><br />2> add MyAccount.xml to location : <br />soa_home\bpel\domains\my_domain\metadata\MailService<br /><br />3> Contents of MyAccount.xml<br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6MBpT1b0HAmFjazwoVZwax2jh_xmsW7gQggtpKXWSvypZmT0mkJ48j66ePi1JwupbCbocKRy9aWWjCyV2GofuRPXtt8SzTthPBlbMknis_7nZZNs3WgjIRIRY3maxB3g2f3mP4tKJboDA/s1600-h/myaccount.jpg"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6MBpT1b0HAmFjazwoVZwax2jh_xmsW7gQggtpKXWSvypZmT0mkJ48j66ePi1JwupbCbocKRy9aWWjCyV2GofuRPXtt8SzTthPBlbMknis_7nZZNs3WgjIRIRY3maxB3g2f3mP4tKJboDA/s400/myaccount.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5225423931617290370" /></a><br /><br />4> add activation agents to bpel.xml after partnerLinkBindings<br /> <br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCexjMC3rzpOhyphenhyphenLTdeUjHda_v8GtrXINOxjnGemobIQXnUCPysk4wHwhmYwV7Zrapj2GOvdd81LJQJRJMH7eSDwdxXS5ZPtzaF4wOm9EOi0z4BaFez-AYAaChYNlABK9p4uTBF-FoVw4sJ/s1600-h/activation.jpg"><img style="cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCexjMC3rzpOhyphenhyphenLTdeUjHda_v8GtrXINOxjnGemobIQXnUCPysk4wHwhmYwV7Zrapj2GOvdd81LJQJRJMH7eSDwdxXS5ZPtzaF4wOm9EOi0z4BaFez-AYAaChYNlABK9p4uTBF-FoVw4sJ/s400/activation.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5225424175598164258" /></a><br /><br />5> Deploy projectLalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com2tag:blogger.com,1999:blog-5879862082923120144.post-75287389050134896802008-07-18T12:21:00.000+05:302008-08-14T16:46:17.531+05:30orabpel schema getting lockedIf you have changed the password of orabpel schema, didnt made corresponding changes in Oracle Application Server,<br />then Oracle Application server locks your orabpel schema.<br /><br />You need to have system user to unlock orabpel in Oracle Database.<br /><br />So to prevent your schema from locking, make sure to change passwords on both sides.Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0tag:blogger.com,1999:blog-5879862082923120144.post-44559769808196436152008-07-17T12:50:00.002+05:302008-08-14T16:47:20.906+05:30Service Oriented Architecture<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghj05a0mnMF8y8S4VEWLksjNoLIQG-TptbuXfBnXbFqbveWPI8sR2HPgbMuvnGblHJlFloRikzqOUOGyPdV18_X8sY6C6q595xD5TZk1kJ99uLD6w5HwfVjDfWScmG5sBKPXIJxo5BzcuY/s1600-h/soa-banner.gif"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghj05a0mnMF8y8S4VEWLksjNoLIQG-TptbuXfBnXbFqbveWPI8sR2HPgbMuvnGblHJlFloRikzqOUOGyPdV18_X8sY6C6q595xD5TZk1kJ99uLD6w5HwfVjDfWScmG5sBKPXIJxo5BzcuY/s320/soa-banner.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5223880837957503394" /></a><br />When we talk about SOA - Service Oriented Architecture, means everything is revolving around services. To whom am I talking, is a service. When we come in to open standards, the word <strong>service</strong> becomes a <strong>Web Service</strong>. Means we are converting our piece of code into a Web service. So that it provides a flexibility, adaptibility, loose coupling. That is why in big organizations when ERP talks to ERP, there comes into picture <strong>SOA</strong>.<br />So that business should flow without any loss of revenue.<br /><br />Key Principles -<br />> <strong>Standards</strong> – Compliance to both common and industry specific standards is required for interoperability between heterogeneous applications.<br /><br />> <strong>Abstraction</strong> – Reusable, modular coarse-grained business services provide rapid composite application development and easier maintenance.<br /><br />> <strong>Loosely coupled </strong> – Minimal dependencies with other applications offer durability and agility.<br /><br />So Make more profit using <strong>SOA</strong>Lalit Jolaniahttp://www.blogger.com/profile/11487454795808624047noreply@blogger.com0