<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkAAQ3c7fSp7ImA9WhRUF08.&quot;"><id>tag:blogger.com,1999:blog-33519738</id><updated>2012-01-28T09:55:42.905+05:30</updated><category term="IEEE" /><category term="JTable" /><category term="ESB" /><category term="Maven2" /><category term="FOSS" /><category term="ActiveMQ" /><category term="XML" /><category term="OSGI" /><category term="Spring Integration" /><category term="web services" /><category term="Acegi" /><category term="Hasthi" /><category term="Reflection" /><category term="Linux" /><category term="Axis2M" /><category term="Rampart" /><category term="JAX-WS" /><category term="JMS" /><category term="Camel" /><category term="Woden" /><category term="Spring" /><category term="POJO" /><category term="JasperReport" /><category term="Axis2" /><category term="Sandesh2" /><title>sagara's Blog</title><subtitle type="html">Days of my journey</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ssagara.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/yWKUV" /><feedburner:info uri="blogspot/ywkuv" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0IBR384cCp7ImA9WhRUEkk.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-3269916675380334186</id><published>2012-01-22T21:41:00.001+05:30</published><updated>2012-01-22T21:55:56.138+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-22T21:55:56.138+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JAX-WS" /><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><title>JAX-WS processing using Axis2 tools</title><content type="html">JAX-WS &lt;a href="http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsgen.html" target="_blank"&gt;wsgen&lt;/a&gt; and &lt;a href="http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html" target="_blank"&gt;wsimport&lt;/a&gt; tools were designed to generate portable  artifacts so that those artifacts can be use with any JAX-WS vendor  runtime also these tools distribute as a part of JDK. Traditionally  Axis2 does not provide any JAX-WS tools, instead it's possible to  execute artifacts generated by wsgen and wsimport tools within Axis2.  Recently number of users are requested to enable JAX-WS processing  through Axis2 tools such as &lt;a href="http://axis.apache.org/axis2/java/core/docs/reference.html" target="_blank"&gt;WSDL2JAVA&lt;/a&gt; and &lt;a href="http://axis.apache.org/axis2/java/core/docs/reference.html" target="_blank"&gt;JAVA2WSDL&lt;/a&gt;. Starting from 1.7.0  version Axis2 provides first class JAX-WS processing support for both  WSDL2JAVA and JAVA2WSDL tools. Also it's possible use&amp;nbsp; wsgen and  wsimport tools with Axis2 in the usual manner. &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a new command line option introduced as &lt;b&gt;"jws" &lt;/b&gt;that  enables switching between Axis2 native processing and JAX-WS processing.  Once the &lt;b&gt;"jws"&lt;/b&gt; option available the tool will switch to JAX-WS  processing from default Axis2 native processing .&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
To provide other input options it is possible to use some of the  existing WSDL2JAVA/JAVA2WSDL options or possible to use&amp;nbsp; wsgen/wsimport options if those option names are not conflict with Axis2 tools  option names. If such option name conflict occurs Axis2 option will get  the priority.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;WSDL2JAVA options&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="nobrtable"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border="2" bordercolor="#3366cc" cellpadding="3" cellspacing="3" style="background-color: white;"&gt;&lt;tbody&gt;
&lt;tr style="background-color: #3366cc; color: white; padding-bottom: 4px; padding-top: 5px;"&gt;&lt;th&gt;Option (Axis2)&lt;/th&gt;  &lt;th&gt;Option (wsimport)&lt;/th&gt;&lt;th&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;-uri [url or path]&lt;/td&gt;  &lt;td&gt;-uri [url or path]&lt;/td&gt;  &lt;td&gt;A url or path to a WSDL&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;-o [path]&lt;/td&gt;  &lt;td&gt;-d [path]&lt;/td&gt;  &lt;td&gt;Specify a directory path for the generated code&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;-p [pkg name]&lt;/td&gt;  &lt;td&gt;-p [pkg name]&lt;/td&gt;  &lt;td&gt;Specify a custom package name for the generated code&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;-http-proxy-host [host name]&lt;/td&gt;  &lt;td rowspan="2"&gt;-httpproxy [host:port]&lt;/td&gt;  &lt;td rowspan="2"&gt;specify a HTTP proxy server&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;-http-proxy-port [port]&lt;/td&gt;   &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Examples :&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; wsdl2java.sh -jws -uri SimpleService.wsdl   
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; wsdl2java.sh -jws -uri SimpleService.wsdl -o out  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; wsdl2java.sh -jws -uri SimpleService.wsdl -d out  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;JAVA2WSDL options&lt;/b&gt;&lt;br /&gt;
&lt;style type="text/css"&gt;
.nobrtable br { display: none }
&lt;/style&gt;&lt;br /&gt;
&lt;div class="nobrtable"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border="2" bordercolor="#3366cc" cellpadding="3" cellspacing="3" style="background-color: white;"&gt;&lt;tbody&gt;
&lt;tr style="background-color: #3366cc; color: white; padding-bottom: 4px; padding-top: 5px;"&gt;  &lt;th&gt;Option (Axis2)&lt;/th&gt;   &lt;th&gt;Option (wsimport)&lt;/th&gt;&lt;th&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;   &lt;td&gt;-cn [fully qualified class name]&lt;/td&gt;   &lt;td&gt;-cn [fully qualified class name]&lt;/td&gt;   &lt;td&gt;fully qualified class name&lt;/td&gt;    &lt;/tr&gt;
&lt;tr&gt;   &lt;td&gt;-o [path]&lt;/td&gt;   &lt;td&gt;-d [path]&lt;/td&gt;   &lt;td&gt;Output directory&lt;/td&gt;    &lt;/tr&gt;
&lt;tr&gt;   &lt;td&gt;-cp [class path uri]&lt;/td&gt;   &lt;td&gt;-cp [class path uri]&lt;/td&gt;   &lt;td&gt;list of classpath entries&lt;/td&gt;    &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;Examples :&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; java2wsdl.sh -jws -cn sample.UserService 
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; java2wsdl.sh -jws -cn sample.UserService -d out  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; java2wsdl.sh -jws -cn sample.UserService -o out  
&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-3269916675380334186?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/d5cWjuh5L9acaNzM1zrc4WV47wY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d5cWjuh5L9acaNzM1zrc4WV47wY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/d5cWjuh5L9acaNzM1zrc4WV47wY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d5cWjuh5L9acaNzM1zrc4WV47wY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/jAsrqfUC1Vg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/3269916675380334186/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=3269916675380334186" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/3269916675380334186?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/3269916675380334186?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/jAsrqfUC1Vg/jax-ws-processing-using-axis2-tools.html" title="JAX-WS processing using Axis2 tools" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2012/01/jax-ws-processing-using-axis2-tools.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IGSH0-eSp7ImA9WhRUEEo.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1556082657610395105</id><published>2012-01-20T00:23:00.002+05:30</published><updated>2012-01-20T22:42:09.351+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T22:42:09.351+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Maven2" /><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><title>Axis2 Simple HTTP server Maven plugin</title><content type="html">As I mentioned in my last blog post this post covers one of the new feature of upcoming Axis2 1.7.0 version. Recently we have done number of improvements for Axis2 Maven support. There are three new Maven related modules introduced as follows.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&amp;nbsp;simple-server-maven-plugin - A Maven plug-in that allows to run Axis2's simple HTTP server as a maven plug-in.&lt;/li&gt;
&lt;li&gt; quickstart archetype - Maven archetype to develop and package Axis2 native (AAR) web services.&lt;/li&gt;
&lt;li&gt;quickstart-webapp - Maven archetype to develop and package Axis2 web services as a web application(WAR). &amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;In this post I discuss how to use&amp;nbsp; simple-server-maven-plugin and it's  configuration options. At the moment simple-server-maven-plugin provides &amp;nbsp;single goal as "axis2:run". &lt;br /&gt;
&lt;br /&gt;
You can add  simple-server-maven-plugin into your Maven POM file as follows.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;     &amp;lt;plugin&amp;gt;  
         &amp;lt;groupId&amp;gt;org.apache.axis2&amp;lt;/groupId&amp;gt;  
         &amp;lt;artifactId&amp;gt;simple-server-maven-plugin&amp;lt;/artifactId&amp;gt;  
         &amp;lt;version&amp;gt;${axis2.version}&amp;lt;/version&amp;gt;  
     &amp;lt;/plugin&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Note&lt;/b&gt; : &lt;i&gt;At the moment this plug-in available only with 1.7.0-SNAPSHOT  version and until this get released with official Apache releases you  have to do one extra step as mentioned here[1].&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
As you may know  Axis2 services expect single meta data file called services.xml under a  directory named META-INF. By default it expect to place this meta data  files under the  "src/main/resources/services" directory. In order to  deploy multiple service META-INF should place inside a another  directory. As an example  /src/main/resources/services/SimpleService/META-INF/services.xml. Also  by default it facilitates to place Axis2 modules (.mar) under  src/main/resources/modules directory. Following picture shows one such a  example directory&amp;nbsp;structure.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZGIMxeS9tUQ/TxhiAs7bsSI/AAAAAAAAAJM/8ZRZBy0ci0c/s1600/Screenshot-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ZGIMxeS9tUQ/TxhiAs7bsSI/AAAAAAAAAJM/8ZRZBy0ci0c/s1600/Screenshot-1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Once you have&amp;nbsp;completed&amp;nbsp;above steps you can run Axis2 Simple HTTP server using run goal.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; mvn clean axis2:run  &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now It's possible to access available service listing&amp;nbsp; page by http://localhost:8080 URL.&lt;/div&gt;&lt;br /&gt;
simple-server-maven-plugin support for following configuration options.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;style type="text/css"&gt;
.nobrtable br { display: none }
&lt;/style&gt;&lt;br /&gt;
&lt;div class="nobrtable"&gt;&lt;table border="2" bordercolor="#3366cc" cellpadding="3" cellspacing="3" style="background-color: white;"&gt;&lt;tbody&gt;
&lt;tr style="background-color: #3366cc; color: white; padding-bottom: 4px; padding-top: 5px;"&gt; &lt;th&gt;Option&lt;/th&gt; &lt;th&gt;&lt;/th&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;repoPath&lt;/td&gt; &lt;td&gt;Path to Axis2 repository by default run goal creates Axis2 repository inside the project's target directory. &lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;confPath&lt;/td&gt; &lt;td&gt;Path to Axis2.xml configuration file. &lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;stdServiceSrcDir&lt;/td&gt; &lt;td&gt;Directory to  place service meta (META-INF/services.xml) information. This directory supports multiple service deployment. Default value is "src/main/resources/services". &lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;moduleSrcDir&lt;/td&gt; &lt;td&gt;moduleSrcDir - Directory to place Axis2 modules (.mar) default value is "src/main/resources/modules" &lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;Hope this plug-in save web service development time greatly and also this can be used to automate unit test easily.&amp;nbsp; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[1]&lt;/b&gt;  - &lt;i&gt;Since above plug-in still not available on official Maven  repositories&amp;nbsp; it is required to add following SNAPSHOT repository to  your POM file. But this is not&amp;nbsp;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;required&lt;/i&gt;&lt;/span&gt;&amp;nbsp;after Axis2 1.7.0 release.&lt;/i&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;    &amp;lt;pluginRepositories&amp;gt;  
           &amp;lt;pluginRepository&amp;gt;     
            &amp;lt;id&amp;gt;apache-snapshots&amp;lt;/id&amp;gt;     
            &amp;lt;url&amp;gt;http://repository.apache.org/snapshots&amp;lt;/url&amp;gt;  
           &amp;lt;/pluginRepository&amp;gt;    
      &amp;lt;/pluginRepositories&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-1556082657610395105?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/js8wim2iUbSZDsYT4Jqc5GWRcps/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/js8wim2iUbSZDsYT4Jqc5GWRcps/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/js8wim2iUbSZDsYT4Jqc5GWRcps/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/js8wim2iUbSZDsYT4Jqc5GWRcps/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/AJjTR1AhLm4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1556082657610395105/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1556082657610395105" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1556082657610395105?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1556082657610395105?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/AJjTR1AhLm4/axis2-simple-http-server-maven-plug-in.html" title="Axis2 Simple HTTP server Maven plugin" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ZGIMxeS9tUQ/TxhiAs7bsSI/AAAAAAAAAJM/8ZRZBy0ci0c/s72-c/Screenshot-1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2012/01/axis2-simple-http-server-maven-plug-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIGRnw_fSp7ImA9WhRSE0Q.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1188971404340335251</id><published>2011-11-16T04:16:00.001+05:30</published><updated>2011-11-16T04:22:07.245+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-16T04:22:07.245+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><title>What is new in Axis2 1.7.0 - 1</title><content type="html">I conducted a Fast Feather talk during the ApacheCon NA 2011 to give a overview about new features of upcoming Axis2 1.7.0 release. I started to write series of blog post mentioning new&amp;nbsp;features of new release I will explain each of these features in detail and try to provide samples too.&lt;br /&gt;
&lt;br /&gt;
As the starting post I attached a slide that shows overview of most of the new features. &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="width:425px" id="__ss_10176298"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/sagara10/what-is-new-in-axis2-170-rlease-1" title="What is new in Axis2 1.7.0 rlease - 1"&gt;What is new in Axis2 1.7.0 rlease - 1&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse10176298" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=fastfeatheraxis2170-111115163555-phpapp02&amp;stripped_title=what-is-new-in-axis2-170-rlease-1&amp;userName=sagara10" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse10176298" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=fastfeatheraxis2170-111115163555-phpapp02&amp;stripped_title=what-is-new-in-axis2-170-rlease-1&amp;userName=sagara10" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/sagara10"&gt;sagara10&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-1188971404340335251?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/efterK204Wro_zC-CLsd-O8CN6E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/efterK204Wro_zC-CLsd-O8CN6E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/efterK204Wro_zC-CLsd-O8CN6E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/efterK204Wro_zC-CLsd-O8CN6E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/WEa2zOnvl_c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1188971404340335251/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1188971404340335251" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1188971404340335251?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1188971404340335251?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/WEa2zOnvl_c/what-is-new-in-axis2-170-1.html" title="What is new in Axis2 1.7.0 - 1" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2011/11/what-is-new-in-axis2-170-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMEQXo6fip7ImA9WhdaEEQ.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-7462629491716316721</id><published>2011-10-20T12:55:00.007+05:30</published><updated>2011-10-20T13:10:00.416+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-20T13:10:00.416+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><title>SOAP encoding and Axis2</title><content type="html">As of today SOAP encoding only exists due to some historical reasons non of the standard web service  framework supports for SAOP encoding that includes Axis2, Metro and CXF.  Some people still tend to use SAOP encoding without knowing why WS frameworks discourage to use it or some have to use it when they implement web service clients. Usually I can see number of such queries on axis2-user list time to time. Here I discuss few workarounds useful when you dealing with SAOP encoding. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What is SOAP encoding &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
When authors of SOAP specification write it for first time they wanted to define a common way to describe messages but at that time XMLSchema was not completed and not in main stream too. Hence they came up with idea of SOAP Encoding as an extension of the SOAP specification that defines how a data value should be encoded in an XML. &lt;br /&gt;
&lt;br /&gt;
SOAP encoding define it's own namespace as http://schemas.xmlsoap.org/soap/encoding/ and set of rules to follow. SOAP encoding introduced number of interoperability and validation issues. Tim Ewald described some of those issues in his article &lt;a href="http://msdn.microsoft.com/en-us/library/ms995710.aspx"&gt;here&lt;/a&gt;.WS-I also highly discourage to use encoding systems in their basic profile. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;SAOP encoding  in server side &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If you use code first approach there is nothing to worry &lt;a href="http://axis.apache.org/axis2/java/core/"&gt;Axis2&lt;/a&gt; runtime generate WSDL that does not use SOAP encoding at all. But if you use contract first approach you need to make sure that you don't use SOAP encoding in your service contract instead XMLSchema provides very powerful type system for your messages. &lt;br /&gt;
&lt;br /&gt;
SOAP encoding array concept is still used by many people, if you have such legacy WSDL file you could easily redesign your types using XMLSchema. Following example describes one such scenario. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First let's see SAOP encoding sample.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;complexType name="ArrayOfStrings"&amp;gt;  
  &amp;lt;complexContent&amp;gt;  
   &amp;lt;restriction base="SOAP-ENC:Array"&amp;gt;  
    &amp;lt;attribute ref="SOAP-ENC:arrayType"  
          wsdl:arrayType="xsd:string[]"/&amp;gt;  
   &amp;lt;/restriction&amp;gt;  
  &amp;lt;/complexContent&amp;gt;  
 &amp;lt;/complexType&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Now same thing can be easily rewritten using XMLSchema as follows.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;complexType name="ArrayOfStrings"  
  &amp;lt;element name="item" type="xsd:string" maxOccurs="20"/&amp;gt;  
 &amp;lt;/complexType&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;SOAP encoding in client side &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes it is required to access services that has service description with SOAP encoding constructs. By default Axis2 code generation tool called &lt;a href="http://axis.apache.org/axis2/java/core/tools/CodegenToolReference.html"&gt;WSDL2JAVA&lt;/a&gt; fail on generating codes for such WSDL files. But as a workaround you could use &lt;a href="http://xmlbeans.apache.org/"&gt;XMLBeans&lt;/a&gt; data binding to generate clients codes for above WSDLs.  XMLBeans simply generate Java beans for all the types available on schema . In this case it generate beans for all the types available on SOAP encoding schema &lt;a href="http://schemas.xmlsoap.org/soap/encoding"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
You can invoke code generation tool with XMLbeans data binding as follows. &lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; wsdl2java.sh -uri service.wsdl -d xmlbeans   
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
As we discussed the best practice is avoid use of SOAP encoding when you design web services.In case if you are a consumer of service that use SAOP encoding in their WSDL, Axis2 XMLBeans data binding provide a great solution for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-7462629491716316721?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xHB2I3Gt-07DdYraxxH7eXty9UQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xHB2I3Gt-07DdYraxxH7eXty9UQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xHB2I3Gt-07DdYraxxH7eXty9UQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xHB2I3Gt-07DdYraxxH7eXty9UQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/gkJJ0h4_QIY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/7462629491716316721/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=7462629491716316721" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/7462629491716316721?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/7462629491716316721?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/gkJJ0h4_QIY/soap-encoding-and-axis2.html" title="SOAP encoding and Axis2" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2011/10/soap-encoding-and-axis2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAGRH45cCp7ImA9WhdWF0s.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1578468313793629702</id><published>2011-09-11T23:02:00.003+05:30</published><updated>2011-09-11T23:42:05.028+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-11T23:42:05.028+05:30</app:edited><title>Apache Community building event within WSO2Con 2011</title><content type="html">We are planning to have a free Apache Community building event within&lt;br /&gt;
the WSO2Con conference next week (13th September to 15th September) in&lt;br /&gt;
Colombo, Sri Lanka. We would like to invite contributors /committers&lt;br /&gt;
on Apache Axis2, Apache WS, Apache ODE, Apache Synapse to take a part&lt;br /&gt;
of this event. Number of committers from above projects will be there&lt;br /&gt;
and it's a good chance to communicate with them and get your first&lt;br /&gt;
step on those mentioned projects.&amp;nbsp; Also you can join with us using any&lt;br /&gt;
Freenode&amp;nbsp; IRC client on #axis2 channel or use #Axis2 on Twitter. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This Community event sponsored by &lt;a href="http://wso2.com/"&gt;WSO2 &lt;/a&gt;and will be held on same conference venue. &lt;a href="http://wso2.com/"&gt;WSO2&lt;/a&gt; is a leading and long-standing contributor of number of world class Apache projects that includes Axis2 , Synapse, WS, Woden etc.&amp;nbsp; Most of WSO2 committers will participate to this event and it's a rear chance to meet them face to face and discuss your issues , suggestions&amp;nbsp; etc. Also those who want to contribute&amp;nbsp; also can get their hands dirty with those project's first step. No one can tell, isn't it your first step to be a Apache committer ? you better give a try and see .&lt;br /&gt;
&lt;br /&gt;
you can find location and other details from here &lt;a href="http://wso2.com/events/wso2con-2011-colombo/"&gt;http://wso2.com/events/wso2con-2011-colombo/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
One last thing , within WSO2 we not only develop and release products under Apache licence instead we use Apache like open development model, WSO2 engineering lists are completely open for anyone and we are encouraging community contribution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-1578468313793629702?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1eewVH0HWTxjQ86halGsB-upoE0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1eewVH0HWTxjQ86halGsB-upoE0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1eewVH0HWTxjQ86halGsB-upoE0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1eewVH0HWTxjQ86halGsB-upoE0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/_AY8KsbRFUw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1578468313793629702/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1578468313793629702" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1578468313793629702?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1578468313793629702?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/_AY8KsbRFUw/apache-community-building-event-within.html" title="Apache Community building event within WSO2Con 2011" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2011/09/apache-community-building-event-within.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQHQnw6eCp7ImA9WhdREUw.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-5379228402554471904</id><published>2011-07-31T18:14:00.001+05:30</published><updated>2011-07-31T18:15:33.210+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-31T18:15:33.210+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="POJO" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><title>How to get best use of AXIS2 Object support.</title><content type="html">&lt;style type="text/css"&gt;
 &lt;!--
  @page { margin: 0.79in }
  P { margin-bottom: 0.08in }
  A:link { so-language: zxx }
 --&gt;
 
&lt;/style&gt;  &lt;br /&gt;
&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;Axis2 web service framework offers number of development approaches to match various user requirements  instead of limiting to support one or two specifications. This is a one distinct feature that Axis2 go beyond from some other web service frameworks.  If someone want to deploy a web service very quickly using POJOs without touching XML or SOAP, AXIS2 ADB is the ideal solution for him. ADB Object support is a one of the great  feature and we have done some nice set of  recent improvements too. I will discuss few tips within this post that users should know in order to get best use of Axis2 ADB Object support.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; Public Object objectService(Object obj){  
 System.out.println(obj)  
 return obj;  
 }  
&lt;/code&gt;&lt;/pre&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;Since above method takes Object type as an argument and return type it should possible  to send any java primitive or POJO as a parameter value. As an example for a sample String massage it is possible to have following payload.  &lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;ns2:obj   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
           xmlns:xs="http://www.w3.org/2001/XMLSchema"   
           xsi:type="xs:string"&amp;gt;  
        Hello World  
 &amp;lt;/ns2:obj&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;In case of POJO  message it is possible to have following payload.&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;ns2:obj xmlns:ns1="http://sample/xsd"   
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
                 xsi:type="ns1:Student"&amp;gt;  
             &amp;lt;ns1:age&amp;gt;20&amp;lt;/ns1:age&amp;gt;  
             &amp;lt;ns1:id&amp;gt;200&amp;lt;/ns1:id&amp;gt;  
             &amp;lt;ns1:name&amp;gt;saman&amp;lt;/ns1:name&amp;gt;  
            &amp;lt;/ns2:obj&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;In above messages “xsi:type” attribute carries type system information that is required in marshalling and unmarshalling. When you send a POJO value server need to aware with the schema information associate with that particular POJO type otherwise marshalling/unmarshalling process will not possible. Typically Axis2 run-time only aware  with the types associate with a particular service method, if you send above second message you will get an exception something similar to below because server can’t identify type system associate with incoming message.  &lt;/div&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; Exception in thread "main" org.apache.axis2.AxisFault: Unknow type {http://sample/xsd}Student  
&lt;/code&gt;&lt;/pre&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;the solution here is use a parameter called “extraClass” within your services.xml file.  &lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;e.g -  &lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;parameter name="extraClass"&amp;gt;sample.Item,sample.Student&amp;lt;/parameter&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="LEFT" style="border: none; line-height: 115%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;The above parameter will instruct run-time to register type details of give classes and generate schema as well . Without schema generation it is not possible to write WS clients that capable  of send and receive messages with above POJOs. That is what you all need in server side now you can test your service using a tool like SoapUI.  &lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;In client side easiest and quickest way to write a client is generate code using WSDL2JAVA tool , again by default WSDL2JAVA tool also ignore extra sachem type available on WSDL file when generating codes. But it is possible to change this behaviour by adding option &lt;br /&gt;
“-g” that instruct to generate codes for all the schema types available . You can use following command to generate client side codes for sample application .  &lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; axis2-1.7.0-SNAPSHOT/bin/wsdl2java.sh -uri http://localhost:8080/services/SimpleObjectService?wsdl -g   
&lt;/code&gt;&lt;/pre&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;Now you have generated POJOs in your client side you can use them with your Object service as follows.  &lt;/div&gt;&lt;div style="border: none; line-height: 100%; margin-bottom: 0in; padding: 0in; page-break-after: auto; page-break-before: auto;"&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; Student student = new Student();  
 student.setName("saman");  
 student.setId(200);  
 student.setAge(20);  
 req.setObj(student);  
 ObjectServiceResponse res = stub.objectService(req );  
 System.out.println(res.get_return());  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-5379228402554471904?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mJpR66nSOJQKFF93iLtltsi62NI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mJpR66nSOJQKFF93iLtltsi62NI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mJpR66nSOJQKFF93iLtltsi62NI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mJpR66nSOJQKFF93iLtltsi62NI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/GI6pPaqq4tQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/5379228402554471904/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=5379228402554471904" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5379228402554471904?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5379228402554471904?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/GI6pPaqq4tQ/how-to-get-best-use-of-axis2-object.html" title="How to get best use of AXIS2 Object support." /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2011/07/how-to-get-best-use-of-axis2-object.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUEQXo_fyp7ImA9WhdREUw.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1673699697675939316</id><published>2011-07-26T15:28:00.009+05:30</published><updated>2011-07-31T18:30:00.447+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-31T18:30:00.447+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><title>W3C Document support in Axis2</title><content type="html">&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="background-color: transparent;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;Recently we have implemented W3C Document &amp;nbsp;support for Axis2 ADB data binding. Now it is possible to use W3C Dom Document &amp;nbsp;as a input parameter , return type or as a field of a java bean.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;Let’s consider following web service method as an example.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; public Document simpleDomService(Document doc) {  
    printInCommingDocument(doc);  
    return doc;  
  }  
&lt;/code&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;It takes W3C DOM Document &amp;nbsp;as a parameter and return the same value. In order to support this method Axis2 run time should construct DOM Document from incoming payload and need to be serialized into out going payload in both server and client sides.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;In server side &amp;nbsp;based on Java refection Axis2 run-time identify parameters and return type of DOM Document and perform required conventions. But in client side this become bit of a complex task because they is no standard &amp;nbsp;way &amp;nbsp;to represent DOM Document in a WSDL. Axis2 &amp;nbsp;generate xs:any type for DOM Document and this is represented as a OMElement &amp;nbsp;in generated code.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;With above limitation if you have a Dom Document first you need to convert into a OMElement , you could use following code segment to convert DOM to OM.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; OMFactory fac = OMAbstractFactory.getOMFactory();  
 OMElement domDoc = BeanUtil.convertDOMtoOM(fac, getDomDocument());&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre style="background: none repeat scroll 0% 0% rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;The other option is without constructing a DOM Document, directly construct a OMElement and pass it to the server side. If the server side method parameter type is DOM Document &amp;nbsp;Axis2 run-time can construct &amp;nbsp;a DOM Document for that particular service. As an example following code segment use String to construct OMElement. Refer Axiom &lt;a href="http://ws.apache.org/axiom/userguide/userguide.html"&gt;user guide&lt;/a&gt; to find out other options. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; public static OMElement getOmDocument() throws XMLStreamException {  
    return AXIOMUtil  
        .stringToOM("sample content using Axiom");  
  }  
&lt;/code&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;After a successful invocation you receive a OMElement as the return value , sometimes you may want to convert this incoming value in to a DOM back . In such scenarios following code segment can be used.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; public static org.w3c.dom.Document getDomDocument(OMElement element){  
    OMFactory doomFactory = DOOMAbstractFactory.getOMFactory();  
    StAXOMBuilder doomBuilder = new StAXOMBuilder(doomFactory,  
        element.getXMLStreamReader());  
    return (org.w3c.dom.Document) doomBuilder.getDocument();  
  }  
&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;Here is the complete &amp;nbsp;client side code&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;     // create a OMElement using Axiom tools.  
     OMFactory fac = OMAbstractFactory.getOMFactory();  
     OMElement domDoc = BeanUtil.convertDOMtoOM(fac, getDomDocument());  
     // create a pure Axiom based document  
     OMElement omDoc = getOmDocument();      
     SimpleDomServiceStub stub = new SimpleDomServiceStub();  
     SimpleDomService req = new SimpleDomService();  
     Document doc = new Document();  
     req.setDoc(doc);  
     //1st call  
     doc.setExtraElement(domDoc);  
     SimpleDomServiceResponse res = stub.simpleDomService(req);  
     res.get_return().getExtraElement().serialize(System.out);  
     //2nd call  
     System.out.println();  
     doc.setExtraElement(omDoc);  
     res = stub.simpleDomService(req);  
     res.get_return().getExtraElement().serialize(System.out);  &lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;&lt;b&gt;Note :&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;1.) Some of above features based on Axiom based DOM API implementation called DOOM. But DOOM is not a complete implementation of W3C DOM and you may find some limitation.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;2.) Above features available with &amp;nbsp;upcoming &amp;nbsp; Axis2 1.7.0 release and right now you can try with 1.7.0-SNAPSHOT.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt;3.) Download sample project from &lt;a href="http://www.mediafire.com/?d81dlq7l1w55ahs"&gt;here&lt;/a&gt;. &amp;nbsp;You can run “mvn jetty:run “ to start embedded Jetty server and WSDL content can be found here http://localhost:8080/services/SimpleDomService?wsdl.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-1673699697675939316?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7MW81jOEu09vtDz_Tu7TY-ZFo5U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7MW81jOEu09vtDz_Tu7TY-ZFo5U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7MW81jOEu09vtDz_Tu7TY-ZFo5U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7MW81jOEu09vtDz_Tu7TY-ZFo5U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/3i7YJjKmV1c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1673699697675939316/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1673699697675939316" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1673699697675939316?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1673699697675939316?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/3i7YJjKmV1c/w3c-document-support-in-axis2.html" title="W3C Document support in Axis2" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><georss:featurename>Colombo, Sri Lanka</georss:featurename><georss:point>6.927467999999999 79.84835799999996</georss:point><georss:box>6.86802 79.82275549999996 6.986915999999999 79.87396049999997</georss:box><feedburner:origLink>http://ssagara.blogspot.com/2011/07/w3c-document-support-in-axis2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4ERHw-fCp7ImA9WhZUF08.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-731007142027426730</id><published>2011-06-10T21:48:00.001+05:30</published><updated>2011-06-10T21:51:45.254+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-10T21:51:45.254+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Rampart" /><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="Sandesh2" /><title>Release of Axis2 1.6.0, Sandesha2 1.6.0 and Rampart 1.6.0</title><content type="html">&lt;div&gt;Today we officially announced the Apache Axis2 1.6.0 release together with Sandesha2 1.6.0 and Rampart 1.6.0 releases. From Axis2 1.5.4  release we started to release all related projects together so that users can upgrade whole stack at once instead of each component time to time. Also this process guarantee  great compatibility  among relegated projects. Going forward starting from Axis2 1.6.0 version we moved to use common version numbers for related projects so that users can easily find compatible dependencies.    &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In 2011 Axis2 community becoming more active , we released &lt;a href="http://markmail.org/message/pwdnbwmljaclklfn"&gt;Axis2 1.5.4&lt;/a&gt; in 17th Jan 2011 and just after 6 months now we released 1.6.0 major release and also 1.5.5 maintenance ( yet to be announced)  release simultaneously.      &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the release note. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Apache Axis2 team is pleased to announce the general availability&lt;/div&gt;&lt;div&gt;of the following releases:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Axis2 1.6.0&lt;/div&gt;&lt;div&gt;- Sandesha2 1.6.0&lt;/div&gt;&lt;div&gt;- Rampart 1.6.0&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apache Axis2 is a complete re-design and re-write of the widely used&lt;/div&gt;&lt;div&gt;Apache Axis engine and is a more efficient, more scalable, more&lt;/div&gt;&lt;div&gt;modular and more XML-oriented Web services framework. It is carefully&lt;/div&gt;&lt;div&gt;designed to support the easy addition of plug-in "modules" that extend&lt;/div&gt;&lt;div&gt;its functionality for features such as security and reliability.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apache Rampart is an Axis2 module that implements the specifications&lt;/div&gt;&lt;div&gt;in the WS-Security stack.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apache Sandesha2 provides WS-ReliableMessaging support for Axis2.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Axis2 1.6.0 is a major release that contains more than 65 fixes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Rampart 1.6.0 is a major release containing lots of bug fixes and&lt;/div&gt;&lt;div&gt;compatible with the Axis2 1.6.0 branch.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sandesha2 1.6.0 is a major release that is compatible with the Axis2&lt;/div&gt;&lt;div&gt;1.6.0 branch.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The new versions are available for download at the following locations:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://axis.apache.org/axis2/java/core/download.cgi#a1.6.0"&gt;http://axis.apache.org/axis2/java/core/download.cgi#a1.6.0&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://axis.apache.org/axis2/java/rampart/download/1.6.0/download.cgi"&gt;http://axis.apache.org/axis2/java/rampart/download/1.6.0/download.cgi&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://axis.apache.org/axis2/java/sandesha/download.cgi#a1.6.0"&gt;http://axis.apache.org/axis2/java/sandesha/download.cgi#a1.6.0&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As always, we welcome any and all feedback at:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;java-dev@axis.apache.org - for developer-related questions/concerns&lt;/div&gt;&lt;div&gt;java-user@axis.apache.org - for general questions, usage, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;NOTE  - Axis2 1.6.0 compatible with Axis2 Transports 1.0.0 version but&lt;/div&gt;&lt;div&gt;it is recommended to upgrade to scheduled Axis2 Transport 1.6.0&lt;/div&gt;&lt;div&gt;version once it available.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-731007142027426730?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FBJc8j6sxi7yPr3Wy9ZbQBdzuCg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FBJc8j6sxi7yPr3Wy9ZbQBdzuCg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FBJc8j6sxi7yPr3Wy9ZbQBdzuCg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FBJc8j6sxi7yPr3Wy9ZbQBdzuCg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/SL6m5H57Q7Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/731007142027426730/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=731007142027426730" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/731007142027426730?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/731007142027426730?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/SL6m5H57Q7Q/release-of-axis2-160-sandesha2-160-and.html" title="Release of Axis2 1.6.0, Sandesha2 1.6.0 and Rampart 1.6.0" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2011/06/release-of-axis2-160-sandesha2-160-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEMRnozfyp7ImA9WhZQFEk.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-8668348066849208915</id><published>2011-04-22T10:34:00.001+05:30</published><updated>2011-04-22T10:34:47.487+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-22T10:34:47.487+05:30</app:edited><title>End of another chapter .....</title><content type="html">Four years ago I started my carrier as a Software Engineer at&lt;a href="http://www.ifsworld.com/si-LK" target="_blank"&gt; IFS R&amp;amp;D&lt;/a&gt; , IFS is a great S/W company with excellent culture but I couldn't settle with their technical stack. Six months later I decided to join with a very young S/W service company at that time called &lt;a href="http://www.aeturnum.com/" target="_blank"&gt;Aeturnum&lt;/a&gt;. Last three and half years I spent as a &lt;a href="http://www.aeturnum.com/" target="_blank"&gt;Aeturnum &lt;/a&gt;employe because I found lot of challenging tasks and very friendly working culture.&lt;br /&gt;&lt;br /&gt;Instead of defining technical limitations senior people always allow us to come up with innovative solutions and encouraged us to study and leverage cutting edge technologies. I don't  think majority of other companies grant such freedom or opportunities. Aeturnum  also maintaining a very  friendly working culture starting from top management. In my point of view letting people to take self responsibilities is much more successful management practice . During last three years I got privilege to  involve with lot of best projects from US clients and one of the great in house product called &lt;a href="http://www.athiva.com/" target="_blank"&gt;Athiva &lt;/a&gt;that leverage concepts of modern SOA and cloud platforms.&lt;br /&gt;&lt;br /&gt;From my undergraduate age I had passion with Free and Open Source Software development, In Aeturnum I had enough freedom to contribute to open source projects and also to participate FOSS events. If I didn't get such support I don't think I can be a Apache Committer in 2009.  Other than that company encourage and gave excellent support to organize open source events within the company (even financial support)  for the benefit of all employes.  &lt;a href="http://apacheweek.lk.aeturnum.com/" target="_blank"&gt;Aeturnum Apache Week&lt;/a&gt;, &lt;a href="http://www.meetup.com/Firefox/Aeturnum-4-Firefox/88263/" target="_blank"&gt;FireFox launch&lt;/a&gt; parties are some of the great events we organized.&lt;br /&gt;&lt;br /&gt;As every good thing comes to an end today  I'm in a position to leave Aeturnum to reach my future endeavors. I wish all the best and great future to Aeturnum  and all of my friends there !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-8668348066849208915?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rbgeXZZOf4HHX9ILTCCqApumc1I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rbgeXZZOf4HHX9ILTCCqApumc1I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rbgeXZZOf4HHX9ILTCCqApumc1I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rbgeXZZOf4HHX9ILTCCqApumc1I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/LrLkgsEHKqQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/8668348066849208915/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=8668348066849208915" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/8668348066849208915?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/8668348066849208915?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/LrLkgsEHKqQ/end-of-another-chapter_22.html" title="End of another chapter ....." /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2011/04/end-of-another-chapter_22.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEGQn85cCp7ImA9Wx9bEkU.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-357011111241554571</id><published>2011-02-21T15:42:00.003+05:30</published><updated>2011-02-21T15:50:23.128+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-21T15:50:23.128+05:30</app:edited><title>Apache Woden 1.0M9 released</title><content type="html">&lt;a href="http://ws.apache.org/woden/"&gt;Apache Woden&lt;/a&gt; is a Java library for  reading, manipulating, creating and writing WSDL 2.0 documents also facilitates to convert WSDL 1.1 documents to WSDL 2.0. Apache Woden provide API for WSDL 2.0 spec and two implementations based on W3C DOM and &lt;a href="http://ws.apache.org/axiom/"&gt;Apache Axiom&lt;/a&gt; OM . Woden primarily used with some other Apache projects like &lt;a href="http://axis.apache.org/axis2/java/core/"&gt;Axis2 &lt;/a&gt;and &lt;a href="http://servicemix.apache.org/"&gt;ServiceMix&lt;/a&gt; . Last week Woden &lt;leo_highlight style="border-bottom: 2px solid rgb(255, 255, 150); background: transparent none repeat scroll 0% 50%; cursor: pointer; display: inline; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" id="leoHighlights_Underline_0" onclick="leoHighlightsHandleClick('leoHighlights_Underline_0')" onmouseover="leoHighlightsHandleMouseOver('leoHighlights_Underline_0')" onmouseout="leoHighlightsHandleMouseOut('leoHighlights_Underline_0')" leohighlights_keywords="team" leohighlights_url_top="http%3A//shortcuts.thebrowserhighlighter.com/leonardo/plugin/highlights/3_2/tbh_highlightsTop.jsp?keywords%3Dteam%26domain%3Dwww.blogger.com" leohighlights_url_bottom="http%3A//shortcuts.thebrowserhighlighter.com/leonardo/plugin/highlights/3_2/tbh_highlightsBottom.jsp?keywords%3Dteam%26domain%3Dwww.blogger.com" leohighlights_underline="true"&gt;team&lt;/leo_highlight&gt; manged to release long waiting&lt;a href="http://ws.apache.org/woden/dev/1.0/builds.html"&gt; 1.0M9&lt;/a&gt; version and it provides lot of new features and improvements over older versions. I have mentioned some of those important features here.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Until this release Woden project used both Maven and Ant partially for project building. With this release Woden source completely refactored to into several Maven modules according to the functionality and underline implementation. Maven dependencies/ Unit tests  also have refactored according to each module.&lt;/li&gt;&lt;li&gt;A serialization approach for WSDL 2.0 Component model was introduced with this release this was a one significant missing piece. Now its possible to serialize WSDL 2.0 documents in both  Component and Element model.&lt;/li&gt;&lt;li&gt;&lt;a href="http://ssagara.blogspot.com/2009/01/converting-wsdl11-to-wsdl20-using-woden.html"&gt;Woden tool&lt;/a&gt; module is another attractive module that facilitate convert existing WSDL 1.1 documents into WSDL 2.0 documents. This is a vital &lt;leo_highlight style="border-bottom: 2px solid rgb(255, 255, 150); background: transparent none repeat scroll 0% 50%; cursor: pointer; display: inline; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" id="leoHighlights_Underline_1" onclick="leoHighlightsHandleClick('leoHighlights_Underline_1')" onmouseover="leoHighlightsHandleMouseOver('leoHighlights_Underline_1')" onmouseout="leoHighlightsHandleMouseOut('leoHighlights_Underline_1')" leohighlights_keywords="tool" leohighlights_url_top="http%3A//shortcuts.thebrowserhighlighter.com/leonardo/plugin/highlights/3_2/tbh_highlightsTop.jsp?keywords%3Dtool%26domain%3Dwww.blogger.com" leohighlights_url_bottom="http%3A//shortcuts.thebrowserhighlighter.com/leonardo/plugin/highlights/3_2/tbh_highlightsBottom.jsp?keywords%3Dtool%26domain%3Dwww.blogger.com" leohighlights_underline="true"&gt;tool&lt;/leo_highlight&gt; if someone want to migrate from WSDL 1.1 to WSDL 2.0. Woden Converter Maven plug-in and &lt;a href="http://dilshaned.blogspot.com/2010/01/woden-converter-ant-task.html"&gt;Woden Converter Ant Task&lt;/a&gt; are also useful additions.&lt;/li&gt;&lt;li&gt;With this release Woden no longer depends on  Apache Xerces and possible to plug any JAXP implementations. I have noticed some user issues on Axis2 list when deploying axis2 on JBoss 4/5 due to incompatibility issues of  Apache Xerces libraries.&lt;/li&gt;&lt;li&gt;Private QName class was moved to a new module so that it doesn't make conflicts with standard QName class.&lt;/li&gt;&lt;li&gt;Woden no longer depends on Apache Xerces and possible to plug any JAXP implementation and work properly with JDK default implementation .&lt;/li&gt;&lt;li&gt;Replaced Woden's simple logging mechanism by Commons logging API. This gives flexibilities to users to control debug levels.   &lt;/li&gt;&lt;li&gt; Equal methods implementation for  component  model&lt;/li&gt;&lt;li&gt;Improved API for OM implementation.     &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="if(typeof(jsCall)=='function'){jsCall();}else{setTimeout('jsCall()',500);}" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="if(typeof(jsCall)=='function'){jsCall();}else{setTimeout('jsCall()',500);}" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;span id="leoHighlights_iframe_modal_span_container"&gt;&lt;div id="leoHighlights_iframe_modal_div_container" style="position: absolute; visibility: hidden; display: none; width: 520px; height: 391px; z-index: 2147483647;" onmouseover="leoHighlightsHandleIFrameMouseOver();" onmouseout="leoHighlightsHandleIFrameMouseOut();"&gt;        &lt;!-- Top iFrame --&gt;    &lt;iframe id="leoHighlights_top_iframe" name="leoHighlights_top_iframe" title="leoHighlights_top_iframe" src="about:blank" vspace="0" hspace="0" marginwidth="0" marginheight="0" allowtransparency="true" style="position: absolute; top: 0px; left: 0px; width: 520px; height: 294px; z-index: 2147483647;" frameborder="0" height="294" scrolling="no" width="520"&gt;    &lt;/iframe&gt;        &lt;!-- Bottom iFrame --&gt;    &lt;iframe id="leoHighlights_bottom_iframe" name="leoHighlights_bottom_iframe" title="leoHighlights_bottom_iframe" src="about:blank" vspace="0" hspace="0" marginwidth="0" marginheight="0" allowtransparency="true" style="position: absolute; top: 294px; left: 96px; z-index: 2147483647;" frameborder="0" height="" scrolling="no" width=""&gt;    &lt;/iframe&gt; &lt;/div&gt;  &lt;script defer="defer" type="text/javascript"&gt;    var LEO_HIGHLIGHTS_INFINITE_LOOP_COUNT =              300;    var LEO_HIGHLIGHTS_MAX_HIGHLIGHTS =                   50;    var LEO_HIGHLIGHTS_IFRAME_TOP_ID =                    "leoHighlights_top_iframe";    var LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID =                 "leoHighlights_bottom_iframe";    var LEO_HIGHLIGHTS_IFRAME_DIV_ID =                    "leoHighlights_iframe_modal_div_container";           var LEO_HIGHLIGHTS_IFRAME_TOTAL_COLLAPSED_WIDTH =     520;    var LEO_HIGHLIGHTS_IFRAME_TOTAL_COLLAPSED_HEIGHT =    391;        var LEO_HIGHLIGHTS_IFRAME_TOTAL_EXPANDED_WIDTH =      520;    var LEO_HIGHLIGHTS_IFRAME_TOTAL_EXPANDED_HEIGHT =     665;        var LEO_HIGHLIGHTS_IFRAME_TOP_POS_X =                 0;    var LEO_HIGHLIGHTS_IFRAME_TOP_POS_Y =                 0;    var LEO_HIGHLIGHTS_IFRAME_TOP_WIDTH =                 520;    var LEO_HIGHLIGHTS_IFRAME_TOP_HEIGHT =                294;        var LEO_HIGHLIGHTS_IFRAME_BOTTOM_POS_X =              96;    var LEO_HIGHLIGHTS_IFRAME_BOTTOM_POS_Y =              294;    var LEO_HIGHLIGHTS_IFRAME_BOTTOM_COLLAPSED_WIDTH =    425;    var LEO_HIGHLIGHTS_IFRAME_BOTTOM_COLLAPSED_HEIGHT =   97;    var LEO_HIGHLIGHTS_IFRAME_BOTTOM_EXPANDED_WIDTH =     425;    var LEO_HIGHLIGHTS_IFRAME_BOTTOM_EXPANDED_HEIGHT =    371;              var LEO_HIGHLIGHTS_SHOW_DELAY_MS =                    300;    var LEO_HIGHLIGHTS_HIDE_DELAY_MS =                    750;    var LEO_HIGHLIGHTS_SHOW_DELAY_NO_UNDER_MS =           850;        var LEO_HIGHLIGHTS_BACKGROUND_STYLE_DEFAULT =         "transparent none repeat scroll 0% 0%";    var LEO_HIGHLIGHTS_BACKGROUND_STYLE_HOVER =           "rgb(245, 245, 0) none repeat scroll 0% 0%";    var LEO_HIGHLIGHTS_ROVER_TAG =                        "711-36858-13496-14";     createInlineScriptElement("var%20LEO_HIGHLIGHTS_DEBUG%20%3D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20false%3B%0Avar%20LEO_HIGHLIGHTS_DEBUG_POS%20%3D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20false%3B%0A%20%20%20%0Avar%20_leoHighlightsPrevElem%20%3D%20null%3B%0Avar%20_leoHighlightsSnoozed%20%3D%20false%3B%0A%0A/**%0A%20*%20Checks%20if%20the%20passed%20in%20class%20exists%0A%20*%20@param%20c%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsClassExists%28c%29%20%7B%0A%20%20%20return%20typeof%28c%29%20%3D%3D%20%22function%22%20%26%26%20typeof%28c.prototype%29%20%3D%3D%20%22object%22%20?%20true%20%3A%20false%3B%0A%7D%0A%0A/**%0A%20*%20Checks%20if%20the%20firebug%20console%20is%20available%0A%20*%20@param%20c%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsFirebugConsoleAvailable%28c%29%20%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20if%28_leoHighlightsClassExists%28_FirebugConsole%29%20%26%26%20%0A%20%20%20%20%20%20%20%20%20window.console%20%26%26%20console.log%20%26%26%20%0A%20%20%20%20%20%20%20%20%20%28console%20instanceof%20_FirebugConsole%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%7D%0A%20%20%20catch%28e%29%7B%7D%0A%20%20%20%0A%20%20%20return%20false%3B%0A%7D%20%0A%0A%0A/**%0A%20*%20General%20method%20used%20to%20debug%20exceptions%0A%20*%20%0A%20*%20@param%20location%0A%20*%20@param%20e%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsReportExeception%28location%2Ce%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20if%28_leoHighlightsFirebugConsoleAvailable%28%29%20||LEO_HIGHLIGHTS_DEBUG%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20var%20logString%3Dlocation%2B%22%3A%20%22%2Be%2B%22%5Cn%5Ct%22%2Be.name%2B%22%5Cn%5Ct%22%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28e.number%260xFFFF%29%2B%22%5Cn%5Ct%22%2Be.description%3B%0A%20%20%20%20%20%20%20%20%20if%28_leoHighlightsFirebugConsoleAvailable%28%29%29%0A%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.error%28logString%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.trace%28%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%28LEO_HIGHLIGHTS_DEBUG%29%0A%20%20%20%20%20%20%20%20%20alert%28logString%29%3B%20%20%20%20%20%20%0A%20%20%20%7D%0A%20%20%20catch%28e%29%7B%7D%0A%7D%0A%0A/**%0A%20*%20This%20will%20log%20a%20string%20to%20the%20firebug%20console%0A%20*%20%0A%20*%20@param%20str%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsDebugLog%28str%29%0A%7B%20%20%20%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20if%28_leoHighlightsFirebugConsoleAvailable%28%29%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20console.log%28typeof%28_FirebugConsole%29%2B%22%20%22%2Bstr%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22_leoHighlightsDebugLog%28%29%20%22%2Bstr%2Ce%29%3B%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20This%20will%20get%20an%20attribute%20and%20decode%20it.%0A%20*%20%0A%20*%20@param%20elem%0A%20*%20@param%20id%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsGetAttrib%28elem%2Cid%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20var%20val%3Delem.getAttribute%28id%29%3B%0A%20%20%20%20%20%20return%20decodeURI%28val%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22_leoHighlightsGetAttrib%28%29%22%2Ce%29%3B%20%20%20%20%0A%20%20%20%7D%0A%20%20%20return%20null%3B%0A%7D%0A%0A/**%0A%20*%20Checks%20if%20this%20is%20within%20a%20frame%20by%20checking%20for%20a%20parent.%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsIsFrame%28%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%20%20%20%0A%20%20%20%20%20%20return%20%28window%21%3Dtop%29%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22_leoHighlightsIsFrame%28%29%22%2Ce%29%3B%20%20%20%20%20%0A%20%20%20%7D%0A%20%20%0A%20%20%20return%20false%3B%0A%7D%0A%0A/**%0A%20*%20This%20is%20a%20dimensions%20object%0A%20*%20%0A%20*%20@param%20width%0A%20*%20@param%20height%0A%20*%20@return%0A%20*/%0Afunction%20LeoHighlightsDimension%28width%2Cheight%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%09this.width%3Dwidth%3B%0A%20%20%20%09this.height%3Dheight%3B%0A%20%20%20%09this.toString%3Dfunction%28%29%20%7B%20return%20%28%22%28%22%2Bthis.width%2B%22%2C%22%2Bthis.height%2B%22%29%22%29%3B%7D%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22new%20LeoHighlightsDimension%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%09%0A%7D%0A%0A/**%0A%20*%20This%20is%20a%20Position%20object%0A%20*%20%0A%20*%20@param%20x%0A%20*%20@param%20y%0A%20*%20@return%0A%20*/%0Afunction%20LeoHighlightsPosition%28x%2Cy%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%09this.x%3Dx%3B%0A%20%20%20%09this.y%3Dy%3B%0A%20%20%20%09this.toString%3Dfunction%28%29%20%7B%20return%20%28%22%28%22%2Bthis.x%2B%22%2C%22%2Bthis.y%2B%22%29%22%29%3B%7D%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22new%20LeoHighlightsPosition%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%09%0A%7D%0A%0Avar%20LEO_HIGHLIGHTS_ADJUSTMENT%20%3D%20new%20LeoHighlightsPosition%283%2C3%29%3B%0Avar%20LEO_HIGHLIGHTS_IFRAME_TOP_SIZE%20%3D%20new%20LeoHighlightsDimension%28LEO_HIGHLIGHTS_IFRAME_TOP_WIDTH%2CLEO_HIGHLIGHTS_IFRAME_TOP_HEIGHT%29%3B%0Avar%20LEO_HIGHLIGHTS_IFRAME_BOTTOM_HOVER_SIZE%20%3D%20new%20LeoHighlightsDimension%28LEO_HIGHLIGHTS_IFRAME_BOTTOM_COLLAPSED_WIDTH%2CLEO_HIGHLIGHTS_IFRAME_BOTTOM_COLLAPSED_HEIGHT%29%3B%0Avar%20LEO_HIGHLIGHTS_IFRAME_BOTTOM_CLICK_SIZE%20%3D%20new%20LeoHighlightsDimension%28LEO_HIGHLIGHTS_IFRAME_BOTTOM_EXPANDED_WIDTH%2CLEO_HIGHLIGHTS_IFRAME_BOTTOM_EXPANDED_HEIGHT%29%3B%0A%0Avar%20LEO_HIGHLIGHTS_DIV_HOVER_SIZE%20%3D%20new%20LeoHighlightsDimension%28LEO_HIGHLIGHTS_IFRAME_TOTAL_COLLAPSED_WIDTH%2CLEO_HIGHLIGHTS_IFRAME_TOTAL_COLLAPSED_HEIGHT%29%3B%0Avar%20LEO_HIGHLIGHTS_DIV_CLICK_SIZE%20%3D%20new%20LeoHighlightsDimension%28LEO_HIGHLIGHTS_IFRAME_TOTAL_EXPANDED_WIDTH%2CLEO_HIGHLIGHTS_IFRAME_TOTAL_EXPANDED_HEIGHT%29%3B%0A%0A%0A/**%0A%20*%20Sets%20the%20size%20of%20the%20passed%20in%20element%0A%20*%20%0A%20*%20@param%20elem%0A%20*%20@param%20dim%20%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsSetSize%28elem%2Cdim%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%09//%20Set%20the%20popup%20location%0A%20%20%20%09elem.style.width%20%3D%20dim.width%20%2B%20%22px%22%3B%0A%20%20%20%09if%28elem.width%29%0A%20%20%20%09%09elem.width%3Ddim.width%3B%0A%20%20%20%09elem.style.height%20%20%3D%20dim.height%20%2B%20%22px%22%3B%0A%20%20%20%09if%28elem.height%29%0A%20%20%20%09%09elem.height%3Ddim.height%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22_leoHighlightsSetSize%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%09%0A%7D%0A%0A/**%0A%20*%20This%20can%20be%20used%20for%20a%20simple%20one%20argument%20callback%0A%20*%0A%20*%20@param%20callName%0A%20*%20@param%20argName%0A%20*%20@param%20argVal%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsSimpleGwCallBack%28callName%2CargName%2C%20argVal%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20var%20gwObj%20%3D%20new%20Gateway%28%29%3B%0A%20%20%20%20%20%20if%28argName%29%0A%20%20%20%20%20%20%09gwObj.addParam%28argName%2CargVal%29%3B%0A%20%20%20%20%20%20gwObj.callName%28callName%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22_leoHighlightsSimpleGwCallBack%28%29%20%22%2BcallName%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20This%20gets%20a%20url%20argument%20from%20the%20current%20document.%0A%20*%20%0A%20*%20@param%20url%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsGetUrlArg%28url%2C%20name%20%29%0A%7B%0A%09%20%20name%20%3D%20name.replace%28/[%5C[]/%2C%22%5C%5C%5C[%22%29.replace%28/[%5C]]/%2C%22%5C%5C%5C]%22%29%3B%0A%09%20%20var%20regexS%20%3D%20%22[%5C%5C?%26]%22%2Bname%2B%22%3D%28[^%26%23]*%29%22%3B%0A%09%20%20var%20regex%20%3D%20new%20RegExp%28%20regexS%20%29%3B%0A%09%20%20var%20results%20%3D%20regex.exec%28url%29%3B%0A%09%20%20if%28%20results%20%3D%3D%20null%20%29%0A%09%20%20%20%20return%20%22%22%3B%0A%09%20%20else%0A%09%20%20%20%20return%20results[1]%3B%0A%7D%0A%0A%0A/**%0A%20*%20This%20allows%20to%20redirect%20the%20top%20window%20to%20the%20passed%20in%20url%0A%20*%20%0A%20*%20@param%20url%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsRedirectTop%28url%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%20%20%20%09%0A%20%20%20%09top.location%3Durl%3B%09%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22_leoHighlightsRedirectTop%28%29%22%2Ce%29%3B%0A%20%20%20%7D%0A%7D%0A%0A%0A/**%0A%20*%20This%20will%20find%20an%20element%20by%20Id%0A%20*%20%0A%20*%20@param%20elemId%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsFindElementById%28elemId%2Cdoc%29%0A%7B%0A%09try%0A%09%7B%0A%09%20%20%20if%28doc%3D%3Dnull%29%0A%09%20%20%20%20%20%20doc%3Ddocument%3B%0A%09%20%20%20%0A%09%09var%20elem%3Ddoc.getElementById%28elemId%29%3B%0A%09%09if%28elem%29%0A%09%09%09return%20elem%3B%0A%09%09%0A%09%09/*%20This%20is%20the%20handling%20for%20IE%20*/%0A%09%09if%28doc.all%29%0A%09%09%7B%0A%09%09%09elem%3Ddoc.all[elemId]%3B%0A%20%20%20%20%20%20%20%20%20if%28elem%29%0A%20%20%20%20%20%20%20%20%20%09return%20elem%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20for%20%28%20var%20i%20%3D%20%28document.all.length-1%29%3B%20i%20%3E%3D%200%3B%20i--%29%20%7B%0A%20%20%20%20%20%20%20%20%20%09elem%3Ddoc.all[i]%3B%0A%20%20%20%20%20%20%20%20%20%09if%28elem.id%3D%3DelemId%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20elem%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%09%09%7D%0A%09%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22_leoHighlightsFindElementById%28%29%22%2Ce%29%3B%0A%20%20%20%7D%0A%09return%20null%3B%0A%7D%0A%0A/**%0A%20*%20Get%20the%20location%20of%20one%20element%20relative%20to%20a%20parent%20reference%0A%20*%0A%20*%20@param%20ref%0A%20*%20%20%20%20%20%20%20%20%20%20%20the%20reference%20element%2C%20this%20must%20be%20a%20parent%20of%20the%20passed%20in%0A%20*%20%20%20%20%20%20%20%20%20%20%20element%0A%20*%20@param%20elem%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsGetLocation%28ref%2C%20elem%29%20%7B%0A%20%20%20_leoHighlightsDebugLog%28%22_leoHighlightsGetLocation%20%22%2Belem.id%29%3B%0A%20%20%20%0A%20%20%20var%20count%20%3D%200%3B%0A%20%20%20var%20location%20%3D%20new%20LeoHighlightsPosition%280%2C0%29%3B%0A%20%20%20var%20walk%20%3D%20elem%3B%0A%20%20%20while%20%28walk%20%21%3D%20null%20%26%26%20walk%20%21%3D%20ref%20%26%26%20count%20%3C%20LEO_HIGHLIGHTS_INFINITE_LOOP_COUNT%29%20%7B%0A%20%20%20%20%20%20location.x%20%2B%3D%20walk.offsetLeft%3B%0A%20%20%20%20%20%20location.y%20%2B%3D%20walk.offsetTop%3B%0A%20%20%20%20%20%20walk%20%3D%20walk.offsetParent%3B%0A%20%20%20%20%20%20count%2B%2B%3B%0A%20%20%20%7D%0A%20%20%20%0A%20%20%20_leoHighlightsDebugLog%28%22Location%20is%3A%20%22%2Belem.id%2B%22%20-%20%22%2Blocation%29%3B%0A%0A%20%20%20return%20location%3B%0A%7D%0A%0A/**%0A%20*%20This%20is%20used%20to%20update%20the%20position%20of%20an%20element%20as%20a%20popup%0A%20*%20%0A%20*%20@param%20IFrame%0A%20*%20@param%20anchor%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsUpdatePopupPos%28iFrame%2Canchor%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20//%20Gets%20the%20scrolled%20location%20for%20x%20and%20y%0A%20%20%20%20%20%20var%20scrolledPos%3Dnew%20LeoHighlightsPosition%280%2C0%29%3B%0A%20%20%20%20%20%20if%28%20self.pageYOffset%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20scrolledPos.x%20%3D%20self.pageXOffset%3B%0A%20%20%20%20%20%20%20%20%20scrolledPos.y%20%3D%20self.pageYOffset%3B%0A%20%20%20%20%20%20%7D%20else%20if%28%20document.documentElement%20%26%26%20document.documentElement.scrollTop%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20scrolledPos.x%20%3D%20document.documentElement.scrollLeft%3B%0A%20%20%20%20%20%20%20%20%20scrolledPos.y%20%3D%20document.documentElement.scrollTop%3B%0A%20%20%20%20%20%20%7D%20else%20if%28%20document.body%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20scrolledPos.x%20%3D%20document.body.scrollLeft%3B%0A%20%20%20%20%20%20%20%20%20scrolledPos.y%20%3D%20document.body.scrollTop%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Get%20the%20total%20dimensions%20to%20see%20what%20scroll%20bars%20might%20be%20active%20*/%0A%20%20%20%20%20%20var%20totalDim%3Dnew%20LeoHighlightsDimension%280%2C0%29%0A%20%20%20%20%20%20if%20%28document.all%20%26%26%20document.documentElement%20%26%26%20%0A%20%20%20%20%20%20%09document.documentElement.clientHeight%26%26document.documentElement.clientWidth%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%09totalDim.width%20%3D%20document.documentElement.scrollWidth%3B%0A%20%20%20%20%20%20%09totalDim.height%20%3D%20document.documentElement.scrollHeight%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%20if%20%28document.all%29%0A%20%20%20%20%20%20%7B%20/*%20This%20is%20in%20IE%20*/%0A%20%20%20%20%20%09%20%09totalDim.width%20%3D%20document.body.scrollWidth%3B%0A%20%20%20%20%20%20%09totalDim.height%20%3D%20document.body.scrollHeight%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%09%20totalDim.width%20%3D%20document.width%3B%0A%20%20%20%20%20%20%09%20totalDim.height%20%3D%20document.height%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%20Gets%20the%20location%20of%20the%20available%20screen%20space%0A%20%20%20%20%20%20var%20centerDim%3Dnew%20LeoHighlightsDimension%280%2C0%29%3B%0A%20%20%20%20%20%20if%28self.innerWidth%20%26%26%20self.innerHeight%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20centerDim.width%20%3D%20self.innerWidth-%28totalDim.height%3Eself.innerHeight?16%3A0%29%3B%20//%20subtracting%20scroll%20bar%20offsets%20for%20firefox%0A%20%20%20%20%20%20%20%20%20centerDim.height%20%3D%20self.innerHeight-%28totalDim.width%3Eself.innerWidth?16%3A0%29%3B%20%20//%20subtracting%20scroll%20bar%20offsets%20for%20firefox%0A%20%20%20%20%20%20%7D%20else%20if%28%20document.documentElement%20%26%26%20document.documentElement.clientHeight%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20centerDim.width%20%3D%20document.documentElement.clientWidth%3B%0A%20%20%20%20%20%20%20%20%20centerDim.height%20%3D%20document.documentElement.clientHeight%3B%0A%20%20%20%20%20%20%7D%20else%20if%28%20document.body%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20centerDim.width%20%3D%20document.body.clientWidth%3B%0A%20%20%20%20%20%20%20%20%20centerDim.height%20%3D%20document.body.clientHeight%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20//%20Get%20the%20current%20dimension%20of%20the%20popup%20element%0A%20%20%20%20%20%20var%20iFrameDim%3Dnew%20LeoHighlightsDimension%28iFrame.offsetWidth%2CiFrame.offsetHeight%29%0A%20%20%20%20%20%20if%20%28iFrameDim.width%20%3C%3D%200%29%0A%20%20%20%20%20%20%09iFrameDim.width%20%3D%20iFrame.style.width.substring%280%2C%20iFrame.style.width.indexOf%28%27px%27%29%29%3B%0A%20%20%20%20%20%20if%20%28iFrameDim.height%20%3C%3D%200%29%0A%20%20%20%20%20%20%09iFrameDim.height%20%3D%20iFrame.style.height.substring%280%2C%20iFrame.style.height.indexOf%28%27px%27%29%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Calculate%20the%20position%2C%20lower%20right%20hand%20corner%20by%20default%20*/%0A%20%20%20%20%20%20var%20position%3Dnew%20LeoHighlightsPosition%280%2C0%29%3B%0A%20%20%20%20%20%20position.x%3DscrolledPos.x%2BcenterDim.width-iFrameDim.width-LEO_HIGHLIGHTS_ADJUSTMENT.x%3B%0A%20%20%20%20%20%20position.y%3DscrolledPos.y%2BcenterDim.height-iFrameDim.height-LEO_HIGHLIGHTS_ADJUSTMENT.y%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20if%28anchor%21%3Dnull%29%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20//centerDim%20in%20relation%20to%20the%20anchor%20element%20if%20available%0A%20%20%20%20%20%20%20%20%20var%20topOrBottom%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20var%20anchorPos%3D_leoHighlightsGetLocation%28document.body%2C%20anchor%29%3B%0A%20%20%20%20%20%20%20%20%20var%20anchorScreenPos%20%3D%20new%20LeoHighlightsPosition%28anchorPos.x-scrolledPos.x%2CanchorPos.y-scrolledPos.y%29%3B%0A%20%20%20%20%20%20%20%20%20var%20anchorDim%3Dnew%20LeoHighlightsDimension%28anchor.offsetWidth%2Canchor.offsetHeight%29%0A%20%20%20%20%20%20%20%20%20if%20%28anchorDim.width%20%3C%3D%200%29%0A%20%20%20%20%20%20%20%20%20%09anchorDim.width%20%3D%20anchor.style.width.substring%280%2C%20anchor.style.width.indexOf%28%27px%27%29%29%3B%0A%20%20%20%20%20%20%20%20%20if%20%28anchorDim.height%20%3C%3D%200%29%0A%20%20%20%20%20%20%20%20%20%09anchorDim.height%20%3D%20anchor.style.height.substring%280%2C%20anchor.style.height.indexOf%28%27px%27%29%29%3B%0A%0A%20%20%20%20%20%20%20%20%20//%20Check%20if%20the%20popup%20can%20be%20shown%20above%20or%20below%20the%20element%0A%20%20%20%20%20%20%20%20%20if%20%28centerDim.height%20-%20anchorDim.height%20-%20iFrameDim.height%20-%20anchorScreenPos.y%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%09//%20Show%20below%2C%20formula%20above%20calculates%20space%20below%20open%20iFrame%0A%20%20%20%20%20%20%20%20%20%20%20%20position.y%20%3D%20anchorPos.y%20%2B%20anchorDim.height%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20topOrBottom%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%7D%20else%20if%20%28anchorScreenPos.y%20-%20anchorDim.height%20-%20iFrameDim.height%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%09//%20Show%20above%2C%20formula%20above%20calculates%20space%20above%20open%20iFrame%0A%20%20%20%20%20%20%20%20%20%09position.y%20%3D%20anchorPos.y%20-%20iFrameDim.height%20-%20anchorDim.height%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20topOrBottom%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20_leoHighlightsDebugLog%28%22_leoHighlightsUpdatePopupPos%28%29%20-%20topOrBottom%3A%20%22%2BtopOrBottom%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20if%20%28topOrBottom%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20//%20We%20attempt%20top%20attach%20the%20window%20to%20the%20element%0A%20%20%20%20%20%20%20%20%20%09position.x%20%3D%20anchorPos.x%20-%20iFrameDim.width%20/%202%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28position.x%20%3C%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%09position.x%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20%28position.x%20%2B%20iFrameDim.width%20%3E%20scrolledPos.x%20%2B%20centerDim.width%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%09position.x%20%3D%20scrolledPos.x%20%2B%20centerDim.width%20-%20iFrameDim.width%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsDebugLog%28%22_leoHighlightsUpdatePopupPos%28%29%20-%20topOrBottom%3A%20%22%2Bposition%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20//%20Attempt%20to%20align%20on%20the%20right%20or%20left%20hand%20side%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28centerDim.width%20-%20anchorDim.width%20-%20iFrameDim.width%20-%20anchorScreenPos.x%20%3E%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20position.x%20%3D%20anchorPos.x%20%2B%20anchorDim.width%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20if%20%28anchorScreenPos.x%20-%20anchorDim.width%20-%20iFrameDim.width%20%3E%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%09position.x%20%3D%20anchorPos.x%20-%20anchorDim.width%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%20//%20default%20to%20below%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20position.y%20%3D%20anchorPos.y%20%2B%20anchorDim.height%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsDebugLog%28%22_leoHighlightsUpdatePopupPos%28%29%20-%20sideBottom%3A%20%22%2Bposition%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Make%20sure%20that%20we%20don%27t%20go%20passed%20the%20right%20hand%20border%20*/%0A%20%20%20%20%20%20if%28position.x%2BiFrameDim.width%3EcenterDim.width-20%29%0A%20%20%20%20%20%20%09position.x%3DcenterDim.width-%28iFrameDim.width%2B20%29%3B%0A%20%20%20%20%20%20%09%09%0A%20%20%20%20%20%20//%20Make%20sure%20that%20we%20didn%27t%20go%20passed%20the%20start%0A%20%20%20%20%20%20if%28position.x%3C0%29%0A%20%20%20%20%20%20%20%20%20position.x%3D0%3B%0A%20%20%20%20%20%20if%28position.y%3C0%29%0A%20%20%20%20%20%20%09position.y%3D0%3B%0A%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22Popup%20info%20id%3A%20%20%20%20%20%20%20%22%20%2BiFrame.id%2B%22%20-%20%22%2Banchor.id%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20%22%5Cnscrolled%20%20%20%20%20%20%20%20%20%20%22%20%2B%20scrolledPos%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20%22%5Cncenter/visible%20%20%20%20%22%20%2B%20centerDim%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20%22%5Cnanchor%20%28absolute%29%20%22%20%2B%20anchorPos%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20%22%5Cnanchor%20%28screen%29%20%20%20%22%20%2B%20anchorScreenPos%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20%22%5CnSize%20%28anchor%29%20%20%20%20%20%22%20%2B%20anchorDim%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20%22%5CnSize%20%28popup%29%20%20%20%20%20%20%22%20%2B%20iFrameDim%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20%22%5CnResult%20pos%20%20%20%20%20%20%20%20%22%20%2B%20position%29%3B%0A%0A%20%20%20%20%20%20//%20Set%20the%20popup%20location%0A%20%20%20%20%20%20iFrame.style.left%20%3D%20position.x%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20iFrame.style.top%20%20%3D%20position.y%20%2B%20%22px%22%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22_leoHighlightsUpdatePopupPos%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%0A%7D%0A%0A%0A/**%0A%20*%20This%20will%20show%20the%20passed%20in%20element%20as%20a%20popup%0A%20*%20%0A%20*%20@param%20anchorId%0A%20*%20@param%20size%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsShowPopup%28anchorId%2Csize%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20if%28_leoHighlightsSnoozed%29%0A%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%0A%20%20%20%09var%20popup%3Dnew%20LeoHighlightsPopup%28anchorId%2Csize%29%3B%0A%20%20%20%09popup.show%28%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22_leoHighlightsShowPopup%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%09%0A%7D%0A%0A%0A/**%0A%20*%20This%20will%20transform%20the%20passed%20in%20url%20to%20a%20rover%20url%0A%20*%20%0A%20*%20@param%20url%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsGetRoverUrl%28url%29%0A%7B%0A%09var%20rover%3DLEO_HIGHLIGHTS_ROVER_TAG%3B%0A%09var%20roverUrl%3D%22http%3A//rover.ebay.com/rover/1/%22%2Brover%2B%22/4?%26mpre%3D%22%2BencodeURI%28url%29%3B%0A%09%0A%09return%20roverUrl%3B%0A%7D%0A%0A/**%0A%20*%20Sets%20the%20size%20of%20the%20bottom%20windown%20part%0A%20*%20%0A%20*%20@param%20size%0A%20*%20@return%0A%20*/%0Afunction%20_leoHighlightsSetBottomSize%28size%2CclickId%29%0A%7B%0A%20%20%20/*%20Get%20the%20elements%20*/%0A%20%20%20var%20iFrameBottom%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID%29%3B%0A%20%20%20var%20iFrameDiv%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_DIV_ID%29%3B%0A%0A%20%20%20/*%20Figure%20out%20the%20correct%20sizes%20*/%0A%20%20%20var%20iFrameBottomSize%3D%28size%3D%3D1%29?LEO_HIGHLIGHTS_IFRAME_BOTTOM_CLICK_SIZE%3ALEO_HIGHLIGHTS_IFRAME_BOTTOM_HOVER_SIZE%3B%0A%20%20%20var%20divSize%3D%28size%3D%3D1%29?LEO_HIGHLIGHTS_DIV_CLICK_SIZE%3ALEO_HIGHLIGHTS_DIV_HOVER_SIZE%3B%0A%0A%20%20%20/*%20Refresh%20the%20iFrame%27s%20url%2C%20by%20removing%20the%20size%20arg%20and%20adding%20it%20again%20*/%0A%20%20%20leoHighlightsUpdateUrl%28iFrameBottom%2Csize%2CclickId%29%3B%0A%0A%20%20%20/*%20Clear%20the%20hover%20flag%2C%20if%20the%20user%20shows%20this%20at%20full%20size%20*/%0A%20%20%20_leoHighlightsPrevElem.hover%3Dsize%3D%3D1?false%3Atrue%3B%0A%0A%20%20%20_leoHighlightsSetSize%28iFrameBottom%2CiFrameBottomSize%29%3B%0A%20%20%20_leoHighlightsSetSize%28iFrameDiv%2CdivSize%29%3B%0A%7D%0A%0A/**%0A%20*%20Class%20for%20a%20Popup%20%0A%20*%20%0A%20*%20@param%20anchorId%0A%20*%20@param%20size%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20LeoHighlightsPopup%28anchorId%2Csize%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22LeoHighlightsPopup%28%29%20%22%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%09this.anchorId%3DanchorId%3B%0A%20%20%20%09this.anchor%3D_leoHighlightsFindElementById%28this.anchorId%29%3B%0A%20%20%20%09this.topIframe%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_TOP_ID%29%3B%0A%20%20%20%20%20%20this.bottomIframe%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID%29%3B%0A%20%20%20%09this.iFrameDiv%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_DIV_ID%29%3B%0A%20%20%20%09%0A%20%20%20%09this.topIframe.src%3Dunescape%28this.anchor.getAttribute%28%27leoHighlights_url_top%27%29%29%3B%3B%0A%20%20%20%20%20%20this.bottomIframe.src%3Dunescape%28this.anchor.getAttribute%28%27leoHighlights_url_bottom%27%29%29%3B%3B%0A%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%221%29%20LeoHighlightsPopup%28%29%20%28%22%2Bthis.topIframe.style.top%2B%22%2C%20%22%2Bthis.topIframe.style.left%2B%22%29%22%29%3B%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%222%29%20LeoHighlightsPopup%28%29%20%28%22%2Bthis.bottomIframe.style.top%2B%22%2C%20%22%2Bthis.bottomIframe.style.left%2B%22%29%22%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%09leoHighlightsSetSize%28size%29%3B%0A%20%20%20%09%0A%20%20%20%09this.updatePos%3Dfunction%28%29%20%7B%20_leoHighlightsUpdatePopupPos%28this.iFrameDiv%2Cthis.anchor%29%3B%7D%3B%0A%20%20%20%20%20%20this.show%3Dfunction%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updatePos%28%29%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20this.iFrameDiv.style.visibility%20%3D%20%22visible%22%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20this.iFrameDiv.style.display%20%3D%20%22block%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.updatePos%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsDebugLog%28%223%29%20LeoHighlightsPopup%28%29%20%28%22%2Bthis.topIframe.style.top%2B%22%2C%20%22%2Bthis.topIframe.style.left%2B%22%29%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsDebugLog%28%224%29%20LeoHighlightsPopup%28%29%20%28%22%2Bthis.bottomIframe.style.top%2B%22%2C%20%22%2Bthis.bottomIframe.style.left%2B%22%29%22%29%3B%0A%20%20%20%20%20%20%7D%3B%20%20%20%20%20%20%20%0A%20%20%20%09this.scroll%3Dfunction%28%29%20%7B%20this.updatePos%28%29%3B%7D%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22new%20LeoHighlightsPopup%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20updates%20the%20url%20for%20the%20iFrame%0A%20*%20%0A%20*%20@param%20iFrame%0A%20*%20@param%20size%0A%20*%20@param%20clickId%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsUpdateUrl%28iFrame%2Csize%2CclickId%2CdestUrl%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHighlightsUpdateUrl%28%29%20%22%2BdestUrl%29%3B%0A%20%20%20%20%20%20var%20url%3DiFrame.src%3B%0A%20%20%20%20%20%20var%20idx%3Durl.indexOf%28%22%26size%3D%22%29%3B%0A%20%20%20%20%20%20if%28idx%3E%3D0%29%0A%20%20%20%20%20%20%20%20%20url%3Durl.substring%280%2Cidx%29%3B%0A%20%20%20%20%20%20%0A//%20%20%20%20%20%20size%3D1%3B%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHighlightsUpdateUrl%28%29%20size%3D%22%2Bsize%2B%22%20%20%22%2Burl%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%28size%21%3Dnull%29%0A%20%20%20%20%20%20%20%20%20url%2B%3D%28%22%26size%3D%22%2Bsize%29%3B%0A%20%20%20%20%20%20if%28clickId%21%3Dnull%29%0A%20%20%20%20%20%20%20%20%20url%2B%3D%28%22%26clickId%3D%22%2BclickId%29%3B%0A%20%20%20%20%20%20if%28destUrl%21%3Dnull%29%0A%20%20%20%20%20%20%20%20%20url%2B%3D%28%22%26url%3D%22%2BdestUrl%29%3B%0A%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHighlightsUpdateUrl%28%29%20%22%2Burl%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20iFrame.src%3Durl%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHighlightsUpdateUrl%28%29%22%2Ce%29%3B%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A%0A%0A/**%0A*%0A*%20This%20can%20be%20used%20to%20close%20an%20iframe%0A*%0A*%20@param%20id%0A*%20@return%0A*/%0Afunction%20leoHighlightsSetSize%28size%2CclickId%29%0A%7B%0A%09try%0A%09%7B%0A%09%09/*%20Get%20the%20element%20*/%0A%20%20%09%09var%20iFrameTop%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_TOP_ID%29%3B%0A%0A%20%20%09%09/*%20Figure%20out%20the%20correct%20sizes%20*/%0A%20%20%09%09var%20iFrameTopSize%3DLEO_HIGHLIGHTS_IFRAME_TOP_SIZE%3B%0A%20%20%09%09%0A%20%20%09%09/*%20Refresh%20the%20iFrame%27s%20url%2C%20by%20removing%20the%20size%20arg%20and%20adding%20it%20again%20*/%0A%20%20%09%09leoHighlightsUpdateUrl%28iFrameTop%2Csize%2CclickId%29%3B%0A%20%20%09%09%0A%20%20%09%09_leoHighlightsSetSize%28iFrameTop%2CiFrameTopSize%29%3B%0A%20%20%20%20%20%20_leoHighlightsSetBottomSize%28size%2CclickId%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Clear%20the%20hover%20flag%2C%20if%20the%20user%20shows%20this%20at%20full%20size%20*/%0A%20%20%20%20%20%20if%28size%3D%3D1%26%26_leoHighlightsPrevElem%29%0A%20%20%20%20%20%20%20%20%20_leoHighlightsPrevElem.hover%3Dfalse%3B%20%20%20%20%20%20%0A%09%7D%0A%09catch%28e%29%0A%09%7B%0A%09%09_leoHighlightsReportExeception%28%22leoHighlightsSetSize%28%29%22%2Ce%29%3B%20%20%20%09%0A%09%7D%0A%7D%0A%0A/**%0A%20*%20Start%20the%20popup%20a%20little%20bit%20delayed.%0A%20*%20Somehow%20IE%20needs%20some%20time%20to%20find%20the%20element%20by%20id.%0A%20*%20%0A%20*%20@param%20anchorId%0A%20*%20@param%20size%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsShowPopup%28anchorId%2Csize%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20if%28_leoHighlightsSnoozed%29%0A%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%0A%20%20%09%09var%20elem%3D_leoHighlightsFindElementById%28anchorId%29%3B%0A%20%20%09%09if%28_leoHighlightsPrevElem%26%26%28_leoHighlightsPrevElem%21%3Delem%29%29%0A%20%20%09%09%09_leoHighlightsPrevElem.shown%3Dfalse%3B%0A%20%20%09%09elem.shown%3Dtrue%3B%0A%09%09_leoHighlightsPrevElem%3Delem%3B%0A%09%09%0A%09%09_leoHighlightsDebugLog%28%22leoHighlightsShowPopup%28%29%20%22%2B_leoHighlightsPrevElem%29%3B%09%09%0A%20%20%20%09%0A%20%20%20%09/*%20FF%20needs%20to%20find%20the%20element%20first%20*/%0A%20%20%20%09_leoHighlightsFindElementById%28anchorId%29%3B%0A%20%20%20%09%0A%20%20%20%09setTimeout%28%22_leoHighlightsShowPopup%28%5C%27%22%2BanchorId%2B%22%5C%27%2C%5C%27%22%2Bsize%2B%22%5C%27%29%3B%22%2C10%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22leoHighlightsShowPopup%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%09%0A%7D%0A%0A/**%0A*%0A*%20This%20can%20be%20used%20to%20close%20an%20iframe%0A*%0A*%20@param%20id%0A*%20@return%0A*/%0Afunction%20leoHighlightsHideElem%28id%29%0A%7B%0A%09try%0A%09%7B%0A%09%09/*%20Get%20the%20appropriate%20sizes%20*/%0A%20%20%09%09var%20elem%3D_leoHighlightsFindElementById%28id%29%3B%0A%20%20%09%09if%28elem%29%0A%20%20%09%09%09elem.style.visibility%3D%22hidden%22%3B%0A%20%20%09%09%0A%20%20%09%09/*%20Clear%20the%20page%20for%20the%20next%20run%20through%20*/%0A%20%20%09%09var%20iFrame%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_TOP_ID%29%3B%0A%20%20%09%09if%28iFrame%29%0A%20%20%09%09%09iFrame.src%3D%22about%3Ablank%22%3B%0A%20%20%20%20%20%20var%20iFrame%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID%29%3B%0A%20%20%20%20%20%20if%28iFrame%29%0A%20%20%20%20%20%20%20%20%20iFrame.src%3D%22about%3Ablank%22%3B%0A%20%20%09%09%0A%20%20%09%09%0A%20%20%09%09if%28_leoHighlightsPrevElem%29%0A%20%20%09%09%7B%0A%20%20%09%09%09_leoHighlightsPrevElem.shown%3Dfalse%3B%0A%20%20%09%09%09_leoHighlightsPrevElem%3Dnull%3B%0A%20%20%09%09%7D%0A%09%7D%0A%09catch%28e%29%0A%09%7B%0A%09%09_leoHighlightsReportExeception%28%22leoHighlightsHideElem%28%29%22%2Ce%29%3B%20%20%20%09%0A%09%7D%0A%7D%0A%0A/**%0A*%0A*%20This%20can%20be%20used%20to%20close%20an%20iframe.%0A*%20Since%20the%20iFrame%20is%20reused%20the%20frame%20only%20gets%20hidden%0A*%0A*%20@return%0A*/%0Afunction%20leoHighlightsIFrameClose%28%29%0A%7B%0A%20%20try%0A%20%20%7B%0A%09%20%20_leoHighlightsSimpleGwCallBack%28%22LeoHighlightsHideIFrame%22%29%3B%0A%20%20%7D%0A%20%20catch%28e%29%0A%20%20%7B%0A%09%20%20_leoHighlightsReportExeception%28%22leoHighlightsIFrameClose%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%7D%0A%7D%0A%0A/**%0A*%0A*%20This%20is%20used%20to%20snooze%20the%20highlights.%0A*%0A*%20@return%0A*/%0Afunction%20leoHighlightsSnooze%28%29%0A%7B%0A%20%20try%0A%20%20%7B%0A%20%20%20%20%20_leoHighlightsSnoozed%3Dtrue%3B%0A%20%20%20%20%20_leoHighlightsSimpleGwCallBack%28%22LeoHighlightsSnooze%22%29%3B%0A%20%20%7D%0A%20%20catch%28e%29%0A%20%20%7B%0A%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHighlightsSnooze%28%29%22%2Ce%29%3B%20%20%20%20%0A%20%20%7D%0A%7D%0A%0A/**%0A*%0A*%20This%20is%20used%20to%20snooze%20the%20highlights.%0A*%20This%20gets%20fired%20into%20the%20top%20frame.%0A*%0A*%20@return%0A*/%0Afunction%20leoHighlightsSnoozeTop%28id%29%0A%7B%0A%20%20try%0A%20%20%7B%0A%20%20%20%20%20_leoHighlightsSnoozed%3Dtrue%3B%0A%20%20%20%20%20leoHighlightsHideElem%28id%29%3B%0A%20%20%7D%0A%20%20catch%28e%29%0A%20%20%7B%0A%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHighlightsSnoozeTop%28%29%22%2Ce%29%3B%20%20%20%20%0A%20%20%7D%0A%7D%0A%0A%0A/**%0A%20*%20This%20should%20handle%20the%20click%20events%0A%20*%20%0A%20*%20@param%20anchorId%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsHandleClick%28anchorId%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20if%28_leoHighlightsSnoozed%29%0A%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%28_leoHighlightsIsFrame%28%29%29%0A%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%0A%20%20%09%09var%20anchor%3D_leoHighlightsFindElementById%28anchorId%29%3B%0A%20%20%09%09anchor.hover%3Dfalse%3B%0A%20%20%09%09if%28anchor.startTimer%29%0A%20%20%09%09%09clearTimeout%28anchor.startTimer%29%3B%0A%20%20%20%09%0A%20%20%20%20%20%20/*%20Report%20the%20click%20event%20*/%0A%20%20%20%20%20%20leoHighlightsReportEvent%28%22clicked%22%2C%20window.document.domain%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsGetAttrib%28anchor%2C%27leohighlights_keywords%27%29%2Cnull%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsGetAttrib%28anchor%2C%27leohighlights_accept%27%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsGetAttrib%28anchor%2C%27leohighlights_reject%27%29%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%09leoHighlightsShowPopup%28anchorId%2C1%29%3B%0A%20%20%20%09return%20false%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22leoHighlightsHandleClick%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%09%0A%7D%0A%0A/**%0A%20*%20This%20should%20handle%20the%20hover%20events%0A%20*%20%0A%20*%20@param%20anchorId%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsHandleHover%28anchorId%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20if%28_leoHighlightsSnoozed%29%0A%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20if%28_leoHighlightsIsFrame%28%29%29%0A%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%0A%20%20%09%09var%20anchor%3D_leoHighlightsFindElementById%28anchorId%29%3B%0A%20%20%09%09anchor.hover%3Dtrue%3B%0A%20%20%09%09%0A%20%20%20%20%20%20/*%20Report%20the%20hover%20event%20*/%0A%20%20%20%20%20%20leoHighlightsReportEvent%28%22hovered%22%2C%20window.document.domain%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsGetAttrib%28anchor%2C%27leohighlights_keywords%27%29%2Cnull%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsGetAttrib%28anchor%2C%27leohighlights_accept%27%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20_leoHighlightsGetAttrib%28anchor%2C%27leohighlights_reject%27%29%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%09leoHighlightsShowPopup%28anchorId%2C0%29%3B%0A%20%20%20%09return%20false%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22leoHighlightsHandleHover%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%09%0A%7D%0A%0A/**%0A%20*%20This%20will%20handle%20the%20mouse%20over%20setup%20timers%20for%20the%20appropriate%20timers%0A%20*%20%0A%20*%20@param%20id%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsHandleMouseOver%28id%29%0A%7B%0A%09try%0A%09%7B%0A%20%20%20%20%20%20if%28_leoHighlightsSnoozed%29%0A%20%20%20%20%20%20%20%20%20return%3B%0A%09%20%20%20%0A%09%20%20%20if%28_leoHighlightsIsFrame%28%29%29%0A%09%20%20%20%20%20%20return%3B%0A%09%20%20%20%0A%09%09var%20anchor%3D_leoHighlightsFindElementById%28id%29%3B%09%09%0A%0A%09%09/*%20Clear%20the%20end%20timer%20if%20required%20*/%0A%09%09if%28anchor.endTimer%29%0A%09%09%09clearTimeout%28anchor.endTimer%29%3B%0A%09%09anchor.endTimer%3Dnull%3B%0A%09%09%0A%09%09anchor.style.background%3DLEO_HIGHLIGHTS_BACKGROUND_STYLE_HOVER%3B%0A%09%09%0A%09%09var%20underline%3D_leoHighlightsGetAttrib%28anchor%2C%22leohighlights_underline%22%29%3D%3D%27true%27%3B%0A%09%09%0A%09%09/*%20The%20element%20is%20already%20showing%20we%20are%20done%20*/%0A%09%09if%28anchor.shown%29%0A%09%09%09return%3B%0A%09%09%0A%09%09/*%20Setup%20the%20start%20timer%20if%20required%20*/%0A%09%09anchor.startTimer%3DsetTimeout%28function%28%29%7B%0A%09%09%09leoHighlightsHandleHover%28anchor.id%29%3B%0A%09%09%09anchor.hover%3Dtrue%3B%0A%09%09%09%7D%2Cunderline?LEO_HIGHLIGHTS_SHOW_DELAY_MS%3ALEO_HIGHLIGHTS_SHOW_DELAY_NO_UNDER_MS%29%3B%0A%09%7D%0A%09catch%28e%29%0A%09%7B%0A%09%09_leoHighlightsReportExeception%28%22leoHighlightsHandleMouseOver%28%29%22%2Ce%29%3B%20%20%20%09%0A%09%7D%0A%7D%0A%0A/**%0A%20*%20This%20will%20handle%20the%20mouse%20over%20setup%20timers%20for%20the%20appropriate%20timers%0A%20*%20%0A%20*%20@param%20id%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsHandleMouseOut%28id%29%0A%7B%0A%09try%0A%09%7B%09%0A%09%09var%20anchor%3D_leoHighlightsFindElementById%28id%29%3B%0A%09%09%0A%09%09/*%20Clear%20the%20start%20timer%20if%20required%20*/%0A%09%09if%28anchor.startTimer%29%0A%09%09%09clearTimeout%28anchor.startTimer%29%3B%0A%09%09anchor.startTimer%3Dnull%3B%0A%09%09%0A%09%09anchor.style.background%3DLEO_HIGHLIGHTS_BACKGROUND_STYLE_DEFAULT%3B%0A%09%09if%28%21anchor.shown||%21anchor.hover%29%0A%09%09%09return%3B%0A%09%09%0A%09%09/*%20Setup%20the%20start%20timer%20if%20required%20*/%0A%09%09anchor.endTimer%3DsetTimeout%28function%28%29%7B%0A%09%09%09leoHighlightsHideElem%28LEO_HIGHLIGHTS_IFRAME_DIV_ID%29%3B%0A%09%09%09anchor.shown%3Dfalse%3B%0A%09%09%09_leoHighlightsPrevElem%3Dnull%3B%0A%09%09%09%7D%2CLEO_HIGHLIGHTS_HIDE_DELAY_MS%29%3B%0A%09%7D%0A%09catch%28e%29%0A%09%7B%0A%09%09_leoHighlightsReportExeception%28%22leoHighlightsHandleMouseOut%28%29%22%2Ce%29%3B%20%20%20%09%0A%09%7D%0A%7D%0A%0A/**%0A%20*%20This%20handles%20the%20mouse%20movement%20into%20the%20currently%20opened%20window.%0A%20*%20Just%20clear%20the%20close%20timer%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsHandleIFrameMouseOver%28%29%0A%7B%0A%09try%0A%09%7B%0A%09%09if%28_leoHighlightsPrevElem%26%26_leoHighlightsPrevElem.endTimer%29%0A%09%09%09clearTimeout%28_leoHighlightsPrevElem.endTimer%29%3B%0A%09%7D%0A%09catch%28e%29%0A%09%7B%0A%09%09_leoHighlightsReportExeception%28%22leoHighlightsHandleIFrameMouseOver%28%29%22%2Ce%29%3B%20%20%20%09%0A%09%7D%0A%7D%0A%0A/**%0A%20*%20This%20handles%20the%20mouse%20movement%20into%20the%20currently%20opened%20window.%0A%20*%20Just%20clear%20the%20close%20timer%0A%20*%20%0A%20*%20@param%20id%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsHandleIFrameMouseOut%28%29%0A%7B%0A%09try%0A%09%7B%0A%09%09if%28_leoHighlightsPrevElem%29%0A%09%09%09leoHighlightsHandleMouseOut%28_leoHighlightsPrevElem.id%29%3B%0A%09%7D%0A%09catch%28e%29%0A%09%7B%0A%09%09_leoHighlightsReportExeception%28%22leoHighlightsHandleIFrameMouseOut%28%29%22%2Ce%29%3B%20%20%20%09%0A%09%7D%0A%7D%0A/**%0A%20*%20This%20is%20a%20method%20is%20used%20to%20make%20the%20javascript%20within%20IE%20runnable%0A%20*/%0Avar%20leoHighlightsRanUpdateDivs%3Dfalse%3B%0Afunction%20leoHighlightsUpdateDivs%28%29%0A%7B%0A%09try%0A%09%7B%0A%09%09/*%20Check%20if%20this%20is%20an%20IE%20browser%20and%20if%20divs%20have%20been%20updated%20already%20*/%0A%09%09if%28document.all%26%26%21leoHighlightsRanUpdateDivs%26%26%21_leoHighlightsIsFrame%28%29%29%0A%09%09%7B%0A%09%09%09leoHighlightsRanUpdateDivs%3Dtrue%3B%20//%20Set%20early%20to%20prevent%20running%20twice%0A%09%09%09for%28var%20i%3D0%3Bi%3CLEO_HIGHLIGHTS_MAX_HIGHLIGHTS%3Bi%2B%2B%29%0A%09%09%09%7B%0A%09%09%09%09var%20id%3D%22leoHighlights_Underline_%22%2Bi%3B%0A%09%09%09%09var%20elem%3D_leoHighlightsFindElementById%28id%29%3B%0A%09%09%09%09if%28elem%3D%3Dnull%29%0A%09%09%09%09%09break%3B%0A%09%09%09%09%0A%09%09%09%09if%28%21elem.leoChanged%29%0A%09%09%09%09%7B%0A%09%09%09%09%09elem.leoChanged%3Dtrue%3B%0A%09%09%09%09%0A%09%09%09%09%09/*%20This%20will%20make%20javaScript%20runnable%20*/%09%09%09%09%0A%09%09%09%09%09elem.outerHTML%3Delem.outerHTML%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%09catch%28e%29%0A%09%7B%0A%09%09_leoHighlightsReportExeception%28%22leoHighlightsUpdateDivs%28%29%22%2Ce%29%3B%20%20%20%09%0A%09%7D%0A%7D%0A%0Aif%28document.all%29%0A%09setTimeout%28leoHighlightsUpdateDivs%2C200%29%3B%0A%0A%0A/**%0A%20*%20This%20is%20used%20to%20report%20events%20to%20the%20plugin%0A%20*%20@param%20key%0A%20*%20@param%20domain%0A%20*%20@param%20keywords%0A%20*%20@param%20vendorId%0A%20*%20@param%20accept%0A%20*%20@param%20reject%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsReportEvent%28key%2C%20domain%2Ckeywords%2CvendorId%2Caccept%2Creject%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20var%20gwObj%20%3D%20new%20Gateway%28%29%3B%0A%20%20%20%20%20%20gwObj.addParam%28%22key%22%2Ckey%29%3B%0A%20%20%20%20%20%20if%28domain%21%3Dnull%29%0A%20%20%20%20%20%20%20%20%20gwObj.addParam%28%22domain%22%2Cdomain%29%3B%0A%20%20%20%20%20%20if%28keywords%21%3Dnull%29%0A%20%20%20%20%20%20%20%20%20gwObj.addParam%28%22keywords%22%2Ckeywords%29%3B%0A%20%20%20%20%20%20if%28vendorId%21%3Dnull%29%0A%20%20%20%20%20%20%20%20%20gwObj.addParam%28%22vendorId%22%2CvendorId%29%3B%0A%20%20%20%20%20%20if%28accept%21%3Dnull%29%0A%20%20%20%20%20%20%20%20%20gwObj.addParam%28%22accept%22%2Caccept%29%3B%0A%20%20%20%20%20%20if%28reject%21%3Dnull%29%0A%20%20%20%20%20%20%20%20%20gwObj.addParam%28%22reject%22%2Creject%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20gwObj.callName%28%22LeoHighlightsEvent%22%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHighlights%28%29%22%2Ce%29%3B%20%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20This%20will%20expand%20or%20collapse%20the%20window%20base%20on%20it%20prior%20state%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsToggleSize%28clickId%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%20%20%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHighlightsToggleSize%28%29%20%22%2B_leoHighlightsPrevElem%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Get%20the%20hover%20flag%20and%20change%20the%20status%20*/%0A%20%20%20%20%20%20var%20size%3D_leoHighlightsPrevElem.hover?1%3A0%3B%0A%20%20%20%20%20%20_leoHighlightsSetBottomSize%28size%2CclickId%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHighlightsToggleSize%28%29%22%2Ce%29%3B%20%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20Call%20into%20the%20kvm%20that%20will%20then%20do%20a%20callback%20into%20the%20top%20window%0A%20*%20The%20top%20window%20will%20then%20call%20leoH%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsSetSecondaryWindowUrl%28url%2C%20customerId%2C%20phraseId%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%20%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHighlightsSetSecondaryWindowUrl%28%29%20%22%2Burl%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20gwObj%20%3D%20new%20Gateway%28%29%3B%0A%20%20%20%20%20%20gwObj.addParam%28%22url%22%2C%20url%29%3B%0A%20%20%20%20%20%20gwObj.addParam%28%22phraseId%22%2C%20phraseId%29%3B%0A%20%20%20%20%20%20gwObj.addParam%28%22customerId%22%2C%20customerId%29%3B%0A%20%20%20%20%20%20gwObj.callName%28%22LeoHighlightsSetSecondaryWindowUrl%22%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHighlightsSetSecondaryWindowUrl%28%29%22%2Ce%29%3B%20%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20Call%20into%20the%20kvm%20that%20will%20then%20do%20a%20callback%20into%20the%20top%20window%0A%20*%20The%20top%20window%20will%20then%20call%20leoH%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsSetSecondaryWindowUrlCallback%28url%2C%20customerId%2C%20phraseId%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%20%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHighlightsSetSecondaryWindowUrlCallback%28%29%20%22%2Burl%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Clear%20the%20hover%20flag%2C%20if%20the%20user%20shows%20this%20at%20full%20size%20*/%0A%20%20%20%20%20%20var%20size%3D_leoHighlightsPrevElem.hover?0%3A1%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHighlightsSetSecondaryWindowUrlCallback%28%29%20%22%2B_leoHighlightsPrevElem%2B%22%20--%20%22%2B_leoHighlightsPrevElem.hover%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Get%20the%20elements%20*/%0A%20%20%20%20%20%20var%20iFrameBottom%3D_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID%29%3B%0A%20%20%20%20%20%20leoHighlightsUpdateUrl%28iFrameBottom%2Csize%2Cnull%2Curl%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHighlightsSetSecondaryWindowUrlCallback%28%29%20%22%2Burl%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHighlightsSetSecondaryWindowUrlCallback%28%29%22%2Ce%29%3B%20%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20This%20will%20set%20the%20text%20to%20the%20Top%20%0A%20*%20%0A%20*%20@param%20txt%0A%20*%20@return%0A%20*/%0Afunction%20leoHighlightsSetExpandTxt%28txt%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%20%0A%20%20%20%20%20%20var%20topIFrame%20%3D%20_leoHighlightsFindElementById%28LEO_HIGHLIGHTS_IFRAME_TOP_ID%29%3B%0A%20%20%20%20%20%20if%28topIFrame%3D%3Dnull%29%0A%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Get%20the%20current%20url%20*/%0A%20%20%20%20%20%20var%20url%3DtopIFrame.src%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20if%28url%3D%3Dnull%29%0A%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Extract%20the%20previous%20hash%20if%20present%20*/%0A%20%20%20%20%20%20var%20idx%3D-1%3B%20%20%20%20%20%20%0A%20%20%20%20%20%20if%28%28idx%3Durl.indexOf%28%27%23%27%29%29%3E0%29%0A%20%20%20%20%20%20%20%20%20url%3Durl.substring%280%2Cidx%29%3B%0A%0A%20%20%20%20%20%20/*%20Append%20the%20text%20to%20the%20end%20*/%0A%20%20%20%20%20%20url%2B%3D%22%23%22%2BencodeURI%28txt%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20/*%20Set%20the%20iframe%20with%20the%20new%20url%20that%20contains%20the%20hash%20tag%20*/%0A%20%20%20%20%20%20topIFrame.src%3Durl%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHighlightsSetExpandTxt%28%29%22%2Ce%29%3B%20%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A/*----------------------------------------------------------------------*/%0A/*%20Methods%20provided%20to%20the%20highlight%20providers...%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*/%0A/*----------------------------------------------------------------------*/%0A%0A/**%0A%20*%20This%20will%20set%20the%20expand%20text%20for%20the%20Top%20window%0A%20*/%0Afunction%20leoHL_SetExpandTxt%28txt%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsDebugLog%28%22leoHL_SetExpandTxt%28%29%20%22%2Btxt%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20_leoHighlightsSimpleGwCallBack%28%22LeoHighlightsSetExpandTxt%22%2C%22expandTxt%22%2Ctxt%29%3B%20%20%20%20%20%20%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHL_SetExpandTxt%28%29%22%2Ce%29%3B%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20This%20will%20redirect%20the%20top%20window%20to%20the%20passed%20in%20url%0A%20*%20%0A%20*%20@param%20url%0A%20*%20@param%20parentId%0A%20*%20@return%0A%20*/%0Afunction%20leoHL_RedirectTop%28url%2CparentId%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%20%0A%20%20%20%20%20%20try%7B%0A%20%20%20%20%20%20%20%20%20var%20domain%3D_leoHighlightsGetUrlArg%28window.document.URL%2C%22domain%22%29%0A%20%20%20%20%20%20%20%20%20var%20keywords%3D_leoHighlightsGetUrlArg%28window.document.URL%2C%22keywords%22%29%0A%20%20%20%20%20%20%20%20%20var%20vendorId%3D_leoHighlightsGetUrlArg%28window.document.URL%2C%22vendorId%22%29%0A%20%20%20%20%20%20leoHighlightsReportEvent%28%22clickthrough%22%2C%20domain%2Ckeywords%2C%20vendorId%29%3B%0A%20%20%20%20%20%20%7Dcatch%28e%29%7B%0A%20%20%20%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHL_RedirectTop%28%29%22%2Ce%29%3B%20%20%20%20%0A%20%20%20%20%20%20%7D%0A%20%20%09%09%0A%20%20%20%09_leoHighlightsRedirectTop%28url%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22leoHL_RedirectTop%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20This%20will%20redirect%20the%20top%20window%20to%20the%20passed%20in%20url%0A%20*%20%0A%20*%20@param%20url%0A%20*%20@param%20parentId%0A%20*%20@return%0A%20*/%0Afunction%20LeoHL_RedirectTop%28url%2CparentId%29%0A%7B%0A%20%20%20leoHL_RedirectTop%28url%2CparentId%29%3B%0A%7D%0A%0A/**%0A%20*%20This%20will%20redirect%20the%20top%20window%20to%20the%20passed%20in%20url%0A%20*%20%0A%20*%20@param%20url%0A%20*%20@param%20parentId%0A%20*%20@return%0A%20*/%0Afunction%20leoHL_RedirectTopAd%28url%2CparentId%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%20%0A%20%20%20%20%20%20try%7B%0A%20%20%20%20%20%20%20%20%20var%20domain%3D_leoHighlightsGetUrlArg%28window.document.URL%2C%22domain%22%29%0A%20%20%20%20%20%20%20%20%20var%20keywords%3D_leoHighlightsGetUrlArg%28window.document.URL%2C%22keywords%22%29%0A%20%20%20%20%20%20%20%20%20var%20vendorId%3D_leoHighlightsGetUrlArg%28window.document.URL%2C%22vendorId%22%29%0A%20%20%20%20%20%20leoHighlightsReportEvent%28%22advertisement.click%22%2C%20domain%2Ckeywords%2C%20vendorId%29%3B%0A%20%20%20%20%20%20%7Dcatch%28e%29%7B%0A%20%20%20%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHL_RedirectTopAd%28%29%22%2Ce%29%3B%20%20%20%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20_leoHighlightsRedirectTop%28url%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHL_RedirectTopAd%28%29%22%2Ce%29%3B%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A%0A/**%0A%20*%20This%20will%20set%20the%20size%20of%20the%20iframe%0A%20*%20%0A%20*%20@param%20url%0A%20*%20@param%20parentId%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20leoHl_setSize%28size%2Curl%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%09/*%20Get%20the%20clickId%20*/%0A%20%20%20%09var%20clickId%3D_leoHighlightsGetUrlArg%28%20url%2C%22clickId%22%29%0A%20%20%20%09%0A%20%20%20%20%20%20var%20gwObj%20%3D%20new%20Gateway%28%29%3B%0A%20%20%20%20%20%20gwObj.addParam%28%22size%22%2Csize%29%3B%0A%20%20%20%20%20%20if%28clickId%29%0A%20%20%20%20%20%20%20%20%20gwObj.addParam%28%22clickId%22%2CclickId%2B%22_blah%22%29%3B%0A%20%20%20%20%20%20gwObj.callName%28%22LeoHighlightsSetSize%22%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%09_leoHighlightsReportExeception%28%22leoHl_setSize%28%29%22%2Ce%29%3B%20%20%20%09%0A%20%20%20%7D%0A%7D%0A%0A/**%0A%20*%20This%20will%20toggle%20the%20size%20of%20the%20window%0A%20*%20%0A%20*%20@return%0A%20*/%0Afunction%20leoHl_ToggleSize%28%29%0A%7B%0A%20%20%20try%0A%20%20%20%7B%0A%20%20%20%20%20%20var%20gwObj%20%3D%20new%20Gateway%28%29%3B%0A%20%20%20%20%20%20gwObj.callName%28%22LeoHighlightsToggleSize%22%29%3B%0A%20%20%20%7D%0A%20%20%20catch%28e%29%0A%20%20%20%7B%0A%20%20%20%20%20%20_leoHighlightsReportExeception%28%22leoHl_ToggleSize%28%29%22%2Ce%29%3B%20%20%20%20%20%0A%20%20%20%7D%0A%7D%0A%0A"); &lt;/script&gt; &lt;/span&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="if(typeof(jsCall)=='function'){jsCall();}else{setTimeout('jsCall()',500);}" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-357011111241554571?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lG1GYqrwklpjI7TbiE8-_OOsWs0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lG1GYqrwklpjI7TbiE8-_OOsWs0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lG1GYqrwklpjI7TbiE8-_OOsWs0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lG1GYqrwklpjI7TbiE8-_OOsWs0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/GgYDs4gtnD4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/357011111241554571/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=357011111241554571" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/357011111241554571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/357011111241554571?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/GgYDs4gtnD4/apache-woden-10m9-released.html" title="Apache Woden 1.0M9 released" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2011/02/apache-woden-10m9-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkECQ3szeip7ImA9Wx5RFkg.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-6633260618398230985</id><published>2010-08-24T18:23:00.001+05:30</published><updated>2010-08-24T18:27:42.582+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-24T18:27:42.582+05:30</app:edited><title>JasperReports 3.6 development cookbook</title><content type="html">Few months ago I contributed to review a book called "&lt;a href="https://www.packtpub.com/jasperreports-3-5-2-development-cookbook/book"&gt;JasperReports 3.6 development cookbook&lt;/a&gt;" as a technical reviewer, recently the book was published and I thought to write few words about the book. When I receive the first few chapters for review, I went through them quickly and first thing came into my mind was those days I was stuck with &lt;a href="http://jasperforge.org/plugins/project/project_home.php?projectname=jasperreports"&gt;JasperReports &lt;/a&gt;as a beginner, which is around 2007. At that time there were few books available for JasperReports but all of them try to introduce basics of &lt;a href="http://jasperforge.org/plugins/project/project_home.php?projectname=jasperreports"&gt;JasperReports&lt;/a&gt;, once I jump in to implement a real world reports for a client project I realized those books not that much helpful to me, sometimes I stuck for few days in very small area, I already post few blog posts based on those experience.&lt;br /&gt;&lt;br /&gt;The main exciting feature of "&lt;a href="https://www.packtpub.com/jasperreports-3-5-2-development-cookbook/book"&gt;JasperReports 3.6 development cookbook&lt;/a&gt;" is author targets developers who want to implements real world business reports not beginners or students. The book covers number of recipes and addresses various areas of business reporting, unlike introductory level books developers can keep this book exactly like a cook book and use those recipes when ever they want to implement such requirements or they can modify those recipes according to their requirements.&lt;br /&gt;&lt;br /&gt;Also this book provide well organized steps by steps guidelines for each  recipe, those who have very basic knowledge about JasperReports also can study and try out these recipes without any trouble. Author does not expect much experience from readers, he describe from very basic level such as environment settings, database settings etc.&lt;br /&gt;&lt;br /&gt;The only drawback according to my point of view is this book is not that much helpful for those who entirely new to JasperReports and reporting area, but there are couple of good books available to fill that gap.&lt;br /&gt;&lt;br /&gt;In summary &lt;a href="https://www.packtpub.com/jasperreports-3-5-2-development-cookbook/book"&gt;this &lt;/a&gt;is a great book that not belong to category of 'read and throw’ because this covers many day to day techniques essential for Java based business reporting. But if you are beginner it's better to refer any other JasperReports book or refer JasperReports documentation before study this book so that you can get best usage from this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-6633260618398230985?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zkZBsBvyWapcUHD6yZRHMv203D0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zkZBsBvyWapcUHD6yZRHMv203D0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zkZBsBvyWapcUHD6yZRHMv203D0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zkZBsBvyWapcUHD6yZRHMv203D0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/XfRlf4SooPQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/6633260618398230985/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=6633260618398230985" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/6633260618398230985?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/6633260618398230985?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/XfRlf4SooPQ/jasperreports-36-development-cookbook.html" title="JasperReports 3.6 development cookbook" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2010/08/jasperreports-36-development-cookbook.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMMRnw5fSp7ImA9WxFTFUU.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-8140821876635511647</id><published>2010-04-07T02:00:00.001+05:30</published><updated>2010-04-07T02:11:27.225+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-07T02:11:27.225+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><title>Web service introduction</title><content type="html">&lt;div style="width: 425px;" id="__ss_3645622"&gt;&lt;strong style="margin: 12px 0pt 4px; display: block;"&gt;&lt;a href="http://www.slideshare.net/sagara10/web-service-introduction" title="Web service introduction"&gt;Web service introduction&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ws-100406014102-phpapp02&amp;amp;stripped_title=web-service-introduction"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ws-100406014102-phpapp02&amp;amp;stripped_title=web-service-introduction" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/sagara10"&gt;sagara10&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px;" id="__ss_3645677"&gt;&lt;strong style="margin: 12px 0pt 4px; display: block;"&gt;&lt;a href="http://www.slideshare.net/sagara10/web-service-introduction-2" title="Web service introduction 2"&gt;Web service introduction 2&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ws2-100406015651-phpapp02&amp;amp;stripped_title=web-service-introduction-2"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ws2-100406015651-phpapp02&amp;amp;stripped_title=web-service-introduction-2" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/sagara10"&gt;sagara10&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-8140821876635511647?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KNgO1xh-Dt9CQbGONiKeMYrV1n0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KNgO1xh-Dt9CQbGONiKeMYrV1n0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KNgO1xh-Dt9CQbGONiKeMYrV1n0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KNgO1xh-Dt9CQbGONiKeMYrV1n0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/kjZt313DJEQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/8140821876635511647/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=8140821876635511647" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/8140821876635511647?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/8140821876635511647?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/kjZt313DJEQ/web-service-introduction.html" title="Web service introduction" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2010/04/web-service-introduction.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcCR3w6fyp7ImA9WxBaGEo.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-7267846968720003436</id><published>2010-03-29T19:32:00.009+05:30</published><updated>2010-03-29T20:17:46.217+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-29T20:17:46.217+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2M" /><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring" /><title>Roadmap for Axis2M</title><content type="html">Recently Andreas Veithen one of the team member of Apache Axis and Synapse projects have written a nice &lt;a href="http://veithen.blogspot.com/2010/03/some-thoughts-about-axis2-spring.html"&gt;article &lt;/a&gt;about Axis2 Spring integration and compare available 3rd party modules for that. He has reviewed&lt;a href="http://wso2.org/projects/wsf/spring"&gt; WSo2  WSF- Spring &lt;/a&gt;and &lt;a href="http://axis2m.sourceforge.net/axis2m-spring.html"&gt;Axis2M-Spring &lt;/a&gt;module with their positive and negative points.&lt;br /&gt;&lt;br /&gt;Since I'm the core developer of Axis2M project those feedback are very important to me and I thought it's better to write something about the road map of Axis2M Spring project.&lt;br /&gt;&lt;br /&gt;Very initial objectives of Axis2M Spring project are listed below.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provide a simple approach to deploy Axis2 services using Spring context.&lt;/li&gt;&lt;li&gt;Provide a simple approach to deploy Axis2 modules using Spring Context.&lt;/li&gt;&lt;li&gt;The above two should be similar to approaches used by the other WS stacks , as a example services and modules can be define as any number of top level beans.&lt;/li&gt;&lt;li&gt;Provide the Spring Namespace support for service and module deployment.&lt;/li&gt;&lt;li&gt;For module deployment provide a Spring factory approach so that POJO beans can be used as the module components such as Handlers and  Module , at the run time required legacy components are populated with the help of configuration settings of Spring context.&lt;/li&gt;&lt;li&gt;Support for &lt;a href="http://static.springsource.org/spring-ws/sites/1.5/reference/html/oxm.html"&gt;Spring OXM&lt;/a&gt; package as a new data binding option , this will introduce two new data binding support for Axis2 as &lt;a href="http://www.castor.org/"&gt;Castor &lt;/a&gt;and &lt;a href="http://xstream.codehaus.org/news.html"&gt;XStream&lt;/a&gt;.  &lt;/li&gt;&lt;li&gt;Provide several new Maven archetypes for quick start-up of Axis2 integrated user projects.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://axis2m.sourceforge.net/axis2m-spring.html"&gt; Axis2M M2&lt;/a&gt; version supports for above seven  features and due to some design limitation and time limitation Axis2 configuration and WSDL support left out from M2 version . Here is my current plan for above these scenarios.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Axis2 Configuration based on SpringContext (axis2.xml)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this case I'm completely agree with Andreas comments about  the approach used by the WSF-Spring project . Due to this design issue Axis2M don't use WSF-Spring approach and use traditional axis2.xml based approach for this version. According to me the main reason was WSF-Spring simply tried to replace each of axis2.xml file's element using a Spring bean without care much about the use of  modularity or dependency injection. This is the plan on my mind for Axis2M Axis2 configuration.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Since Axis2 is a very matured project some of the developers already familiar with axis2.xml based configuration, due to this reason Axis2M keep the traditional approach so that users can use axis2.xml to define configuration . But  Axi2M will introduce a approach to define configuration on Spring context as beans and those Spring beans override the axis2.xml configuration if it exists.&lt;/li&gt;&lt;li&gt;Instead of a single top level configuration bean, each of the configuration sub element such as message receivers , message builders can be define as a top level beans. At the start-up time, the framework will detect those beans related to Axis2 configuration and inject them  in to the Axis2 configuration. It's also possible to override the setting define in the axis2.xml file.&lt;/li&gt;&lt;li&gt;Provide the Spring Namespace support for those configuration beans.&lt;/li&gt;&lt;li&gt;Provide a way to use POJOs as legacy configuration components. As an example a user can write pure java bean then in  the configuration level possible to convert it in to a  Axis2 legacy components such as message receivers or  message builders etc. Axis2M already employ this approach for Module deployment but design a smiler approach for Axis2 configuration is a one challenge to achieve. Also this approach will not work for all the configuration beans. One of the good example is &lt;a href="http://www.springsource.org/spring-integration"&gt;Spring-Integration&lt;/a&gt; (SI) project that convert POJOs in to EIP components like routers , transformers etc.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Axis2M WSDL handling &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Axis2 provides only two options for WSDL handling either user can utilize automatic WSDL generation feature or he can provide a existing WSDL file. But IMO a Axis2-Spring integration project should provide more control options to users and should utilize configuration context too. Axis2M future plan is to provide a approach that similar to approach used by the &lt;a href="http://static.springsource.org/spring-ws/sites/1.5/"&gt;Spring-WS &lt;/a&gt;project for &lt;a href="http://static.springsource.org/spring-ws/sites/1.5/apidocs/org/springframework/ws/wsdl/wsdl11/package-summary.html"&gt;WSDL handling&lt;/a&gt;.  As an example a user can provides one portion of  the WSDL content dynamically using Spring context  while remaining portions of the WSDL is  based on default automatic WSDL generation or provided raw WSDL file .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BTW Axis2 &lt;a href="http://ws.apache.org/axis2/1_5_1/api/index.html"&gt;WSDLSupplier &lt;/a&gt;only supports for WSDL 1.1 , implementing above approach for both WSDL 1.1 and WSDL 2.0 is also a challenge and require some modification from Axis2 side too.&lt;br /&gt;&lt;br /&gt;Other than above two Andreas  listed several important features as his wish list , Axis2M will try for them in future.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But I like to add two more features ,  even very initial stage of Axis2M project I wanted to support Servlet + Spring + JAX-WS use case in the same way as CXF or Metro does.  but AFAIK still some issues exists in the Axis2 side, some of them discussed in following places &lt;a href="https://issues.apache.org/jira/browse/AXIS2-4611"&gt;link-1&lt;/a&gt;, &lt;a href="http://markmail.org/message/qfitsjqdupck7lkl"&gt;link-2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Secondly it is very practical to integrate Axis2-Spring integration with &lt;a href="http://static.springsource.org/spring-security/site/"&gt;Spring- security&lt;/a&gt; project (Acegi) so that users can utilize existing Acegi security for their web services too, but this need very careful design. &lt;a href="http://ssagara.blogspot.com/2009/05/acegi-spring-security-and-rampart.html"&gt;This &lt;/a&gt;post describe one possible solution to integrate Acegi with &lt;a href="http://ws.apache.org/rampart/"&gt;Apache Rampart&lt;/a&gt; module.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-7267846968720003436?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z5N1ttAazb6fPJ6bPnCd6RxpG28/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z5N1ttAazb6fPJ6bPnCd6RxpG28/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z5N1ttAazb6fPJ6bPnCd6RxpG28/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z5N1ttAazb6fPJ6bPnCd6RxpG28/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/OSuNIZyfbSY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/7267846968720003436/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=7267846968720003436" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/7267846968720003436?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/7267846968720003436?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/OSuNIZyfbSY/roadmap-for-axis2m.html" title="Roadmap for Axis2M" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2010/03/roadmap-for-axis2m.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMMQ384fCp7ImA9WxBVEkg.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-998328509245318302</id><published>2010-02-15T22:42:00.002+05:30</published><updated>2010-02-15T22:51:22.134+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-15T22:51:22.134+05:30</app:edited><title>FOSS-ed on wheels A9</title><content type="html">Two weeks ago  i got chance to participate to  a wonderful event called "&lt;a href="http://www.jfn.ac.lk/faculties/science/depts/compsc/FOSS.html"&gt;FOSS-ed on wheels A9&lt;/a&gt;" organized  by SL FOSS community , we are running number of event under same brand name of ""FOSS-ed on wheels" all over the country during last there years , but this is a milestone  event of this series. We held one event in the  one end of the &lt;a href="http://en.wikipedia.org/wiki/A_9_highway_%28Sri_Lanka%29"&gt;A9 road&lt;/a&gt; : &lt;a href="http://en.wikipedia.org/wiki/Kandy"&gt;Kandy &lt;/a&gt;and second event held in the other end of  the A9 road : &lt;a href="http://en.wikipedia.org/wiki/Jaffna"&gt;Jaffna&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As usually folks of Computer Society &lt;a href="http://www.pdn.ac.lk/"&gt;Uni of Peradeniya&lt;/a&gt;  organized the first event, but most important event is the second one held in &lt;a href="http://www.jfn.ac.lk/"&gt;Jaffna Uni&lt;/a&gt;. This is the first time we got chance to travel on famous &lt;a href="http://en.wikipedia.org/wiki/A_9_highway_%28Sri_Lanka%29"&gt;A9 road &lt;/a&gt;after 30 years of war and AFAIK this is the first FOSS event held in North , we had over 400 participants for this event most of them are Uni students and IT teachers.I hope we can see more FOSS events in Jaffna with this wonderful start&lt;br /&gt;&lt;br /&gt;Here you can find my presentation presented in this A9 series .&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_3134623"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/sagara10/foss-tools" title="Foss Tools"&gt;Foss Tools&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=fosstools-100211095036-phpapp02&amp;amp;stripped_title=foss-tools"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=fosstools-100211095036-phpapp02&amp;amp;stripped_title=foss-tools" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/sagara10"&gt;sagara10&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-998328509245318302?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C2Y4H5BQKH0bLxiNOyKlut572qw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C2Y4H5BQKH0bLxiNOyKlut572qw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/C2Y4H5BQKH0bLxiNOyKlut572qw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C2Y4H5BQKH0bLxiNOyKlut572qw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/CGzubdp0GUc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/998328509245318302/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=998328509245318302" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/998328509245318302?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/998328509245318302?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/CGzubdp0GUc/foss-ed-on-wheels-a9.html" title="FOSS-ed on wheels A9" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2010/02/foss-ed-on-wheels-a9.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4NQnszeyp7ImA9WxBWGU0.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-5331080314288495769</id><published>2010-02-11T21:26:00.004+05:30</published><updated>2010-02-11T21:46:33.583+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-11T21:46:33.583+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="Woden" /><title>Apache Woden presentation  at Apache Asia Conference</title><content type="html">&lt;a href="http://ws.apache.org/woden/"&gt;Apache Woden&lt;/a&gt; is a Java based read/write parser for  W3C WSDL 2.0 specification, also provide set of utilities to migrate from WSDL 1.1.  There are lot of new features and enhancements available with upcoming Woden M9 version. During the &lt;a href="http://www.apacheasia09.foss.lk"&gt;Apache Asia 2009&lt;/a&gt; conference held in Colombo , Sri Lanka I got a chance to introduce some of those features, if you interested you can find my slides from &lt;a href="http://www.apacheasia09.foss.lk/dwn/Apache-asia-after/Move-on-to-WSDL-2.0-and-Apache-Woden.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also this slide demonstrate how you can use WSDL 2.0 to develop your web services in both code first and contract first approaches using &lt;a href="http://ws.apache.org/axis2/"&gt;Apache Axis2&lt;/a&gt; web service engine.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_3135051"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/sagara10/wsdl-20-and-apache-woden" title="WSDL 2.0 and Apache Woden"&gt;WSDL 2.0 and Apache Woden&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=woden-100211101244-phpapp01&amp;amp;stripped_title=wsdl-20-and-apache-woden"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=woden-100211101244-phpapp01&amp;amp;stripped_title=wsdl-20-and-apache-woden" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/sagara10"&gt;sagara10&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-5331080314288495769?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fDoRbRExbY9_zZ8vzBLwMuBaAP4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fDoRbRExbY9_zZ8vzBLwMuBaAP4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fDoRbRExbY9_zZ8vzBLwMuBaAP4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fDoRbRExbY9_zZ8vzBLwMuBaAP4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/L0sPnTu42sQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/5331080314288495769/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=5331080314288495769" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5331080314288495769?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5331080314288495769?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/L0sPnTu42sQ/apache-woden-presentation-at-apache.html" title="Apache Woden presentation  at Apache Asia Conference" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2010/02/apache-woden-presentation-at-apache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYDQHg8eip7ImA9WxNUEko.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-7783832546285782474</id><published>2009-11-03T20:17:00.008+05:30</published><updated>2009-11-04T01:09:31.672+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T01:09:31.672+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FOSS" /><title>ASF Big Feather Birthday Bash at  Aeturnum</title><content type="html">According to the "&lt;a href="https://blogs.apache.org/foundation/entry/raise_a_glass_to_apache"&gt;Raise a Glass to Apache&lt;/a&gt;" open   invitation we wanted to have a event within our office. In &lt;a href="http://www.aeturnum.com/"&gt;Aeturnum &lt;/a&gt;we use number of Apache software within our development cycle, also some of our people already contributing to Apache projects in various ways.&lt;br /&gt;&lt;br /&gt;So we take this moment to join with ASF to celebrate 10th anniversary and also to encourage people to contribute for ASF projects . With the support of our management we have ordered some ASF contributor badges to distribute among our people , In addition to that we got specially designed birthday cake.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Other than the party we had two presentation called " Revolution of FOSS" and "Apache  -Community over code" to give some introduction about FOSS and ASF.&lt;br /&gt;&lt;br /&gt;You can find "Apache  -Community over code" presentation from  &lt;a href="http://people.apache.org/%7Esagara/events/ae/apache-intro.pdf"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[ Note - Above presentation is created using several resources and slides available with   Apache and ApacheCon web sites and I just modified them according the the event]&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z6xsKiDLUMc/SvBFDi3rcoI/AAAAAAAAAIs/XBlB8icW2PU/s1600-h/a.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Z6xsKiDLUMc/SvBFDi3rcoI/AAAAAAAAAIs/XBlB8icW2PU/s400/a.jpg" alt="" id="BLOGGER_PHOTO_ID_5399891880419488386" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SvBFD5j1SvI/AAAAAAAAAI0/IdC2O9iHvKw/s1600-h/b.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SvBFD5j1SvI/AAAAAAAAAI0/IdC2O9iHvKw/s400/b.jpg" alt="" id="BLOGGER_PHOTO_ID_5399891886510263026" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SvBE3zwlcLI/AAAAAAAAAIc/FnexT5vFwyc/s1600-h/c.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 389px; height: 291px;" src="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SvBE3zwlcLI/AAAAAAAAAIc/FnexT5vFwyc/s400/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5399891678794707122" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SvBE4I78DyI/AAAAAAAAAIk/KXbREK8Tx_o/s1600-h/d.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 381px; height: 285px;" src="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SvBE4I78DyI/AAAAAAAAAIk/KXbREK8Tx_o/s400/d.jpg" alt="" id="BLOGGER_PHOTO_ID_5399891684479471394" border="0" /&gt;&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-7783832546285782474?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cdXmZF7Sl-G6xUd0utxCeJPhnrc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cdXmZF7Sl-G6xUd0utxCeJPhnrc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cdXmZF7Sl-G6xUd0utxCeJPhnrc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cdXmZF7Sl-G6xUd0utxCeJPhnrc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/GHf8uAv7YUY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/7783832546285782474/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=7783832546285782474" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/7783832546285782474?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/7783832546285782474?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/GHf8uAv7YUY/asf-big-feather-birthday-bash-at.html" title="ASF Big Feather Birthday Bash at  Aeturnum" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Z6xsKiDLUMc/SvBFDi3rcoI/AAAAAAAAAIs/XBlB8icW2PU/s72-c/a.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/11/asf-big-feather-birthday-bash-at.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCQX0_eSp7ImA9WxNVGU8.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-6110035809254906399</id><published>2009-10-30T23:16:00.004+05:30</published><updated>2009-10-30T23:21:00.341+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-30T23:21:00.341+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FOSS" /><title>Apache Asia Roadshow 2009 - Call For Presentations</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SusnF3--7GI/AAAAAAAAAHs/GR8J_zYRGjI/s1600-h/logo.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 171px;" src="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SusnF3--7GI/AAAAAAAAAHs/GR8J_zYRGjI/s400/logo.gif" alt="" id="BLOGGER_PHOTO_ID_5398451560214621282" border="0" /&gt;&lt;/a&gt;The &lt;span style="border-bottom: 1px dashed rgb(0, 102, 204); cursor: pointer;" class="yshortcuts" id="lw_1256924284_0"&gt;Apache Software Foundation&lt;/span&gt; together  with &lt;span style="background: transparent none repeat scroll 0% 0%; cursor: pointer; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="yshortcuts" id="lw_1256924284_1"&gt;Sri Lankan FOSS community&lt;/span&gt; invites you to submit a proposal for a presentation at APACHE ASIA ROADSHOW 2009. If you are a community member of any Apache projects or If you have worked with Apache projects or have a revolutionary idea on the use of an Apache project, then we would like to hear from you!&lt;br /&gt;&lt;br /&gt;Please use the following link for submissions &lt;a href="http://www.foss.lk/events/apacheasia09/cfp" target="_blank"&gt;&lt;span class="yshortcuts" id="lw_1256924284_2"&gt;http://www.foss.lk/events/apacheasia09/cfp&lt;/span&gt;&lt;/a&gt; and the due date for submission is November  8th. APACHE ASIA ROADSHOW 2009 (Colombo)  will be held in &lt;span class="yshortcuts" id="lw_1256924284_3"&gt;Colombo, Sri Lanka&lt;/span&gt; from &lt;span style="border-bottom: 1px dashed rgb(0, 102, 204); background: transparent none repeat scroll 0% 0%; cursor: pointer; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="yshortcuts" id="lw_1256924284_4"&gt;December 3rd to 5th, 2009&lt;/span&gt;. For more details please visit &lt;a href="http://www.foss.lk/events/apacheasia09"&gt;FOSS.lk&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-6110035809254906399?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dbqA7BuUv4XSJtqAgHmK2e2aNVQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dbqA7BuUv4XSJtqAgHmK2e2aNVQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dbqA7BuUv4XSJtqAgHmK2e2aNVQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dbqA7BuUv4XSJtqAgHmK2e2aNVQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/RTgMf-1bse4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/6110035809254906399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=6110035809254906399" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/6110035809254906399?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/6110035809254906399?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/RTgMf-1bse4/apache-asia-roadshow-2009-call-for.html" title="Apache Asia Roadshow 2009 - Call For Presentations" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_Z6xsKiDLUMc/SusnF3--7GI/AAAAAAAAAHs/GR8J_zYRGjI/s72-c/logo.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/10/apache-asia-roadshow-2009-call-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YDQns6fip7ImA9WxNVFkg.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-8554916659190218848</id><published>2009-10-27T21:17:00.005+05:30</published><updated>2009-10-27T21:29:33.516+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T21:29:33.516+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring" /><title>Axis2 on embedded Jetty</title><content type="html">In this week I tried to finalize the &lt;a href="http://axis2m.sourceforge.net/"&gt;Axis2m &lt;/a&gt;Spring extension module by writing some integration test cases. For above purpose I used embedded &lt;a href="http://www.mortbay.org/jetty/"&gt;Jetty  &lt;/a&gt;server with &lt;a href="http://ws.apache.org/axis2/"&gt; Axis2 &lt;/a&gt;, this gave enough flexibility within test cases. There can be many possible approaches to use &lt;a href="http://ws.apache.org/axis2/"&gt;Axis2 &lt;/a&gt;with embedded &lt;a href="http://www.mortbay.org/jetty/"&gt;Jetty &lt;/a&gt;server , here I have mentioned some of the approaches.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using Jetty WebAppContext&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One possible option is to use Jetty WebAppContext with Axis2 WAR based deployment approach.&lt;br /&gt;&lt;pre&gt;        Server server = new Server(8080);&lt;br /&gt;       WebAppContext root = new WebAppContext();      &lt;br /&gt;       root.setContextPath("/");          &lt;br /&gt;       root.setResourceBase("/work/workspace/Jetty_Axis2/webapp1" );      &lt;br /&gt;       server.setHandler(root);&lt;br /&gt;       server.start();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In here , webapp1/WEB-INF directory contains the repository for Axis2 and also have to define the AxisServlet in the web.xml file. The web.xml file should come under the webapp1/WEB-INF directory.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;AxisServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;servlet-class&amp;gt;org.apache.axis2.transport.http.AxisServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;   &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt; &amp;lt;/servlet&amp;gt;&lt;br /&gt; &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;AxisServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;url-pattern&amp;gt;/services/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Another possible approach is define AxisServlet in the code level  instead of web.xml file as shown below.&lt;br /&gt;&lt;pre&gt;        Server server = new Server(8080);&lt;br /&gt;       WebAppContext root = new WebAppContext();      &lt;br /&gt;       root.setContextPath("/");  &lt;br /&gt;       root.addServlet( "org.apache.axis2.transport.http.AxisServlet","/services/*");  &lt;br /&gt;       root.setResourceBase("/work/workspace/Jetty_Axis2/webapp2" );      &lt;br /&gt;       server.setHandler(root);&lt;br /&gt;       server.start();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here in the directory structure only noticeable change is you don't need to have web.xml file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using Jetty ServletHolder&lt;/span&gt;&lt;br /&gt;Only required step for this approach is  provide a Axis2 repository as an InitParameter for AxisServlet.&lt;br /&gt;&lt;pre&gt;        Server server = new Server(8080);&lt;br /&gt;       Context root = new Context(server,"/",Context.SESSIONS);  &lt;br /&gt;       ServletHolder holder=new ServletHolder(new AxisServlet());&lt;br /&gt;       root.addServlet(holder,"/services/*");&lt;br /&gt;       holder.setInitParameter("axis2.repository.path", "/work/workspace/Jetty_Axis2/webapp3");   &lt;br /&gt;       server.start();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Further it is possible to set Axis2.xml also as an input parameter.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;holder.setInitParameter("axis2.xml.path", "/work/workspace/Jetty_Axis2/webapp3/axis2.xml");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Since my test cases dependent of Spring ,It was a  requirement to add ContextLoaderListener  as a ServletListener. It's again required only few lines of codes for this enhancement.&lt;br /&gt;&lt;pre&gt;        Server server = new Server(8080);&lt;br /&gt;       Context root = new Context(server,"/",Context.SESSIONS);  &lt;br /&gt;       ServletHolder holder=new ServletHolder(new AxisServlet());&lt;br /&gt;       root.addServlet(holder,"/services/*");&lt;br /&gt;       holder.setInitParameter("axis2.repository.path", "/work/workspace/Jetty_Axis2/webapp3");&lt;br /&gt;       root.getInitParams().put("contextConfigLocation","Module-app-test.xml");&lt;br /&gt;       root.setResourceBase("/work/workspace/Jetty_Axis2/webapp3");&lt;br /&gt;       root.addEventListener(new ContextLoaderListener());  &lt;br /&gt;       server.start();&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-8554916659190218848?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D8pVIX_unY7twdLNDZK95b-69Yc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D8pVIX_unY7twdLNDZK95b-69Yc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D8pVIX_unY7twdLNDZK95b-69Yc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D8pVIX_unY7twdLNDZK95b-69Yc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/U4oa2lloowk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/8554916659190218848/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=8554916659190218848" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/8554916659190218848?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/8554916659190218848?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/U4oa2lloowk/axis2-on-embedded-jetty.html" title="Axis2 on embedded Jetty" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/10/axis2-on-embedded-jetty.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04MRHY7fyp7ImA9WxNXEUg.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-8191156831297196023</id><published>2009-09-28T23:10:00.001+05:30</published><updated>2009-09-28T23:16:25.807+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-28T23:16:25.807+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Camel" /><category scheme="http://www.blogger.com/atom/ns#" term="POJO" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><title>Camel Castor component</title><content type="html">I have mentioned several times in this blog that &lt;a href="http://www.castor.org/"&gt;Castor &lt;/a&gt;is one of my favorites option for java OXM. Recently I have contributed to create a  castor component for&lt;a href="http://camel.apache.org/"&gt; Apacahe Camel project&lt;/a&gt;, this will enable to use Camel's powerful routing features together with Castor framework.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/confluence/display/CAMEL/Castor"&gt;Camel-castor data format &lt;/a&gt;simplify development work and reduce required time and effort. You can use OXM features without writing any &lt;a href="http://www.castor.org/"&gt;Castor &lt;/a&gt;Specific codes with a mapping file or in a simple case without any mapping files.&lt;/li&gt;&lt;li&gt;You have extra advantage to use powerful features of Camel. As an example you can convert your XML data into Java bean using &lt;a href="http://cwiki.apache.org/confluence/display/CAMEL/Castor"&gt;camel-castor&lt;/a&gt; component and then possible to convert the same bean into a JMS or a Mail message using other existing fetures of Camel very easily.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;This component is officially available with Camel 2.1 version but if you want it is possible to try out using 2.1 snapshots , you can download  them from &lt;a href="https://repository.apache.org/content/repositories/snapshots/org/apache/camel/"&gt;here &lt;/a&gt;or simply use Maven.&lt;br /&gt;&lt;br /&gt;Also this &lt;a href="http://cwiki.apache.org/confluence/display/CAMEL/Castor"&gt;wiki page&lt;/a&gt; describe some of the example scenarios and configuration options. I will plan to publish a full detail example to illustrate usage of this component in near future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-8191156831297196023?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ULcbeLVMXGhVz0G4oe5SlT_8MOs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ULcbeLVMXGhVz0G4oe5SlT_8MOs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ULcbeLVMXGhVz0G4oe5SlT_8MOs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ULcbeLVMXGhVz0G4oe5SlT_8MOs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/bQN6NbtT5ik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/8191156831297196023/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=8191156831297196023" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/8191156831297196023?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/8191156831297196023?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/bQN6NbtT5ik/camel-castor-component.html" title="Camel Castor component" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/09/camel-castor-component.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIDQXs_fip7ImA9WxNRFE0.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1891433905773307798</id><published>2009-09-08T16:12:00.015+05:30</published><updated>2009-09-08T16:46:10.546+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-08T16:46:10.546+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="POJO" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring" /><title>Testing Spring injected Servlets</title><content type="html">Writing unit test cases is a really necessary step with the agile practices, but writing test cases for Servlets is little bit hard; because those are intend to run inside a container. There are few test frameworks such as &lt;a href="http://jakarta.apache.org/cactus/writing/howto_testcase_servlet.html"&gt;Apache Cactus&lt;/a&gt; , &lt;a href="http://www.httpunit.org/index.html"&gt;HttpUnit&lt;/a&gt;, &lt;a href="http://xmlunit.sourceforge.net/"&gt;XMLUnit &lt;/a&gt;to facilitate to these requirements, specially &lt;a href="http://www.httpunit.org/doc/servletunit-intro.html"&gt;ServletUnit &lt;/a&gt;provided by &lt;a href="http://www.httpunit.org/index.html"&gt;HttpUnit &lt;/a&gt;is a very smart and easy way to test Servlets.&lt;br /&gt;&lt;br /&gt;But &lt;a href="http://www.httpunit.org/doc/servletunit-intro.html"&gt;ServletUnit &lt;/a&gt;does not facilitate to inject Spring ApplicationContext into Servlet Context and hence testing Spring injected Servlets is not possible with &lt;a href="http://www.httpunit.org/doc/servletunit-intro.html"&gt;ServletUnit &lt;/a&gt;(AFAIK).&lt;br /&gt;&lt;br /&gt;But &lt;a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/mock/web/package-summary.html"&gt;Spring-mock&lt;/a&gt; package provide some of the  mock web component such as MockHttpServletRequest , MockHttpServletResponse and MockServletContext ..etc to test web applications. Also &lt;a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/test/package-summary.html"&gt;Spring test &lt;/a&gt;package provide features like auto-wiring, transactional supports etc. It is possible to use those two packages to test Spring injected Servlets.&lt;br /&gt;&lt;br /&gt;Spring Test class such as AbstractDependencyInjectionSpringContextTests&lt;br /&gt;Can be used to retrieve ApplicationContext for our test cases then we can set it in  to a  MockServletContext  object as a attribute with key value  WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE so that the Spring context is available to our servlet.&lt;br /&gt;&lt;br /&gt;Normally in a container WebApplicationContextUtil is used to retrieve &lt;a href="http://static.springsource.org/spring/docs/2.5.6/api/org/springframework/web/context/support/XmlWebApplicationContext.html"&gt;WebAplicationContext&lt;/a&gt; through the ServletContext using above WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE attribute.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One of the basic problem with this approach is WebApplicationContextUtils only accepts ApplicationContext classes that implement  the WebApplicationContext interface, here AbstractDependencyInjectionSpringContextTests returns  a org.springframework.context.support.GenericApplicationContext object as the ApplicationContext . Since GenericApplicationContext doesn’t implement the WebApplicationContext interface we can’t use this ApplicatioContext.&lt;br /&gt;&lt;br /&gt;There are few remedies here.&lt;br /&gt;&lt;br /&gt;1.    Instead of Spring test package use kind of a WebApplicationContext class to load the test configuration. I tried with XmlWebApplicationContext but after several attempts I gave up.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;String[] ctx= new String[]{"/WEB-INF/app.xml"};&lt;br /&gt; webApplicationContext = new XmlWebApplicationContext();&lt;br /&gt; webApplicationContext.setConfigLocations( ctx);&lt;br /&gt; webApplicationContext.setServletContext(&lt;br /&gt;   new MockServletContext(&lt;br /&gt;     new FileSystemResourceLoader() ) );&lt;br /&gt; webApplicationContext.refresh();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;2.    Use Spring test package to load the ApplicationContext (e.g – AbstractDependencyInjectionSpringContextTests ) and manually  copy the bean definitions in to a WebApplicationContext object and set it in to the ServletContext.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Above second approach is worked with me and I used GenericWebApplicationContext as my WebApplicationContext. If you are interested in go through&lt;code&gt; &lt;/code&gt;the following code segments.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a simple servlet I used to test, it utilize Spring bean called “helloService”.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public class SimpleService extends HttpServlet {&lt;br /&gt;&lt;br /&gt;private HelloService helloService;&lt;br /&gt;&lt;br /&gt;public void init(ServletConfig servletConfig) throws ServletException {&lt;br /&gt;super.init(servletConfig);&lt;br /&gt;// retrieve  Spring AppContext through the ServletContext.&lt;br /&gt;ServletContext servletContext = servletConfig.getServletContext();&lt;br /&gt;ApplicationContext applicationContext = WebApplicationContextUtils&lt;br /&gt;     .getWebApplicationContext(servletContext);&lt;br /&gt;// retrieve  Spring service&lt;br /&gt;helloService = (HelloService) applicationContext.getBean("helloService");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void doGet(HttpServletRequest req, HttpServletResponse resp)&lt;br /&gt; throws ServletException, IOException {&lt;br /&gt;resp.setContentType("text/xml");&lt;br /&gt;PrintWriter pr = resp.getWriter();&lt;br /&gt;String text = req.getParameter("text");&lt;br /&gt;System.out.println(" recived : " + text);&lt;br /&gt;pr.println(helloService.doService(text));&lt;br /&gt;pr.flush();&lt;br /&gt;pr.close();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now we can create a reusable abstract Test class for our approach.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public abstract class AbstractSpringServeletTest extends&lt;br /&gt;AbstractDependencyInjectionSpringContextTests {&lt;br /&gt;&lt;br /&gt;private ServletConfig servletConfig;&lt;br /&gt;&lt;br /&gt;protected abstract void init() throws Exception;&lt;br /&gt;&lt;br /&gt;protected void onSetUp() throws Exception {&lt;br /&gt;&lt;br /&gt;ServletContext sctx = new MockServletContext();&lt;br /&gt;servletConfig = new MockServletConfig(sctx, "simple");&lt;br /&gt;sctx.setAttribute(&lt;br /&gt;     WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,&lt;br /&gt;     getWebApplicationContext());&lt;br /&gt;init();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected WebApplicationContext getWebApplicationContext() {&lt;br /&gt;ApplicationContext ctx = getApplicationContext();&lt;br /&gt;System.out.println(ctx.getClass().getName());&lt;br /&gt;GenericWebApplicationContext wac = (GenericWebApplicationContext) BeanUtils&lt;br /&gt;     .instantiateClass(GenericWebApplicationContext.class);&lt;br /&gt;&lt;br /&gt;String[] defNames = ctx.getBeanDefinitionNames();&lt;br /&gt;for (String defName : defNames) {&lt;br /&gt; wac.getBeanFactory().registerSingleton(defName,&lt;br /&gt;         ctx.getBean(defName));&lt;br /&gt;}&lt;br /&gt;return wac;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected ServletConfig getServletConfig() {&lt;br /&gt;return servletConfig;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected ServletContext getServletContext() {&lt;br /&gt;return servletConfig.getServletContext();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here I derived AbstractSpringServeletTest class from AbstractDependencyInjectionSpringContextTests but it is possible to derive from any other test classes according to the requirements.  Finally we can write concrete TestCase for out SimpleServlet as follows.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public class ServletTest extends AbstractSpringServeletTest {&lt;br /&gt;&lt;br /&gt;private SimpleService simpleServlet;&lt;br /&gt;&lt;br /&gt;protected String[] getConfigLocations() {&lt;br /&gt;return new String[] { "classpath:app.xml" };&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void init() throws Exception {&lt;br /&gt;simpleServlet = new SimpleService();&lt;br /&gt;simpleServlet.init(getServletConfig());&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void testDoGet() throws Exception, IOException {&lt;br /&gt;MockHttpServletRequest request = new MockHttpServletRequest(&lt;br /&gt;     getServletContext(), "GET", "/service");&lt;br /&gt;request.addParameter("text", "sagara");&lt;br /&gt;MockHttpServletResponse response = new MockHttpServletResponse();&lt;br /&gt;simpleServlet.doGet(request, response);&lt;br /&gt;String res = response.getContentAsString();&lt;br /&gt;System.out.println(res);&lt;br /&gt;assertEquals("Hello : sagara", res.trim());&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-1891433905773307798?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yo6U14hjGKUqq9DxmuMeDws22Ec/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yo6U14hjGKUqq9DxmuMeDws22Ec/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yo6U14hjGKUqq9DxmuMeDws22Ec/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yo6U14hjGKUqq9DxmuMeDws22Ec/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/SqGg5DAx4-k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1891433905773307798/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1891433905773307798" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1891433905773307798?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1891433905773307798?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/SqGg5DAx4-k/testing-spring-injected-servlets.html" title="Testing Spring injected Servlets" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/09/testing-spring-injected-servlets.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8BSX89fSp7ImA9WxJQFk8.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-7034057539758849154</id><published>2009-05-29T12:59:00.004+05:30</published><updated>2009-05-29T23:44:18.165+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-29T23:44:18.165+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Acegi" /><title>Acegi Clustering on JBoss</title><content type="html">Again about Acegi ....... Acegi does not support for clustering , but in many ceases it is not a necessary  feature . but one of my current project requirement is to limit the concurrent session creation in the cluster environment.  One way to achieve this is implement a Acegi   "&lt;a href="http://www.acegisecurity.org/acegi-security/apidocs/org/acegisecurity/concurrent/SessionRegistry.html"&gt;SessionRegistry&lt;/a&gt;" based on &lt;a href="http://www.jgroups.org/"&gt;JGroup &lt;/a&gt;, i found &lt;a href="http://www.altuure.com/2007/12/23/clustering-acegi-via-jgroups-distributedhashtable/"&gt;this blog entry&lt;/a&gt; by Mert Akkan and tried for the proposed solution based on Jgroup &lt;a href="http://www.jgroups.org/javadoc/org/jgroups/blocks/DistributedHashtable.html"&gt;DistributedHashtable &lt;/a&gt;. Unfortunately in our JBoss 4.2.1.GA  (JGroup 2.4.1-sp3) environment gave a method not found exception for DistributedHashtable , I guess this is a version mismatch issue.  so only remaining solution was dig in to JGroup framework for alternative solution , After  several attempts  i could able to get the successful results with &lt;a href="http://www.jgroups.org/javadoc/org/jgroups/blocks/ReplicatedHashtable.html"&gt;ReplicatedHashtable &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is the modified "DistributableSessionRegistryImpl" class based on JGroup ReplicatedHashtable.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;public class DistributableSessionRegistryImpl&lt;br /&gt;      implements SessionRegistry,&lt;br /&gt;                 ApplicationListener {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private Map sessionIds = new HashMap();&lt;br /&gt; String channelName = "Acegi Cluster";&lt;br /&gt; private String clusterOptions = null;&lt;br /&gt; private static final int TIME_OUT = 0;&lt;br /&gt;&lt;br /&gt; private boolean distributable=false;&lt;br /&gt;&lt;br /&gt; public void setDistributable(boolean distributable) {&lt;br /&gt;     this.distributable = distributable;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setClusterOptions(String clusterOptions) {&lt;br /&gt;     this.clusterOptions = clusterOptions;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public void setChannelName(String channelName) {&lt;br /&gt;     this.channelName = channelName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public Object[] getAllPrincipals() {&lt;br /&gt;     Collection collection = sessionIds.values();&lt;br /&gt;     Set principals = new HashSet();&lt;br /&gt;     for (Iterator iterator = collection.iterator();&lt;br /&gt;                      iterator.hasNext();) {&lt;br /&gt;         DistributableSessionInformation sessionInformation = (DistributableSessionInformation) iterator.next();&lt;br /&gt;         principals.add(sessionInformation.getPrincipal());&lt;br /&gt;     }&lt;br /&gt;     return principals.toArray(new String[principals.size()]);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public SessionInformation[] getAllSessions(Object principal,&lt;br /&gt;                                            boolean includeExpiredSessions) {&lt;br /&gt;     Set sessionsUsedByPrincipal = getSessionIds(principal);&lt;br /&gt;&lt;br /&gt;     List list = new ArrayList();&lt;br /&gt;     Iterator iter = sessionsUsedByPrincipal.iterator();&lt;br /&gt;&lt;br /&gt;     while (iter.hasNext()) {&lt;br /&gt;         synchronized (sessionsUsedByPrincipal) {&lt;br /&gt;             String sessionId = (String) iter.next();&lt;br /&gt;             SessionInformation sessionInformation = getSessionInformation(sessionId);&lt;br /&gt;&lt;br /&gt;             if (includeExpiredSessions || !sessionInformation.isExpired()) {&lt;br /&gt;                 list.add(sessionInformation);&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     return (SessionInformation[]) list.toArray(new SessionInformation[]{});&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public SessionInformation getSessionInformation(String sessionId) {&lt;br /&gt;     Assert.hasText(sessionId, "SessionId required as per interface contract");&lt;br /&gt;&lt;br /&gt;     DistributableSessionInformation sessionInformation = ((DistributableSessionInformation) sessionIds.get(sessionId));&lt;br /&gt;     if(sessionInformation==null)return null;&lt;br /&gt;     return sessionInformation.sessionInformation(this);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onApplicationEvent(ApplicationEvent event) {&lt;br /&gt;     if (event instanceof HttpSessionDestroyedEvent) {&lt;br /&gt;         String sessionId = ((HttpSession) event.getSource()).getId();&lt;br /&gt;         removeSessionInformation(sessionId);&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void refreshLastRequest(String sessionId) {&lt;br /&gt;     Assert.hasText(sessionId, "SessionId required as per interface contract");&lt;br /&gt;&lt;br /&gt;     SessionInformation info = getSessionInformation(sessionId);&lt;br /&gt;&lt;br /&gt;     if (info != null) {&lt;br /&gt;        sessionIds.put(sessionId, new DistributableSessionInformation(info,new Date()) );&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt; public void expireSession(String sessionId) {&lt;br /&gt;     Assert.hasText(sessionId, "SessionId required as per interface contract");&lt;br /&gt;&lt;br /&gt;     SessionInformation info = getSessionInformation(sessionId);&lt;br /&gt;&lt;br /&gt;     if (info != null) {&lt;br /&gt;        sessionIds.put(sessionId, new DistributableSessionInformation(info,new Date(),true) );&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public synchronized void registerNewSession(String sessionId, Object principal) {&lt;br /&gt;     Assert.hasText(sessionId, "SessionId required as per interface contract");&lt;br /&gt;     Assert.notNull(principal, "Principal required as per interface contract");&lt;br /&gt;&lt;br /&gt;     if (getSessionInformation(sessionId) != null) {&lt;br /&gt;         removeSessionInformation(sessionId);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     sessionIds.put(sessionId,new DistributableSessionInformation(principal, sessionId, new Date()));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private Set getSessionIds(Object principal) {&lt;br /&gt;     Collection collection = sessionIds.values();&lt;br /&gt;     Set principals = new HashSet();&lt;br /&gt;     for (Iterator iterator = collection.iterator(); iterator.hasNext();) {&lt;br /&gt;         DistributableSessionInformation sessionInformation = (DistributableSessionInformation) iterator.next();&lt;br /&gt;         if (sessionInformation.getPrincipal().equals(principal))&lt;br /&gt;             principals.add(sessionInformation.getSessionId());&lt;br /&gt;     }&lt;br /&gt;     return principals;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void removeSessionInformation(String sessionId) {&lt;br /&gt;     Assert.hasText(sessionId, "SessionId required as per interface contract");&lt;br /&gt;&lt;br /&gt;     SessionInformation info = getSessionInformation(sessionId);&lt;br /&gt;&lt;br /&gt;     if (info != null) {&lt;br /&gt;         sessionIds.remove(sessionId);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void init() throws ChannelException {&lt;br /&gt;        &lt;br /&gt;     if(!distributable)return;&lt;br /&gt;     JChannel jChannel; &lt;br /&gt;     ReplicatedHashtable hashtable;&lt;br /&gt; &lt;br /&gt;     if (clusterOptions == null) {&lt;br /&gt;         jChannel = new JChannel();       &lt;br /&gt;&lt;br /&gt;     } else {&lt;br /&gt;         jChannel = new JChannel(Thread.currentThread().getContextClassLoader().getResource(clusterOptions));       &lt;br /&gt;     }&lt;br /&gt; &lt;br /&gt;     jChannel.connect(channelName);    &lt;br /&gt;     hashtable=new ReplicatedHashtable(jChannel,TIME_OUT);      &lt;br /&gt;        System.out.println(" Members are "+ jChannel.getView().getMembers());   &lt;br /&gt;     sessionIds = hashtable;   &lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void destroy() throws ChannelException {&lt;br /&gt;     if (sessionIds instanceof ReplicatedHashtable) {&lt;br /&gt;         ReplicatedHashtable o = (ReplicatedHashtable) sessionIds;&lt;br /&gt;         o.getChannel().close();&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;download the source code from &lt;a href="http://www.mediafire.com/?sharekey=021260d4192b3efb931c7453395df025300027fc52f373785be6ba49b5870170"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-7034057539758849154?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ci7bSuF-tT__petgu1_nddWCku4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ci7bSuF-tT__petgu1_nddWCku4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ci7bSuF-tT__petgu1_nddWCku4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ci7bSuF-tT__petgu1_nddWCku4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/GTNE4esfw9E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/7034057539758849154/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=7034057539758849154" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/7034057539758849154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/7034057539758849154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/GTNE4esfw9E/acegi-clustering-on-jboss.html" title="Acegi Clustering on JBoss" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/05/acegi-clustering-on-jboss.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAMSHszfip7ImA9WxNSE0k.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-5881079853619381811</id><published>2009-05-29T00:32:00.010+05:30</published><updated>2009-08-27T09:49:49.586+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-27T09:49:49.586+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Rampart" /><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><category scheme="http://www.blogger.com/atom/ns#" term="Acegi" /><title>Acegi (Spring Security) and Rampart integration</title><content type="html">If you involved to any Spring based web application project, &lt;a href="http://static.springsource.org/spring-security/site/index.html"&gt;Acegi&lt;/a&gt; or Spring Security is not a new thing for you.  Acegi is a grate framework that simplifies lot of security headache related to web application. I wrote several blog posts about some of the useful features of &lt;a href="http://static.springsource.org/spring-security/site/index.html"&gt;Aceigi &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Meanwhile &lt;a href="http://ws.apache.org/rampart/"&gt;Apache Rampart&lt;/a&gt; is a very efficient web service security module for Apache Axis2 that based on Apache &lt;a href="http://ws.apache.org/wss4j/"&gt;WSS4J&lt;/a&gt;. I have used Axis2 as a part of Spring J2EE web application rojects, for all those projects I had one  common challenge for security integration. Our user/role/access management modules were developed based on Acegi , when a user access to a web page ,Acegi invoke its“AuthenticationManager”  to authorize the page access rights based on the  provided user credentials .  In web service context, same user send a web service request along with same credentials (as an example user name name /password) as a security headers and it is required to invoke “AuthenticationManager”   through Rampart to authorize the access rights.&lt;br /&gt;&lt;br /&gt;“CallbackHandler” is the underline Rampart mechanism to inject our security logic in to the Rampart module. But one of the critical problem here is there is no way to access to Axis2 MessageContext within the CallbackHandler and hence not possible to access either   Spring security context or Spring AppicationContext.&lt;br /&gt;&lt;br /&gt;Recently I saw number of post on the mailing list pointing out same requirement without having proper answer. In those days with our tide schedule I end up with a simple but little  ugly solution for this.&lt;br /&gt;I used same database table (that contains user security information) for both Acegi and Rampart, in Acegi I injected my user information using “UserDetailService” and for Rampart I wrote small JDBC based DAO service and injected into “CallbackHandler”. But later I could come up with a smart  approach for this, in this approach the same acegi AuthenticationManager will used by the Rampart also without reloading. Following steps will help out to any one facing to similar problems.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step -1&lt;/b&gt;&lt;br /&gt;Create a class called “Axis2AwareContextLoaderListener” that extend from Spring  ContextLoaderListener . Then in the contextInitialized method set Spring ApplicationContext in to Axis2 ApplicationContextHolder as follows.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class Axis2AwareContextLoaderListener&lt;br /&gt;            extends ContextLoaderListener {&lt;br /&gt;&lt;br /&gt;/** The holder. */&lt;br /&gt;ApplicationContextHolder holder;&lt;br /&gt;&lt;br /&gt;public void contextInitialized(ServletContextEvent event) {&lt;br /&gt;  super.contextInitialized(event);&lt;br /&gt;  ApplicationContext appCtx = (ApplicationContext) event&lt;br /&gt;          .getServletContext()&lt;br /&gt;          .getAttribute(&lt;br /&gt;                  WebApplicationContext.&lt;br /&gt;               ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);&lt;br /&gt;  holder = new ApplicationContextHolder();&lt;br /&gt;  holder.setApplicationContext(appCtx);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void contextDestroyed(ServletContextEvent event) {&lt;br /&gt;  super.contextDestroyed(event);&lt;br /&gt;  holder = null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Step -2&lt;/b&gt;&lt;br /&gt;Now in the CallbackHandler implmentaion class we can access to Spring ApllicationContext as follows through the  getContext() method of ApplicationContextHolder.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  ApplicationContext secCtx = ApplicationContextHolder.getContext();&lt;br /&gt;  AuthenticationManager am = (AuthenticationManager) secCtx&lt;br /&gt;          .getBean(AUTHENTICATION_MANAGER_BEAN_NAME);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Step -3&lt;/b&gt;&lt;br /&gt;Create an instance of Acegi Authentication object with credentials values of Rampart Callbacks object.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;public class ServerPWCBHandler&lt;br /&gt;              implements CallbackHandler {&lt;br /&gt;&lt;br /&gt;/** The Constant AUTHENTICATIONMANAGER_BEAN_NAME. */&lt;br /&gt;public static final String&lt;br /&gt;         AUTHENTICATIONMANAGER_BEAN_NAME =&lt;br /&gt;             "authenticationManager";&lt;br /&gt;&lt;br /&gt;public void handle(Callback[] callbacks) throws IOException,&lt;br /&gt;       UnsupportedCallbackException {&lt;br /&gt; &lt;br /&gt;   ApplicationContext secCtx = ApplicationContextHolder.getContext();&lt;br /&gt;   AuthenticationManager am = (AuthenticationManager) secCtx&lt;br /&gt;           .getBean(AUTHENTICATIONMANAGER_BEAN_NAME);&lt;br /&gt;&lt;br /&gt;   for (int i = 0; i &amp;lt; callbacks.length; i++) {&lt;br /&gt;&lt;br /&gt;       // When the server side need to authenticate the user&lt;br /&gt;       WSPasswordCallback pwcb = (WSPasswordCallback) callbacks[i];&lt;br /&gt;&lt;br /&gt;       if (pwcb.getUsage() == WSPasswordCallback.&lt;br /&gt;                                  USERNAME_TOKEN_UNKNOWN) {&lt;br /&gt;           try {&lt;br /&gt;               Authentication aut =&lt;br /&gt;                         new UsernamePasswordAuthenticationToken(&lt;br /&gt;               pwcb.getIdentifier(), pwcb.getPassword());&lt;br /&gt;               am.authenticate(aut);&lt;br /&gt;&lt;br /&gt;           } catch (Exception e) {&lt;br /&gt;               throw new UnsupportedCallbackException(callbacks[i], e&lt;br /&gt;                       .getMessage());&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;     &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you want to look at any sample you can download it from &lt;a href="http://www.mediafire.com/?sharekey=021260d4192b3efb931c7453395df025b80d18e26314c294ce018c8114394287"&gt;here&lt;/a&gt;, this sample is a combination of Spring/Acegi/Tapestry5 web application and a Axis2 /Rampart based web service, both web application and web service use values of users.properties file for user authentication.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-5881079853619381811?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JoXeIpuBUTDksMSuG07CeuwC2j8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JoXeIpuBUTDksMSuG07CeuwC2j8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JoXeIpuBUTDksMSuG07CeuwC2j8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JoXeIpuBUTDksMSuG07CeuwC2j8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/AT-fjbkFdNg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/5881079853619381811/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=5881079853619381811" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5881079853619381811?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5881079853619381811?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/AT-fjbkFdNg/acegi-spring-security-and-rampart.html" title="Acegi (Spring Security) and Rampart integration" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/05/acegi-spring-security-and-rampart.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8HQHc_eip7ImA9WxNSE0k.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-9032073522470994239</id><published>2009-05-25T20:54:00.011+05:30</published><updated>2009-08-27T09:50:31.942+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-27T09:50:31.942+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><title>Guice Axis2 integration</title><content type="html">&lt;a href="http://code.google.com/p/google-guice/"&gt;Google Guice&lt;/a&gt; is a dependency injection (DI) framework, it provides somewhat different configuration option than spring. Axis2’s spring support is already proven, in this post I will explain how to integrate &lt;a href="http://code.google.com/p/google-guice/"&gt;Guice &lt;/a&gt;beans in to Axis2 services.&lt;br /&gt;&lt;br /&gt;To integrate Guice with axis2 we have to fulfill flowing two requirements,&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Load the relevant Guice “Module “(similar to ApplicationContext in Spring) at the service start up time.&lt;/li&gt;&lt;li&gt;Above Guice beans should be accessible by Axis2 services during the run time.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;We can achieve above two requirements as follows.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It is possible to use an implementation of ServletContextListener interface to load the Guice module at the start-up time.&lt;/li&gt;&lt;li&gt;Axis2 provide a interface called ServiceObjectSupplier, it is possible to use this interface to provide a custom beans for axis2 web services. Axis2 – Spring support is already based on this concept.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;You can  access to source code form &lt;a href="http://www.mediafire.com/?sharekey=021260d4192b3efb931c7453395df0251b87d0ba5c178bbeb8eada0a1ae8665a"&gt;here &lt;/a&gt;or possible to download binary JAR file directly from &lt;a href="http://www.mediafire.com/?sharekey=021260d4192b3efb931c7453395df0251b87d0ba5c178bbeb8eada0a1ae8665a"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Please see the following simple example.&lt;br /&gt;&lt;br /&gt;I have following interface to expose as a  Axis2 web service, but the actual implementation will provide by the Guice framework.&lt;br /&gt;&lt;code&gt;&lt;br /&gt; public interface SimpleService {&lt;br /&gt;&lt;br /&gt;               public String sayHello();&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This is our Guice module class..&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public class SimpleModule extends AbstractModule {&lt;br /&gt;&lt;br /&gt; protected void configure() {&lt;br /&gt;               bind(SimpleLogger.class).to(SimpleLoggerImpl.class);&lt;br /&gt;               bind(SimpleService.class).to(SimpleServiceImpl.class);&lt;br /&gt;&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Next step is to configure our service.xml file for Guice integration, in this case I used a new parameter name called “GuiceBeanName” to define the Guice service bean.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Actually we don’t need to have this parameter "GuiceBeanName" , “ServiceClass” parameter can be used for Guice integration too ,but I used two parameters to clearly separate each task we assign for each parameters, “ServiceClass” Is only used as the service interface to generate WSDL definition for our service where “GuiceBeanName” is used to define Guice bean name for “ServiceObjectSupplier” implementation.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;parameter name="ServiceObjectSupplier" locked="false"&amp;gt;&lt;br /&gt;            org.apache.axis2.integration.guice.GuiceContextObjectSupplier&amp;lt;&lt;br /&gt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="GuiceBeanName" locked="false"&amp;gt;org.google.guice.sample.SimpleService&amp;lt;&lt;br /&gt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="ServiceClass" locked="false"&amp;gt;org.google.guice.sample.SimpleService&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Final step is to define our “GuiceServletContextListener” in the web.xml as follows.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;module&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;org.google.guice.sample.SimpleModule&lt;br /&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/context-param&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;listener&amp;gt;&lt;br /&gt;&amp;lt;listener-class&amp;gt;&lt;br /&gt;org.apache.axis2.integration.guice.&lt;br /&gt;GuiceServletContextListener&lt;br /&gt;&amp;lt;/listener-class&amp;gt;&lt;br /&gt;&amp;lt;/listener&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;here,  context parameter called “module” is used to provide the Guice module name , GuiceServletContextListener will try to load this “module” within it’s contextInitialized method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can download the complete example from &lt;a href="http://www.mediafire.com/?sharekey=021260d4192b3efb931c7453395df0251b87d0ba5c178bbeb8eada0a1ae8665a"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-9032073522470994239?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IGEhSSzhsiR6D4ZlHl2EvEApIG4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IGEhSSzhsiR6D4ZlHl2EvEApIG4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IGEhSSzhsiR6D4ZlHl2EvEApIG4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IGEhSSzhsiR6D4ZlHl2EvEApIG4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/wnqoXNoWrUY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/9032073522470994239/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=9032073522470994239" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/9032073522470994239?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/9032073522470994239?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/wnqoXNoWrUY/guice-axis2-integration.html" title="Guice Axis2 integration" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>13</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/05/guice-axis2-integration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EHQ3s5eyp7ImA9WxJRFkg.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-2785141663166055136</id><published>2009-05-18T19:26:00.003+05:30</published><updated>2009-05-18T19:37:12.523+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-18T19:37:12.523+05:30</app:edited><title>It's a new day</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z6xsKiDLUMc/ShFqdOCZzOI/AAAAAAAAAHk/ui1H93ImxEI/s1600-h/sri_lanka_flag_large.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 203px;" src="http://1.bp.blogspot.com/_Z6xsKiDLUMc/ShFqdOCZzOI/AAAAAAAAAHk/ui1H93ImxEI/s400/sri_lanka_flag_large.bmp" alt="" id="BLOGGER_PHOTO_ID_5337164083627674850" border="0" /&gt;&lt;/a&gt;It's been a long time waitin'&lt;br /&gt;Waiting for this moment&lt;br /&gt;It's been a long time praying&lt;br /&gt;Praying for this moment&lt;br /&gt;&lt;br /&gt;We hope for this moment&lt;br /&gt;And now that we own it&lt;br /&gt;For life I will hold it&lt;br /&gt;And I ain't gonna let it go&lt;br /&gt;&lt;br /&gt;It's for fathers, our brothers,&lt;br /&gt;Our friends who fought for freedom&lt;br /&gt;Our sisters, our mothers,&lt;br /&gt;Who died for us to be in this moment&lt;br /&gt;&lt;br /&gt;Stop and cherish this moment&lt;br /&gt;Stop and cherish this time&lt;br /&gt;&lt;br /&gt;It's time for unity&lt;br /&gt;For us and we&lt;br /&gt;That's you and me together&lt;br /&gt;&lt;br /&gt;I woke up this morning&lt;br /&gt;Feeling brand new&lt;br /&gt;Cause the dreams that I've been dreaming&lt;br /&gt;Have finally came true&lt;br /&gt;Yea, I woke up this morning&lt;br /&gt;Feeling alright&lt;br /&gt;&lt;br /&gt;'Cause we weren't fighting for nothing&lt;br /&gt;And the soldiers weren't fighting&lt;br /&gt;For nothing&lt;br /&gt;No, President MR wasn't dreaming for nothing&lt;br /&gt;And Gota didn't change it for nothing&lt;br /&gt;And children weren't crying for nothing&lt;br /&gt;&lt;br /&gt;It's a new day&lt;br /&gt;It's a new day&lt;br /&gt;A new day&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-2785141663166055136?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NfOAyroXkDkx9G7X1eYCUoKE-2s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NfOAyroXkDkx9G7X1eYCUoKE-2s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NfOAyroXkDkx9G7X1eYCUoKE-2s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NfOAyroXkDkx9G7X1eYCUoKE-2s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/OJlRpvXu9Xc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/2785141663166055136/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=2785141663166055136" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/2785141663166055136?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/2785141663166055136?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/OJlRpvXu9Xc/its-new-day.html" title="It's a new day" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_Z6xsKiDLUMc/ShFqdOCZzOI/AAAAAAAAAHk/ui1H93ImxEI/s72-c/sri_lanka_flag_large.bmp" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/05/its-new-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMARHszfCp7ImA9WxJSF08.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-4212369331939684900</id><published>2009-05-07T23:42:00.001+05:30</published><updated>2009-05-07T23:50:45.584+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-07T23:50:45.584+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Axis2M" /><category scheme="http://www.blogger.com/atom/ns#" term="Maven2" /><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><title>Axis2M  Released</title><content type="html">Yesterday I managed  to release first version of &lt;a href="http://axis2m.sourceforge.net/"&gt;Axis2M&lt;/a&gt; , &lt;a href="http://axis2m.sourceforge.net/"&gt;Axis2M&lt;/a&gt; is not a big framework and does not provide any thing new , it's try to simplify Axis2 web service development with Maven2 . Few months ago I have created some Maven plug-ins for Axis2 to use myself  and within my working place , those tools helped me to save lot of my time , so I thought  to put them into the Sourceforge so that it will help to other people also . Here i describe some of those plug-ins and rationales behind them .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(1) Qickstart Archetype for Axis2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Maven Archetype is a great concept  provide by  Maven  , Java products/projects   can offer  own  Maven archetypes to their community  so that users can easily start- up with preconfigured sample application that can be run within few seconds .&lt;br /&gt;&lt;br /&gt;Normally I cant  get any confidence about a framework until I see the first working sample , I know it's a  personal attitude but there are lot of people feel the same. When I start with Tapestry5 it's only take 4 or 5 minutes to see the result of first application , after that it will only take some few minutes to add extra pages and complete my sample , so far I haven't try out Tapestry5 without this archetype. Now lot of open source projects provide such archetypes and it becoming a necessary  feature.&lt;br /&gt;&lt;br /&gt;Still we cant see such a archetype provide by web services framework such as Axis2 ,CXF . But Spring -WS provide a   archetypes and when I try for Spring-WS  I used this archetype.&lt;br /&gt;&lt;br /&gt;By the way now Axis2M provide a " Qickstart Archetype" archetype for Axis2 , with this newbies can see the result of their first service within few minutes even after that point they can use this as a template for Axis2 projects. you can try out for Axis2M archetype from &lt;a href="http://axis2m.sourceforge.net/quick-start.html"&gt;here&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Axis2 documantation much more consider about AAR based approach, but my personal view is WAR based approach is more practically useful . Generally lot of people use  web services as  a part of a web application . I have used Axis2 as a part of several Tapestry and Struts based applications, to address such scenarios we have to use  WAR based approach.  Axis2M archetype use stranded  J2EE web project layout as the  project layout to facilitate to above requirement  .&lt;br /&gt;&lt;br /&gt;when we go along with stranded J2EE web layout ,it is possible to use some of the popular   options with Maven build system. such as&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use embedded Jetty server to run the service.&lt;/li&gt;&lt;li&gt;Use Maven package plug-in to create WAR archive.&lt;/li&gt;&lt;li&gt;HSQL based test databases, JUnit test case automation etc .&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(2.) Set of useful Maven plug-ins&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is possible to run Axis2 services with Jetty server , but people who familiar   with Axis2 like to use it's  Simple HTTP server . Axis2M  "run" goal facilitate to run Simple HTTP server as a Maven plug-in just like running Jetty server .  Axis2 already provide WSDL2Java Maven plug-in but it required several configuration options also by default generated code  does not follow the Maven  layout , so I have modified original   WSDL2Java Maven plug-in so that it will follow the Maven     project layout , also it only required configuration when user want to override the default settings, this will enable well-known  concept of  "Convention over the configuration "&lt;br /&gt;&lt;br /&gt;Axis2M currently support to run following servers in embedded mode .&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Jetty server.&lt;/li&gt;&lt;li&gt;Axis2 Simple HTTP server.&lt;/li&gt;&lt;li&gt;Apache Tomcat. (from M2 version)&lt;/li&gt;&lt;li&gt;Sun Galssfish (from M2 version)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Further other Axis2 plug in such as Maven AAR and WAR plug-ins already configured with Axis2M archetype.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can try out  for Axis2M from &lt;a href="http://axis2m.sourceforge.net/"&gt;here&lt;/a&gt; . Also you are always welcome for any kind of a comments about Axis2M.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33519738-4212369331939684900?l=ssagara.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3bJP7ba6OL9TXbGjCadC3RD76cE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3bJP7ba6OL9TXbGjCadC3RD76cE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3bJP7ba6OL9TXbGjCadC3RD76cE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3bJP7ba6OL9TXbGjCadC3RD76cE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/qZa_riqmgB4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/4212369331939684900/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=4212369331939684900" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/4212369331939684900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/4212369331939684900?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/qZa_riqmgB4/axis2m-released.html" title="Axis2M  Released" /><author><name>sagara</name><uri>http://www.blogger.com/profile/00728327638746992048</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2009/05/axis2m-released.html</feedburner:origLink></entry></feed>

