<?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:blogger="http://schemas.google.com/blogger/2008" 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;CEABSXgyfCp7ImA9WhBVF0Q.&quot;"><id>tag:blogger.com,1999:blog-33519738</id><updated>2013-04-24T14:09:18.694+05:30</updated><category term="IEEE" /><category term="JTable" /><category term="ESB" /><category term="ActiveMQ" /><category term="FOSS" /><category term="Maven2" /><category term="XML" /><category term="OSGI" /><category term="Spring Integration" /><category term="web services" /><category term="Acegi" /><category term="Reflection" /><category term="Hasthi" /><category term="Community" /><category term="Jetty" /><category term="Linux" /><category term="Axis2M" /><category term="Rampart" /><category term="JMS" /><category term="JAX-WS" /><category term="Woden" /><category term="Camel" /><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 Gunathunga</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>73</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/" /><feedburner:emailServiceId>blogspot/yWKUV</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;C0YCRnc7fyp7ImA9WhNaEU4.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-4430207979002060659</id><published>2013-01-25T21:56:00.000+05:30</published><updated>2013-01-25T21:56:07.907+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-25T21:56:07.907+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Maven2" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><title>Setting HTTP basic security in Maven Jetty plug-in </title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Recently I had to test HTTP basic security for one of my web application
 project, just to save my time I didn't want to use any standalone 
server during development instead I tried to configure Maven Jetty 
plug-in to support HTTP basic security. Here I have given the procedure 
which I followed.&lt;br /&gt;
&lt;br /&gt;
1.) &lt;b&gt;Configure Maven Jetty plugin in project pom.xml file.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It's required to add a UserRealm under plug-in configuration section. 
Jetty provides number of in-built UserRealms, here I used &lt;a href="http://jetty.codehaus.org/jetty/jetty-6/apidocs/org/mortbay/jetty/security/HashUserRealm.html" target="_blank"&gt;HashUserRealm&lt;/a&gt; 
for simplicity which use in-memory HashMaps to store users and roles.&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;plugin&amp;gt;  
                     &amp;lt;groupId&amp;gt;org.mortbay.jetty&amp;lt;/groupId&amp;gt;  
                     &amp;lt;artifactId&amp;gt;maven-jetty-plugin&amp;lt;/artifactId&amp;gt;  
                     &amp;lt;configuration&amp;gt;  
                          &amp;lt;scanIntervalSeconds&amp;gt;3&amp;lt;/scanIntervalSeconds&amp;gt;  
                          &amp;lt;webAppConfig&amp;gt;  
                               &amp;lt;contextPath&amp;gt;/&amp;lt;/contextPath&amp;gt;  
                          &amp;lt;/webAppConfig&amp;gt;  
                          &amp;lt;userRealms&amp;gt;  
                               &amp;lt;userRealm implementation="org.mortbay.jetty.security.HashUserRealm"&amp;gt;  
                                    &amp;lt;name&amp;gt;basic security&amp;lt;/name&amp;gt;  
                                    &amp;lt;config&amp;gt;jetty-users.properties&amp;lt;/config&amp;gt;  
                               &amp;lt;/userRealm&amp;gt;  
                          &amp;lt;/userRealms&amp;gt;  
                     &amp;lt;/configuration&amp;gt;  
                &amp;lt;/plugin&amp;gt;  
           &amp;lt;/plugins&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then add a property file called jetty-users.properties which contains user names, passwords and user roles.&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; sagara=sagara,ADMIN  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.) &lt;b&gt;Configure web.xml file of the web application.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In this example we allow users with ADMIN role to access any URL within the application.&amp;nbsp;&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;security-constraint&amp;gt;  
           &amp;lt;display-name&amp;gt;authorizedUsers&amp;lt;/display-name&amp;gt;  
           &amp;lt;web-resource-collection&amp;gt;  
                &amp;lt;web-resource-name&amp;gt;ALL URLs&amp;lt;/web-resource-name&amp;gt;  
                &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;  
           &amp;lt;/web-resource-collection&amp;gt;  
           &amp;lt;auth-constraint&amp;gt;  
                &amp;lt;role-name&amp;gt;ADMIN&amp;lt;/role-name&amp;gt;  
           &amp;lt;/auth-constraint&amp;gt;  
      &amp;lt;/security-constraint&amp;gt;  
      &amp;lt;login-config&amp;gt;  
           &amp;lt;auth-method&amp;gt;BASIC&amp;lt;/auth-method&amp;gt;  
           &amp;lt;realm-name&amp;gt;basic security&amp;lt;/realm-name&amp;gt;  
      &amp;lt;/login-config&amp;gt;  
      &amp;lt;security-role&amp;gt;  
           &amp;lt;description&amp;gt;administrator access&amp;lt;/description&amp;gt;  
           &amp;lt;role-name&amp;gt;ADMIN&amp;lt;/role-name&amp;gt;  
      &amp;lt;/security-role&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/EUVe12dQOVE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/4430207979002060659/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=4430207979002060659&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/4430207979002060659?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/4430207979002060659?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/EUVe12dQOVE/setting-http-basic-security-in-maven.html" title="Setting HTTP basic security in Maven Jetty plug-in " /><author><name>Sagara</name><uri>http://www.blogger.com/profile/07344103594883335708</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/2013/01/setting-http-basic-security-in-maven.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8CQHg4fip7ImA9WhVVEU0.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-5875379104905962723</id><published>2012-05-04T10:16:00.003+05:30</published><updated>2012-05-04T10:17:41.636+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-04T10:17:41.636+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.2 and  Sandesha2 1.6.2 , Rampart 1.6.2</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
The Apache Axis2 team is pleased to announce the general availability of the following releases:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Axis2 1.6.2&lt;/li&gt;
&lt;li&gt;Sandesha2 1.6.2&lt;/li&gt;
&lt;li&gt;Rampart 1.6.2&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Apache
 Axis2 is a complete re-design and re-write of the widely used Apache 
Axis engine and is a more efficient, more scalable, more&lt;br /&gt;
modular and more XML-oriented Web services framework. It is carefully 
designed to support the easy addition of plug-in "modules" that extend&lt;br /&gt;
its functionality for features such as security and reliability.&lt;br /&gt;
&lt;br /&gt;
Apache Rampart is an Axis2 module that implements the specifications in the WS-Security stack.&lt;br /&gt;
&lt;br /&gt;
Apache Sandesha2 provides WS-ReliableMessaging support for Axis2.&lt;br /&gt;
&lt;br /&gt;
Axis2 1.6.2 is a maintenance release that contains more than 45 fixes.&lt;br /&gt;
&lt;br /&gt;
Rampart 1.6.2 is a maintenance release containing number of bug fixes and compatible with the Axis2 1.6.2 release.&lt;br /&gt;
&lt;br /&gt;
Sandesha2 1.6.2 is a maintenance release that is compatible with the Axis2 1.6.2 release.&lt;br /&gt;
&lt;br /&gt;
The new versions are available for download at the following locations:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://axis.apache.org/axis2/java/core/download.cgi" target="_blank"&gt;http://axis.apache.org/axis2/&lt;wbr&gt;&lt;/wbr&gt;java/core/download.cgi&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://axis.apache.org/axis2/java/rampart/download/1.6.2/download.cgi" target="_blank"&gt;http://axis.apache.org/axis2/&lt;wbr&gt;&lt;/wbr&gt;java/rampart/download/1.6.2/&lt;wbr&gt;&lt;/wbr&gt;download.cgi&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://axis.apache.org/axis2/java/sandesha/download.cgi" target="_blank"&gt;http://axis.apache.org/axis2/&lt;wbr&gt;&lt;/wbr&gt;java/sandesha/download.cgi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
As always, we welcome any and all feedback at:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="mailto:java-dev@axis.apache.org" target="_blank"&gt;java-dev@axis.apache.org&lt;/a&gt; - for developer-related questions/concerns &lt;br /&gt;
&lt;a href="mailto:java-user@axis.apache.org" target="_blank"&gt;java-user@axis.apache.org&lt;/a&gt; - for general questions, usage, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE&amp;nbsp; - Axis2 1.6.2 compatible with Axis2 Transports 1.0.0 version&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/SUwCdr0bhIg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/5875379104905962723/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=5875379104905962723&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5875379104905962723?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5875379104905962723?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/SUwCdr0bhIg/release-of-axis2-162-and-sandesha2-162.html" title="Release of Axis2 1.6.2 and  Sandesha2 1.6.2 , Rampart 1.6.2" /><author><name>Sagara Gunathunga</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/05/release-of-axis2-162-and-sandesha2-162.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UDQHw-cCp7ImA9WhVVEEg.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1863897368643783891</id><published>2012-05-03T18:50:00.000+05:30</published><updated>2012-05-03T18:51:11.258+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-03T18:51:11.258+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>Code generation and WSDL exposed over HTTPS</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
In one of my&amp;nbsp;previous &lt;a href="http://ssagara.blogspot.com/2012/04/how-to-use-axis2-wsdl2java-with-proxy.html" target="_blank"&gt;post&lt;/a&gt;&amp;nbsp;I&amp;nbsp;explained how to use WSDL2JAVA tool &amp;nbsp;behind a proxy together with basic&amp;nbsp;authentication. Another such &amp;nbsp;useful&amp;nbsp;scenario&amp;nbsp;is code generation for a WSDL which exposed over HTTPS protocol. &amp;nbsp;In this case we have to provide key store details to the&amp;nbsp;WSDL2JAVA&amp;nbsp;tool.&amp;nbsp;Basically it&amp;nbsp;expect following two Java system&amp;nbsp;properties.&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; javax.net.ssl.trustStore  
 javax.net.ssl.trustStorePassword&lt;/code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;  &lt;/span&gt;&lt;/pre&gt;
Once you know those properties you can use WSDL2JAVA tool as follows.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&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; wsdl2java.sh -uri https://localhost:8443/services/SimpleService?wsdl -Djavax.net.ssl.trustStore=path/keystorename.keystore -Djavax.net.ssl.trustStorePassword=keypassword  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/S4lpOxinnwM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1863897368643783891/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1863897368643783891&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1863897368643783891?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1863897368643783891?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/S4lpOxinnwM/code-generation-and-wsdl-exposed-over.html" title="Code generation and WSDL exposed over HTTPS" /><author><name>Sagara Gunathunga</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/05/code-generation-and-wsdl-exposed-over.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEMRXc6fyp7ImA9WhVWGUg.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1757613535387988652</id><published>2012-05-02T15:57:00.002+05:30</published><updated>2012-05-02T16:01:24.917+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-02T16:01:24.917+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>How easy to test your web service over HTTPS</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
I have seen many times people having issues with testing web services over HTTPS. This is not an unexpected behavior because number of improvements have been introduced from Axis2 1.5 release for HTTPS transport. With older versions it is possible to use HTTPS transport with Simple HTTPServer and some people already familiar with it too, but recent Axis2 releases no longer support for this option and it is compulsory to use Servlet transport &amp;nbsp;in order to enable HTTPS.&lt;br /&gt;
&lt;br /&gt;
Above modifications doesn't effect much on production systems because it's always recommend to use an Application server for production systems. When it come to development &amp;nbsp;stage this changes required to use a Servlet container to test HTTPS services, Apache Tomcat is one of the good choice for this.&lt;br /&gt;
&lt;br /&gt;
In this post I will discuss how to use Maven Jetty Plug-in to test Axis2 HTTPS&amp;nbsp;transport&amp;nbsp;very easily, all you need is to follow few steps that I have given below.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step -1 &amp;nbsp;Configure Axis2 for HTTPS transport.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It is required to define AxisServletListener in your axis2.xml for HTTPS transport, in case &amp;nbsp;if you want to use both HTTP ad HTTPS it is possible to define AxisServletListener as two entries with two ports &lt;a href="http://axis.apache.org/axis2/java/core/docs/http-transport.html" target="_blank"&gt;this&lt;/a&gt; guide provide more details about this. If you don't have axis2.xml file copy it from binary distribution and replace existing &amp;nbsp;" transportReceiver " with following entries.&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;transportReceiver name="http"  
     class="org.apache.axis2.transport.http.AxisServletListener"&amp;gt;  
     &amp;lt;parameter name="port"&amp;gt;8080&amp;lt;/parameter&amp;gt;  
   &amp;lt;/transportReceiver&amp;gt;  
   &amp;lt;transportReceiver name="https"  
     class="org.apache.axis2.transport.http.AxisServletListener"&amp;gt;  
     &amp;lt;parameter name="port"&amp;gt;8443&amp;lt;/parameter&amp;gt;  
   &amp;lt;/transportReceiver&amp;gt;   
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Step - 2 &amp;nbsp;Generate KeyStore.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Usually this is kind of a time wasting task but fortunately you can use keytool-maven-plugin to auto-generate keystore in each run. The only&amp;nbsp;required&amp;nbsp;step is add following entries into your POM file and it will save your time a lot.&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;plugin&amp;gt;  
         &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;  
         &amp;lt;artifactId&amp;gt;keytool-maven-plugin&amp;lt;/artifactId&amp;gt;  
         &amp;lt;executions&amp;gt;  
           &amp;lt;execution&amp;gt;  
             &amp;lt;phase&amp;gt;generate-resources&amp;lt;/phase&amp;gt;  
             &amp;lt;id&amp;gt;clean&amp;lt;/id&amp;gt;  
             &amp;lt;goals&amp;gt;  
               &amp;lt;goal&amp;gt;clean&amp;lt;/goal&amp;gt;  
             &amp;lt;/goals&amp;gt;  
           &amp;lt;/execution&amp;gt;  
           &amp;lt;execution&amp;gt;  
             &amp;lt;phase&amp;gt;generate-resources&amp;lt;/phase&amp;gt;  
             &amp;lt;id&amp;gt;genkey&amp;lt;/id&amp;gt;  
             &amp;lt;goals&amp;gt;  
               &amp;lt;goal&amp;gt;genkey&amp;lt;/goal&amp;gt;  
             &amp;lt;/goals&amp;gt;  
           &amp;lt;/execution&amp;gt;  
         &amp;lt;/executions&amp;gt;  
         &amp;lt;configuration&amp;gt;  
           &amp;lt;keystore&amp;gt;${project.build.directory}/jetty-ssl.keystore&amp;lt;/keystore&amp;gt;  
           &amp;lt;dname&amp;gt;cn=localhost&amp;lt;/dname&amp;gt;  
           &amp;lt;keypass&amp;gt;axis2key&amp;lt;/keypass&amp;gt;  
           &amp;lt;storepass&amp;gt;axis2key&amp;lt;/storepass&amp;gt;  
           &amp;lt;alias&amp;gt;axis2key&amp;lt;/alias&amp;gt;  
           &amp;lt;keyalg&amp;gt;RSA&amp;lt;/keyalg&amp;gt;  
         &amp;lt;/configuration&amp;gt;  
       &amp;lt;/plugin&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Spacial Note&lt;/i&gt;&lt;/b&gt; - Above approach is not an replacement for production server configurations . It is highly recommend to follow standard procedures to configure production servers for HTTPS.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step - 3 &amp;nbsp;Configure and Run the service.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now you need to add SSL Connectors for the Jetty configuration by adding following entries.&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;plugin&amp;gt;  
         &amp;lt;groupId&amp;gt;org.mortbay.jetty&amp;lt;/groupId&amp;gt;  
         &amp;lt;artifactId&amp;gt;maven-jetty-plugin&amp;lt;/artifactId&amp;gt;  
         &amp;lt;configuration&amp;gt;  
           &amp;lt;webAppConfig&amp;gt;  
             &amp;lt;contextPath&amp;gt;/&amp;lt;/contextPath&amp;gt;  
           &amp;lt;/webAppConfig&amp;gt;  
           &amp;lt;connectors&amp;gt;  
             &amp;lt;connector  
               implementation="org.mortbay.jetty.security.SslSocketConnector"&amp;gt;  
               &amp;lt;port&amp;gt;8443&amp;lt;/port&amp;gt;  
               &amp;lt;maxIdleTime&amp;gt;60000&amp;lt;/maxIdleTime&amp;gt;  
               &amp;lt;keystore&amp;gt;${project.build.directory}/jetty-ssl.keystore&amp;lt;/keystore&amp;gt;  
               &amp;lt;password&amp;gt;axis2key&amp;lt;/password&amp;gt;  
               &amp;lt;keyPassword&amp;gt;axis2key&amp;lt;/keyPassword&amp;gt;  
             &amp;lt;/connector&amp;gt;  
             &amp;lt;connector  
               implementation="org.mortbay.jetty.nio.SelectChannelConnector"&amp;gt;  
               &amp;lt;port&amp;gt;8080&amp;lt;/port&amp;gt;  
               &amp;lt;maxIdleTime&amp;gt;60000&amp;lt;/maxIdleTime&amp;gt;  
             &amp;lt;/connector&amp;gt;  
           &amp;lt;/connectors&amp;gt;  
         &amp;lt;/configuration&amp;gt;  
       &amp;lt;/plugin&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Run "mvn Jetty:run " this will start jetty server with both HTTP and HTTPS connectors . Now you can access to the &amp;nbsp;WSDL content over HTTPS. According to above example you can fine WSDL file here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step- 04 - Configure &amp;nbsp;Client.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Since now you can access to the WSDL file you are free to use any of your client side preferences to create a WS client , you may generate stub or possible to write service/operation clients. Before you invoke your service you need to perform one more extra step, that is provide your key store details to Java run time . In simply we can use above&amp;nbsp;generated&amp;nbsp;keystore with our client too.&lt;br /&gt;
&lt;br /&gt;
Add following two lines before you invoke your client.&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; System.setProperty("javax.net.ssl.trustStore","[location]/jetty-ssl.keystore");  
 System.setProperty("javax.net.ssl.trustStorePassword", "axis2key");  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
You can download full source code for this sample from &lt;a href="http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/samples/https-sample/" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/YqxcqBu2M4o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1757613535387988652/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1757613535387988652&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1757613535387988652?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1757613535387988652?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/YqxcqBu2M4o/how-easy-to-test-your-web-service-over.html" title="How easy to test your web service over HTTPS" /><author><name>Sagara Gunathunga</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/05/how-easy-to-test-your-web-service-over.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ANQ3w9cCp7ImA9WhVWGEo.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1981144653718344478</id><published>2012-05-01T16:32:00.000+05:30</published><updated>2012-05-01T16:59:52.268+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-01T16:59:52.268+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>Axis2 clustering on Tomcat</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span class="Apple-style-span" style="font-family: arial; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
In this post I will discuss how to setup a Axis2 cluster using two Tomcat servers. &amp;nbsp;It's not my intention to&amp;nbsp;describe Axis2 cluster&amp;nbsp;architecture or cluster configuration language, if you need such details refer provided references at the end of this post. Axis2 cluster&amp;nbsp;implementation is based on pure API which you can&amp;nbsp;implement using any Java multicast communication framework, by default Axis2 provide a cluster implemantation based on&amp;nbsp;Tomcat Cluster Communication Module also known as&lt;a href="http://tomcat.apache.org/tomcat-7.0-doc/tribes/introduction.html" target="_blank"&gt;&amp;nbsp;Apache Tribes&lt;/a&gt;.&amp;nbsp;Following diagram&amp;nbsp;illustrate the design we are going to discuss in this post but I skip load&amp;nbsp;balancer setup for simplicity but in real&amp;nbsp;world&amp;nbsp;scenario you could use load balancer such as Apache2 server or &lt;a href="http://wso2.org/projects/load-balancer" target="_blank"&gt;WSO2 Load Balancer&lt;/a&gt; that support for more advanced options. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-1RC8lOih32o/T5_ElX04zwI/AAAAAAAAAKI/mteEKcyn83Q/s1600/cluster.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://3.bp.blogspot.com/-1RC8lOih32o/T5_ElX04zwI/AAAAAAAAAKI/mteEKcyn83Q/s400/cluster.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Pre-requirements&amp;nbsp; &lt;/b&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
1. Apache Tomcat server. ( Version 7.x.x preferable. )&lt;/div&gt;
&lt;div&gt;
2. Apache Axis2 WAR distribution (Version 1.6.2 preferable.)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Here I use same machine to setup two Tomcat server instances hence it's&amp;nbsp;required to change server configuration of one instance. Let's say Node-1 having default&amp;nbsp;configuration and Node-2 having custom&amp;nbsp;configuration. Open the server.xml file and change server port, port nubers of HTTP and AJP&amp;nbsp;Connectors&amp;nbsp;as follows.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Node-1 (default configuration)&lt;/div&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;Server port="8005" shutdown="SHUTDOWN"&amp;gt;  
 &amp;lt;Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /&amp;gt;  
 &amp;lt;Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Node-2&amp;nbsp;&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;Server port="9005" shutdown="SHUTDOWN"&amp;gt;  
 &amp;lt;Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="9443" /&amp;gt;  
 &amp;lt;Connector port="9009" protocol="AJP/1.3" redirectPort="9443" /&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now install Axis2 WAR distribution on both server instances and&amp;nbsp;stop both servers to edit axis2 configuration file. Open axis2.xml file and edit cluster settings as follows.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;Node -1&lt;br /&gt;
&lt;br /&gt;&lt;/div&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;parameter name="AvoidInitiation"&amp;gt;false&amp;lt;/parameter&amp;gt;   
     &amp;lt;parameter name="domain"&amp;gt;sample.cluster.domain&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="mcastBindAddress"&amp;gt;127.0.0.1&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="localMemberHost"&amp;gt;127.0.0.1&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="localMemberPort"&amp;gt;4000&amp;lt;/parameter&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;Node -2&amp;nbsp;&lt;/div&gt;
&lt;div&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;parameter name="AvoidInitiation"&amp;gt;false&amp;lt;/parameter&amp;gt;   
     &amp;lt;parameter name="domain"&amp;gt;sample.cluster.domain&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="mcastBindAddress"&amp;gt;127.0.0.1&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="localMemberHost"&amp;gt;127.0.0.1&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="localMemberPort"&amp;gt;4001&amp;lt;/parameter&amp;gt;   
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Note that in a real network setup it's&amp;nbsp;required to edit&amp;nbsp;mcastBindAddress,&amp;nbsp;localMemberHost settings in&amp;nbsp;addition to&amp;nbsp;&amp;nbsp;localMemberPort value but in my local machine only&amp;nbsp;localMemberPort has changed. &amp;nbsp;After this has done start the Node -1, if there is no issue in your setup you could able to see log messages as follows on node-1 server console.&amp;nbsp;&lt;/div&gt;
&lt;div&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; [INFO] Initializing cluster...  
 [INFO] Cluster domain: sample.cluster.domain  
 [INFO] Using multicast based membership management scheme  
 Apr 30, 2012 6:37:13 PM org.apache.catalina.tribes.transport.ReceiverBase bind  
 INFO: Receiver Server Socket bound to:/127.0.0.1:4000  
 Apr 30, 2012 6:37:13 PM org.apache.catalina.tribes.membership.McastServiceImpl setupSocket  
 INFO: Setting cluster mcast soTimeout to 500  
 Apr 30, 2012 6:37:13 PM org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
 INFO: Sleeping for 1000 milliseconds to establish cluster membership, start level:4  
 Apr 30, 2012 6:37:14 PM org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
 INFO: Done sleeping, membership established, start level:4  
 Apr 30, 2012 6:37:14 PM org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
 INFO: Sleeping for 1000 milliseconds to establish cluster membership, start level:8  
 Apr 30, 2012 6:37:15 PM org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
 INFO: Done sleeping, membership established, start level:8  
 [WARN] Local member advertising its IP address as 127.0.0.1. Remote members will not be able to connect to this member.  
 [INFO] Local Member 127.0.0.1:4000(sample.cluster.domain)  
 [INFO] No members in current cluster  
 [INFO] Cluster initialization completed.  
 Apr 30, 2012 6:37:15 PM org.apache.catalina.startup.HostConfig deployDirectory  
 INFO: Deploying web application directory /home/sagara/dev/servers/axis2-clustering/tomcat/node1/webapps/ROOT  
 Apr 30, 2012 6:37:15 PM org.apache.coyote.AbstractProtocol start  
 INFO: Starting ProtocolHandler ["http-bio-8080"]  
 Apr 30, 2012 6:37:15 PM org.apache.coyote.AbstractProtocol start  
 INFO: Starting ProtocolHandler ["ajp-bio-8009"]  
 Apr 30, 2012 6:37:15 PM org.apache.catalina.startup.Catalina start  
 INFO: Server startup in 3068 ms  
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Now start the Node -2 and&amp;nbsp;monitor log messages on Node-2 console&amp;nbsp;&lt;/div&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; [INFO] Initializing cluster...  
 [INFO] Cluster domain: sample.cluster.domain  
 [INFO] Using multicast based membership management scheme  
 Apr 30, 2012 6:37:50 PM org.apache.catalina.tribes.transport.ReceiverBase bind  
 INFO: Receiver Server Socket bound to:/127.0.0.1:4001  
 Apr 30, 2012 6:37:50 PM org.apache.catalina.tribes.membership.McastServiceImpl setupSocket  
 INFO: Setting cluster mcast soTimeout to 500  
 Apr 30, 2012 6:37:50 PM org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
 INFO: Sleeping for 1000 milliseconds to establish cluster membership, start level:4  
 [INFO] New member 127.0.0.1:4000(sample.cluster.domain ) joined cluster.  
 Apr 30, 2012 6:37:51 PM org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
 INFO: Done sleeping, membership established, start level:4  
 Apr 30, 2012 6:37:51 PM org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
 INFO: Sleeping for 1000 milliseconds to establish cluster membership, start level:8  
 Apr 30, 2012 6:37:51 PM org.apache.catalina.tribes.io.BufferPool getBufferPool  
 INFO: Created a buffer pool with max size:104857600 bytes of type:org.apache.catalina.tribes.io.BufferPool15Impl  
 Apr 30, 2012 6:37:52 PM org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers  
 INFO: Done sleeping, membership established, start level:8  
 [WARN] Local member advertising its IP address as 127.0.0.1. Remote members will not be able to connect to this member.  
 [INFO] Local Member 127.0.0.1:4001(sample.cluster.domain )  
 [INFO] Members of current cluster  
 [INFO] Member1 127.0.0.1:4000(sample.cluster.domain )  
 [INFO] Trying to send initialization request to 127.0.0.1:4000(sample.cluster.domain )  
 [INFO] Received configuration initialization message  
 [INFO] Trying to send initialization request to 127.0.0.1:4000(sample.cluster.domain )  
 [INFO] Received state initialization message  
 [INFO] Cluster initialization completed.  
 Apr 30, 2012 6:37:52 PM org.apache.catalina.startup.HostConfig deployDirectory  
 INFO: Deploying web application directory /home/sagara/dev/servers/axis2-clustering/tomcat/node2/webapps/ROOT  
 Apr 30, 2012 6:37:52 PM org.apache.coyote.AbstractProtocol start  
 INFO: Starting ProtocolHandler ["http-bio-9090"]  
 Apr 30, 2012 6:37:52 PM org.apache.coyote.AbstractProtocol start  
 INFO: Starting ProtocolHandler ["ajp-bio-9009"]  
 Apr 30, 2012 6:37:52 PM org.apache.catalina.startup.Catalina start  
 INFO: Server startup in 13334 ms   
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Additionally now you should able to see following log messages on Node-1 server console.&amp;nbsp;&lt;/div&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; Apr 30, 2012 6:37:50 PM org.apache.catalina.tribes.io.BufferPool getBufferPool  
 INFO: Created a buffer pool with max size:104857600 bytes of type:org.apache.catalina.tribes.io.BufferPool15Impl  
 [INFO] New member 127.0.0.1:4001(sample.cluster.domain) joined cluster.  
 [INFO] Received GetConfigurationCommand initialization request message from 127.0.0.1:4001(sample.cluster.domain)  
 [INFO] Received GetStateCommand initialization request message from 127.0.0.1:4001(sample.cluster.domain&lt;/code&gt;&lt;code style="color: black; word-wrap: normal;"&gt;)&lt;/code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you have followed me up to this point you have&amp;nbsp;successfully setup a Axis2 cluster with two nodes. Now you can deploy any cluster&amp;nbsp;aware web service on this cluster. For testing&amp;nbsp;purposes&amp;nbsp;let's write following POJO service and will deploy on both servers. I have given service code and service.xml &amp;nbsp;below.&amp;nbsp;&lt;/div&gt;
&lt;div&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; package sample;  
 import org.apache.axis2.context.MessageContext;  
 public class Count {  
   public int count() {  
     int count;  
     MessageContext mc = MessageContext.getCurrentMessageContext();  
     Object ob = mc.getConfigurationContext().getProperty("count");  
     if (ob == null) {  
       count = 1;  
     } else {  
       count = (Integer) ob;  
       count++;  
     }  
     mc.getConfigurationContext().setProperty("count", count);  
     return count;  
   }  
 }  
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
Note that we use &amp;nbsp;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre;"&gt;ConfigurationContext &lt;/span&gt;to store our count values,&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre;"&gt;ConfigurationContext is &lt;/span&gt;replicate among cluster members.&lt;br /&gt;
&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; &amp;lt;service name="count"&amp;gt;   
   &amp;lt;parameter name="ServiceClass"&amp;gt;sample.Count&amp;lt;/parameter&amp;gt;  
   &amp;lt;operation name="count"&amp;gt;  
   &amp;lt;messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /&amp;gt;  
   &amp;lt;/operation&amp;gt;  
 &amp;lt;/service&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
In order to test our cluster&amp;nbsp;aware service we need a Web service client, for the simplicity I will use a browser and Axis2 REST support. &amp;nbsp;Since we skip the load balancer setup&amp;nbsp;following two&amp;nbsp;different URLs&amp;nbsp;can be use to&amp;nbsp;invoke&amp;nbsp;services&amp;nbsp;. Once you&amp;nbsp;invokes services on both servers&amp;nbsp;you can notice that the count value is&amp;nbsp;shared among two Axis2 instances clearly.&lt;br /&gt;
&lt;br /&gt;&lt;/div&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; http://localhost:8080/axis2/services/count/count  
 http://localhost:9090/axis2/services/count/count   
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;References&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;&lt;a href="http://wso2.org/library/articles/introduction-wso2-carbon-clustering" target="_blank"&gt;Introduction to WSO2 Carbon Clustering.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wso2.org/library/articles/wso2-carbon-cluster-configuration-language" target="_blank"&gt;WSO2 Carbon Cluster Configuration Language.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.packtpub.com/article/enabling-apache-axis2-clustering" target="_blank"&gt;Enabling Apache Axis2 Clustering.&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/jxeBvXHkxMM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1981144653718344478/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1981144653718344478&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1981144653718344478?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1981144653718344478?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/jxeBvXHkxMM/axis2-clustering-on-tomcat.html" title="Axis2 clustering on Tomcat" /><author><name>Sagara Gunathunga</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/-1RC8lOih32o/T5_ElX04zwI/AAAAAAAAAKI/mteEKcyn83Q/s72-c/cluster.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2012/05/axis2-clustering-on-tomcat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHQXc6cSp7ImA9WhVWEE8.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-4111628168179409931</id><published>2012-04-21T19:14:00.001+05:30</published><updated>2012-04-21T21:05:30.919+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-21T21:05:30.919+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JMS" /><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><category scheme="http://www.blogger.com/atom/ns#" term="ActiveMQ" /><category scheme="http://www.blogger.com/atom/ns#" term="web services" /><title>Axis2 JMS transport and ActiveMQ</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
In this post I will describe how to configure &lt;a href="http://axis.apache.org/axis2/java/core/" target="_blank"&gt;Axis2&lt;/a&gt; JMS &lt;a href="http://axis.apache.org/axis2/java/transports/" target="_blank"&gt;transport&lt;/a&gt; 
properly and test web services through JMS transport. For the simplicity
 I will use Apache &lt;a href="http://activemq.apache.org/" target="_blank"&gt;ActiveMQ&lt;/a&gt; as the JMS server and will use &lt;a href="http://activemq.apache.org/" target="_blank"&gt;ActiveMQ&lt;/a&gt; 
admin console as a JMS client to send and receive messages. In my future
 posts I will describe how to use &lt;a href="http://activemq.apache.org/" target="_blank"&gt;ActiveMQ&lt;/a&gt; Maven plug-in with Axis2 and 
also how to test Axis2 &lt;a href="http://axis.apache.org/axis2/java/transports/" target="_blank"&gt;JMS transports &lt;/a&gt;with few other implementations 
such as &lt;a href="http://qpid.apache.org/" target="_blank"&gt;Apache QPID&lt;/a&gt; and &lt;a href="http://wso2.com/products/message-broker/" target="_blank"&gt;WSO2 Message Broker&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
First, If you don't
 have a ActiveMQ installation already, download the binary distribution 
from &lt;a href="http://activemq.apache.org/" target="_blank"&gt;here&lt;/a&gt; and start the ActiveMQ server. If it's started properly make 
sure you can access to admin console through the following URL, we will 
use this admin console as a JMS client.&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; http://0.0.0.0:8161/admin  
&lt;/code&gt;&lt;/pre&gt;
The next step is add requited dependencies and configure JMS transport 
in Axis2. Here I use &lt;a href="http://axis.apache.org/axis2/java/core/" target="_blank"&gt;Axis2&lt;/a&gt; Simple HTTP server but same steps can be used
 with any other application server too.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;(1) Add following dependencies to the "lib" directory of Axis2.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1. &amp;nbsp;axis2-transport-jms-1.x.x&amp;nbsp; (axis2-transport-jms-1.7.0-SNAPSHOT.jar or axis2-transport-jms-1.7.0 )&lt;br /&gt;
2. &amp;nbsp;axis2-transport-base-1.x.x (axis2-transport-base-1.7.0-&lt;wbr&gt;&lt;/wbr&gt;SNAPSHOT.jar or axis2-transport-base- 1.7.0)&amp;nbsp;&amp;nbsp; &lt;br /&gt;
3. geronimo-j2ee-management_1.1_spec-1.0.x&amp;nbsp; (geronimo-j2ee-management_1.1_spec-1.0.1.jar)&lt;br /&gt;
4. geronimo-jms_1.1_spec-1.1.x&amp;nbsp; (geronimo-jms_1.1_spec-1.1.1.jar)&lt;br /&gt;
5. activemq-core-5.1.x (activemq-core-5.1.0.jar)&lt;br /&gt;
6. coomons-io-2.1 (coomons-io-2.1.jar)&lt;br /&gt;
&lt;br /&gt;
You can find above dependencies on Axis2 transport project &lt;a href="http://axis.apache.org/axis2/java/transports/download_index.html" target="_blank"&gt;here&lt;/a&gt; or you 
can find latest development snapshots from Apache build server &lt;a href="https://builds.apache.org/view/A-F/view/Axis2/job/axis2-transports-trunk/ws/.repository/" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;(2) Like in any other Axis2 transport your next task is to configure 
particular transport through the axis2.xml file by adding underline 
&lt;a href="http://axis.apache.org/axis2/java/core/api/org/apache/axis2/transport/TransportListener.html" target="_blank"&gt;TransportListener&lt;/a&gt;&amp;nbsp; and&amp;nbsp; &lt;a href="http://axis.apache.org/axis2/java/core/api/org/apache/axis2/transport/TransportSender.html" target="_blank"&gt;TransportSender&lt;/a&gt;. For the JMS transport you can 
add following settings&lt;/b&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; &amp;lt;transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&amp;gt;  
   &amp;lt;parameter name="default" locked="false"&amp;gt;             
     &amp;lt;parameter name="java.naming.factory.initial" locked="false"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="java.naming.provider.url" locked="false"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;      
     &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&amp;gt;QueueConnectionFactory&amp;lt;/parameter&amp;gt;  
   &amp;lt;/parameter&amp;gt;  
 &amp;lt;/transportReceiver&amp;gt;  
&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; &amp;lt;transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"&amp;gt;  
   &amp;lt;parameter name="default" locked="false"&amp;gt;             
     &amp;lt;parameter name="java.naming.factory.initial" locked="false"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;  
     &amp;lt;parameter name="java.naming.provider.url" locked="false"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;      
     &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&amp;gt;QueueConnectionFactory&amp;lt;/parameter&amp;gt;  
   &amp;lt;/parameter&amp;gt;  
 &amp;lt;/transportSender&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
Axis2 Transport &lt;a href="http://axis.apache.org/axis2/java/transports/jms.html" target="_blank"&gt;user guide&lt;/a&gt; provide advanced configuration details such as separate configuration for JMS Queue and Topic etc.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;(3) Start Axis2 server, If JMS transport is configured properly it is possible to see log message about JMS transport as follows.&lt;/b&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; [INFO] JMS Sender started  
 [INFO] JMS ConnectionFactory : default initialized  
 [INFO] JMS Transport Sender initialized...  
 ..................  
 [INFO] JMS ConnectionFactory : default initialized  
 [INFO] JMS Transport Receiver/Listener initialized...  
 [INFO] Listening on port 8080  
 [INFO] JMS listener started  
 [INFO] Task manager for service : Version [re-]initialized  
 [INFO] Started to listen on destination : Version of type Queue for service Version  
 [INFO] Task manager for service : CalculatorService [re-]initialized  
 [INFO] Started to listen on destination : CalculatorService of type Queue for service CalculatorService  
 [INFO] Task manager for service : mtomService1Axis [re-]initialized  
 [INFO] Started to listen on destination : mtomService1Axis of type Queue for service mtomService1Axis  
 [INFO] [SimpleAxisServer] Started  
 [SimpleAxisServer] Started  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Now you have configured Axis2 JMS transport properly and it's possible 
to use any JMS client to invoke web services deployed on Axis2.&amp;nbsp; Let's 
try to invoke getVersion operation on Version web service through 
ActiveMQ admin console. Again in a browser go to the ActiveMQ admin 
console through the http://0.0.0.0:8161/admin URL, now&amp;nbsp; you have to 
select "Send" tab to reach the send wizard.&amp;nbsp; This wizard expect 3 basic 
inputs from you as input message, JMS destination ( in this case 
destination queue) and reply-to location. By looking at Axis2 server 
startup logs you can find hint about JMS destination bind to each web 
service, you can ensure availability of this JMS destination in ActiveMQ
 console too.&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;  [INFO] Started to listen on destination : Version of type Queue for service Version  
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
For our test scenario let's use following properties.&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&amp;nbsp;Destination - Version&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Reply-To &amp;nbsp;&amp;nbsp; - VersionResponse ( This destination is not available on 
ActiveMQ at this point, it will be created when the repose messages arrive to 
the JMS server)&lt;/li&gt;
&lt;li&gt;In put message - Use following message&lt;/li&gt;
&lt;li&gt;&lt;label for="JMSCorrelationID"&gt;Correlation ID&lt;/label&gt;&amp;nbsp;
 - Add a random number&lt;/li&gt;
&lt;/ul&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;soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:axis="http://axisversion.sample"&amp;gt;  
   &amp;lt;soap:Header/&amp;gt;  
   &amp;lt;soap:Body&amp;gt;  
    &amp;lt;axis:getVersion/&amp;gt;  
   &amp;lt;/soap:Body&amp;gt;  
 &amp;lt;/soap:Envelope&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-dEQzkDJKOiE/T5LBe5xgneI/AAAAAAAAAJ4/qX1nr58yWJk/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="325" src="http://1.bp.blogspot.com/-dEQzkDJKOiE/T5LBe5xgneI/AAAAAAAAAJ4/qX1nr58yWJk/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can see the response message by browsing "VersionResponse" Queue as follows.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-L0cmMycaD5s/T5LBn-kTyhI/AAAAAAAAAKA/s4brhGwIW9U/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" src="http://2.bp.blogspot.com/-L0cmMycaD5s/T5LBn-kTyhI/AAAAAAAAAKA/s4brhGwIW9U/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/CiSJvVSVkbg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/4111628168179409931/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=4111628168179409931&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/4111628168179409931?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/4111628168179409931?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/CiSJvVSVkbg/axis2-jms-transport-and-activemq.html" title="Axis2 JMS transport and ActiveMQ" /><author><name>Sagara Gunathunga</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/-dEQzkDJKOiE/T5LBe5xgneI/AAAAAAAAAJ4/qX1nr58yWJk/s72-c/1.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2012/04/axis2-jms-transport-and-activemq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUGRHY-eyp7ImA9WhVXE08.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-5511793584879296354</id><published>2012-04-13T18:56:00.001+05:30</published><updated>2012-04-13T19:07:05.853+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-13T19:07:05.853+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Maven2" /><category scheme="http://www.blogger.com/atom/ns#" term="Axis2" /><title>How to use Axis2 WSDL2JAVA with proxy authentication</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Securing WSDL using basic authentication is a common practice for number  of enterprise web service providers. Also in some business domains it's  required to secure various WSDL URLs among business partners so that  partners can access service contracts according to their business  agreements by providing a user name and a password.&amp;nbsp; As the most popular  Java web service stack lot of people keep asking to enable basic&amp;nbsp;  authentication to WSDL2JAVA tool so that they can access WSDL files  secured through basic authentication.&lt;br /&gt;
&lt;br /&gt;
Now you can use following two options to specify proxy user name and password.&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; -http-proxy-user [user name]      - Proxy user name for basic authentication.  
 -http-proxy-password [password]   - Proxy password for basic authentication.  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
The following examples show how to use above option in command line.&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 -http-proxy-user user-name -http-proxy-password password -uri http://localhost/axis2/services/Version?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 -http-proxy-user user-name -http-proxy-password password -wv 2.0 -uri http://localhost/axis2/services/Version?wsdl2   
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Also these two options supported in Wsdl2Java Maven plug-in too.&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; axis2.wsdl2code.http-proxy-user  - User name for proxy server.  
 axis2.wsdl2code.http-proxy-password - Password for proxy server.   
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/Aj474QVz7gg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/5511793584879296354/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=5511793584879296354&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5511793584879296354?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5511793584879296354?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/Aj474QVz7gg/how-to-use-axis2-wsdl2java-with-proxy.html" title="How to use Axis2 WSDL2JAVA with proxy authentication" /><author><name>Sagara Gunathunga</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/04/how-to-use-axis2-wsdl2java-with-proxy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ANQHc7eCp7ImA9WhVRFk0.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1466811699553614136</id><published>2012-03-24T21:37:00.006+05:30</published><updated>2012-03-24T21:46:31.900+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-24T21:46:31.900+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>Test Axis2 JAX-WS MTOM service using SoapUI</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;In this post I have described how to write a MTOM aware JAX-WS service and how to use SoapUI to invoke this service. Consider a service called PictureService that uploads images through a web service, it uses a bean called PictureInfo that contains two fields as textual name of the image and image binary data. &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; @XmlRootElement  
 public class PictureInfo {  
   private String name;  
   protected DataHandler imageData;  
   public String getName() {  
     return name;  
   }  
   public void setName(String name) {  
     this.name = name;  
   }  
   @XmlMimeType("application/octet-stream")  
   public DataHandler getImageData() {  
     return imageData;  
   }  
   public void setImageData(DataHandler imageData) {  
     this.imageData = imageData;  
   }  
 }   
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
As you can see in the above code snippet getImageData() method annotated using XmlMimeType that instructs JAXB runtime to consider this particular filed as a MIME content. You can find web service interface and implementation in the following code snippet.&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; @WebService(name = "pictureService")  
 public interface PictureService {  
   boolean uploadPicture(PictureInfo pictureInfo);  
 }  
&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; @WebService(endpointInterface = "org.apache.axis2.sample.pictureservice.PictureService", serviceName = "pictureService")  
 public class PictureServiceImpl implements PictureService {  
   @Override  
   public boolean uploadPicture(PictureInfo pictureInfo) {  
     DataHandler dh = pictureInfo.getImageData();  
     try {  
       File F = new File("../data/"+ pictureInfo.getName() + ".jpg");  
       FileOutputStream fs = new FileOutputStream(F);  
       dh.writeTo(fs);  
       fs.flush();  
       fs.close();  
       return true;  
     } catch (Exception e) {  
       e.printStackTrace();  
     }  
     return false;  
   }  
 }  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After compiling above classes it's required to package them as a jar file. Usually this is a straight forward task with a build tool like Maven. For the simplicity I used Axis2 simple HTTP server that shipped with binary distribution to deploy this sample application but it is possible to use any application server together with Axis2 WAR distribution. &amp;nbsp;In case of Simple HTTP server use following steps to deploy the service properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;&lt;li&gt;Create a directory called "servicejars" under the Axis2 repository and place above created service jar file there. Axis2 deployment engine scan this directory in order to deploy JAX-WS services.&lt;/li&gt;
&lt;li&gt;Create a directory called "data" as same level as "bin" directory, this directory used to store images uploaded by users.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Start Axis2 simple HTTP server.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;It should be possible to access generated WSDL file through &amp;nbsp;http://localhost:8080/axis2/services/pictureService?wsdl address.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Now create a SoapUI project by providing the above URL in the usual way as you create SoapUI project for any other web service. In the left side project explore window, find the automatically created &amp;nbsp;"Request 1" message that should be under &amp;nbsp;uploadPicture operation then open the request editor for this message. At this point you have need to perform following two tasks.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;1. &amp;nbsp;Set "Enable MTOM" property value to true because default value of this property is false. ( you can see message properties in a window located in left bottom side of your screen)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ApDHENW60JQ/T23xcSPXyoI/AAAAAAAAAJk/HiYEJecNLL4/s1600/Screenshot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-ApDHENW60JQ/T23xcSPXyoI/AAAAAAAAAJk/HiYEJecNLL4/s400/Screenshot1.png" width="277" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;2. Fill sample values and attach a image using "Add an attachment" menu option. Before you send this message make sure value of "cid:" field is match with ContentID of the attachment. I have given a screen shot of such example here. After executing above method you can see uploaded image stored within &amp;nbsp;"data" directory of the server.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Cn9zszWtHEs/T23xjSSLSEI/AAAAAAAAAJs/WEWhGj63eR0/s1600/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://2.bp.blogspot.com/-Cn9zszWtHEs/T23xjSSLSEI/AAAAAAAAAJs/WEWhGj63eR0/s400/Screenshot.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/ovZlvSNCHJU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/1466811699553614136/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=1466811699553614136&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1466811699553614136?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/1466811699553614136?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/ovZlvSNCHJU/test-axis2-jax-ws-mtom-service-using.html" title="Test Axis2 JAX-WS MTOM service using SoapUI" /><author><name>Sagara Gunathunga</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/-ApDHENW60JQ/T23xcSPXyoI/AAAAAAAAAJk/HiYEJecNLL4/s72-c/Screenshot1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2012/03/test-axis2-jax-ws-mtom-service-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFQXk9eip7ImA9WhRaEko.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-2187013247653368434</id><published>2012-02-15T07:35:00.002+05:30</published><updated>2012-02-15T07:43:30.762+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T07:43:30.762+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><title>Apache BarCamp Colombo 2012</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://barcamp.org/w/page/50716721/apache-lk-12" target="_blank"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-KBglLEeqb90/TzsSVBxJVCI/AAAAAAAAAJc/KpEFrM6eWls/s640/Screenshot.png" width="405" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/RUfvhxDLjM4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/2187013247653368434/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=2187013247653368434&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/2187013247653368434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/2187013247653368434?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/RUfvhxDLjM4/apache-barcamp-colombo.html" title="Apache BarCamp Colombo 2012" /><author><name>Sagara Gunathunga</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/-KBglLEeqb90/TzsSVBxJVCI/AAAAAAAAAJc/KpEFrM6eWls/s72-c/Screenshot.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2012/02/apache-barcamp-colombo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFQ388eip7ImA9WhRbEUo.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-5372750300665387393</id><published>2012-02-02T13:34:00.002+05:30</published><updated>2012-02-02T13:43:32.172+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-02T13:43:32.172+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 archetype to create web application and Maven Jetty/Tomcat plug-ins.</title><content type="html">Axis2 provides number of web service deployment options. Unlike some  other frameworks Axis2 can be integrate as a framework in a web  application or can be used as a container to hold number of web  services. Sometimes back Deepal wrote a nice tutorial to explain how to  use Axis2 in a web application you can read his post &lt;a href="http://www.developer.com/java/ent/article.php/10933_3777111_1" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
From Axis2&amp;nbsp; version 1.7.0 onwards we have introduced a new Maven  archetype to create Axis2 embedded web applications. Following are the  necessary step to use this archetype.&lt;br /&gt;
&lt;br /&gt;
1.) It's possible to get list of available archetypes by invoking archetype:generate goal as follows. [ refer&amp;nbsp; NOTE -1 ]&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; mvn archetype:generate  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
2.)&amp;nbsp; Select the&amp;nbsp; number corresponds&amp;nbsp; to "org.apache.axis2.archetype:&lt;wbr&gt;&lt;/wbr&gt;quickstart-webapp  (Maven archetype for creating a&amp;nbsp; Axis2 web Service as a webapp)" . Then  provide other input parameters such as group name, artifact name etc.&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; 541: local -&amp;gt; org.apache.axis2.archetype:quickstart (Maven archetype for creating a Axis2 web Service)  
 542: local -&amp;gt; org.apache.axis2.archetype:quickstart-webapp (Maven archetype for creating a Axis2 web Service as a webapp)  
 Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 171: 542  
 [INFO] snapshot org.apache.axis2.archetype:quickstart-webapp:1.7.0-SNAPSHOT: checking for updates from quickstart-webapp-repo  
 Downloading: http://repository.apache.org/snapshots//org/apache/axis2/archetype/quickstart-webapp/1.7.0-SNAPSHOT/quickstart-webapp-1.7.0-20120131.070321-34.jar  
 10K downloaded (quickstart-webapp-1.7.0-20120131.070321-34.jar)  
 Downloading: http://repository.apache.org/snapshots//org/apache/axis2/archetype/quickstart-webapp/1.7.0-SNAPSHOT/quickstart-webapp-1.7.0-20120131.070321-34.pom  
 1K downloaded (quickstart-webapp-1.7.0-20120131.070321-34.pom)  
 Define value for property 'groupId': : sample  
 Define value for property 'artifactId': : sampleWebApp  
 Define value for property 'version': 1.0-SNAPSHOT: 1.0  
 Define value for property 'package': sample:  
 Confirm properties configuration:  
 groupId: sample  
 artifactId: sampleWebApp  
 version: 1.0  
 package: sample  
 Y:  
 [INFO] ----------------------------------------------------------------------------  
 [INFO] Using following parameters for creating project from Archetype: quickstart-webapp:1.7.0-SNAPSHOT  
 [INFO] ----------------------------------------------------------------------------  
 [INFO] Parameter: groupId, Value: sample  
 [INFO] Parameter: artifactId, Value: sampleWebApp  
 [INFO] Parameter: version, Value: 1.0  
 [INFO] Parameter: package, Value: sample  
 [INFO] Parameter: packageInPathFormat, Value: sample  
 [INFO] Parameter: package, Value: sample  
 [INFO] Parameter: version, Value: 1.0  
 [INFO] Parameter: groupId, Value: sample  
 [INFO] Parameter: artifactId, Value: sampleWebApp  
 [INFO] project created from Archetype in dir: /home/apps/sampleWebApp  
 [INFO] ------------------------------------------------------------------------  
 [INFO] BUILD SUCCESSFUL  
 [INFO] ------------------------------------------------------------------------  
 [INFO] Total time: 57 seconds  
 [INFO] Finished at: Tue Jan 31 13:28:46 IST 2012  
 [INFO] Final Memory: 30M/238M  
 [INFO] ------------------------------------------------------------------------  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Now you can import generated Maven project to any of your favorite IDE but console is sufficient to run default service. &lt;br /&gt;
&lt;br /&gt;
Generated project's POM file is already configured for Maven &lt;a href="http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin" target="_blank"&gt;Jetty plug-in&lt;/a&gt; and It's possible to see following entries.&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;plugin&amp;gt;  
         &amp;lt;groupId&amp;gt;org.mortbay.jetty&amp;lt;/groupId&amp;gt;  
         &amp;lt;artifactId&amp;gt;maven-jetty-plugin&amp;lt;/artifactId&amp;gt;  
         &amp;lt;configuration&amp;gt;  
           &amp;lt;webAppConfig&amp;gt;  
             &amp;lt;contextPath&amp;gt;/&amp;lt;/contextPath&amp;gt;  
           &amp;lt;/webAppConfig&amp;gt;  
         &amp;lt;/configuration&amp;gt;  
       &amp;lt;/plugin&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
3.) Run Jetty server using following command. [ NOTE -2 ]&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; mvn clean jetty:run  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
4.) Above command will start Jetty server and deploy current Maven  project as a web application in this case it deploy available web  services too. You can access WSDL file for deployed web service using  following URL.&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; http://localhost:8080/services/SimpleService?wsdl  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
5.) You can use Axis2's WSDL2JAVA or tool like a SoapUi to generate  web service client for above service alternatively you can test above  service using your browser in a RESTfull manner.&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; http://localhost:8080/services/SimpleService/helloService?msg=sagara  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
You should able to see following response in your browser.&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;ns:helloServiceResponse&amp;gt;&amp;lt;ns:return&amp;gt;Hello sagara&amp;lt;/ns:return&amp;gt;&amp;lt;/ns:helloServiceResponse&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
6.) If you are happy with your service you can create a WAR archive  using mvn package command and possible to deploy in real app server  instance.&lt;br /&gt;
&lt;br /&gt;
Axis2 &amp;nbsp;Webapp archetype&amp;nbsp;use Jetty as the default &amp;nbsp;server but it's possible to use Tomcat as follows. &lt;br /&gt;
&lt;br /&gt;
7.) Add &lt;a href="http://tomcat.apache.org/maven-plugin.html" target="_blank"&gt;tomcat-maven-plugin&lt;/a&gt; to the POM file and configure it properly.&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;plugin&amp;gt;  
      &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;  
      &amp;lt;artifactId&amp;gt;tomcat-maven-plugin&amp;lt;/artifactId&amp;gt;  
       &amp;lt;configuration&amp;gt;  
              &amp;lt;useSeparateTomcatClassLoader&amp;gt;  
               true  
             &amp;lt;/useSeparateTomcatClassLoader&amp;gt;                       
        &amp;lt;/configuration&amp;gt;  
   &amp;lt;/plugin&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&amp;nbsp;8.) Now all you need is to execute run goal 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; mvn clean tomcat:run  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
9.) Also if you plan to deploy your service in a Tomcat instance you can you use deploy goal to deploy your service.&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; mvn tomcat:deploy   
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Following are two sample configurations to use with deploy goal.&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;plugin&amp;gt;  
           &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;  
            &amp;lt;artifactId&amp;gt;tomcat-maven-plugin&amp;lt;/artifactId&amp;gt;  
            &amp;lt;configuration&amp;gt;  
                &amp;lt;useSeparateTomcatClassLoader&amp;gt;  
                  true  
                &amp;lt;/useSeparateTomcatClassLoader&amp;gt;               
                &amp;lt;path&amp;gt;/ws&amp;lt;/path&amp;gt;  
               &amp;lt;warFile&amp;gt;target/wepAppSample-1.0.war&amp;lt;/warFile&amp;gt;  
               &amp;lt;username&amp;gt;tomcat&amp;lt;/username&amp;gt;  
               &amp;lt;password&amp;gt;tomcat&amp;lt;/password&amp;gt;  
             &amp;lt;/configuration&amp;gt;  
       &amp;lt;/plugin&amp;gt;  
&lt;/code&gt;&lt;/pre&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;         &amp;lt;plugin&amp;gt;  
               &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;  
               &amp;lt;artifactId&amp;gt;tomcat-maven-plugin&amp;lt;/artifactId&amp;gt;  
               &amp;lt;configuration&amp;gt;  
                &amp;lt;useSeparateTomcatClassLoader&amp;gt;  
                 true  
                &amp;lt;/useSeparateTomcatClassLoader&amp;gt;  
               &amp;lt;server&amp;gt;TomcatServer&amp;lt;/server&amp;gt;  
                &amp;lt;path&amp;gt;/ws&amp;lt;/path&amp;gt;  
               &amp;lt;warFile&amp;gt;target/wepAppSample-1.0.war&amp;lt;/warFile&amp;gt;                
              &amp;lt;/configuration&amp;gt;  
          &amp;lt;/plugin&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;NOTE -1 &lt;/b&gt;&lt;br /&gt;
Until Axis2 1.7.0 version get released this archetype is  not available on public Maven repos but you can point to Apache  snapshot repository 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; mvn archetype:generate -DarchetypeRepository=http://repository.apache.org/snapshots/   
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;NOTE -2 &lt;/b&gt;&lt;br /&gt;
Until Axis2 1.7.0 version get released it's required to  add following snapshot repository to the project's POM file in order to  grab snapshot artifacts.&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;repositories&amp;gt;  
           &amp;lt;repository&amp;gt;     
            &amp;lt;id&amp;gt;snapshots&amp;lt;/id&amp;gt;  
            &amp;lt;url&amp;gt;http://repository.apache.org/snapshots&amp;lt;/url&amp;gt;  
           &amp;lt;/repository&amp;gt;    
         &amp;lt;/repositories&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yWKUV/~4/qwrYhHqeqt4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ssagara.blogspot.com/feeds/5372750300665387393/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=33519738&amp;postID=5372750300665387393&amp;isPopup=true" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5372750300665387393?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/33519738/posts/default/5372750300665387393?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yWKUV/~3/qwrYhHqeqt4/axis2-archetype-to-create-web.html" title="Axis2 archetype to create web application and Maven Jetty/Tomcat plug-ins." /><author><name>Sagara Gunathunga</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>9</thr:total><feedburner:origLink>http://ssagara.blogspot.com/2012/02/axis2-archetype-to-create-web.html</feedburner:origLink></entry><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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" title="2 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 Gunathunga</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/10/soap-encoding-and-axis2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcNQHw6eSp7ImA9WhRaEko.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-1578468313793629702</id><published>2011-09-11T23:02:00.004+05:30</published><updated>2012-02-15T07:44:51.211+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T07:44:51.211+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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;CEYEQXs8cCp7ImA9WhRaEko.&quot;"><id>tag:blogger.com,1999:blog-33519738.post-998328509245318302</id><published>2010-02-15T22:42:00.003+05:30</published><updated>2012-02-15T07:45:00.578+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T07:45:00.578+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><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;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&amp;isPopup=true" 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 Gunathunga</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;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&amp;isPopup=true" 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 Gunathunga</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></feed>
