<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-28662836</id><updated>2012-01-27T06:38:35.378-08:00</updated><category term='Data Services'/><category term='Apache Neethi'/><category term='Phishing'/><category term='JBoss'/><category term='Sakai'/><category term='WS-Policy'/><category term='OSGi'/><category term='Ontology Storage and Reasoning'/><category term='WSO2 ESB'/><category term='SEALS'/><category term='Apache Rampart'/><category term='Semantic Web'/><category term='WebDAV'/><category term='Ontology Engineering'/><category term='Web services'/><category term='Tutorial'/><category term='WSAS'/><category term='SSO'/><category term='Security'/><category term='Java'/><category term='SOA'/><category term='Tutorials'/><category term='Open Office'/><category term='OpenID'/><category term='WSO2'/><category term='Blogging'/><category term='XKMS'/><category term='Identity'/><category term='WSF/Spring'/><category term='Carbon'/><category term='plurk'/><category term='.docx'/><category term='Identity Theft'/><category term='Equinox'/><category term='Single Sign On'/><category term='twitter'/><category term='Semantic Web Services'/><category term='Privacy'/><category term='Error messages'/><category term='Rampart'/><category term='Ubuntu'/><category term='Ontology Matching'/><category term='Wcid'/><category term='Articles'/><category term='Axis2'/><category term='PAPE'/><title type='text'>Nandana Mihindukulasooriya's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.nandana.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.nandana.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-28662836.post-2885957124537751239</id><published>2012-01-27T05:25:00.000-08:00</published><updated>2012-01-27T06:38:35.387-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ontology Storage and Reasoning'/><category scheme='http://www.blogger.com/atom/ns#' term='SEALS'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Ontology Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Ontology Matching'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web Services'/><title type='text'>Call for Participation - 2nd International Evaluation Campaign for Semantic Technologies 2012</title><content type='html'>&lt;p&gt;Following the success of &lt;a href="http://www.seals-project.eu/whitepaper"&gt;the first campaign in 2010&lt;/a&gt; , we are pleased to announce the &lt;b&gt;&lt;i&gt;Second International Evaluation Campaign&lt;/i&gt; for Semantic Technologies&lt;/b&gt; which will be conducted in Spring 2012. This campaign is organised by the&lt;a href="http://about.seals-project.eu/"&gt; Semantic Evaluation At Large Scale (SEALS) Project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We cordially invite you to participate in the this campaign in one or more of the five core areas shown below. Participation is open to anyone who is interesting in benchmarking a semantic technology tool. Detailed information regarding each area's campaign together with terms and conditions and general information about SEALS can be found on &lt;a href="http://www.seals-project.eu/"&gt;the SEALS Portal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;The Campaign&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The SEALS Evaluation Campaign is open to all and will focus on benchmarking five core technology areas on the basis of a number of criteria such as Interoperability, Scalability, Usability, Conformance to Standards, and Efficiency. Each area's campaign will be largely automated and executed on the SEALS Platform thus reducing the overhead normally associated with such evaluations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Why get involved?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Broadly speaking, the benefits are threefold. &lt;/p&gt;&lt;p&gt;Firstly, participation in the evaluation campaigns provides you with a respected and reliable means of benchmarking your semantic technologies. It provides an independent mechanism for demonstrating your tool's abilities and performance to potential adopters / customers.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Secondly, since you will have perpetual, free-of-charge access to the SEALS Platform, it gives you the highly valuable benefit of being able to regularly (and confidentially) assess the strengths and weaknesses of your tool relative to your competitors as an integral part of the development cycle.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Thirdly, your participation benefits the wider community since the evaluation campaign results will be used to create 'roadmaps' to assist adopters new to the field to determine which technologies are best suited to their needs thus improving general semantic technology market penetration.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;How to get involved&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Joining the SEALS Community is easy and poses no obligations. Indeed, by being a member of the community you receive the latest information about the evaluation campaign including details of newly published data sets, tips and advice on how to get the most out of your participation and the availability of results and analyses. &lt;a href="http://www.seals-project.eu/join-the-community"&gt;&lt;i&gt;Join SEALS Community now&lt;/i&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Timeline for the campaign&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td rowspan="3"&gt;now&lt;/td&gt; &lt;td&gt;Registration&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Data, documentation available&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Participants upload tool(s)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;March - April 2012&lt;/td&gt; &lt;td&gt;Evaluation executed (by SEALS)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;April 2012 - May 2012&lt;/td&gt; &lt;td&gt;Results analysis (by SEALS)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;June 2012&lt;/td&gt; &lt;td&gt;&lt;a href="http://oeg-lia3.dia.fi.upm.es/iwest2012/"&gt;ESWC 2012 workshop&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;The technology areas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ontology Engineering Tools&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Addresses the ontology management capabilities of semantic technologies in terms of their ontology language conformance, interoperability and scalability. The main tools targeted are ontology engineering tools and ontology management frameworks and APIs; nevertheless, the evaluation is open to any other type of semantic technology.&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Ontology Storage and Reasoning Tools&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Assesses a reasoner's performance in various scenarios resembling real-world applications. In particular, their effectiveness (comparison with pre-established 'golden standards'), interoperability (compliance with standards) and scalability are evaluated with ontologies of varying size and complexity.&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Ontology Matching Tools&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Builds on previous matching evaluation initiatives (OAEI campaigns) and integrates the following evaluation criteria: (a) conformance with expected results (precision, recall and generalizations); (b) performance in terms of memory consumption and execution time; (c) interoperability, measuring the conformance with standard such as RDF/OWL; and (d) measuring the coherence of the generated alignments.&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Semantic Search Tools&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Evaluated according to a number of different criteria including query expressiveness (means by which queries are formulated within the tool) and scalability. Given the interactive nature of semantic search tools, a core interest in this evaluation is the usability of a particular tool (effectiveness, efficiency, satisfaction)&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Semantic Web Services&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Focuses on activities such as discovery, ranking and selection. In the context of SEALS, we view a SWS tool as a collection of components (platform services) of the Semantic Execution Environment Reference Architecture (SEE-RA). Therefore, we require that SWS tools implement one or more SEE APIs in order to be evaluated.&lt;/blockquote&gt;Details of each area's evaluation scenarios and methodology can be found at:&lt;br /&gt;&lt;a href="http://www.seals-project.eu/seals-evaluation-campaigns/2nd-seals-evaluation-campaigns"&gt;http://www.seals-project.eu/seals-evaluation-campaigns/2nd-seals-evaluation-campaigns&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;About SEALS&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The SEALS Project is developing a reference infrastructure known as the SEALS Platform to facilitate the formal evaluation of semantic technologies. This allows both large-scale evaluation campaigns to be run (such as the one described in this communication) and ad-hoc evaluations by individuals or organisations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Find out more&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;More information about SEALS and the evaluation campaign can be found from the&lt;a href="http://www.seals-project.eu/"&gt; SEALS portal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you would like to contact us directly:&lt;br /&gt;&lt;b&gt;SEALS Coordinator:&lt;/b&gt; &lt;a href="http://mayor2.dia.fi.upm.es/oeg-upm/index.php/en/teachers/194-asun"&gt;Asuncion Gomez-Perez&lt;/a&gt; (&lt;a href="mailto:asun@fi.upm.es"&gt;asun@fi.upm.es&lt;/a&gt;)&lt;br /&gt;&lt;b&gt;Evaluation Campaign Coordinator:&lt;/b&gt; &lt;a href="http://www.dcs.shef.ac.uk/~fabio/Fabio_Ciravegna/Home.html"&gt;Fabio Ciravegna&lt;/a&gt; (&lt;a href="mailto:f.ciravegna@dcs.shef.ac.uk"&gt;f.ciravegna@dcs.shef.ac.uk&lt;/a&gt;)&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2885957124537751239?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2885957124537751239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2885957124537751239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2885957124537751239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2885957124537751239'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2012/01/call-for-participation-2nd.html' title='Call for Participation - 2nd International Evaluation Campaign for Semantic Technologies 2012'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-9163540629574336335</id><published>2011-03-21T03:48:00.000-07:00</published><updated>2011-03-22T03:01:43.958-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sakai'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDAV'/><title type='text'>Sakai CLE WebDAV support</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://sakaiproject.org/"&gt;Sakai&lt;/a&gt; is an open source Collaboration and Learning Environment (CLE) software a.k.a. Learning Management System (LMS) or Course Management System (CMS) developed by &lt;a href="http://sakaiproject.org/sakai-foundation"&gt;the Sakai Foundation&lt;/a&gt;. Sakai has &lt;a href="http://www.webdav.org/"&gt;WebDAV&lt;/a&gt; support which allows mounting site's files and other uploaded content as a network folder so that you can use drag and drop to upload and download files and folders to and from Sakai Resources.  I tried out this feature in Sakai and this post explains the steps that I followed. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Great thing about Sakai is that there are many organizations that host Sakai instances which you can use to try out Sakai online without installing anything. In this post, I will use &lt;a href="https://testdrivesakai.com/portal"&gt;Free Test Drive Sakai 2.7&lt;/a&gt; from Unicon. Once you create an account and login, you can navigate to My Workspace --&gt; Resources --&gt; Upload-Download Multiple Resources to try out WebDAV support in Sakai.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/-N6hRcr0AHTg/TYc51Rbej1I/AAAAAAAAAfU/QgLcvR0T51w/s800/webdav.jpeg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 626px; height: 416px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5586497450150891346" /&gt;&lt;/div&gt;&lt;div&gt;It includes a step by step guide on how to mount volume in Windows and Mac OS. But if you are Linux user, you can use the following commands with appropriate paths to mount the volume under Linux. I have just listed the commands, please refer to &lt;a href="http://www.cynapse.com/community/home/cyn.in-users/howto-connect-to-cyn.in-as-webdav-share-from-ubuntu"&gt;this post&lt;/a&gt; for more details.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;$sudo apt-get install davfs2&lt;br /&gt;$sudo dpkg-reconfigure davfs2&lt;br /&gt;$sudo mount -t davfs https://testdrivesakai.com/dav/~nandana /home/nandana/sakai&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;However, with Linux (Ubuntu 10.10), I had a strange observation. I could login and mount the volume, the folder gets synced and everything seems to work fine. But whenever I tried to add a resource, it gives me an error message saying "No such file or directory". I wanted to isolate the problem, so I decided to try with Windows 7, and everything worked fine. So I went back to Linux and surprisingly everything started to work perfectly. Out of curiosity, I wanted to make sure that it was not a timing issue or any coincidence. So I created another account on Test Drive, and tried to reproduce this. And yes, Linux file uploading started to work as soon as you connect it once with Windows. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am not sure whether the problem is in the server side or the client side, but a little Googling showed not only Sakai, but some other projects with WebDAV support also have the same problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-9163540629574336335?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/9163540629574336335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=9163540629574336335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/9163540629574336335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/9163540629574336335'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2011/03/sakai-cle-webdav-support.html' title='Sakai CLE WebDAV support'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-N6hRcr0AHTg/TYc51Rbej1I/AAAAAAAAAfU/QgLcvR0T51w/s72-c/webdav.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2064967524685948966</id><published>2009-07-01T03:00:00.000-07:00</published><updated>2009-07-01T06:29:21.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>WSO2 SOA Summer School - Security in SOA : The brain friendly edition of complex security specs</title><content type='html'>&lt;span style="font-style: italic; font-weight: bold;"&gt;If you are not registered &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;already&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;, you can &lt;/span&gt;&lt;a style="font-style: italic; font-weight: bold;" href="http://wso2.org/training/security_in_soa"&gt;register now&lt;/a&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;. Like all SOA summer school classes, this course is FREE. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Topics covered :&lt;/span&gt;&lt;/span&gt; "Security in SOA" webinar will focus on key security standards and identity management for SOA with regards to two emerging user centric identities, OpenID &amp;amp; Information Cards, and also XACML for fine-grained authorization. In contrast to traditional security webinar, this will be conducted in a brain friendly manner without making you getting lost in the SOA acronym cloud.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Presenter           :&lt;/span&gt; &lt;a href="http://blog.facilelogin.com/"&gt;Prabath Siriwardena&lt;/a&gt;, Technical Lead and Security Team Manager, &lt;a href="http://wso2.org/"&gt;WSO2 Inc&lt;/a&gt;.&lt;br /&gt;Prabath is the security guru in WSO2 and he is famous for explaining complex things in a very simple manner. Want to see a proof of above statement ? “&lt;a href="http://www.slideshare.net/prabathsiriwardena/understanding-openid"&gt;Understanding OpenID&lt;/a&gt;“ and “&lt;a href="http://www.slideshare.net/prabathsiriwardena/identity-as-a-service-presentation"&gt;Identity as a Service&lt;/a&gt;“ webinars shows how capable he is explaining security stuff in a simple manner.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;WSO2 SOA Summer School :&lt;/span&gt; “&lt;a href="http://wso2.org/training"&gt;WSO2 SOA Summer School program&lt;/a&gt; is to help the many IT professionals worldwide whose careers are being impacted by the global recession. These free classes will enable enterprise IT architects and developers to become more familiar with SOA concepts, technologies, and best practices—expanding the expertise they bring to either current or prospective employers. WSO2 has developed a wealth of knowledge on SOA best practices through the professional consulting, design and training it provides customers. The same senior technical experts delivering WSO2’s &lt;a href="http://wso2.com/training/courses/onsite-training/"&gt;onsite&lt;/a&gt; and &lt;a href="http://wso2.com/training/courses/live-online-training/"&gt;online&lt;/a&gt; training are leveraging their SOA implementation expertise to create and teach eight customized courses for the SOA Summer School. With this program. WSO2 is opening its doors to all individuals who want to boost their SOA knowledge directly from some of the industry’s leading experts—thousands of dollars worth of professional training at zero cost. “.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2064967524685948966?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2064967524685948966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2064967524685948966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2064967524685948966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2064967524685948966'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2009/07/wso2-soa-summer-school-security-in-soa.html' title='WSO2 SOA Summer School - Security in SOA : The brain friendly edition of complex security specs'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-8275230333370908401</id><published>2009-04-16T02:04:00.001-07:00</published><updated>2009-04-16T05:22:18.320-07:00</updated><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='JBoss'/><title type='text'>Deploying Apache Axis2 / Rampart on JBoss</title><content type='html'>Recently I noticed some users raising questions on how to deploy Apache Axis2 / Rampart on JBoss and wanted to give it a try. I was able to deploy Apache Axis2 / Rampart on Jboss without much a problem and was able to successfully deploy and invoke a secure web service. Here are the steps.&lt;br /&gt;&lt;br /&gt;1.) Download the latest distributions of the required software.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/project/downloading.php?group_id=22866&amp;amp;use_mirror=nchc&amp;amp;filename=jboss-5.0.1.GA.zip"&gt;jboss-5.0.1.GA.zip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mirrors.enquira.com/apache/ws/axis2/1_4_1/axis2-1.4.1-war.zip"&gt;axis2-1.4.1-war.zip&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devlib.org/apache/ws/rampart/1_4/rampart-dist-1.4-bin.zip"&gt;rampart-dist-1.4-bin.zip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bouncycastle.org/download/bcprov-jdk15-142.jar"&gt;bcprov-jdk15-142.jar&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;Note : I am using JDK 1.5.0_14.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2.) Extract the jboss-5.0.1.GA.zip to a preferred location on your hard drive. We will refer to this folder as JBOSS_HOME from now onwards.&lt;br /&gt;&lt;br /&gt;3.) Deploy Axis2 on JBoss.&lt;br /&gt;&lt;br /&gt;We will use the &lt;a href="http://www.jboss.org/community/docs/DOC-9719"&gt;Exploded WAR Deployment&lt;/a&gt;.  Extract the axis2.war file in to &lt;jboss_home&gt;/server/default/deploy directory. By default it will be extracted to a directory named “axis2” and you need to rename it to “axis2.war”. Then delete xml-apis-1.3.04.jar and xercesImp&lt;/jboss_home&gt;&lt;jboss_home&gt;l-2.8.1.jar from from Axis2 war due to &lt;a href="https://jira.jboss.org/jira/browse/JBAPACHE-10"&gt;the issue mentioned here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/jboss_home&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/Seb8aaQXp0I/AAAAAAAAANk/YF-iee78DrA/s1600-h/pic1.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 183px;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/Seb8aaQXp0I/AAAAAAAAANk/YF-iee78DrA/s800/pic1.jpeg" alt="" id="BLOGGER_PHOTO_ID_5325221140066969410" border="0" /&gt;&lt;/a&gt;4.) Deploy Rampart.&lt;br /&gt;&lt;br /&gt;&lt;jboss_home&gt;Copy the jar libraries in lib directory of Rampart binary distribution to WEB-INF/lib directory of axis2.war. Also copy the bouncycastle library to  WEB-INF/lib directory.&lt;br /&gt;Copy the rampart-1.4.mar and rahas-1.4.mar to  WEB-INF/modules directory.&lt;br /&gt;The deployment structure is illustrated below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SecAtrbvqzI/AAAAAAAAANs/yJ6gEc8d19Q/s1600-h/Screenshot.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 323px; height: 400px;" src="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SecAtrbvqzI/AAAAAAAAANs/yJ6gEc8d19Q/s400/Screenshot.jpeg" alt="" id="BLOGGER_PHOTO_ID_5325225869142108978" border="0" /&gt;&lt;/a&gt;And that's it. Now you can deploy the secure services by copying them to WEB-INF/services directory.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SecgYdWb58I/AAAAAAAAAN0/ZVT6NTLgrzE/s1600-h/Screenshot-3.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 141px;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SecgYdWb58I/AAAAAAAAAN0/ZVT6NTLgrzE/s400/Screenshot-3.jpeg" alt="" id="BLOGGER_PHOTO_ID_5325260688956581826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you want to learn how to secure Axis2 web services using Apache Rampart module, following tutorials may help you to get started.&lt;br /&gt;&lt;/jboss_home&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wso2.org/library/3190"&gt;&lt;jboss_home&gt;Web Services Security with Apache Rampart - Part 1 (Transport Level Security)&lt;/jboss_home&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wso2.org/library/3415"&gt;&lt;jboss_home&gt;Web Services Security with Apache Rampart - Part 2 (Message-Level Security)&lt;/jboss_home&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;jboss_home&gt;&lt;br /&gt;&lt;br /&gt;&lt;/jboss_home&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-8275230333370908401?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/8275230333370908401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=8275230333370908401' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/8275230333370908401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/8275230333370908401'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2009/04/deploying-apache-axis2-rampart-on-jboss.html' title='Deploying Apache Axis2 / Rampart on JBoss'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K3-wXDk_J6Q/Seb8aaQXp0I/AAAAAAAAANk/YF-iee78DrA/s72-c/pic1.jpeg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-5982930550602207806</id><published>2009-01-06T20:43:00.000-08:00</published><updated>2009-01-06T20:45:39.349-08:00</updated><title type='text'>A few frequently used SSL commands - openssl and java keytool</title><content type='html'>Brusten Philip &amp;amp; Van der Velpen Jan have published a nice list of frequently used SSL commands &lt;a href="http://shib.kuleuven.be/docs/ssl_commands.shtml"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-5982930550602207806?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/5982930550602207806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=5982930550602207806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5982930550602207806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5982930550602207806'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2009/01/few-frequently-used-ssl-commands.html' title='A few frequently used SSL commands - openssl and java keytool'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-1872589697827298052</id><published>2009-01-04T21:33:00.000-08:00</published><updated>2009-01-04T22:19:34.576-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wcid'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>"WEP 64/128-bit Hex"  issue in Ubuntu Intrepid (8.10)</title><content type='html'>After upgrading to Interpid, today I tried to access the WLAN for the first time and faced a problem with the network manager. In the Ubuntu Intrepid network manager, there is no option to provide "WEP 64/128-bit Hex" configuration. This issue is discussed in &lt;a href="http://ubuntuforums.org/showthread.php?t=974272"&gt;this forum&lt;/a&gt;. Of course, I was able to connect to the WLAN using iwconfig. Other option is to use Wicd network manager. You can find how to install Wcid &lt;a href="http://wicd.sourceforge.net/download.php"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-1872589697827298052?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/1872589697827298052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=1872589697827298052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1872589697827298052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1872589697827298052'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2009/01/wep-64128-bit-hex-issue-in-ubuntu.html' title='&quot;WEP 64/128-bit Hex&quot;  issue in Ubuntu Intrepid (8.10)'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-1938485666976300990</id><published>2008-12-29T20:02:00.000-08:00</published><updated>2008-12-29T20:43:24.557-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Setting up Sun java plugin in Mozilla Firefox</title><content type='html'>I just installed Ubuntu 8.10 and was wondering how to configure the java plugin in firefox. I already had unzipped jdk, so I just wanted to configure the java plugin in firefox. It was easier than I thought, you only need to follow 2 steps ...&lt;br /&gt;&lt;br /&gt;* Go to the Java Plugins folder (~/jre1.5.0_X/plugin/i386/ns7) that has been created and using GNOME, right-click and "Make Link" to "libjavaplugin_oji.so".&lt;br /&gt;* Drag and drop the newly created Link to "~/.mozilla/plugins".&lt;br /&gt;&lt;br /&gt;And that's it. You can check whether plugin is correctly installed using "about:plugins" command in the address bar or you can test it on &lt;a href="http://www.java.com/en/download/help/testvm.xml"&gt;java.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-1938485666976300990?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/1938485666976300990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=1938485666976300990' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1938485666976300990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1938485666976300990'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/12/setting-up-sun-java-plugin-in-mozilla.html' title='Setting up Sun java plugin in Mozilla Firefox'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-3000149340942881926</id><published>2008-12-24T04:06:00.000-08:00</published><updated>2008-12-24T04:20:51.988-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><title type='text'>Making Good SOA Great : The WSO2 story of componentization</title><content type='html'>&lt;div style="width:425px;text-align:left" id="__ss_869293"&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/wso2.org/makinggoodsoagreat?type=powerpoint" title="making_good_soa_great"&gt;making_good_soa_great&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=makinggoodsoagreat-11801&amp;stripped_title=makinggoodsoagreat" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=makinggoodsoagreat-11801&amp;stripped_title=makinggoodsoagreat" 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 SlideShare &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/wso2.org/makinggoodsoagreat?type=powerpoint" title="View making_good_soa_great on SlideShare"&gt;presentation&lt;/a&gt; or &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint"&gt;Upload&lt;/a&gt; your own.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-3000149340942881926?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/3000149340942881926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=3000149340942881926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3000149340942881926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3000149340942881926'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/12/making-good-soa-great-wso2-story-of.html' title='Making Good SOA Great : The WSO2 story of componentization'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-5131168834936718373</id><published>2008-12-19T23:10:00.000-08:00</published><updated>2008-12-19T23:44:50.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><title type='text'>WSO2 Synergies: Introducing WSO2 Carbon</title><content type='html'>&lt;a href="http://wso2.org/projects/carbon"&gt;WSO2 Carbon&lt;/a&gt; is the new component-based open source SOA platform on top of OSGi by &lt;a href="http://wso2.org"&gt;WSO2.&lt;/a&gt; Using new carbon platform users/developers can mix and match components as they wish according to their  requirements. Future versions of WSO2 products,&lt;br /&gt;&lt;br /&gt;WSO2 Web Services Application Server 3.0&lt;br /&gt;WSO2 Enterprise Service Bus 2.0&lt;br /&gt;WSO2 Business Process Server 1.0&lt;br /&gt;WSO2 Registry 2.0&lt;br /&gt;&lt;br /&gt;will all be based on WSO2 Carbon platform and will have the same user experience across all the products. Here is &lt;a href="http://pzf.fremantle.org/"&gt;Paul Fremantle&lt;/a&gt;, Co-Founder &amp;amp; Chief Technology Officer (CTO) at WSO2, introducing the WSO2 Carbon platform.&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=carbonwebinar-1229688178182153-1&amp;amp;stripped_title=wso2-synergies-introducing-wso2-carbon-presentation"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=carbonwebinar-1229688178182153-1&amp;amp;stripped_title=wso2-synergies-introducing-wso2-carbon-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-5131168834936718373?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/5131168834936718373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=5131168834936718373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5131168834936718373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5131168834936718373'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/12/wso2-synergies-introducing-wso2-carbon.html' title='WSO2 Synergies: Introducing WSO2 Carbon'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-5865008120678455261</id><published>2008-11-04T06:04:00.000-08:00</published><updated>2008-11-04T19:03:23.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='Web services'/><title type='text'>How to write a dynamic client for a web service in Apache Axis 2</title><content type='html'>In Apache Axis2, the are several ways to write a client for a web service. One approach would be to use WSDL2Java, the code generation tool provided with Axis2 generate a stub for the web service and use that stub to consume the web service. Other option is to   write a dynamic client. This is how you can write a dynamic client for a web service.&lt;br /&gt;&lt;br /&gt;We will you expose a simple POJO as a web service.&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.wso2.training;&lt;br /&gt;&lt;br /&gt;public class CalculatorService {&lt;br /&gt;  &lt;br /&gt;   public int add (int a, int b) {&lt;br /&gt;       return a + b;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   public int multiply(int a, int b) {&lt;br /&gt;       return a * b;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Exposing this as a web service is a matter of 2 lines of code ...&lt;pre name="code" class="java"&gt;&lt;br /&gt;    AxisServer axisServer = new AxisServer();&lt;br /&gt;    axisServer.deployService(CalculatorService.class.getName());&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Now, the WSDL for this web service will be available at &lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;http://localhost:6060/axis2/services/CalculatorService?wsdl&lt;br /&gt;&lt;/pre&gt;Now let's see how we can write a dynamic client for this web service &lt;pre name="code" class="java"&gt;&lt;br /&gt;        //Create a service client for given WSDL service by passing the following four parameters&lt;br /&gt;        //ConfigurationContext - we keep it as null&lt;br /&gt;        //wsdlURL - The URL of the WSDL document to read&lt;br /&gt;        //wsdlServiceName The QName of the WSDL service in the WSDL document &lt;br /&gt;        //portName        The name of the WSDL 1.1 port to create a client for. &lt;br /&gt;        &lt;br /&gt;        RPCServiceClient dynamicClient = new RPCServiceClient(null, new URL(&lt;br /&gt;                "http://localhost:6060/axis2/services/CalculatorService?wsdl"), new QName(&lt;br /&gt;                "http://training.wso2.org", "CalculatorService"),&lt;br /&gt;                "CalculatorServiceHttpSoap12Endpoint");&lt;br /&gt;&lt;br /&gt;        // We provide the parameters as an object array and return types as an class array&lt;br /&gt;        Object[] returnArray = dynamicClient.invokeBlocking(new QName("http://training.wso2.org","add"),&lt;br /&gt;                new Object[] { 1, 2 }, new Class[] { Integer.class });&lt;br /&gt;        &lt;br /&gt;        System.out.println("1 + 2 = " + returnArray[0]);&lt;br /&gt;        &lt;br /&gt;        returnArray = dynamicClient.invokeBlocking(new QName("http://training.wso2.org","multiply"),&lt;br /&gt;                new Object[] { 1, 2 }, new Class[] { Integer.class });&lt;br /&gt;        &lt;br /&gt;        System.out.println("1 X 2 = " + returnArray[0]);&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-5865008120678455261?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/5865008120678455261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=5865008120678455261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5865008120678455261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5865008120678455261'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/11/how-to-write-dynamic-client-for-web.html' title='How to write a dynamic client for a web service in Apache Axis 2'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-3852263698892292825</id><published>2008-10-29T21:10:00.000-07:00</published><updated>2008-10-29T21:44:42.901-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Identity as a service (IdaaS)</title><content type='html'>Sometimes back I blogged about &lt;a href="http://www.slideshare.net/prabathsiriwardena/understanding-openid/"&gt;a webinar on OpenID&lt;/a&gt; by &lt;a href="http://blog.facilelogin.com/"&gt;Prabath Siriwardhana&lt;/a&gt;, the product manager of &lt;a href="http://wso2.org/projects/solutions/identity"&gt;WSO2 Identity solution&lt;/a&gt;.  I was able attend another webinar by him, this time on “Identity as a service”. His webinars are really cool and he has a unique way of presenting, which makes it easy to grasp even the deeper concepts. I would really recommended both webinars to any one who is interested in the above subject.&lt;br /&gt;&lt;br /&gt;In this webinar, he talks about&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What is identity &lt;/li&gt;&lt;li&gt;Laws of identity &lt;/li&gt;&lt;li&gt;User centric identity : Cardspace / OpenID &lt;/li&gt;&lt;li&gt;Identity as a service&lt;/li&gt;&lt;li&gt;Authorization with &lt;a href="http://sunxacml.sourceforge.net/guide.html#xacml"&gt;XACML&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Provisioning with &lt;a href="http://en.wikipedia.org/wiki/SPML"&gt;SPML&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Auditing with &lt;a href="http://www.opengroup.org/security/das/xdas_int.htm"&gt;XDAS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Identity Governance&lt;/li&gt;&lt;/ul&gt;&lt;div style="width: 425px; text-align: center;" id="__ss_676977"&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/prabathsiriwardena/identity-as-a-service-presentation?type=powerpoint" title="Identity as a Service"&gt;Identity as a Service&lt;/a&gt;&lt;object style="margin: 0px;" center="" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=identity-1224614504586019-9&amp;amp;stripped_title=identity-as-a-service-presentation"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=identity-1224614504586019-9&amp;amp;stripped_title=identity-as-a-service-presentation" 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 SlideShare &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/prabathsiriwardena/identity-as-a-service-presentation?type=powerpoint" title="View Identity as a Service on SlideShare"&gt;presentation&lt;/a&gt; or &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/upload?type=powerpoint"&gt;Upload&lt;/a&gt; your own. (tags: &lt;a style="text-decoration: underline;" href="http://slideshare.net/tag/cardspace"&gt;cardspace&lt;/a&gt; &lt;a style="text-decoration: underline;" href="http://slideshare.net/tag/identityopenidsoa"&gt;identityopenidsoa&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;&lt;img style="visibility: hidden; width: 0px; height: 0px;" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyMjUzNDAzMzk1NTUmcHQ9MTIyNTM*MDM1NTEzMSZwPTEwMTkxJmQ9Jmc9MiZ*PSZvPTcwZjAxNDRjM2M5NTRkYjU5OWU*ODE*NTdiOWQ1ZDdh.gif" border="0" height="0" width="0" /&gt;&lt;br /&gt;You can watch the &lt;a href="https://wso2.on.intercall.com/confmgr/view_stored_doc.jsp?docId=91061619282366423600392684056&amp;amp;docType=recording"&gt;video here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-3852263698892292825?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/3852263698892292825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=3852263698892292825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3852263698892292825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3852263698892292825'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/10/identity-as-service-idaas.html' title='Identity as a service (IdaaS)'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-1466745679989641459</id><published>2008-10-24T05:43:00.000-07:00</published><updated>2008-10-27T10:42:34.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='WS-Policy'/><title type='text'>Automatic module engagement in Apache Axis2 according to WS Policies</title><content type='html'>&lt;a href="http://ws.apache.org/axis2"&gt;Apache Axis2&lt;/a&gt; allows us to plug-in "modules" that extend their functionality for features such as security and reliability. Most of these modules are configured via WS Policy. So one of the cool features in Axis2 is automatic module engagement when relevant assertions are present in the effective policy.&lt;br /&gt;&lt;br /&gt;How does Axis2 Engine know which assertions are relevant to a particular module ?&lt;br /&gt;&lt;br /&gt;This is defined in the module.xml which is the descriptor file for a module using supported-policy-namespaces element. This tells Axis2 engine what policy assertions this module can handle.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;module name="my-module" class="org.apache.axis2.modules.MyModule"&amp;gt;&lt;br /&gt;&amp;lt;Description&amp;gt;&lt;br /&gt;   My simple module&lt;br /&gt;&amp;lt;/Description&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;supported-policy-namespaces namespaces="http://wso2.org/policy/v1 http://wso2.org/policy/v2"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/module&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Module interface (&lt;a href="http://ws.apache.org/axis2/1_4_1/api/index.html"&gt;org.apache.axis2.modules.Module&lt;/a&gt;) in Axis2 has 3 important method relevant to policy. These are used by the module classes to express whether they can handle a specific assertion instance and also get notified when they are engaged to some AxisDescription. AxisMessage, AxisOperration, AxisService ... are some examples of elements in Axis2 description hierarchy.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;/**&lt;br /&gt;* When engaging this module to some service or operation , module will be notify by calling this&lt;br /&gt;* method there module author can validate , add policy and do any thing that he want , and he can&lt;br /&gt;* refuse the engage as well&lt;br /&gt;*&lt;br /&gt;* @param axisDescription&lt;br /&gt;* @throws AxisFault&lt;br /&gt;*/&lt;br /&gt;void engageNotify(AxisDescription axisDescription) throws AxisFault;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Evaluate whether it can support the specified assertion and returns true if the assertion can&lt;br /&gt;* be supported.&lt;br /&gt;*&lt;br /&gt;* @param assertion the assertion that the module must decide whether it can support or not.&lt;br /&gt;* @return true if the specified assertion can be supported by the module&lt;br /&gt;*/&lt;br /&gt;public boolean canSupportAssertion(Assertion assertion);&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Evaluates specified policy for the specified AxisDescription. It computes the configuration that&lt;br /&gt;* is appropriate to support the policy and stores it the appropriate description.&lt;br /&gt;*&lt;br /&gt;* @param policy the policy that is applicable for the specified AxisDescription&lt;br /&gt;* @throws AxisFault if anything goes wrong.&lt;br /&gt;*/&lt;br /&gt;public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;When we apply a policy to an element in Axis2 description heirachy, it does five things.&lt;br /&gt;&lt;br /&gt;1) Engage whatever modules necessary to execute new the effective policy of this AxisDescription instance.&lt;br /&gt;2) Disengage whatever modules that are not necessary to execute the new effective policy of this AxisDescription instance.&lt;br /&gt;3) Check whether each module can execute the new effective policy of this AxisDescription instance.&lt;br /&gt;4) If not throw an AxisFault to notify the user.&lt;br /&gt;5) Else notify each module about the new effective policy.&lt;br /&gt;&lt;br /&gt;This is one good example of easy extensibility features in Apache Axis2 Design.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-1466745679989641459?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/1466745679989641459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=1466745679989641459' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1466745679989641459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1466745679989641459'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/10/automatic-module-engagement-in-apache.html' title='Automatic module engagement in Apache Axis2 according to WS Policies'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-4978356958265857224</id><published>2008-10-16T05:10:00.000-07:00</published><updated>2008-10-16T06:18:52.977-07:00</updated><title type='text'>Rampart 2 - A High Performance Security Module for Apache Axis2</title><content type='html'>&lt;a href="http://ws.apache.org/rampart/"&gt;Apache Rampart&lt;/a&gt; is the security module of Apache Axis2. Even though it supports almost all the WS-Sec* specifications and highly interoperable it has some performance issues due to two issues.&lt;br /&gt;&lt;br /&gt;1.) Rampart uses DOM as it is built on top of WSS4J/XMLSec. So for security processing it does a DOOM conversion before pass the message  to  WSS4J/XML Sec. &lt;br /&gt;2.) Rampart uses the two phase validation model. This makes it does extra work in the case if the message violates the policy  as that only found in the second phase.&lt;br /&gt;&lt;br /&gt;Four students of &lt;a href="http://www.mrt.ac.lk/"&gt;University of Moratuwa&lt;/a&gt;, &lt;a href="http://esaliya.blogspot.com/"&gt;Saliya Ekanayake&lt;/a&gt;, &lt;a href="http://www.linkedin.com/pub/a/58b/b69"&gt;Isuru Suriarachchi&lt;/a&gt;, &lt;a href="http://sameera-jayasoma.blogspot.com/"&gt;Sameera Jayasoma&lt;/a&gt; and &lt;a href="http://kalanir.blogspot.com/"&gt;Kalani Ruwanpathirana&lt;/a&gt;  took the tough challenge of reimplementing the complete XML Security and SOAP Security layers on top of AXIOM as their final year project and successfully implemented  and tested  Apache Rampart 2.  They have already contributed their Axiom based C14N to Apache and hope they will contribute the rest of their work too.&lt;br /&gt;&lt;br /&gt;Isuru has written &lt;a href="http://wso2.org/library/articles/ws-security-processing-models-along-ws-securitypolicy-1"&gt;an article&lt;/a&gt; about the the processing model they used in Rampart 2 and it describes the &lt;a href="http://wso2.org/library/articles/ws-security-processing-models-along-ws-securitypolicy-1"&gt;advantages of making the WS Security validation policy aware&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-4978356958265857224?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/4978356958265857224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=4978356958265857224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/4978356958265857224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/4978356958265857224'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/10/rampart-2-high-performance-security.html' title='Rampart 2 - A High Performance Security Module for Apache Axis2'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2225564660094832625</id><published>2008-10-15T21:13:00.000-07:00</published><updated>2008-10-16T01:15:32.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>How to expose a web service protected by HTTP Basic Authentication using WS - Security via a proxy service?</title><content type='html'>Sometimes we want to expose web services protected by HTTP Basic Authentication using WS – Security. In this post we will see how to do this using &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; and  &lt;a href="http://esbsite.org/resources.jsp?path=/mediators/nandana/WS%20Sec%20Basic%20Auth%20Mediator"&gt;WSSecBasicAuth mediator&lt;/a&gt; without doing a single change to the existing web service. We will do this by setting up a proxy service and WS Security clients will be talking to the proxy service and not the real service.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SPa_8QDV2wI/AAAAAAAAAK4/AQvE36tAFjQ/s1600-h/Drawing1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SPa_8QDV2wI/AAAAAAAAAK4/AQvE36tAFjQ/s800/Drawing1.jpg" alt="" id="BLOGGER_PHOTO_ID_5257600656823671554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then we do a simple mediation using WSSecBasicAuth mediator. What WSSecBasicAuth mediator does is&lt;br /&gt;&lt;br /&gt;1.) extract the username/password from the Username token&lt;br /&gt;2.) Set the the “Authorization” transport header using that username/password&lt;br /&gt;3.) Remove the WS Security header from SOAP Message&lt;br /&gt;&lt;br /&gt;and that's it.&lt;br /&gt;&lt;br /&gt;So let's see how to do this using WSO2 ESB. First we need to define a proxy service   that will have the  WSSecBasicAuth mediator in in sequence. You can easily do this using WSO2 ESB web console.&lt;br /&gt;&lt;br /&gt;First we define a new sequence with the WSSecBasicAuth mediator.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SPbWfF_2WVI/AAAAAAAAALA/ZQZx8M34zDc/s1600-h/class.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SPbWfF_2WVI/AAAAAAAAALA/ZQZx8M34zDc/s800/class.jpeg" alt="" id="BLOGGER_PHOTO_ID_5257625444675901778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then we define a new  proxy service, using that sequence as the in sequence.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SPbWlLreOvI/AAAAAAAAALI/9Zzx41t1LOU/s1600-h/service.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SPbWlLreOvI/AAAAAAAAALI/9Zzx41t1LOU/s800/service.jpeg" alt="" id="BLOGGER_PHOTO_ID_5257625549280262898" border="0" /&gt;&lt;/a&gt;&lt;a href="http://wso2.org/project/esb/java/1.7.1/docs/docs_index.html"&gt;WSO2 ESB Documentation&lt;/a&gt; describes how to &lt;a href="http://wso2.org/project/esb/java/1.7.1/docs/administratorguide.html#Proxy"&gt;setup a proxy service&lt;/a&gt; in detail. Final configuration will look like this.&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;syn:definitions xmlns:syn="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;syn:proxy name="Version" startOnLoad="true"&amp;gt;&lt;br /&gt;  &amp;lt;syn:target inSequence="WSSecBasicAuth"&amp;gt;&lt;br /&gt;      &amp;lt;syn:endpoint&amp;gt;&lt;br /&gt;          &amp;lt;syn:address uri="http://127.0.0.1:9090/axis2/services/Version"/&amp;gt;&lt;br /&gt;      &amp;lt;/syn:endpoint&amp;gt;&lt;br /&gt;  &amp;lt;/syn:target&amp;gt;&lt;br /&gt;&amp;lt;/syn:proxy&amp;gt;&lt;br /&gt;&amp;lt;syn:sequence name="WSSecBasicAuth"&amp;gt;&lt;br /&gt;  &amp;lt;syn:class name="org.wso2.esb.mediators.WSSecBasicAuthMediator"/&amp;gt;&lt;br /&gt;&amp;lt;/syn:sequence&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/syn:definitions&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Final step would be to modify the WSDL of the original service to reflect the WS Security requirements. WSDL can be modified by simply attaching the following policy to the SOAP bindings of the WSDL.&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"     wsu:Id="username_token"&amp;gt;&lt;br /&gt;&amp;lt;wsp:ExactlyOne&amp;gt;&lt;br /&gt;  &amp;lt;wsp:All&amp;gt;&lt;br /&gt;      &amp;lt;sp:SupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"&amp;gt;&lt;br /&gt;          &amp;lt;wsp:Policy&amp;gt;&lt;br /&gt;              &amp;lt;sp:UsernameToken/&amp;gt;&lt;br /&gt;          &amp;lt;/wsp:Policy&amp;gt;&lt;br /&gt;      &amp;lt;/sp:SupportingTokens&amp;gt;&lt;br /&gt;  &amp;lt;/wsp:All&amp;gt;&lt;br /&gt;&amp;lt;/wsp:ExactlyOne&amp;gt;&lt;br /&gt;&amp;lt;/wsp:Policy&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;An example of &lt;a href="https://wso2.org/repos/wso2/people/nandana/blogs/wssecbasic/Version.wsdl"&gt;modified WSDL&lt;/a&gt; for the Axis2 version service can be found &lt;a href="https://wso2.org/repos/wso2/people/nandana/blogs/wssecbasic/Version.wsdl"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Then we can attach the modified WSDL to the proxy service using the WSO2 WSB console.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SPbXrGvln0I/AAAAAAAAALQ/37B_FElV1Xk/s1600-h/wsdl.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SPbXrGvln0I/AAAAAAAAALQ/37B_FElV1Xk/s800/wsdl.jpeg" alt="" id="BLOGGER_PHOTO_ID_5257626750546190146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now we are all set. If we want to try this out using a Axis2 client,  all we have to do is code generate against the proxy service. The security requirements will be automatically injected to the stub using the policies. So a client for the proxy service would look like this.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;br /&gt;ConfigurationContext ctx = ConfigurationContextFactory&lt;br /&gt;.createConfigurationContextFromFileSystem("client-repo");&lt;br /&gt;VersionStub stub = new VersionStub(ctx);&lt;br /&gt;&lt;br /&gt;ServiceClient sc = stub._getServiceClient();&lt;br /&gt;sc.engageModule("rampart");&lt;br /&gt;&lt;br /&gt;sc.getOptions().setUserName("nandana");&lt;br /&gt;sc.getOptions().setPassword("nandana");&lt;br /&gt;&lt;br /&gt;stub.getVersion();&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Message from the client to proxy service&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;POST /soap/Version HTTP/1.1&lt;br /&gt;Content-Type: application/soap+xml; charset=UTF-8; action="urn:getVersion"&lt;br /&gt;User-Agent: Axis2&lt;br /&gt;Host: 127.0.0.1:8280&lt;br /&gt;Transfer-Encoding: chunked&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Header&amp;gt;&lt;br /&gt; &amp;lt;wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true"&amp;gt;&lt;br /&gt;   &amp;lt;wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-6011238"&amp;gt;&lt;br /&gt;     &amp;lt;wsse:Username&amp;gt;nandana&amp;lt;/wsse:Username&amp;gt;&lt;br /&gt;     &amp;lt;wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"&amp;gt;nandana&amp;lt;/wsse:Password&amp;gt;&lt;br /&gt;   &amp;lt;/wsse:UsernameToken&amp;gt;&lt;br /&gt; &amp;lt;/wsse:Security&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Header&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Body /&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Message from from proxy service to the real service&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;POST http://127.0.0.1:9090/axis2/services/Version HTTP/1.1&lt;br /&gt;Host: 127.0.0.1:9090&lt;br /&gt;Authorization: Basic bmFuZGFuYTpuYW5kYW5h&lt;br /&gt;Content-Type: application/soap+xml; charset=UTF-8; action="urn:getVersion"&lt;br /&gt;Connection: Keep-Alive&lt;br /&gt;User-Agent: Synapse-HttpComponents-NIO&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Body /&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2225564660094832625?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2225564660094832625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2225564660094832625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2225564660094832625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2225564660094832625'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/10/how-to-expose-web-service-protected-by.html' title='How to expose a web service protected by HTTP Basic Authentication using WS - Security via a proxy service?'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K3-wXDk_J6Q/SPa_8QDV2wI/AAAAAAAAAK4/AQvE36tAFjQ/s72-c/Drawing1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-6619337471805685094</id><published>2008-10-06T05:58:00.000-07:00</published><updated>2008-10-06T06:15:15.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>Securing web apps deployed in Apache Tomcat using HTTP Basic Authentication</title><content type='html'>If you want to protect set of resources in a web app using HTTP Basic Authentication, it is pretty easy.  You only need to modify the web.xml which is located at wepAppRoot/WEB-INF/web.xml  and add the following entries.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;web-app&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;security-constraint&amp;gt;&lt;br /&gt;   web resources that are protected&lt;br /&gt;   &amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;     &amp;lt;web-resource-name&amp;gt;Axis2 web services&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;     &amp;lt;url-pattern&amp;gt;/services/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;   &amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;   &amp;lt;auth-constraint&amp;gt;&lt;br /&gt;     roles that are allowed to access the web resource specified above&lt;br /&gt;     &amp;lt;role-name&amp;gt;ws-users&amp;lt;/role-name&amp;gt;&lt;br /&gt;   &amp;lt;/auth-constraint&amp;gt;&lt;br /&gt; &amp;lt;/security-constraint&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;login-config&amp;gt;&lt;br /&gt;   &amp;lt;auth-method&amp;gt;BASIC&amp;lt;/auth-method&amp;gt;&lt;br /&gt;   &amp;lt;realm-name&amp;gt;nandana.org&amp;lt;/realm-name&amp;gt;&lt;br /&gt; &amp;lt;/login-config&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In this case, we allow only users with the role “ws-users” to access this resource.  You can define the roles and users tomcat-users.xml file which can be found in tomcatRoot/conf/tomcat-users.xml.  So in the above case, it will be something like&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;tomcat-users&amp;gt;&lt;br /&gt; &amp;lt;role rolename="tomcat"/&amp;gt;&lt;br /&gt; &amp;lt;role rolename="ws-users"/&amp;gt;&lt;br /&gt; &amp;lt;user username="nandana" password="nandana" roles="ws-users"/&amp;gt;&lt;br /&gt; &amp;lt;user username="chamanthi" password="chamanthi" roles="ws-users"/&amp;gt;&lt;br /&gt;&amp;lt;/tomcat-users&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And that's it. Now if we try to access a resource which fall in to given url pattern, we will be authenticated using HTTP Basic authentication.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SOoNUYLTqPI/AAAAAAAAAKo/as7xGmyx9RA/s1600-h/testme.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SOoNUYLTqPI/AAAAAAAAAKo/as7xGmyx9RA/s800/testme.jpeg" alt="" id="BLOGGER_PHOTO_ID_5254026559019526386" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-6619337471805685094?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/6619337471805685094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=6619337471805685094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6619337471805685094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6619337471805685094'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/10/securing-web-apps-deployed-in-apache.html' title='Securing web apps deployed in Apache Tomcat using HTTP Basic Authentication'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K3-wXDk_J6Q/SOoNUYLTqPI/AAAAAAAAAKo/as7xGmyx9RA/s72-c/testme.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-360554613916909791</id><published>2008-09-28T20:18:00.000-07:00</published><updated>2008-09-28T20:40:26.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><title type='text'>Service Life Cycle Management in Apache Axis2</title><content type='html'>&lt;a href="http://ws.apache.org/axis2"&gt;Apache Axis2&lt;/a&gt; provide a service life cycle management feature which can be used when we want to hook some logic when the service being deployed or when the system is shutting down. &lt;a href="http://ws.apache.org/axis2/1_4_1/api/org/apache/axis2/engine/ServiceLifeCycle.html"&gt;ServiceLifeCycle&lt;/a&gt; interface provides two methods startUp and shutDown which will be called during the service deployment time and during the system down.&lt;br /&gt;&lt;br /&gt;So to use service life cycle management in Axis2, first we need a class implementing the ServiceLifeCycle interface. For the simplicity I will you the service implementation class.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.wso2.training;&lt;br /&gt;&lt;br /&gt;import org.apache.axis2.context.ConfigurationContext;&lt;br /&gt;import org.apache.axis2.description.AxisService;&lt;br /&gt;import org.apache.axis2.engine.ServiceLifeCycle;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;public class MyService implements ServiceLifeCycle {&lt;br /&gt;&lt;br /&gt;private static final Log log = LogFactory.getLog(MyService.class);&lt;br /&gt;&lt;br /&gt;public MyService() {&lt;br /&gt;log.info("My service instance is created ...");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int add(int a, int b) {&lt;br /&gt;return a + b;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void shutDown(ConfigurationContext configctx, AxisService service) {&lt;br /&gt;log.info( service.getName() + " is shutting down ...");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void startUp(ConfigurationContext configctx, AxisService service) {&lt;br /&gt;log.info(service.getName() + " is starting up  ...");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Then we need to define the ServiceLifeCycle management class in in the services.xml.  You can do this using the class attribute of the service element.&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;service name="MyService" class="org.wso2.training.MyService"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="ServiceClass"&lt;br /&gt;locked="false"&amp;gt;org.wso2.training.MyService&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;operation name="add"&amp;gt;&lt;br /&gt;&amp;lt;messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/&amp;gt;&lt;br /&gt;&amp;lt;/operation&amp;gt;&lt;br /&gt;&amp;lt;/service&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now if you deploy the service, you can see that startUp method being called.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SOBL6UMF70I/AAAAAAAAAKI/RTOta2Ja0c8/s1600-h/startup.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SOBL6UMF70I/AAAAAAAAAKI/RTOta2Ja0c8/s800/startup.gif" alt="" id="BLOGGER_PHOTO_ID_5251280630737923906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and if we shutdown the server, we can see that shutDown method is being called.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SOBNt1ZoeAI/AAAAAAAAAKg/JSFlmWngxaY/s1600-h/shutdown.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SOBNt1ZoeAI/AAAAAAAAAKg/JSFlmWngxaY/s800/shutdown.gif" alt="" id="BLOGGER_PHOTO_ID_5251282615338039298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Life cycle of the Axis Service and the service implementation class object is different. And Service Life Cycle management has no relation with the life cycle of the service implementation class object. Life time of the  service implementation class object depends on the scope of the service. And in the above case, the service will be in default scope that is request scope and  service implementation class object will be created for each request.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SOBL7A3JWlI/AAAAAAAAAKY/IbBxxi8yjKc/s1600-h/instance.gif"&gt;&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SOBL7A3JWlI/AAAAAAAAAKY/IbBxxi8yjKc/s800/instance.gif" alt="" id="BLOGGER_PHOTO_ID_5251280642729663058" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-360554613916909791?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/360554613916909791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=360554613916909791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/360554613916909791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/360554613916909791'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/service-life-cycle-management-in-apache.html' title='Service Life Cycle Management in Apache Axis2'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K3-wXDk_J6Q/SOBL6UMF70I/AAAAAAAAAKI/RTOta2Ja0c8/s72-c/startup.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-5903483892924556599</id><published>2008-09-26T03:39:00.000-07:00</published><updated>2008-09-26T04:38:47.720-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='Equinox'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Services'/><title type='text'>Installing a new component in WSO2 Data Services using Equinox OSGi console</title><content type='html'>&lt;a href="http://wso2.org/projects/solutions/data-services/java"&gt;WSO2 Data services&lt;/a&gt; uses &lt;a href="http://www.eclipse.org/equinox/"&gt;Equinox&lt;/a&gt; OSGi implementation. It allows us to easily install a new OSGi bundles in to WSO2 Data services through it's OSGi console. OSGi console of WSO2 Data services, is disabled by default. To enable OSGi console, you need to modify the file&lt;br /&gt;&lt;pre&gt;/path/to/wso2-dataservices-1.0/webapps/ROOT/WEB-INF/web.xml&lt;br /&gt;&lt;/pre&gt;by uncommenting these lines&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt; &amp;lt;param-name&amp;gt;commandline&amp;lt;/param-name&amp;gt;&lt;br /&gt; &amp;lt;param-value&amp;gt;-console 19444&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now if you start data services, you will be able to connect to the OSGi console via telnet&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nwiIKHI/AAAAAAAAAJ4/7ce-bALb87w/s1600-h/Screenshot-2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; border: 3px solid; border-color: white;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nwiIKHI/AAAAAAAAAJ4/7ce-bALb87w/s800/Screenshot-2.png" alt="" id="BLOGGER_PHOTO_ID_5250279756347746418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Following are the most common Equinox OGSi commands.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;install &lt;bundle&gt; - Installs the bundle from the given URL &lt;/bundle&gt;&lt;/li&gt;&lt;li&gt;start &lt;bundle&gt; - Starts the bundle with the given numeric or symbolic id &lt;/bundle&gt;&lt;/li&gt;&lt;li&gt;stop &lt;bundle&gt; - Stops the bundle with the given numeric or symbolic id &lt;/bundle&gt;&lt;/li&gt;&lt;li&gt;ss - Reports a summary status of all installed bundles &lt;/li&gt;&lt;li&gt;diag &lt;bundle&gt; - Reports any resolution problems for the bundle with the given numeric or symbolic id&lt;/bundle&gt;&lt;/li&gt;&lt;/ul&gt;So if you have a new component to be installed, you can simply install it using the install command.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nGu211I/AAAAAAAAAJY/lqPtnjt7RiU/s1600-h/2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; border: 3px solid; border-color: white;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nGu211I/AAAAAAAAAJY/lqPtnjt7RiU/s800/2.png" alt="" id="BLOGGER_PHOTO_ID_5250279745126848338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now if you look at the the status of the installed bundles, you can see the newly installed component it is not yet started (status is INSTALLED not ACTIVE)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nBM33mI/AAAAAAAAAJg/SP_EPxKFkQw/s1600-h/3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; border: 3px solid; border-color: white;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nBM33mI/AAAAAAAAAJg/SP_EPxKFkQw/s800/3.png" alt="" id="BLOGGER_PHOTO_ID_5250279743642132066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Newly installed bundle can be started using the start command&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNzAHU5wAYI/AAAAAAAAAKA/3F_FWKlP3ZM/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; border: 3px solid; border-color: white;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNzAHU5wAYI/AAAAAAAAAKA/3F_FWKlP3ZM/s800/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5250282497709703554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and now if you check the status of the bundles again, you can see now the bundle is successfully started.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nRKZDeI/AAAAAAAAAJw/jAUDibHzhR8/s1600-h/6.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; border: 3px solid; border-color: white;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nRKZDeI/AAAAAAAAAJw/jAUDibHzhR8/s800/6.png" alt="" id="BLOGGER_PHOTO_ID_5250279747926691298" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-5903483892924556599?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/5903483892924556599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=5903483892924556599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5903483892924556599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5903483892924556599'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/installing-new-component-in-wso2-data.html' title='Installing a new component in WSO2 Data Services using Equinox OSGi console'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNy9nwiIKHI/AAAAAAAAAJ4/7ce-bALb87w/s72-c/Screenshot-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-3048645223209105477</id><published>2008-09-26T00:38:00.000-07:00</published><updated>2008-09-26T08:11:32.118-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><title type='text'>How to optimize your blog for code samples plus some cool widgets/tools</title><content type='html'>Recently I have been posting more and more code samples in my blog and wanted to optimize my blog for code snippets . After some searching I found following widgets/tools very useful. And almost all these widgets/tools are related to blogger expect ones like statcounter and PinPoll-n-Ping.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Blogger Syntax Highlighter &lt;/span&gt;&lt;br /&gt;This a nice widget that can be used to highlight syntax of the code you post in the blog.&lt;a href="http://code.google.com/p/syntaxhighlighter/wiki/Languages"&gt;Languages supported&lt;/a&gt; at the moment are Java, C#, C++, PHP, Javascript, Python, Ruby, VB,  Delphi,  Sql,  CSS and  XML/HTML. You can very easily install this widget to your blog from &lt;a href="http://fazibear.googlepages.com/blogger.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Changing the width of the blog&lt;/span&gt;&lt;br /&gt;When you are posting code on your blog, it is nice if the width of the blog suits the code.You can find how to change the width of your blog &lt;a href="http://beginner-blogger-basics.blogspot.com/2008/03/how-to-change-width-of-blogger-blogs.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to post an image in its original size to your blog&lt;/span&gt;&lt;br /&gt;When you want to post screen shots of the products/tools you are using, 400 pixels may not be the best size for your images specially if you have already increased the width of your blog. You can find how to post an image in its original size &lt;a href="http://cranked.me/2008/06/how-to-post-image-in-its-original-size.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;These information are not related to adding code snippets, but was very useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Adding Tag cloud&lt;/span&gt;&lt;br /&gt;Nice way for let your readers to read the posts that interests them. If you want to add a tag cloud to your blog, you can find how to do it &lt;a href="http://phy3blog.googlepages.com/Beta-Blogger-Label-Cloud.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Social bookmarking links&lt;/span&gt;&lt;br /&gt;If you want to add social bookmarking links to blogger to all your posts, you can find how to do it &lt;a href="http://blog.mohanjith.net/2008/01/adding-social-bookmarking-links-to.html"&gt;here&lt;/a&gt;. This widget includes links to Digg, StumbleUpon, del.icio.us, reddit, Facebook, newsvine, Google, Yahoo and Technorati.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pinging search engines with PinPoll-n-Ping&lt;/span&gt;&lt;br /&gt;PinPoll-n-Ping is a &lt;a href="http://en.wikipedia.org/wiki/Ping_blog"&gt;Multi-Pinging service&lt;/a&gt; that will ping blog directories and blog search engines when you make a blog post. It constantly monitors your blog and the RSS/Atom feed for changes, when a change is detected it will   ping all the downstream services that you have selected to notify. The services it can ping includes Blog People, Blog Update, BlogFlux, Blogdigger, Bloglines, BulkFeeds, FeedBurner, Feedsky, Google, Ice Rocket, Moreover, NewsGator, Ping-o-Matic!, Syndic8, Technorati, WeBlogALot, Weblogs.com, Yahoo and blo.gs. You can register free for PinPoll-n-Ping from &lt;a href="http://mohanjith.net/pnp/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DZone widget&lt;/span&gt;&lt;br /&gt;Most of us submit our posts to &lt;a href="http://www.dzone.com/"&gt;Dzone&lt;/a&gt;.  &lt;a href="http://blog.nirav.name/2007/10/how-to-add-dzone-voting-to-your-blogger.html"&gt;This DZone widget&lt;/a&gt; allows us to easily add our posts to DZone and also allows visitors to vote for them through this widget.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tracking the visitors&lt;/span&gt;&lt;br /&gt;Previously I used &lt;a href="http://www.blogger.com/www.google.com/analytics/"&gt;Google analytics&lt;/a&gt; to track visitors to my blog but then I found out &lt;a href="http://www.statcounter.com/"&gt;statcounter&lt;/a&gt; has lot of cool features  compared to Google analytics. You can find a live demo of statcounter &lt;a href="http://my7.statcounter.com/project/standard/stats.php?account_id=1222777&amp;amp;login_id=3&amp;amp;code=b94d082f3d9e070b508d03be01babcc1&amp;amp;guest_login=1&amp;amp;project_id=1773020"&gt;here&lt;/a&gt;. Some of it's features are Popular Pages, Entry Pages, Exit Pages, Came From, Keyword Analysis, Recent Keyword Activity, Recent Came From, Visitor Paths, Visit Length, Returning Visits, Recent Pageload Activity, Recent Visitor Activity, Recent Visitor Map, Country/State/City/ISP, Browser and lot more.&lt;br /&gt;&lt;br /&gt;And that's all that comes to my mind right now and I will update this post if I have forgotten any.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-3048645223209105477?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/3048645223209105477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=3048645223209105477' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3048645223209105477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3048645223209105477'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/how-to-optimize-your-blog-for-code.html' title='How to optimize your blog for code samples plus some cool widgets/tools'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2024732746451617177</id><published>2008-09-25T03:07:00.000-07:00</published><updated>2008-09-25T03:13:11.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache Rampart'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><title type='text'>Accessing the username used for Authentication  (Username Token / Rampart) with in a web service in Apache Axis2</title><content type='html'>Sometimes we need to access the user name used for authentication with in a web service for auditing purposes, authorization and etc. As Rampart stores all the security related data in the Message context one can get the username used for authentication &lt;a href="http://wso2.org/library/169"&gt;parsing those data&lt;/a&gt; but then you need to do lot of work and have to have an idea about the structure of those data. Users needed a much easier way to do this and  &lt;a href="http://issues.apache.org/jira/browse/RAMPART-178"&gt;feature request&lt;/a&gt; was made in the &lt;a href="http://issues.apache.org/jira/browse/Rampart"&gt;Apache Rampart JIRA&lt;/a&gt;. Now the username is stored as a Message Context property by Rampart module and can be easily obtained withing the service using following code&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import org.apache.rampart.RampartMessageData;&lt;br /&gt;&lt;br /&gt;public void myMethod() { &lt;br /&gt; &lt;br /&gt;   // Getting the current MessageContext &lt;br /&gt;   MessageContext msgContext = MessageContext.getCurrentMessageContext(); &lt;br /&gt; &lt;br /&gt;   // Getting HttpServletRequest from Message Context &lt;br /&gt;   String username = (String)msgContext &lt;br /&gt;           .getProperty(RampartMessageData.USERNAME); &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2024732746451617177?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2024732746451617177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2024732746451617177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2024732746451617177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2024732746451617177'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/accessing-username-used-for.html' title='Accessing the username used for Authentication  (Username Token / Rampart) with in a web service in Apache Axis2'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-5045374885055518596</id><published>2008-09-24T20:34:00.000-07:00</published><updated>2008-09-24T20:48:04.453-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSF/Spring'/><title type='text'>Podcast on WSF/Spring - Enterprise Spring</title><content type='html'>&lt;a href="http://wso2.com/"&gt;WSO2&lt;/a&gt; released &lt;a href="http://wso2.org/project/wsf/spring/1.5/docs/release-note.html"&gt;WSF/Spring 1.5&lt;/a&gt; recently.  &lt;a href="http://wso2.org/projects/wsf/spring"&gt;WSO2 WSF/Spring&lt;/a&gt; provides an amazingly simple Code First approach to create Web Services for the Spring user. This framework integrates the Apache Axis2 Web services engine into Spring. Thus, providing all the power and versatility of the Axis2 engine to the Spring user.&lt;br /&gt;In this podcast &lt;a href="http://sankas.blogspot.com/"&gt;Sanka Samaranayake&lt;/a&gt;, one of the lead developers in &lt;a href="http://wso2.org/projects/wsf/spring"&gt;WSO2 WSF/Spring&lt;/a&gt; project talks about  WSF/Spring project and the new features in WSF/Spring 1.5 release.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Podcast&lt;/strong&gt;: &lt;a href="http://wso2.org/files/podcasts/enterprise_spring.mp3" onclick="javascript:urchinTracker ('/downloads/podcasts/enterprise_spring.mp3'); "&gt;Enterprise Spring: WSF/Spring&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-5045374885055518596?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/5045374885055518596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=5045374885055518596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5045374885055518596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5045374885055518596'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/podcast-on-wsfspring-enterprise-spring.html' title='Podcast on WSF/Spring - Enterprise Spring'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2934083203712957227</id><published>2008-09-24T07:03:00.000-07:00</published><updated>2008-09-24T07:30:55.699-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web services'/><category scheme='http://www.blogger.com/atom/ns#' term='WS-Policy'/><title type='text'>Two nice presentations on WS Policy</title><content type='html'>If you want understand Web services policy framework, I highly recommend  these two  presentations from W3C.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/2007/Talks/www2007-cbb-wsp.html"&gt;Web services policy 1.5&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/2006/Talks/1205-ws-policy-alts/"&gt;Web services policy expression alternatives&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2934083203712957227?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2934083203712957227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2934083203712957227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2934083203712957227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2934083203712957227'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/two-nice-presentations-on-ws-policy.html' title='Two nice presentations on WS Policy'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2690929625660027188</id><published>2008-09-23T10:31:00.000-07:00</published><updated>2008-09-23T11:10:15.374-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XKMS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='WSAS'/><title type='text'>XKMS features of WSO2 Web Service Application Server WSAS (WSO2 WSAS)</title><content type='html'>&lt;a href="http://wso2.org/projects/wsas/java"&gt;WSO2 WebService Application Server (WSO2 WSAS)&lt;/a&gt; is an enterprise application server powered by &lt;a href="http://ws.apache.org/axis2"&gt;Apache Axis2&lt;/a&gt;  and one of it’s main advantages is it’s rich set of built in security features. XKMS is one of those features that works out of the box with WSO2 WSAS. Let’s look at what are the XMKS capabilities of WSO2 WSAS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://www.w3.org/TR/xkms2/"&gt;XML Key Management Specification (XKMS)&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;WS - Security is build on top of XML Signature and XML Encryption specifications and those cryptographic operations are tightly integrated with public key infrastructure. For large scale web services involving large number of parties, key management becomes a major issue and has to be dealt with great effort. XML Key Management Specification tries to deal with this issue by defining a standard protocol for registering, distributing and processing public keys suitable for use in conjunction with XML Signature and XML Encryption. Main objective of XKMS Specification is to define XML based trust web services for processing and management of PKI-based cryptographic keys. Trust web services can be used to manage keys in a standard way on top of existing web service infrastructure. This allows web services to delegate the key processing functionality to XKMS trust web services reducing the complexity and making it more manageable. XKMS builds a layer of abstraction it allows the web services to switch between different PKI solutions.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;WSO2 WSAS as a XKMS trust web service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;WSO2 WSAS ships with an in built XKMS&lt;span style="font-size:100%;"&gt; trust web service which has built on top of XKMS specification and consists of 5 services which can be u&lt;/span&gt;&lt;span style="font-size:100%;"&gt;sed to simplify key management.&lt;br /&gt;&lt;br /&gt;i) Register service&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;ii) Locate service&lt;br /&gt;iii) Validate service&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;iv) Revoke service&lt;br /&gt;v) Recover service&lt;br /&gt;vi) Reissue service&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNkvivFXOSI/AAAAAAAAAIo/ky4yTAtjtmQ/s1600-h/xmks3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNkvivFXOSI/AAAAAAAAAIo/ky4yTAtjtmQ/s800/xmks3.JPG" alt="" id="BLOGGER_PHOTO_ID_5249279114478041378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;You can configure WSAS XKMS trust web Service very easily using the WSAS web management console. Please take a look at &lt;a href="http://wso2.org/project/wsas/java/2.3/docs/xkms_sample_guide.html"&gt;WSAS XKMS sample guide&lt;/a&gt; for information on how to use WSAS XKMS trust web service.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNkvQgoYp0I/AAAAAAAAAIg/_m8LA7aa15Y/s1600-h/Screenshot-1.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNkvQgoYp0I/AAAAAAAAAIg/_m8LA7aa15Y/s800/Screenshot-1.jpeg" alt="" id="BLOGGER_PHOTO_ID_5249278801360758594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;WSO2 WSAS as a XKMS client &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;WSO2 WSAS also lets you to use an external XKMS trust web service do you key management. If you want to delegate to the key management to a XKMS trust web Service all you got to do is uncomment these lines in the axis2.xml that is in the conf directory of WSO2 WSAS and fill in the necessary information.&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;axisconfig name="AxisJava2.0"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;Following parameter will enable the use of specified XKMS service to&lt;br /&gt;locate, validate keys by the WS-Security provider&lt;br /&gt;--&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="XKMSConfig" enabled="true"&amp;gt;&lt;br /&gt;      &amp;lt;URL&amp;gt;http://xkms_server_host_name:port/services/xkms&amp;lt;/URL&amp;gt;&lt;br /&gt;      &amp;lt;PassPhrase&amp;gt;secret&amp;lt;/PassPhrase&amp;gt;&lt;br /&gt;  &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/axisconfig&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When XKMS is not enabled, keys used for cryptographic operations retrieved from the key stores that are associated with a service. But when XMKS is enabled, ServerCrypto, the custom crypto implementation of WSO2 WSAS will try to retrieve the keys from the given XKMS service.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNkqvhEvl2I/AAAAAAAAAIY/eR-SbBRKsx4/s1600-h/xmks2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNkqvhEvl2I/AAAAAAAAAIY/eR-SbBRKsx4/s800/xmks2.jpg" alt="" id="BLOGGER_PHOTO_ID_5249273836497508194" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2690929625660027188?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2690929625660027188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2690929625660027188' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2690929625660027188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2690929625660027188'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/xkms-features-of-wso2-web-service.html' title='XKMS features of WSO2 Web Service Application Server WSAS (WSO2 WSAS)'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNkvivFXOSI/AAAAAAAAAIo/ky4yTAtjtmQ/s72-c/xmks3.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7688869645503322511</id><published>2008-09-21T21:51:00.000-07:00</published><updated>2008-09-21T22:46:49.524-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><title type='text'>Mapping Axis2 enableMTOM parameter to MTOM Serialization Policy Assertion</title><content type='html'>&lt;p&gt;In Axis2, users can configure can configure whether outgoing messages should be MTOMised or not using  enableMTOM parameter. Value of the  enableMTOM parameter can be either true, false or optional. Let's look at the server side as client side is straight forward.&lt;/p&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;table border="1" width="700"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;enableMTOM&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Description&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;true&lt;/td&gt;&lt;br /&gt;&lt;td&gt;request : can be  MTOMised or non -  MTOMised                                                response : will always be  MTOMised&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;false&lt;/td&gt;&lt;br /&gt;&lt;td&gt;request : can be  MTOMised or non-MTOMised      response : will always be non-MTOMised&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;optional&lt;/td&gt;&lt;br /&gt;&lt;td&gt; request : can be  MTOMised or non-MTOMised      response : will be MTOMised only if request is  MTOMised&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If we look at the&lt;a href="http://www.w3.org/Submission/WS-MTOMPolicy/"&gt; MTOM Serialization Policy Assertion (WS-MTOMPolicy)&lt;/a&gt;, if this assertion is attached to a service ( more specially to a binding ), it defines a behavior  in which an endpoint requires and generates messages serialized as specified in section 3 of the &lt;a href="http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/#xop-serialization"&gt;SOAP Message Transmission Optimization Mechanism [MTOM]&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So if we try to map there two,&lt;br /&gt;&lt;br /&gt;1.)In Axis2, there is no way to specify the requirement that incoming messages must be  MTOMised. So according  WS-MTOMPolicy assertion, it will be always&lt;br /&gt;&lt;p&gt;&amp;lt;wsoma:optimizedmimeserialization optional="true"&amp;gt;&lt;/p&gt;which is equivalent to two policy alternatives, one with and one without the assertion.&lt;br /&gt;&lt;br /&gt;2.)According the WS-MTOMPolicy specification &lt;a href="http://www.w3.org/Submission/WS-MTOMPolicy/#Assertion_Attachment"&gt;it should only be attached to either wsdl:binding or wsdl:port&lt;/a&gt;. So you can't specify this behavior at operational level or message level as it is currently possible with Axis2.&lt;br /&gt;&lt;br /&gt;If will be a good thing if we can the MTOM behavior of the service using in WSDL using MTOMPolicy but we will have to do some work to sync these two or even introduce a new configuration parameter to control whether incoming message should be MTOMised.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7688869645503322511?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7688869645503322511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7688869645503322511' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7688869645503322511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7688869645503322511'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/mapping-axis2-enablemtom-parameter-to.html' title='Mapping Axis2 enableMTOM parameter to MTOM Serialization Policy Assertion'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7556860606980142292</id><published>2008-09-21T02:43:00.000-07:00</published><updated>2008-09-23T05:15:48.433-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='WSAS'/><title type='text'>Java Web Services (JAX–WS) made easy with WSO2 Web Services Application Server (WSO2 WSAS)</title><content type='html'>The &lt;a href="http://java.sun.com/webservices/docs/2.0/tutorial/doc/"&gt;Java™ Web Services Tutorial&lt;/a&gt; at Sun web site is a guide to developing Web applications with the Java Web Services Developer Pack(Java WSDP). &lt;a href="http://java.sun.com/webservices/docs/2.0/tutorial/doc/"&gt;Chapter one&lt;/a&gt; of this tutorial describes how to write a JAX-WS web service and deploy it on Sun Java System Application Server Platform Edition 9 and also how to create a client for that service. I tried the same exact same sample on &lt;a href="http://wso2.org/projects/wsas/java"&gt;WSO2 &lt;/a&gt;&lt;a href="http://wso2.org/projects/wsas/java"&gt;Web Services Application Server (WSAS)&lt;/a&gt;, found it very easy compared to  Sun Java System Application Server. In this post, I  list out steps you need to follow deploy a JAX-WS web service in WSO2 WSAS and how to write a client for that service.&lt;br /&gt;&lt;br /&gt;I will be using the &lt;a href="http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXWS3.html#wp144960"&gt;exact JSR 181 annotated service implementatio&lt;/a&gt;&lt;a href="http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXWS3.html#wp144960"&gt;n class&lt;/a&gt; that is used by the java web services tutorial.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package helloservice.endpoint;&lt;br /&gt;&lt;br /&gt;import javax.jws.WebMethod;&lt;br /&gt;import javax.jws.WebService;&lt;br /&gt;&lt;br /&gt;@WebService()&lt;br /&gt;public class Hello {&lt;br /&gt;private String message = new String("Hello, ");&lt;br /&gt;&lt;br /&gt;public void Hello() {}&lt;br /&gt;&lt;br /&gt;@WebMethod()&lt;br /&gt;public String sayHello(String name) {&lt;br /&gt;return message + name + ".";&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;First you need to compile this class and create a jar file.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNYaXh41K7I/AAAAAAAAAG4/WeYVSct_OkU/s1600-h/Screenshot-3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNYaXh41K7I/AAAAAAAAAG4/WeYVSct_OkU/s800/Screenshot-3.png" alt="" id="BLOGGER_PHOTO_ID_5248411407282940850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then you can use the web based Management Console to deploy the this service in WSO2 WSAS. All we need to do is go to "Upload POJO Artifact" in the "Add New Service" section.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SNYeUMyurvI/AAAAAAAAAHY/BriXj-5WJNE/s1600-h/Screenshot-1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SNYeUMyurvI/AAAAAAAAAHY/BriXj-5WJNE/s800/Screenshot-1.png" alt="" id="BLOGGER_PHOTO_ID_5248415748127108850" border="0" /&gt;&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;br /&gt;&lt;br /&gt;&lt;br /&gt;And upload the jar file&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNYeUVhnDSI/AAAAAAAAAHg/N5TeGiOprsU/s1600-h/Screenshot-2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNYeUVhnDSI/AAAAAAAAAHg/N5TeGiOprsU/s800/Screenshot-2.png" alt="" id="BLOGGER_PHOTO_ID_5248415750471224610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And That's it. Now the service will be listed under available services. You  will be able to access the WSDL 1.1 and WSDL 2.0 for this this service from there.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SNYeUYBlQgI/AAAAAAAAAHo/P-mm36_hhNM/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_K3-wXDk_J6Q/SNYeUYBlQgI/AAAAAAAAAHo/P-mm36_hhNM/s800/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5248415751142195714" border="0" /&gt;&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;br /&gt;Let's see how we can write a client for this web service. You can use WSDL2Code tool comes with WSO2 WSAS to generate the Stub or a proxy to this service. This will generate the “HelloServiceStub” class which can used with in your client as a proxy to Hello service.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNfCdxwH8VI/AAAAAAAAAH4/BH6arHDd558/s1600-h/Screenshot.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNfCdxwH8VI/AAAAAAAAAH4/BH6arHDd558/s800/Screenshot.jpeg" alt="" id="BLOGGER_PHOTO_ID_5248877707550781778" border="0" /&gt;&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;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;Then you can use that to implement a client for this web service.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package helloservice.endpoint;&lt;br /&gt;&lt;br /&gt;public class HelloServiceClient {&lt;br /&gt;  &lt;br /&gt;   public static void main(String[] args) throws Exception {&lt;br /&gt;      &lt;br /&gt;       HelloServiceStub stub = new HelloServiceStub();&lt;br /&gt;       String resoponse = stub.sayHello("Alice");&lt;br /&gt;      &lt;br /&gt;       System.out.println(resoponse);&lt;br /&gt;       &lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;By deploying the service in WSO2 WSAS, you will get QoS functionalities like WS-Security and WS-ReliableMessaging for free. Further you can monitor the service, add throttling capabilities and configure logging very easily using the management console. Once you are done with the configuration, you can even completely disable the web management console.&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://builder.wso2.org/browse/WSAS-WSAS/latest/artifact"&gt;download&lt;/a&gt; the latest build of WSO2 WSAS from &lt;a href="http://builder.wso2.org/browse/WSAS-WSAS/latest/artifact"&gt;here&lt;/a&gt;. &lt;a href="http://wso2.org/project/wsas/java/2.3/docs/installation_guide.html"&gt;Installation guide&lt;/a&gt; can be found &lt;a href="http://wso2.org/project/wsas/java/2.3/docs/installation_guide.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7556860606980142292?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7556860606980142292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7556860606980142292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7556860606980142292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7556860606980142292'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/java-web-services-jaxws-made-easy-with.html' title='Java Web Services (JAX–WS) made easy with WSO2 Web Services Application Server (WSO2 WSAS)'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNYaXh41K7I/AAAAAAAAAG4/WeYVSct_OkU/s72-c/Screenshot-3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-9023441482747981240</id><published>2008-09-19T23:15:00.000-07:00</published><updated>2008-09-23T08:01:38.217-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Web services'/><title type='text'>SOA is just for Java and .NET guys ? Not anymore.</title><content type='html'>&lt;a href="http://wso2.com/"&gt;WSO2&lt;/a&gt;, The Open source middleware company is building web service stacks on most of the popular languages.&lt;br /&gt;&lt;br /&gt;Java           - &lt;a href="http://wso2.org/projects/wsas/java"&gt;WSO2 Web Services Application Server&lt;/a&gt;&lt;br /&gt;C                                  - &lt;a href="http://wso2.org/projects/wsf/c"&gt;WSO2 Web Services Framework for C&lt;/a&gt;&lt;br /&gt;PHP                      -  &lt;a href="http://wso2.org/projects/wsf/php"&gt;WSO2 Web Services Framework for PHP&lt;/a&gt;&lt;br /&gt;Javascript  - &lt;a href="http://wso2.org/projects/mashup"&gt;WSO2 Mashup server&lt;/a&gt;&lt;br /&gt;C++                        - &lt;a href="http://wso2.org/projects/wsf/cpp"&gt;WSO2 Web Services Framework for C++&lt;/a&gt;&lt;br /&gt;Ruby                    - &lt;a href="http://wso2.org/projects/wsf/ruby"&gt;WSO2 Web Services Framework for Ruby&lt;/a&gt;&lt;br /&gt;Python              - &lt;a href="http://wso2.org/projects/wsf/python"&gt;WSO2 Web Services Framework for Python&lt;/a&gt;&lt;br /&gt;Perl            - &lt;a href="http://wso2.org/projects/wsf/perl"&gt;WSO2 Web Services Framework for Perl&lt;/a&gt;&lt;br /&gt;Jython       - &lt;a href="http://wso2.org/projects/wsf/jython"&gt;WSO2 Web Services Framework for Jython&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Not like the existing stacks for these language, above stacks comes with full WS-* support. One good example is WSF/PHP 2.0. SD Times has published a &lt;a href="http://www.sdtimes.com/WSO2_RELEASES_PHP_LIBRARY_FOR_SOA_DEVELOPMENT/About_PHP_and_SECURITY_and_SOASAAS_and_WSO2/32836"&gt;nice comparison matrix on PHP web services&lt;/a&gt; stacks and it shows that WSF/PHP is the only PHP web services stack that has full support for WS – Security, WS – Reliable Messaging and Attachments.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNkBZ9BqjsI/AAAAAAAAAII/DScMeSQrdmE/s1600-h/EGRPH1409.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNkBZ9BqjsI/AAAAAAAAAII/DScMeSQrdmE/s400/EGRPH1409.gif" alt="" id="BLOGGER_PHOTO_ID_5249228386066927298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What about interoperability? All these stacks are interoperable with each other.  &lt;a href="http://wso2.org/interop/stocktrader"&gt;WSO2 StockTrader&lt;/a&gt; is a demo application is powered by WSO2 WSF/PHP, WSO2 WSF/Ruby, WSO2 WSF/Spring, WSO2 WSF/Perl, WSO2 WSF/Python and WSO2 WSAS which demonstrates interoperability between each these stacks and &lt;a href="http://en.wikipedia.org/wiki/Windows_Communication_Foundation"&gt;Microsoft Windows Communication Foundation (WCF).&lt;/a&gt; It is a stock trading sample application with functionality equivalent to the Microsoft .NET Stock Trader sample benchmark application and IBM WebSphere's Trade 6.1 sample application.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNkCSEvKMNI/AAAAAAAAAIQ/oNmTFOtiSxc/s1600-h/stock-trader-diagram.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNkCSEvKMNI/AAAAAAAAAIQ/oNmTFOtiSxc/s800/stock-trader-diagram.JPG" alt="" id="BLOGGER_PHOTO_ID_5249229350209466578" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-9023441482747981240?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/9023441482747981240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=9023441482747981240' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/9023441482747981240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/9023441482747981240'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/soa-is-just-for-java-and-net-guys-not.html' title='SOA is just for Java and .NET guys ? Not anymore.'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K3-wXDk_J6Q/SNkBZ9BqjsI/AAAAAAAAAII/DScMeSQrdmE/s72-c/EGRPH1409.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-5698470110319471870</id><published>2008-09-19T00:41:00.000-07:00</published><updated>2008-09-19T00:49:44.556-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Services'/><title type='text'>WSO2 Data Services 1.0 Released</title><content type='html'>WSO2 Data Services is a convenient mechanism to provide a Web service interface for data stored in some data sources. Data sources such as relational databases, CSV files &amp;amp; Microsoft Excel files can be easily service enabled using Data Services. Now, the data can be exposed and accessed in a secure(using WS-Security) and reliable(using WS-ReliableMessaging) manner, and is also available for mashing-up with other Web services.&lt;br /&gt;&lt;br /&gt;This presentation by &lt;a href="http://sumedha.blogspot.com/"&gt;Sumedha Rubasinghe&lt;/a&gt; , the WSO2 Data services guru is a great introduction to WSO2 Data services.&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_570466"&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=creatingflexibledataservicesforenterprisesoawithwso2dataservices-1219776799273280-9&amp;amp;stripped_title=creating-flexible-data-services-for-enterprise-soa-with-wso2-data-services-presentation"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=creatingflexibledataservicesforenterprisesoawithwso2dataservices-1219776799273280-9&amp;amp;stripped_title=creating-flexible-data-services-for-enterprise-soa-with-wso2-data-services-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can download WSO2 Data Services 1.0 from &lt;a href="http://wso2.org/projects/solutions/data-services/java"&gt;here&lt;/a&gt;. If you want to get started with WSO2 Data services, you may find these “&lt;a href="http://wso2.org/library/3183"&gt;WSO2 Data Services How To&lt;/a&gt;” tutorials very  useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-5698470110319471870?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/5698470110319471870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=5698470110319471870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5698470110319471870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5698470110319471870'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/wso2-data-services-10-released.html' title='WSO2 Data Services 1.0 Released'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-6961540077252528856</id><published>2008-09-17T08:25:00.000-07:00</published><updated>2008-09-18T06:00:02.423-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><title type='text'>Accessing HTTP Request information with in a web service in Apache Axis2</title><content type='html'>Sometimes you need to access the HTTP request information within the business logic of your web service. With Axis2, is this trivial as Axis2 keeps the HttpServletRequest as a MessageContext property. We can easily get hold of that extract the necessary information out of it. Here is a simple web service which demonstrates how do it.&lt;br /&gt;&lt;br /&gt;Note: This only works in Axis2 war distribution. In standalone Axis2 this doesn't work.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public RequestInfo getInfo() {&lt;br /&gt;&lt;br /&gt;   // Getting the current MessageContext&lt;br /&gt;   MessageContext msgContext = MessageContext.getCurrentMessageContext();&lt;br /&gt;&lt;br /&gt;   // Getting HttpServletRequest from Message Context&lt;br /&gt;   Object requestProperty = msgContext&lt;br /&gt;           .getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);&lt;br /&gt;&lt;br /&gt;   RequestInfo info = new RequestInfo();&lt;br /&gt;&lt;br /&gt;   if (requestProperty != null&lt;br /&gt;           &amp;amp;&amp;amp; requestProperty instanceof HttpServletRequest) {&lt;br /&gt;&lt;br /&gt;       HttpServletRequest request = (HttpServletRequest) requestProperty;&lt;br /&gt;&lt;br /&gt;       // Extracting the properties from HttpServletRequest filling them in&lt;br /&gt;       // RequestInfo bean&lt;br /&gt;       info.setRemoteHost(request.getRemoteAddr());&lt;br /&gt;       info.setCharacterEncoding(request.getCharacterEncoding());&lt;br /&gt;       info.setUserAgent(request.getHeader("user-agent"));&lt;br /&gt;       info.setLanguage(request.getLocale().getLanguage());&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   return info;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you invoke this service via web browser, the output will be something like this.&lt;br /&gt;http://localhost:9090/axis2 /services/RequestInfoService/getInfo&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNEh3clP-HI/AAAAAAAAAF8/Gh-OXFGL_nE/s1600-h/mozilla.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNEh3clP-HI/AAAAAAAAAF8/Gh-OXFGL_nE/s800/mozilla.png" alt="" id="BLOGGER_PHOTO_ID_5247012277312288882" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;or you can try this out using soapui.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNEikzeLFQI/AAAAAAAAAGE/IAf6dpbC8wA/s1600-h/soap-ui.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SNEikzeLFQI/AAAAAAAAAGE/IAf6dpbC8wA/s800/soap-ui.png" alt="" id="BLOGGER_PHOTO_ID_5247013056550737154" border="0" /&gt;&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;br /&gt;&lt;br /&gt;&lt;br /&gt;You can download the complete source of the this web service &lt;a href="https://wso2.org/repos/wso2/people/nandana/blogs/request-info/RequestInfoService-src.zip"&gt;here&lt;/a&gt;. If you want the binary service archive to try this out, it can be downloaded &lt;a href="https://wso2.org/repos/wso2/people/nandana/blogs/request-info/RequestInfoService.aar"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-6961540077252528856?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/6961540077252528856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=6961540077252528856' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6961540077252528856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6961540077252528856'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/09/accessing-http-request-information-with.html' title='Accessing HTTP Request information with in a web service in Apache Axis2'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K3-wXDk_J6Q/SNEh3clP-HI/AAAAAAAAAF8/Gh-OXFGL_nE/s72-c/mozilla.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7934475648374086474</id><published>2008-08-28T17:10:00.000-07:00</published><updated>2008-08-28T17:18:02.863-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><title type='text'>Want to run Apache Axis2 behind a proxy ?</title><content type='html'>If you want to start the axis2 server behind a proxy, it is very simple. All you need to do is add the following entry to axis2.xml, the server's configuration file.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;axisconfig name="AxisJava2.0"&amp;gt;&lt;br /&gt;    ....&lt;br /&gt;    &amp;lt;parameter name="Proxy"&amp;gt;&lt;br /&gt;        &amp;lt;Configuration&amp;gt;&lt;br /&gt;                 &amp;lt;ProxyHost&amp;gt; proxy_ip&amp;lt;/ProxyHost&amp;gt;&lt;br /&gt;                 &amp;lt;ProxyPort&amp;gt; proxy_port &amp;lt;/ProxyPort&amp;gt;&lt;br /&gt;        &amp;lt;/Configuration&amp;gt;&lt;br /&gt;    &amp;lt;/parameter&amp;gt;&lt;br /&gt;    ..&lt;br /&gt;&amp;lt;/axisconfig&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This can become handy when you want to debug addressable ( dual channel ) scenarios where the axis2 server sends the reply in a separate channel and we want to monitor that reply through the TCPMon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7934475648374086474?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7934475648374086474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7934475648374086474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7934475648374086474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7934475648374086474'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/08/want-to-run-apache-axis2-behind-proxy.html' title='Want to run Apache Axis2 behind a proxy ?'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-758045104761646764</id><published>2008-08-12T07:03:00.000-07:00</published><updated>2008-09-19T08:34:18.963-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache Rampart'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/Spring'/><title type='text'>Writing your first Spring web service in WSO2 WSF/Spring</title><content type='html'>&lt;a href="http://www.wso2.org/projects/wsf/spring"&gt;WSO2 WSF/Spring&lt;/a&gt; is a project build on top of &lt;a href="http://ws.apache.org/axis2/"&gt;Apache Axis2&lt;/a&gt; to provide an easy way to way to make Spring beans into Web services. I blogged about a WSF/Spring demo app in &lt;a href="http://nandana83.blogspot.com/2008/08/wso2-wsfspring-apache-axis2-for-spring.html"&gt;my last post&lt;/a&gt; and now I am going to use that demo app to expose a Spring bean as a web service using the code first approach.We will also invoke the service and make sure that it is working as expected. Good news is to try out all these, it won't take more than 10 minutes.&lt;br /&gt;&lt;br /&gt;We are going to create StockQuote web service which will return quotes for given symbol. We will be using the WSO2 WSF/Spring demo application for this. Source code for this post can be &lt;a href="https://wso2.org/repos/wso2/people/nandana/wsfspring/blog2/wsfspring.zip"&gt;found here&lt;/a&gt;. If you have not already read “&lt;a href="http://nandana83.blogspot.com/2008/08/wso2-wsfspring-apache-axis2-for-spring.html"&gt;WSO2 WSF/Spring - Apache Axis2 for spring web services developers&lt;/a&gt;”, please have a look at it first.&lt;br /&gt;&lt;br /&gt;Oky now, let's look at the bean that we want to expose as a web service. &lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.wso2.training.wsfspring;&lt;br /&gt;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;public class StockQuoteService {&lt;br /&gt;&lt;br /&gt;private Map&lt;string,string&gt; quotesMap;&lt;br /&gt;&lt;br /&gt;public Map&lt;string, string=""&gt; getQuotesMap() {&lt;br /&gt; return quotesMap;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setQuotesMap(Map&lt;string, string=""&gt; quotesMap) {&lt;br /&gt; this.quotesMap = quotesMap;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getQuote(String company) throws Exception {&lt;br /&gt; if (quotesMap.containsKey(company)) {&lt;br /&gt;  return quotesMap.get(company);&lt;br /&gt; } else {&lt;br /&gt;  throw new Exception("Ooops, " + company + " is not listed with us");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;So we have to put this java source file in the source directory [wsfspring/src/main/java/] under the correct package structure.&lt;br /&gt;&lt;br /&gt;Now let's look at the applicationContext.xml [src/main/webapp/WEB-INF/applicationContext.xml] where all the Spring configuration is done. First we define the "StockQuote" bean.&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;bean id="StockQuote" class="org.wso2.training.wsfspring.StockQuoteService"&amp;gt;&lt;br /&gt;&amp;lt;property name="quotesMap"&amp;gt;&lt;br /&gt;&amp;lt;map&amp;gt;&lt;br /&gt;   &amp;lt;entry key="wso2" value="150"/&amp;gt;&lt;br /&gt;   &amp;lt;entry key="ibm" value="100"/&amp;gt;&lt;br /&gt;   &amp;lt;entry key="microsoft" value="100"/&amp;gt;&lt;br /&gt;&amp;lt;/map&amp;gt;&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt; Now we have defined the bean and we need expose it as a web service. We use “services” bean for that. Using the  “serviceBean” property we refer to actual bean we want to expose as web service and "serviceName" defines the name of the service as given below.&lt;pre name="code" class="html"&gt;&lt;br /&gt;&amp;lt;bean id="services" class="org.wso2.spring.ws.WebServices"&amp;gt;&lt;br /&gt;&amp;lt;property name="services"&amp;gt;&lt;br /&gt;&amp;lt;list&amp;gt;&lt;br /&gt;&amp;lt;bean id="StockQuoteService" class="org.wso2.spring.ws.SpringWebService"&amp;gt;&lt;br /&gt;    &amp;lt;property name="serviceBean" ref="StockQuote"/&amp;gt;&lt;br /&gt; &amp;lt;property name="serviceName" value="StockQuoteService"/&amp;gt;       &lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;lt;/list&amp;gt;&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;And that is all you need to do to expose your Spring bean as a web service.&lt;br /&gt;&lt;br /&gt;Oky, let's try this out. As described in the &lt;a href="http://nandana83.blogspot.com/2008/08/wso2-wsfspring-apache-axis2-for-spring.html"&gt;previous post&lt;/a&gt; all you got to do is run the maven build. &lt;pre&gt;~../wsfspring$ mvn jetty:run&lt;/pre&gt;Now if you go to &lt;pre&gt;http://localhost:8080/wsfspring/&lt;/pre&gt;you will be able to find StockQuoteService under services/available services.&lt;br /&gt;So how can we invoke this service. Axis2 allows you to invoke the services through the web browser in a RESTful manner. So if we invoke StockQuoteService through the browser using &lt;pre&gt;http://localhost:8080/wsfspring/services/StockQuoteService/getQuote?company=wso2&lt;/pre&gt;we will be able to see&lt;br /&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SKGhtsiiEDI/AAAAAAAAAFs/2WF-AhHVp3s/s1600-h/wso2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SKGhtsiiEDI/AAAAAAAAAFs/2WF-AhHVp3s/s800/wso2.png" alt="" id="BLOGGER_PHOTO_ID_5233642048403410994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and if we try a company that is not listed using &lt;pre&gt; http://localhost:8080/wsfspring/services/StockQuoteService/getQuote?company=oracle&lt;/pre&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SKGh_FgWVHI/AAAAAAAAAF0/rVuQ9-Ju1o4/s1600-h/oracle.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SKGh_FgWVHI/AAAAAAAAAF0/rVuQ9-Ju1o4/s800/oracle.png" alt="" id="BLOGGER_PHOTO_ID_5233642347162915954" border="0" /&gt;&lt;/a&gt;&lt;/pre&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;So that's it. As you can see, it is very easy to create web services with WSO2 WSF/Spring. Next we will be look at how to secure WSF/Spring web services with &lt;a href="http://ws.apache.org/rampart/"&gt;Apache Rampart&lt;/a&gt;.Apache Rampart integration is a great advantage in WSF/Spring as Apache Rampart already supports most of the WS - Sec* specifications including&lt;br /&gt;&lt;ul&gt;&lt;li&gt;      WS - Security 1.0 / 1.1&lt;/li&gt;&lt;li&gt;      WS - Security Policy  1.1 / 1.3&lt;/li&gt;&lt;li&gt;      WS - Secure Conversation 2005 / WS-SX&lt;/li&gt;&lt;li&gt;      WS - Trust 2005 / WS-SX&lt;/li&gt;&lt;/ul&gt;specifications. So you will be able to get the full benefit of WS - Security using WSO2 WSF/Spring.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-758045104761646764?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/758045104761646764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=758045104761646764' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/758045104761646764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/758045104761646764'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/08/writing-your-first-spring-web-service.html' title='Writing your first Spring web service in WSO2 WSF/Spring'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K3-wXDk_J6Q/SKGhtsiiEDI/AAAAAAAAAFs/2WF-AhHVp3s/s72-c/wso2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-8692378162480826945</id><published>2008-08-12T06:17:00.000-07:00</published><updated>2008-08-12T08:23:06.396-07:00</updated><title type='text'>WSO2 WSF/Spring  - Apache Axis2 for spring web services developers</title><content type='html'>&lt;a href="http://www.wso2.org/projects/wsf/spring"&gt;WSO2 WSF/Spring&lt;/a&gt; is a project build on top of &lt;a href="http://ws.apache.org/axis2/"&gt;Apache Axis2&lt;/a&gt; to provide an easy way to way to make Spring beans into Web services. So why WSF/Spring ? Doesn't Axis2 have spring support ? Yes, but WSF/Spring does it 100% Spring way.  So no more axis2.xml, services.xml etc and WSF/Spring is allabout Spring beans.  So why not give it a try ?&lt;br /&gt;&lt;br /&gt;In this post, we will look at a demo web application which is based on WSF/Spring to provide a basic introduction to WSF/Spring. The source of the demo application can be &lt;a href="https://wso2.org/repos/wso2/people/nandana/wsfspring/blog1/wsfspring.zip"&gt;downloaded here&lt;/a&gt;. You need either &lt;a href="http://ant.apache.org/manual/index.html"&gt;Apache Ant&lt;/a&gt; or &lt;a href="http://maven.apache.org/run-maven/index.html"&gt;Apache Maven&lt;/a&gt; to build this demo application (Maven is preferred).&lt;br /&gt;&lt;br /&gt;Before going in to more details, let's try out the demo application. So if you are using maven all you need to do is to do a maven build on root directory of the &lt;a href="https://wso2.org/repos/wso2/people/nandana/wsfspring/blog1/wsfspring.zip"&gt;downloaded project&lt;br /&gt;&lt;/a&gt; using the following command&lt;pre&gt;~../wsfspring$ mvn jetty:run&lt;/pre&gt;The other alternative is to build the demo using Apache Ant&lt;pre&gt;~../wsfspring$ ant&lt;/pre&gt;and deploy the generated war file [target/wsfspring.war]in a application server such as Apache Tomcat.&lt;br /&gt;&lt;br /&gt;Now, if you go to following URL in the browser,&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;http://localhost:8080/wsfspring/&lt;/pre&gt;you will be able to see the home page of the demo application.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SKGSH4lVNWI/AAAAAAAAAFc/6hk5We-wh88/s1600-h/555.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SKGSH4lVNWI/AAAAAAAAAFc/6hk5We-wh88/s400/555.png" alt="" id="BLOGGER_PHOTO_ID_5233624906126931298" border="0" /&gt;&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;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;Using the "Services" link, you can see the web services currently deployed in WSF/Spring. Demo application comes with Version service and you will be able to see it if you to if you follow the "Services" link.&lt;br /&gt;&lt;br /&gt;"Validate Axis2" link and be used to verify that Axis2 is working correctly. It checks whether libraries required for Axis2 are present and it even send request to the Version service to check whether it is working as shown below.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SKGSs9q-8eI/AAAAAAAAAFk/xAR7W693ijQ/s1600-h/version-service.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/SKGSs9q-8eI/AAAAAAAAAFk/xAR7W693ijQ/s400/version-service.jpg" alt="" id="BLOGGER_PHOTO_ID_5233625543147975138" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we got the demo application up and running and let's look at the source. First, let's look at the web application description file [wsfpsring/src/main/webapp/WEB-INF/web.xml]&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;web-app id="WebApp_ID" version="2.4"&lt;br /&gt;  xmlns="http://java.sun.com/xml/ns/j2ee"&lt;br /&gt;  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;listener&amp;gt;&lt;br /&gt;    &amp;lt;listener-class&amp;gt;&lt;br /&gt;      org.springframework.web.context.ContextLoaderListener&lt;br /&gt;    &amp;lt;/listener-class&amp;gt;&lt;br /&gt;  &amp;lt;/listener&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;    &amp;lt;context-param&amp;gt;&lt;br /&gt;    &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;    &amp;lt;param-value&amp;gt;/WEB-INF/applicationContext.xml&amp;lt;/param-value&amp;gt;&lt;br /&gt;  &amp;lt;/context-param&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;   &amp;lt;servlet&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;axis2&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;servlet-class&amp;gt;&lt;br /&gt;     org.wso2.spring.ws.servlet.SpringAxis2Servlet&lt;br /&gt;   &amp;lt;/servlet-class&amp;gt;&lt;br /&gt;   &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt; &amp;lt;/servlet&amp;gt;&lt;/p&gt;&lt;p&gt;   &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;axis2&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;url-pattern&amp;gt;/axis2/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;/servlet-mapping&amp;gt; &lt;/p&gt;&lt;p&gt;   &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;   &amp;lt;servlet-name&amp;gt;axis2&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;   &amp;lt;url-pattern&amp;gt;/services/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;   &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;   &amp;lt;welcome-file&amp;gt;/axis2-web/index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt; &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;SpringAxis2Servlet is defined as servelt in the web.xml and it's the servlet that takes care of all the Axis2 related stuff.&lt;br /&gt;&lt;br /&gt;Now let's have look at the spring descriptor file [src/main/webapp/WEB-INF/applicationContext.xml] which will be the configuration file we will be working with most in WSF/Spring.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"&lt;br /&gt;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;import resource="axis2Config.xml" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;bean id="Version" class="org.wso2.spring.ws.Version"&amp;gt;&lt;br /&gt;&amp;lt;property name="version" value="Hello, I am WSO2 WSF/Spring version service. My version is SNAPSHOT"/&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;lt;bean id="services" class="org.wso2.spring.ws.WebServices"&amp;gt;&lt;br /&gt;&amp;lt;property name="services"&amp;gt;&lt;br /&gt;   &amp;lt;list&amp;gt;&lt;br /&gt;       &amp;lt;bean id="VersionService" class="org.wso2.spring.ws.SpringWebService"&amp;gt;&lt;br /&gt;           &amp;lt;property name="serviceBean" ref="Version"/&amp;gt;&lt;br /&gt;           &amp;lt;property name="serviceName" value="Version"/&amp;gt;&lt;br /&gt;       &amp;lt;/bean&amp;gt;&lt;br /&gt;   &amp;lt;/list&amp;gt;&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;First we have imported “axis2Config.xml” and all Axis2 related configurations goes in to this file. But for the moment, let's not worry about this.&lt;br /&gt;And then we have the Version bean declared and WebServices bean is used to expose it as a web service.&lt;br /&gt;&lt;br /&gt;Next we will look at how to expose a Spring bean as a web service in “&lt;a href="http://nandana83.blogspot.com/2008/08/writing-your-first-spring-web-service.html"&gt;Writing your first Spring web service in WSO2 WSF/Spring&lt;/a&gt;”;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-8692378162480826945?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/8692378162480826945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=8692378162480826945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/8692378162480826945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/8692378162480826945'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/08/wso2-wsfspring-apache-axis2-for-spring.html' title='WSO2 WSF/Spring  - Apache Axis2 for spring web services developers'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K3-wXDk_J6Q/SKGSH4lVNWI/AAAAAAAAAFc/6hk5We-wh88/s72-c/555.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-6469405116454233738</id><published>2008-08-11T06:35:00.000-07:00</published><updated>2008-08-11T06:48:26.079-07:00</updated><title type='text'>How to send large files over the internet ?</title><content type='html'>&lt;a href="http://www.yousendit.com/"&gt;YOUSENDit&lt;/a&gt; and &lt;a href="http://www.fileflyer.com/"&gt;FileFlyer&lt;/a&gt; are two services which facilitates online transfers of lager files. These services come handy because most the emailing systems have limits on the attachment sizes. &lt;a href="http://www.yousendit.com/cms/how"&gt;This diagram&lt;/a&gt; from YOUSENDit shows how this works. Right now, FileFlyer allows up to 1 GB file size for free accounts where as in YOUSENDit it is 100 MB. If you know any better services which provides this service, please share those.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-6469405116454233738?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/6469405116454233738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=6469405116454233738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6469405116454233738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6469405116454233738'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/08/how-to-send-large-files-over-internet.html' title='How to send large files over the internet ?'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-4010167023402176774</id><published>2008-07-31T07:47:00.000-07:00</published><updated>2008-09-29T03:46:52.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache Rampart'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Neethi'/><title type='text'>Why can't we ship Apache Rampart as a standalone module all in one ?</title><content type='html'>This questions pops up time to time in the mailing lits, so thought of digging to the question and see why really it is not possible. I totally agree that it would really handy if we can ship Rampart and all it's dependencies in a single mar file so deploying Rampart will be just a matter of dropping that mar file in to the module directory of the repository. So let's see what are the problems we have ? I see two problems here. So let's see what's the first one and it is the critical one. It's related to how &lt;a href="http://ws.apache.org/commons/neethi/"&gt;Apache Neethi&lt;/a&gt;, which the policy implementation that Axis2 uses, loads the assertion builders. So let's see how it works. It uses &lt;a href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider"&gt;Service Provider Interfaces (SPI)&lt;/a&gt;, to load assertion builders. In SPI, we  have services which are normally interfaces or abstract classes which defines the some service and service providers which are the concrete implementations of that service. So Neethi uses SPI, to get the correct assertion builder for a given assertion. So in this case &lt;a href="http://svn.apache.org/viewvc/webservices/commons/tags/neethi/2.0.4/src/main/java/org/apache/neethi/builders/AssertionBuilder.java?view=markup"&gt;org.apache.neethi.builders.AssertionBuilder&lt;/a&gt;  is the Service. So how do we configure service providers. Each module in Axis2 which deals with WS-Policy can provider assertion builders for their domain assertions using a configuration file with the same name  “org.apache.neethi.builders.AssertionBuilder” and putting it to the META-INF/services directory of the relevant domain specific jar file. For example  of you look at the &lt;a href="https://svn.apache.org/repos/asf/webservices/rampart/tags/java/1_4/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder"&gt;org.apache.neethi.builders.AssertionBuilder&lt;/a&gt;  file in the META-INF/services directory of the rampart-policy-x.x.jar, you can see that it lists a set of service providers which implements &lt;a href="http://svn.apache.org/viewvc/webservices/commons/tags/neethi/2.0.4/src/main/java/org/apache/neethi/builders/AssertionBuilder.java?view=markup"&gt;org.apache.neethi.builders.AssertionBuilder&lt;/a&gt; interface. This is same with Sandesha 2  policy jar file. So what Neethi does is creates a map of Assertion QNames  to Assertion builder instances, using this static code block in the &lt;a href="http://svn.apache.org/viewvc/webservices/commons/tags/neethi/2.0.4/src/main/java/org/apache/neethi/AssertionBuilderFactory.java?view=markup"&gt;org.apache.neethi.AssertionBuilderFactory&lt;/a&gt; .&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   static {&lt;br /&gt;       AssertionBuilder builder;&lt;br /&gt;&lt;br /&gt;       for (Iterator providers = Service.providers(AssertionBuilder.class); providers&lt;br /&gt;               .hasNext();) {&lt;br /&gt;           builder = (AssertionBuilder) providers.next();&lt;br /&gt;&lt;br /&gt;           QName[] knownElements = builder.getKnownElements();&lt;br /&gt;            for (int i = 0; i &lt; knownElements.length; i++) {&lt;br /&gt;                registerBuilder(knownElements[i], builder);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        registerBuilder(XML_ASSERTION_BUILDER, new XMLPrimitiveAssertionBuilder());&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And Neethi doesn't use sun.misc.Service but uses it's own utility class, &lt;a href="http://svn.apache.org/viewvc/webservices/commons/tags/neethi/2.0.4/src/main/java/org/apache/neethi/util/Service.java?view=markup"&gt;org.apache.neethi.util. Service&lt;/a&gt; to do this. So if we look at the Service class, it looks for   org.apache.neethi.builders.AssertionBuilder files using the classloader of the  org.apache.neethi.builders.AssertionBuilder.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;   ClassLoader cl = null;&lt;br /&gt;   try {&lt;br /&gt;       // cls is AssertionBuilder.class in our case&lt;br /&gt;       cl = cls.getClassLoader();&lt;br /&gt;   } catch (SecurityException se) {&lt;br /&gt;       // Ooops! can't get his class loader.&lt;br /&gt;   }&lt;br /&gt;   // Can always request your own class loader. But it might be 'null'.&lt;br /&gt;   if (cl == null) cl = Service.class.getClassLoader();&lt;br /&gt;   if (cl == null) cl = ClassLoader.getSystemClassLoader();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So here is the catchy part. It looks for the service provider configuration files using the classloader of AssertionBuilder class. So if we want our our service providers, that is domain specific assertion builders to be found they should be in the class path of the class loader of AssertionBuilder class which is in the Axis2 lib. So in this case, the Rampart jars which contains service provide r configurations files also need to go to in the Axis2 lib.  AssertionBuilder must be able to load those service provider classes which are listed in the org.apache.neethi.builders.AssertionBuilder files. So until we solve this problem, having a standalone Rampart module is not possible.&lt;br /&gt;&lt;br /&gt;Then the second problems is as we have two modules Rampart and Rahas, and if we we ship them as standalone modules we may have to ship all the rampart jars and dependency jars in both of those modules as those modules have their separate class paths when deployed in Axis2. Anyway this is not a blocker and may not be much of a problem.&lt;br /&gt;&lt;br /&gt;When talking about this topic, some people tend to think that loading the password callback classes is also an issue here but is not. So the issue is service password callback handlers are packed in the service's archive (.aar) and the service has a separate class loader. But Rampart/WSS4J which lives in a separate module class loader needs to load these classes to get the passwords for various functions. But this not a problem because this explicitly handled by Rampart. So if we look at the code snippet that loads password callback handlers in &lt;a href="https://svn.apache.org/repos/asf/webservices/rampart/tags/java/1_4/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java"&gt;org.apache.rampart.util.RampartUtil#getPasswordCB()&lt;/a&gt; &lt;pre name="code" class="java"&gt;.&lt;br /&gt;&lt;br /&gt;     String cbHandlerClass = rpd.getRampartConfig().getPwCbClass();&lt;br /&gt;       ClassLoader classLoader = msgContext.getAxisService().getClassLoader();&lt;br /&gt;     &lt;br /&gt;       log.debug("loading class : " + cbHandlerClass);&lt;br /&gt; &lt;br /&gt;       Class cbClass;&lt;br /&gt;       try {&lt;br /&gt;           cbClass = Loader.loadClass(classLoader, cbHandlerClass);&lt;br /&gt;       } catch (ClassNotFoundException e) {&lt;br /&gt;           throw new RampartException("cannotLoadPWCBClass",&lt;br /&gt;                   new String[]{cbHandlerClass}, e);&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So as you can see this is not a problem regarding this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-4010167023402176774?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/4010167023402176774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=4010167023402176774' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/4010167023402176774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/4010167023402176774'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/07/why-cant-we-ship-as-standalone-module.html' title='Why can&apos;t we ship Apache Rampart as a standalone module all in one ?'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7290834844871907137</id><published>2008-07-19T11:42:00.000-07:00</published><updated>2008-07-20T07:04:40.646-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Privacy'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Internet &amp; Privacy : Can a plain old web site decide whether I am a male or a female ?</title><content type='html'>Do we have any privacy on Internet? For example, when I am searching something on Google or reading emails on my gmail account, obviously Google reads them too. Otherwise how can Google put advertisements most relevant to the content of my emails on the right hand side under sponsored links? So at the end of the day, Google knows what my interests are , who I am dealing with , what my greatest fears are and almost everything about me.  Let’s wish that Google will always honor their motto, “&lt;a href="http://en.wikipedia.org/wiki/Don%27t_be_evil"&gt;Don't be evil&lt;/a&gt;”. Anyway let’s forget Google for a moment.&lt;br /&gt;When I was in &lt;a href="http://www.dzone.com/"&gt;DZone&lt;/a&gt;, I came across an interesting post about a widget which tries to determine whether you are a male or a female according to your browsing history. I know what you will say, “What? You gave it your browser history?“ . No, I didn’t, a simple javascript just stole that information from me. So how did it work.  The script is called &lt;a href="http://azarask.in/blog/post/socialhistoryjs/"&gt;Social History&lt;/a&gt;. Idea of social history script is pretty simple. It has a set of links of social sites such as  &lt;a href="http://del.icio.us/"&gt;Del.icio.us&lt;/a&gt;, &lt;a href="http://digg.com/"&gt;Digg&lt;/a&gt;, &lt;a href="http://www.facebook.com/"&gt;Facebook&lt;/a&gt;, &lt;a href="http://www.reddit.com/"&gt;Reddit&lt;/a&gt;, &lt;a href="http://technorati.com/"&gt;Technorati&lt;/a&gt;, &lt;a href="http://slashdot.org/"&gt;Slashdot&lt;/a&gt;, etc. etc and it decides whether I have visited those links based on their css style (the color of the link). So &lt;a href="http://azarask.in/blog/"&gt;Aza Raskin&lt;/a&gt; is trying to use this to show bookmark links in an optimal way. Rather than having a static set of bookmark links like I have below under each blog post, he is suggesting to present bookmarks links to sites which the reader is actually using which can be found using his script, Pretty neat idea :).&lt;br /&gt;Now, &lt;a href="http://www.mikeonads.com/about/"&gt;Mike Nolet&lt;/a&gt; has gone one step further and developed a widget that tries to determine your gender based on your browser history using a simple algorithm with a modified version of Social History script. It uses &lt;a href="http://www.quantcast.com/top-sites-1"&gt;US top 10K sites&lt;/a&gt; for this. You can try out the widget &lt;a href="http://www.mikeonads.com/2008/07/13/using-your-browser-url-history-estimate-gender/"&gt;here&lt;/a&gt;. For me, it correctly determined I am a male with a probability 97% even though it has not worked for some people, so you better try and find out.&lt;br /&gt;&lt;br /&gt;You may also find following video interesting about today's Internet.&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NLlGopyXT_g&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/NLlGopyXT_g&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7290834844871907137?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7290834844871907137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7290834844871907137' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7290834844871907137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7290834844871907137'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/07/internet-privacy-can-plain-old-web-site.html' title='Internet &amp; Privacy : Can a plain old web site decide whether I am a male or a female ?'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-3818270588442944473</id><published>2008-07-18T06:38:00.000-07:00</published><updated>2008-07-18T07:43:06.044-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Phishing'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='PAPE'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity Theft'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>OpenID, Phishing &amp; PAPE, Are we there yet ?</title><content type='html'>When I get to know how &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt; works, I was really impressed with the idea. It is pretty simple and straight forward compared to WS – Sec* stuff that I am messing up with. And it seems OpenID is becoming the hype and sometimes we tend to think of it as a silver bullet. (At least I thought). OpenID is cool as a &lt;a href="http://en.wikipedia.org/wiki/Single_sign-on"&gt;SSO&lt;/a&gt; solution. But what about &lt;a href="http://en.wikipedia.org/wiki/Phishing"&gt;phishing&lt;/a&gt;. Does it prevent phishing ? The answer is no. In fact, it seems to make phishermens life easy by providing him a new way of driving the fish in to the nets. Why ? Because the way OpenID works the phishing site gets the control of redirecting the user to impersonating openID provider without much suspicion and it can find enough information about your openID provider to automate this process.&lt;br /&gt;If you want see how this really happens, you can try out &lt;a href="http://idtheft.fun.de/"&gt;OpenID Phishing demo&lt;/a&gt; . And if you don't want to try it out Mike Jones has illustrated how OpenID Phishing demo works in his blog post &lt;a href="http://self-issued.info/?p=73"&gt;"Gone Phishing"&lt;/a&gt;.  Stefan Brands also summarizes security issues of OpenID in his post &lt;a href="http://idcorner.org/2007/08/22/the-problems-with-openid/"&gt;“The problem(s) with OpenID”&lt;/a&gt;. And further, Ben Laurie’s describes this problem in more detail in his post &lt;a href="http://www.links.org/?p=187"&gt;"OpenID: Phishing Heaven"&lt;/a&gt; . In response, &lt;a href="http://simonwillison.net/"&gt;Simon Willison&lt;/a&gt; suggests how OpenID providers can help to &lt;a href="http://simonwillison.net/2007/Jan/19/phishing/"&gt;reduce the risk of phishing&lt;/a&gt;. The idea is to make users directly go to the OpenID provider without redirecting them or making them follow links. According to Simon, “&lt;span style="font-style: italic;"&gt;Instead of displaying the login form directly, providers should show a page that looks something like this: To log in, please navigate to login.example.com. The page your are currently viewing should contain no links; if there are any links or this text is changed in any way you may become a victim of online identity theft.&lt;/span&gt;”. He also suggests that OpenID provider URLs should be short, distinctive and memorable to make this effective. Yes, most of people agree that the best solution to prevent phishing is to educate the users but then again is this really possible ? Will some ordinary person will remember this if he is forwarded impersonating web sites which will directly offer a login screen or a link. Will someone who don't care a thing about what is on address bar will notice that is is not http://myopenid.com ?&lt;br /&gt;One way of doing this is OpenID providers forcing users to use bookmark to login to OpenID provider. My OpenID's &lt;a href="http://kveton.com/blog/2007/01/24/myopenid-new-anti-phishing-tools-available/"&gt;SafeSignIn&lt;/a&gt; is one such solution. But if someone impersonating the OpenID provider puts up a nice message saying as a new feature now you can login directly without using the bookmark how many people will fall in to that. Another solution is to use some pre configured images or icons , so that only the real provider can present you with the image/icon you chose and if you don't see the image/icon you can notice that you have landed on a spoofed site. &lt;a href="http://security.yahoo.com/article.html?aid=2006102507"&gt;Yahoo Sign in Seal&lt;/a&gt; and My OpenID's &lt;a href="http://kveton.com/blog/2007/01/24/myopenid-new-anti-phishing-tools-available/"&gt;Personal Icon&lt;/a&gt; are two such solutions. But again, this depends on how much user is aware of these features. &lt;a href="https://pip.verisignlabs.com/seatbelt.do"&gt;VeriSign's OpenID SeatBelt Plugin&lt;/a&gt; is another approach taken to prevent phishing. This plugin has an “Enable Phish Detection” option and when it is enabled, it tries detect phishing attempts when we are redirected to OpenID providers and always redirect us to the legitimate OpenID provider. Another solution is to use OpenID with Infocards.Kim Cameron talks on how to prevent phishing attacks with Infocard in detail in his blog post &lt;a href="http://www.identityblog.com/?p=659"&gt;"Integrating OpenID and Infocard"&lt;/a&gt; .There are seems to be many other custom efforts to avoid phishing attacks but OpenID seems to be moving to a standard solution.&lt;br /&gt;&lt;a href="http://openid.net/specs/openid-provider-authentication-policy-extension-1_0-02.html"&gt;OpenID Provider Authentication Policy Extension&lt;/a&gt; (PAPE) specification tries to solve this problem by enabling OpenID relying parties to request that a phishing-resistant authentication method be used by the OpenID provider and for providers to inform relying parties whether a phishing-resistant authentication method was used. So if the OpenID provider doesn't authenticate the user in a phishing resistant way,  OpenID provider should let the relying party know that it didn't use phishing resistant authentication so the relying party can decide what to do. But is this completely bullet proof ? This only guarantees that OpenID provider used a phishing resistant authentication this time as replying party asked so and it doesn't necessarily mean that it always used a phishing resistant authentication. What if some phisherman, impersonated a relying party and user has already become a victim of a phishing attack. Then when the legitimate relying party asks the open id provider to do the authentication in a phishing resistant manner, still the phisherman can succeed as he has already got the necessary information.&lt;br /&gt;So it seems, protecting an average user from phishing only using the technology (without educating him with security concerns ) is a pretty hard thing. And yeah, we have to agree it is an inherent problem and not a problem of OpenID itself. So will we be able to  get rid of phishing without users support just using the technology ? May be we will, someday. Who knows ....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-3818270588442944473?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/3818270588442944473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=3818270588442944473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3818270588442944473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3818270588442944473'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/07/openid-phishing-pape-are-we-there-yet.html' title='OpenID, Phishing &amp; PAPE, Are we there yet ?'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7531475507085325633</id><published>2008-07-08T03:53:00.000-07:00</published><updated>2008-12-09T12:26:05.351-08:00</updated><title type='text'>Make a difference in someone's life, The Smile Train</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SHNK-z0zyGI/AAAAAAAAAE8/BPzrKJBIDsM/s1600-h/girl-before.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/SHNK-z0zyGI/AAAAAAAAAE8/BPzrKJBIDsM/s400/girl-before.jpg" alt="" id="BLOGGER_PHOTO_ID_5220598835976587362" border="0" /&gt;&lt;/a&gt;Everyone loves to have a pretty smile. But for some people, nature has not been so far. The smile train organization is a charity helping those people. According to The smile train,&lt;br /&gt;"Unlike many charities that do many different things, The Smile Train is focused on solving a single problem: cleft lip and palate. Clefts are a major problem in developing countries where there are millions of children who are suffering with unrepaired clefts. Most cannot eat or speak properly. Aren’t allowed to attend school or hold a job. And face very difficult lives filled with shame and isolation, pain and heartache. The good news is every single child with a cleft can be helped with surgery that costs as little as $250 and takes as little as 45 minutes.&lt;br /&gt;&lt;br /&gt;This is our mission:&lt;br /&gt;  -To provide free cleft surgery for millions of poor children in developing countries.&lt;br /&gt;  -To provide free cleft-related training for doctors and medical professionals.&lt;br /&gt;Until there are no more children who need help and we have completely&lt;br /&gt;eradicated the problem of clefts."&lt;br /&gt;&lt;br /&gt;You can find more information in &lt;a href="http://www.smiletrain.org/"&gt;The Smile Train web site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7531475507085325633?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7531475507085325633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7531475507085325633' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7531475507085325633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7531475507085325633'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/07/make-difference-in-someones-life-smile.html' title='Make a difference in someone&apos;s life, The Smile Train'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K3-wXDk_J6Q/SHNK-z0zyGI/AAAAAAAAAE8/BPzrKJBIDsM/s72-c/girl-before.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-6253521908316685877</id><published>2008-07-01T23:41:00.000-07:00</published><updated>2008-12-09T12:26:05.989-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error messages'/><category scheme='http://www.blogger.com/atom/ns#' term='plurk'/><title type='text'>Nice way to say "Service is down"</title><content type='html'>"We've decided to take IM plurkbuddy to the clinic for a full body checkup. Plurkbuddy will be back soon. We're sorry for the inconvenience."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SGskfs9uIfI/AAAAAAAAAE0/3dYRpiRs2HU/s1600-h/Screenshot.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/SGskfs9uIfI/AAAAAAAAAE0/3dYRpiRs2HU/s400/Screenshot.jpg" alt="" id="BLOGGER_PHOTO_ID_5218304720303432178" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-6253521908316685877?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/6253521908316685877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=6253521908316685877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6253521908316685877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6253521908316685877'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/07/nice-way-to-say-service-is-down.html' title='Nice way to say &quot;Service is down&quot;'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K3-wXDk_J6Q/SGskfs9uIfI/AAAAAAAAAE0/3dYRpiRs2HU/s72-c/Screenshot.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-3561024794901775475</id><published>2008-07-01T10:37:00.001-07:00</published><updated>2008-07-01T10:56:08.421-07:00</updated><title type='text'>Temptation ( fake A wish )</title><content type='html'>I was thinking twice whether it is oky to blog about this or not but finally I couldn't help it. I know this not professional or even may not be ethical but thought of blogging about it after all. Today one of friends send me a link in the chat and I was like " What ....... @#$#%@ ". Then I found out that it is a hoax site which generates funny content with your name. If you want to give a 1 second lasting shock to one of your friends , just visit &lt;a href="http://www.fakeawish.com/"&gt;fake A wish&lt;/a&gt; site and fill in the form with his/her first name , last name. Then &lt;a href="http://www.fakeawish.com/"&gt;fake A wish&lt;/a&gt; will generate some funny ( and offensive :(  ) content with your friends name on them. Then you can just IM the url. According &lt;a href="http://www.fakeawish.com/"&gt;fake A wish&lt;/a&gt; "We use a DNS trick that plugs the name of your choice into a fake story. The 'victim' name is not stored on our servers - it's totally dynamic, the story is 100% fake and only exists while you have the browser window open viewing the page. ".  So it is 100% a joke and nothing will be saved or cached.&lt;br /&gt;&lt;b&gt;Disclaimer : The content is pretty offensive. Only try with your closest  friends. &lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-3561024794901775475?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/3561024794901775475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=3561024794901775475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3561024794901775475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3561024794901775475'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/07/temptation-fake-wish.html' title='Temptation ( fake A wish )'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7886275613082159419</id><published>2008-07-01T10:22:00.000-07:00</published><updated>2008-07-01T10:33:35.312-07:00</updated><title type='text'>A Flip Trick...</title><content type='html'>Are you on a windows machine ? Then go ahead hit &lt;span style="font-weight: bold;"&gt;CTL+ALT+(down arrow)&lt;/span&gt; and your desktop will be flipped. Just tried on a Windows XP box and it worked. Hit &lt;span style="font-weight: bold;"&gt;CTL+ALT+(up arrow)&lt;/span&gt;  to restore. BTW, I found this information from  &lt;a href="http://www.textflipper.com/"&gt;textflipper&lt;/a&gt; and it says "when your co-worker gets up for coffee, hit 'CTL+ALT+(down arrow)' to flip the display on his/her PC" and still didn't get a chance to see what will be the reaction. Should try tomorrow on someone else's PC. :D&lt;br /&gt;&lt;a href="http://www.textflipper.com/"&gt;textflipper&lt;/a&gt; also allows you to flip text, &lt;span style="font-weight: bold;"&gt;sıɥʇ ǝʞı1&lt;/span&gt; ( like this) . Just try it out, it's fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7886275613082159419?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7886275613082159419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7886275613082159419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7886275613082159419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7886275613082159419'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/07/flip-trick.html' title='A Flip Trick...'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-1338349290170383102</id><published>2008-07-01T08:44:00.000-07:00</published><updated>2008-07-01T10:19:00.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plurk'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Twitter vs Plurk</title><content type='html'>Have you ever heard of &lt;a href="https://twitter.com/"&gt;twitter&lt;/a&gt; ? I know you would say ... Yeah , duhh. But in case if you haven't heard it is a micro blogging tool where you can let other people know what you are doing. According to twitter , "Twitter is a service for friends, family, and co–workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question:&lt;span style="font-weight: bold;"&gt; What are you doing "&lt;/span&gt; . So if you go to &lt;a href="https://twitter.com/nandanamihindu"&gt;my twitter url&lt;/a&gt; , you will be able to find the answer. Yeah cool. And then you have&lt;a href="http://www.plurk.com/"&gt; Plurk&lt;/a&gt;. In Plurk, you are no longer have a one single answer , but you have a timeline where you can say what you have been doing / thinking / saying etc... etc ... . So if you go to &lt;a href="http://www.plurk.com/user/nandana"&gt;my plurk url&lt;/a&gt; , you will be able to see what I have been doing. I heard about them sometime back but just today I got a chance to check them out.Pretty cool. I think I am beginning to like plurk over twitter. Finally a warning !!! this seems quite addictive ;) .&lt;br /&gt;And if you interested in reading more about up and downsides of these two, you may find more information in these blogs , "&lt;a href="http://www.techipedia.com/2008/twitter-vs-plurk/"&gt;Twitter versus Plurk: Not Even in the Same League&lt;/a&gt;" and "&lt;a href="http://moblogsmoproblems.blogspot.com/2008/06/twitter-vs-plurk-who-wins.html"&gt;Twitter vs Plurk, who wins? &lt;/a&gt;" .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-1338349290170383102?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/1338349290170383102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=1338349290170383102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1338349290170383102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1338349290170383102'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/07/twitter-vs-plurk.html' title='Twitter vs Plurk'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-5654843593517991024</id><published>2008-06-15T08:34:00.000-07:00</published><updated>2008-06-15T08:56:13.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Office'/><category scheme='http://www.blogger.com/atom/ns#' term='.docx'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Viewing .docx ( MS Office 2007 ) files in Open Office</title><content type='html'>Have you ever wanted to open a MS Office 2007 .docx file with Open Office on Ubuntu ? Open office by default can't .docx files. Even MS Office 2003 can't by default. But you can make Open Office read .docx files by simply installing this convector. &lt;br /&gt;&lt;br /&gt;First you need to &lt;a href="ftp://ftp-mirror.internap.com/pub/www.getdeb.net/od/odf-converter_1.0.0-2%7Egetdeb1_i386.deb"&gt;download convector&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Then simply install the package&lt;br /&gt;&lt;pre&gt;sudo dpkg -i odf-converter_1.0.0-2~getdeb1_i386.deb&lt;br /&gt;&lt;/pre&gt;And that's it. Now you can open .docx file in Open Office.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-5654843593517991024?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/5654843593517991024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=5654843593517991024' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5654843593517991024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/5654843593517991024'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/06/viewing-docx-ms-office-2007-files-in.html' title='Viewing .docx ( MS Office 2007 ) files in Open Office'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2942290065299755469</id><published>2008-06-12T04:50:00.000-07:00</published><updated>2008-11-04T18:50:30.874-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='Web services'/><title type='text'>Simplest Axis2 web service</title><content type='html'>Do you know how easy it is to make a Java class a web service using Axis2 ? You know what , you can even invoke the service from your web browser and test it.&lt;br /&gt;&lt;br /&gt;Oky, this is my Java Class. Simple Java class with only one method.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;      package org.axis2.simple;&lt;br /&gt;&lt;br /&gt;      public class SimpleService {&lt;br /&gt;          public String sayHello(String name) {&lt;br /&gt;              return "Hello " + name;&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;/pre&gt;So we need to expose this class as a web service. How much effort will it take. You won't believe, it is only four lines of code.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;    AxisServer axisServer = new AxisServer();&lt;br /&gt;    axisServer.deployService(SimpleService.class.getName());&lt;br /&gt;    System.in.read();&lt;br /&gt;    axisServer.stop();&lt;br /&gt;&lt;/pre&gt;Now if you go to&lt;br /&gt;&lt;br /&gt;http://localhost:6060/axis2/services/SimpleService?wsdl&lt;br /&gt;&lt;br /&gt;in your web browser, you will be able to see the WSDL for the above wen service. So far, everything is cool. But how can I test whether this really works ? Yeah, you can test this service by invoking the service through the web browser. All you need  to do is do a REST invocation. Say you do a simple HTTP GET with your name as a parameter.&lt;br /&gt;&lt;br /&gt;http://localhost:6060/axis2/services/SimpleService/sayHello?name=Nandana&lt;br /&gt;&lt;br /&gt;You will be able to get the response from the service as&lt;br /&gt;&lt;pre id="line1" class="html"&gt;&amp;lt;&lt;span class="start-tag"&gt;ns:sayHelloResponse&lt;/span&gt;&lt;span class="attribute-name"&gt; xmlns:ns&lt;/span&gt;=&lt;span class="attribute-value"&gt;"http://simple.axis2.org"&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;span class="start-tag"&gt;return&lt;/span&gt;&amp;gt;Hello Nandana&amp;lt;/&lt;span class="end-tag"&gt;return&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;span class="end-tag"&gt;ns:sayHelloResponse&lt;/span&gt;&amp;gt;&lt;/pre&gt;and that's it. If you wanna learn more about Axis2, just visit &lt;a href="http://ws.apache.org/axis2/"&gt;Axis2 site&lt;/a&gt; or WSO2 &lt;a href="http://wso2.org/library"&gt;oxygen tank&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2942290065299755469?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2942290065299755469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2942290065299755469' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2942290065299755469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2942290065299755469'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/06/simplest-axis2-web-service.html' title='Simplest Axis2 web service'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2381156738296872094</id><published>2008-06-10T22:21:00.000-07:00</published><updated>2008-06-21T05:13:33.130-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Single Sign On'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenID'/><category scheme='http://www.blogger.com/atom/ns#' term='SSO'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>What is OpenID ?</title><content type='html'>I was thinking about writing a blog about OpenID for a long time but never ended up writing a one. Yesterday attended to a webinar done by &lt;a href="http://blog.facilelogin.com/"&gt;Prabath Siriwardhana&lt;/a&gt; ( the OpenID Guru in WSO2 ) , so what a good time to for a blog about OpenID.&lt;br /&gt;&lt;br /&gt;So what is an OpenID ? It is simply a URL ( or an XRI of course, let's forget about the XRI for the moment and simply look at the URL OpenIDs). For example, my OpenID is &lt;a href="http://nandana.myopenid.com/"&gt;http://nandana.myopenid.com&lt;/a&gt;. Oky, why do I need an OpenID after all ? What problems does it solve ?&lt;br /&gt;&lt;br /&gt;Let's take a practical scenario. We need to sign up for lots of web sites each day. So in each of these sites, I would like to have the username “nandana”. But in most of the cases, I can't because someone has already claimed it. So I will have to go for nandana83 and what if it is also gone, then nandanasm and then nandana.cse, etc. So I will eventually end up with hundreds of usernames and passwords. Not only username and password, most of these sites keep a profile of me. So if something like my address is changed I will have to go and change it in all my profiles. OpenID tries to solve this problem. If I am using OpenID to login to web sites, for all sites I only have a single OpenID, in my case that is &lt;a href="http://nandana.myopenid.com/"&gt;http://nandana.myopenid.com&lt;/a&gt; and I just need to sign in once for all the sites ( and that is called SSO, single sign on ). Yes, I only need to sign in once at my openid provider, that is &lt;a href="https://www.myopenid.com/"&gt;https://www.myopenid.com/&lt;/a&gt; in my case and I only need to have a single username and password. Then that's it, I don't need to enter usernames, passwords to log in the web sites, I just need to provide my openid to other sites when I want to log in to them.&lt;br /&gt;&lt;br /&gt;So let us look at how this really works. Let's start from the beginning. So I go to a site that uses OpenID for login and provide my openid , &lt;a href="http://nandana.myopenid.com/"&gt;http://nandana.myopenid.com&lt;/a&gt;. So how does the web site know who my open id provider is. This process is known as Discovery. If you point your browser to http://nandana.myopenid.com and view the source of that html file, you fill find these information in the head section of html page.&lt;br /&gt;&lt;br /&gt;&amp;lt;link rel="openid.server" href="http://www.myopenid.com/server" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="openid2.provider" href="http://www.myopenid.com/server" /&amp;gt;&lt;br /&gt;&lt;br /&gt;These two standard attributes tell the web sites ( we call them relying parties ) , where the openid provider is. There two attributes one for OpenID 1.1 and one for OpenID 2.0. This process is called HTML based discovery where the web site ( Relying party), can do a simple HTTP GET to the OpenID url and find the OpenID provider using link elements found in the head element of the HTML documents. So I will be redirected to the my openid provider site ( only if you are not already logged in to the my OpenID provide site ). Pretty cool.&lt;br /&gt;&lt;br /&gt;So my one and only id for all the sites is &lt;a href="http://nandana.myopenid.com/"&gt;http://nandana.myopenid.com&lt;/a&gt; . But it is not under my control and it is under myopenid's (http://myopenid.com) control. This seems not good, say for example one day that I found out that my open id is compromised and I no longer want to use myopenid as my open id provider. It will be good if I can use an URL in my domain ( where I rule :) ) as my OpenID. This is possible with OpenID. In this case, what I do is use some URL that I own ( eg. &lt;a href="http://mihindukulasooriya.org/"&gt;http://mihindukulasooriya.org&lt;/a&gt;, if I buy this domain oneday ) as my OpenID and there at that URL I delegate the the OpenID functionality to a real OpenID provider. This can be done by having&lt;br /&gt;&lt;br /&gt;&amp;lt;link href='http://www.myopenid.com/server' rel='openid2.provider openid.server'/&amp;gt;&lt;br /&gt;&amp;lt;link href='"http://nandana.myopenid.com/' rel='openid2.local_id openid.delegate'/&amp;gt;&lt;br /&gt;&lt;br /&gt;elements in the HTML document in the URL I own. In this case I use http://mihindukulasooriya.org as my OpenID and it is known as claimed identifier. I also have an account with myopenid.com and I delegate the OpenID functionality to myopenid.com using the openid I registered with them (http://nandana.myopenid.com) which is known as OP local identifier which is known to the open id provider. So if I want to switch the open id provider all I need to do is register with some other open id provider and change the above two values in my claimed id to point to the new open id provider and use my new open id I got from that provider as my op local identifier. So I am no longer locked to a single open id provider.&lt;br /&gt;&lt;br /&gt;So is OpenID is a silver bullet ? So if I get an OpenID, am I safe from everything ? Nope, for example it doesn't address the problem of phishing. For example, if a site redirects you to something looks very similar to your OpenID provider and which is not, you may end up giving the username and password in the phishing site. You can avoid this possibility if you just sign in first to your open id provider before visiting any web sites. Yahoo's &lt;a href="http://seclab.cs.rice.edu/w2sp/2007/papers/paper-190-z_1282.pdf"&gt;Sign-In seal&lt;/a&gt; is another approach that is used to prevent phishing at the OpenID provider side.&lt;br /&gt;&lt;br /&gt;Oky, OpenID is cool. But where can I use it ? Web sites that allow OpenID login are increasing day by day. You can find a list of OpenID enabled sites &lt;a href="http://openiddirectory.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So what don't you get an OpenID and get rid of all the hassle of remembering hundreds of usernames and passwords ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2381156738296872094?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2381156738296872094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2381156738296872094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2381156738296872094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2381156738296872094'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/06/openid-what-is-that.html' title='What is OpenID ?'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-6209449718069430155</id><published>2008-05-22T03:29:00.000-07:00</published><updated>2008-06-15T08:59:09.539-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rampart'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Real reward for writing articles</title><content type='html'>Here in &lt;a href="http://wso2.org/"&gt;WSO2&lt;/a&gt; where I work, we are always encouraged to write articles, tutorials, case studies etc. We are even given a financial reward for doing so.But the real reward for writing articles is the feedback you get in the mailing lists. I was so happy to see &lt;a href="http://markmail.org/message/fyubkrs5ebp6hyy3?q=list:org%2Eapache%2Ews%2Erampart-dev+Questions+about+policy%2Exml%2C+signatures%2C+and+certificates"&gt;this&lt;/a&gt; in the Apache Rampart list and &lt;a href="http://markmail.org/message/scjwyllxncihcibk?q=list:org%2Eapache%2Ews%2Eaxis-user+Webservices+security+in+axis2"&gt;this&lt;/a&gt; in the Apache Axis2 list.  But I think I am in the &lt;a href="http://en.wikipedia.org/wiki/Writer%27s_block"&gt;writer's block&lt;/a&gt; :( and it is so hard to start writing more articles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-6209449718069430155?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/6209449718069430155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=6209449718069430155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6209449718069430155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/6209449718069430155'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/05/real-reward-for-writing-articles.html' title='Real reward for writing articles'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-782118864555619264</id><published>2008-03-10T04:08:00.000-07:00</published><updated>2008-03-10T04:12:03.440-07:00</updated><title type='text'>Books Vs Movies</title><content type='html'>I got three books for my last birthday even though I am not in to the habit of reading. My point is ( hmm , rather my point was ) you can buy a movie ( a DVD quality movie with 5.1 surround sound ) for 80 bucks ( and you can always download the latest movies free )and it only takes you 2 hours at most to finish it. On the other hand, if we go for a book it will cost you around thousand bucks and will take around good two days to finish it. So why should I go for a book ?&lt;br /&gt;Just discovered that it is more fun reading a book than watching a movie. It gives more scope for imagination than a movie. You can imagine a lot about the characters, locations and almost everything. Like shall I put this guy a beard or what car I should give him if it is not already mentioned . Even better, you can think of people around you and make them the characters in the book. Believe me, it is fun.  &lt;br /&gt;BTW, I am currently reading the "The Undomestic Goddess" by Sophie Kinsella. It is about a highly ambitious workaholic woman (I am still in the middle of this book). Wanna a read part ?&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;"And I did just happen to notice that one of them came back missing a button" she adds. "The pink and white stripe."&lt;br /&gt;"Oh,right" I say."Well... that's OK. I'll send it back. They won't charge."&lt;br /&gt;"You can pop a button on yourself, dear!" Mrs.Farley is shocked."It won't take you two minutes. You must have a spare button in your workbox ?"&lt;br /&gt;My what ?&lt;br /&gt;"I don't have a workbox" I explain as politely as I can."I don't really do sewing."&lt;br /&gt;"You can sew a simple button on, surely!" she exclaims.&lt;br /&gt;"No,"I say, a bit rankled at her expression. "But it's no problem. I will send it back to the dry cleaners."&lt;br /&gt;Mrs. Farley is appalled. "You can't sew a button on ? Your mother never taught you ? "&lt;br /&gt;I stifle a laugh at the thought of my mother sewing on a button. "Er...no. She didn't."&lt;br /&gt;"In my days" says Mr. Farley, shaking her head, "all well-educated girls were taught to how to sew a button. darn a sock, and turn a collar."&lt;br /&gt;None of these means nothing to me. Turn a collar. It's gibberish.&lt;br /&gt;"Well, in my days ... we weren't," I reply politely. "We were taught to study for our exams and get a career worth having. We were taught to have opinions. We were taught to use our brains," I can't resist adding.&lt;br /&gt;Mrs. Farley doesn't seem impressed. "It's a shame" She says at last, and pats me sympathetically.&lt;br /&gt;I'm trying to keep my temper, but I've worked for hours, I feel bone -tired and hungry, Ketterman is living two floors above me -- and now this old women's telling me to sew on a button ?&lt;br /&gt;"It's not a shame," I say tightly.&lt;br /&gt;"All right, dear," says Mr.Farely in pacifying tones, and heads across the hallway to her flat.&lt;br /&gt;Somehow this goads me even more&lt;br /&gt;"How is it a shame?" I demand, stepping out of my doorway."How? OK, may be I can't sew on a button. But I can restructure a corporate finance agreement and save my client thirty million pounds". That's what I can do."&lt;br /&gt;Mrs. Farley regards me from her doorway. "It's a shame," She repeats, as though she didn't even hear me. "Good night, dear". She closes the door and emit a squeal of exasperation.&lt;br /&gt;"Did you never hear of feminism ?" I cry at her door. But there's no answer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-782118864555619264?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/782118864555619264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=782118864555619264' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/782118864555619264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/782118864555619264'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/03/books-vs-movies.html' title='Books Vs Movies'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-1299294579552000864</id><published>2008-01-30T20:50:00.000-08:00</published><updated>2008-12-09T12:26:06.237-08:00</updated><title type='text'>A tribute to Defense Forces of Sri Lanka</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/R6FUzOCOv9I/AAAAAAAAADk/vbw_Z1oo0QA/s1600-h/army.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/R6FUzOCOv9I/AAAAAAAAADk/vbw_Z1oo0QA/s400/army.jpg" alt="" id="BLOGGER_PHOTO_ID_5161499886860812242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Your alarm goes off; you hit the snooze and sleep for another 10 minutes&lt;br /&gt;He stays up for days on end&lt;br /&gt;&lt;br /&gt;You take a warm shower to help you wake up&lt;br /&gt;He goes days or weeks without running water&lt;br /&gt;&lt;br /&gt;You complain of a "headache", and call in sick&lt;br /&gt;He gets shot at as others are hit, and keeps moving forward&lt;br /&gt;&lt;br /&gt;You put on your anti war/don't support the troops shirt, and go meet up with&lt;br /&gt;your friends&lt;br /&gt;He still fights for your right to wear that shirt&lt;br /&gt;&lt;br /&gt;You talk trash about your "buddies" that aren't with you&lt;br /&gt;He knows he may not see some of his buddies again&lt;br /&gt;&lt;br /&gt;You walk down the beach, staring at all the pretty girls&lt;br /&gt;He walks the streets, searching for insurgents and terrorists&lt;br /&gt;&lt;br /&gt;You complain about how hot it is&lt;br /&gt;He wears his heavy gear, not daring to take off his helmet to wipe his brow&lt;br /&gt;&lt;br /&gt;You go out to lunch, and complain because the restaurant got your order&lt;br /&gt;wrong&lt;br /&gt;He doesn't get to eat today&lt;br /&gt;&lt;br /&gt;Your wife/mother/ maid makes your bed and washes your clothes&lt;br /&gt;He wears the same things for weeks, but makes sure his weapons are clean&lt;br /&gt;&lt;br /&gt;You go to the mall and get your hair redone&lt;br /&gt;He doesn't have time to brush his teeth today&lt;br /&gt;&lt;br /&gt;You're angry because your class ran 5 minutes over&lt;br /&gt;He's told he will be held over an extra 2 months&lt;br /&gt;&lt;br /&gt;You call your girlfriend and set a date for tonight&lt;br /&gt;He waits for the mail to see if there is a letter from home&lt;br /&gt;&lt;br /&gt;You hug and kiss your girlfriend, like you do everyday&lt;br /&gt;He holds his letter close and smells his love's perfume&lt;br /&gt;&lt;br /&gt;You roll your eyes as a baby cries&lt;br /&gt;He gets a letter with pictures of his new child, and wonders if they'll ever&lt;br /&gt;meet&lt;br /&gt;&lt;br /&gt;You criticize your government, and say that war never solves anything...&lt;br /&gt;He sees the innocent tortured and killed by their own people and remembers&lt;br /&gt;why he is fighting&lt;br /&gt;&lt;br /&gt;You hear the jokes about the war, and make fun of men like him&lt;br /&gt;He hears the gunfire, bombs and screams of the wounded - and of the&lt;br /&gt;innocents who have no one to stand up for them&lt;br /&gt;&lt;br /&gt;You see only what the media wants you to see&lt;br /&gt;He sees the broken bodies lying around him&lt;br /&gt;&lt;br /&gt;You stay at home and watch TV&lt;br /&gt;He takes whatever time he is given to call, write home, sleep, and eat&lt;br /&gt;&lt;br /&gt;You crawl into your soft bed, with down pillows, and get comfortable&lt;br /&gt;He crawls under a tank for shade and a 5 minute nap, only to be awakened by&lt;br /&gt;gunfire&lt;br /&gt;&lt;br /&gt;You sit there and judge him, saying the world is probably a worse place&lt;br /&gt;because of men like him&lt;br /&gt;If only there were more men like him!&lt;br /&gt;&lt;br /&gt;WHO is HE?&lt;br /&gt;&lt;br /&gt;Perhaps people will change their attitude and behavior to support HIS&lt;br /&gt;worthy cause... HE is sacrificing his today for our future Sri Lanka !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-1299294579552000864?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/1299294579552000864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=1299294579552000864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1299294579552000864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/1299294579552000864'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/01/tribute-to-defense-forces-of-sri-lanka.html' title='A tribute to Defense Forces of Sri Lanka'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K3-wXDk_J6Q/R6FUzOCOv9I/AAAAAAAAADk/vbw_Z1oo0QA/s72-c/army.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-79059663405995352</id><published>2008-01-29T19:16:00.000-08:00</published><updated>2008-12-09T12:26:06.646-08:00</updated><title type='text'>Star wars - The command line movie</title><content type='html'>Have you ever watched a command line movie. If not, just type&lt;br /&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 210px; height: 34px; text-align: left;"&gt;telnet towel.blinkenlights.nl&lt;/pre&gt;&lt;br /&gt;in your command line. This is really cool. Here are some screen shots.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K3-wXDk_J6Q/R5_u1eCOv7I/AAAAAAAAADU/CvZzH9i0ChM/s1600-h/Screenshot.gif"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K3-wXDk_J6Q/R5_u1eCOv7I/AAAAAAAAADU/CvZzH9i0ChM/s400/Screenshot.gif" alt="" id="BLOGGER_PHOTO_ID_5161106300352774066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K3-wXDk_J6Q/R5_vH-COv8I/AAAAAAAAADc/NEdqJsBJklY/s1600-h/Screenshot-1.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K3-wXDk_J6Q/R5_vH-COv8I/AAAAAAAAADc/NEdqJsBJklY/s400/Screenshot-1.gif" alt="" id="BLOGGER_PHOTO_ID_5161106618180353986" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-79059663405995352?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/79059663405995352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=79059663405995352' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/79059663405995352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/79059663405995352'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/01/star-wars-command-line-movie.html' title='Star wars - The command line movie'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K3-wXDk_J6Q/R5_u1eCOv7I/AAAAAAAAADU/CvZzH9i0ChM/s72-c/Screenshot.gif' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2173175962565421204</id><published>2008-01-29T00:37:00.000-08:00</published><updated>2008-01-29T00:47:35.120-08:00</updated><title type='text'>Live online training from WSO2 - Apache Rampart</title><content type='html'>&lt;p&gt;you can register for the training &lt;a href="http://wso2.com/training/" mce_href="http://wso2.com/training/"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:85%;"&gt;Course Summary:&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;Apache Rampart is an Axis2 module that supports various service security standards. This 3-hour course is designed to give an overview on Web services security for an audience who is new to this area.&lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:85%;"&gt; Course Objectives:&lt;/span&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt; Understand WS-Security concepts&lt;/li&gt;&lt;li&gt; Learn how to use Apache Rampart to meet different security requirements&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;span style="font-size:85%;"&gt; Duration:&lt;/span&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt; 3 hours&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;span style="font-size:85%;"&gt; Audience:&lt;/span&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt; Beginners with a basic knowledge of XML and SOAP.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;span style="font-size:85%;"&gt; Prerequisites:&lt;/span&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt; None.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;span style="font-size:85%;"&gt; Program:&lt;/span&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt;XML-Signature&lt;/li&gt;&lt;li&gt;XML Encryption&lt;/li&gt;&lt;li&gt;WS-Security &lt;ul&gt;&lt;li&gt;UsernameToken authentication&lt;/li&gt;&lt;li&gt;Encryption&lt;/li&gt;&lt;li&gt;Signature&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Secure multiple messages with WS-Secure Conversation and WS-Trust&lt;/li&gt;&lt;li&gt;WS-Security Policy&lt;/li&gt;&lt;li&gt;Apache Implementations – WSS4J and Rampart &lt;ul&gt;&lt;li&gt;Introduction to Apache WSS4J architecture&lt;/li&gt;&lt;li&gt;Introduction to Apache Rampart architecture&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Demonstration &lt;ul&gt;&lt;li&gt;Different configuration approaches of Apache Rampart (Here we will explore all samples of the standard Apache Rampart release)&lt;/li&gt;&lt;li&gt;Setting up clients and services with parameter based and policy based configurations.&lt;/li&gt;&lt;li&gt;Securing services and clients using both dynamic and static configuration approaches.&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2173175962565421204?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2173175962565421204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2173175962565421204' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2173175962565421204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2173175962565421204'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/01/live-online-training-from-wso2-apache.html' title='Live online training from WSO2 - Apache Rampart'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7384293933883828474</id><published>2008-01-25T06:09:00.000-08:00</published><updated>2008-01-25T06:15:38.325-08:00</updated><title type='text'>Things I didn't know about GMail</title><content type='html'>My email is in the format first.last@gmail.com format. So I thought if someone wants to send me a mail, he/she has to type the exact email address. But today only I found that, all the addresses given below will send the email to the same addy.&lt;br /&gt;&lt;br /&gt;firstlast@gmail.com ( Omitted the dot )&lt;br /&gt;First.Last@gmail.com ( Capitalized some letters )&lt;br /&gt;first.last+TEST@gmail.com ( added +TEST to the end )&lt;br /&gt;&lt;br /&gt;Quite interesting :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7384293933883828474?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7384293933883828474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7384293933883828474' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7384293933883828474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7384293933883828474'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/01/things-i-didnt-know-about-gmail.html' title='Things I didn&apos;t know about GMail'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-20028845908978626</id><published>2008-01-25T02:32:00.000-08:00</published><updated>2008-01-31T03:02:37.942-08:00</updated><title type='text'>Meanings of Apache votes</title><content type='html'>If you are involved with an Apache project, you always see certain votes going in the mailing lists. Have you ever wonder, what each vote means ?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;+0: 'I don't feel strongly about it, but I'm okey           with this.'&lt;/li&gt;&lt;li&gt;-0: 'I won't get in the way, but I'd rather we didn't           do this.'&lt;/li&gt;&lt;li&gt;-0.5: 'I don't like this idea, but I can't find any           rational justification for my feelings.'&lt;/li&gt;&lt;li&gt;++1: 'Wow!  I like this!  Let's &lt;em&gt;do&lt;/em&gt; it!'&lt;/li&gt;&lt;li&gt;-0.9: 'I &lt;em&gt;really&lt;/em&gt; don't like this, but I'm           not going to stand in the way if everyone else wants to           go ahead with it.'&lt;/li&gt;&lt;li&gt;+0.9: 'This is a cool idea and i like it, but I don't           have time/the skills necessary to help out.'&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;you can find more info &lt;a href="http://www.apache.org/foundation/voting.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-20028845908978626?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/20028845908978626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=20028845908978626' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/20028845908978626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/20028845908978626'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/01/meanings-of-apache-votes.html' title='Meanings of Apache votes'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7086296888635815182</id><published>2008-01-24T18:42:00.000-08:00</published><updated>2008-01-24T18:58:39.439-08:00</updated><title type='text'>Installing java plugin for firefox on Ubuntu - Gusty</title><content type='html'>I had tough time ( 2 days ), actually trying to install the sun java plugin in firefox. I installed the plugin using&lt;br /&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 280px; height: 34px; text-align: left;"&gt;sudo apt-get install sun-java6-plugin&lt;/pre&gt;&lt;br /&gt;everything seemed to be fine, but everytime i try to run an applet on the browser, firefox uses gcj java plugin (GUN java) instead of sun java plugin. So I couldn't get the applet running. Only possible work around was to remove the gcj java plugin, which made firefox to use the sun java plugin.&lt;br /&gt;&lt;br /&gt;BTW, learned a quite useful set of firefox commands which made the efforts I put worthy. You can view the installed plugins and their  details  in firefox  using the command&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;about:plugins&lt;br /&gt;&lt;br /&gt;you have type the command in the address bar and firefox will list all the plugin details.&lt;br /&gt;&lt;br /&gt;and you can test which version of java, your browser is using in this &lt;a href="http://www.java.com/en/download/help/testvm.xml"&gt;link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7086296888635815182?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7086296888635815182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7086296888635815182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7086296888635815182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7086296888635815182'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/01/installing-java-plugin-for-firefox-on.html' title='Installing java plugin for firefox on Ubuntu - Gusty'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-2248466816602022396</id><published>2008-01-07T04:25:00.000-08:00</published><updated>2008-01-07T04:30:59.006-08:00</updated><title type='text'>AdRotator control in ASP.NET</title><content type='html'>I always wanted to learn some .NET stuff (mainly web services), but I was always stuck with Java. Most of the time, I have to work with java stuff. So I started with ASP.NET web applications. Even though I am not a .NET fan, have to admit it can be handy when we want to create a web app in a rapid development environment. So I was writing "Hello world" in ASP.NET and found a handy controller. It is called "AdRotator" and it is simply cool .... , just take a look .&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dotnetjunkies.com/Tutorial/3F70C875-15E4-4B67-B234-7F79B27C359D.dcik"&gt;AdRotator&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-2248466816602022396?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/2248466816602022396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=2248466816602022396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2248466816602022396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/2248466816602022396'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/01/adrotator-control-in-aspnet.html' title='AdRotator control in ASP.NET'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-8243500331004159404</id><published>2008-01-07T04:11:00.000-08:00</published><updated>2008-01-07T04:22:29.449-08:00</updated><title type='text'>Wow, it is a nice view from space !!!</title><content type='html'>&lt;iframe marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;msid=103207475237502057773.000442e4755786ddd514b&amp;amp;ll=7.067093,80.047966&amp;amp;spn=0.005717,0.004737&amp;amp;t=h&amp;amp;om=1&amp;amp;output=embed&amp;amp;s=AARTsJq4RgbWgIEcFgJuZlMi1bAyKfgQtQ" frameborder="0" height="350" scrolling="no" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;msid=103207475237502057773.000442e4755786ddd514b&amp;amp;ll=7.067093,80.047966&amp;amp;spn=0.005717,0.004737&amp;amp;t=h&amp;amp;om=1&amp;amp;source=embed" style="color: rgb(0, 0, 255); text-align: left;"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-8243500331004159404?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/8243500331004159404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=8243500331004159404' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/8243500331004159404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/8243500331004159404'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2008/01/wow-it-is-nice-view-from-space.html' title='Wow, it is a nice view from space !!!'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-881645162335412381</id><published>2007-12-11T19:29:00.000-08:00</published><updated>2008-12-09T12:26:07.271-08:00</updated><title type='text'>N95, N73 or good old 6230 ?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K3-wXDk_J6Q/R19YICphXmI/AAAAAAAAACs/WOMPkSyGhwg/s1600-h/nokia-n95-00.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_K3-wXDk_J6Q/R19YICphXmI/AAAAAAAAACs/WOMPkSyGhwg/s320/nokia-n95-00.jpg" alt="" id="BLOGGER_PHOTO_ID_5142926194653617762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K3-wXDk_J6Q/R19XxyphXlI/AAAAAAAAACk/HzciqvPLmaI/s1600-h/nokia-n73-00.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_K3-wXDk_J6Q/R19XxyphXlI/AAAAAAAAACk/HzciqvPLmaI/s320/nokia-n73-00.jpg" alt="" id="BLOGGER_PHOTO_ID_5142925812401528402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the major question I have on mind these days. I badly need a 3G phone. Mobitel launched 3G two three days back and I wanna go 3G. Of course there are other reason too. There are people we wish would always be with us, but when it comes to reality we sometimes see then as rarely as once in a month. Yeah, yeah, I am talking about her, dude. So if I can go for a 3G phone at least I can see her everyday. So that is my requirement, plain and simple, 3G. So the main options I have is N73 and N95 as they are the most common ones here. N73 would be around 40K where as N95 would be 70K. So the obvious option is N73. Who would want to spend 70K for a phone. I would have said the same thing to 40K but what to do, after all I need a 3G phone. But you know, when you go through the specification of N95 you don't want to miss it. It is such a cool phone. Got everything. 5MP camera, 3G, WiFi, you name it. But when I went through the reviews user experience was not that good. So it at least give one good reason to go for N73 other than the cost factor. So next week, I might have  a N73 ( or N95 ) with me :). Or shall I wait till the next year. Will see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-881645162335412381?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/881645162335412381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=881645162335412381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/881645162335412381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/881645162335412381'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2007/12/n95-n73-or-good-old-6230.html' title='N95, N73 or good old 6230 ?'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K3-wXDk_J6Q/R19YICphXmI/AAAAAAAAACs/WOMPkSyGhwg/s72-c/nokia-n95-00.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7526217070036672803</id><published>2007-12-10T18:57:00.000-08:00</published><updated>2007-12-10T19:07:11.665-08:00</updated><title type='text'>Back to blogging , Version 2 ;)</title><content type='html'>Writing a random blog is easy. But making it a habit, I was not able to do it so far. When I travel in the morning, there are so many things in my head that I always think when I go to the office, I should blog about them. But when I come to the office, I just check mail and there are issues and other things, so never blog. Just  start work right away. But now on, I am determined blog at least few lines each day, so that it would become a habit :). Wish me luck ......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7526217070036672803?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7526217070036672803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7526217070036672803' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7526217070036672803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7526217070036672803'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2007/12/back-to-blogging-version-2.html' title='Back to blogging , Version 2 ;)'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-7211069658579304472</id><published>2007-03-20T01:11:00.000-07:00</published><updated>2008-12-09T12:26:07.462-08:00</updated><title type='text'>Jackrabbit</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K3-wXDk_J6Q/Rf-a_yw3-UI/AAAAAAAAABc/KOj1sUCNiTo/s1600-h/225px-Hase.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_K3-wXDk_J6Q/Rf-a_yw3-UI/AAAAAAAAABc/KOj1sUCNiTo/s320/225px-Hase.jpg" alt="" id="BLOGGER_PHOTO_ID_5043920528427448642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;                                     Jackrabbits are leporids belonging to the genus Lepus.They are very fast moving.Normally a shy animal, the European Brown Hare changes its behaviour in spring, when hares can be seen in broad daylight chasing one another around meadows; this appears to be competition between males to attain dominance (and hence more access to breeding females). Oooops, that is what the wikipedia says. But that is not what I am talking about.&lt;br /&gt;                                    Jackrabbit is an open source project that took my interest these days. When I was going through the Summer of Code proposals ( By the way, I should write a separate post on summer of code ) , I came across this project proposal to build a demo blog application on the jackrabbit JCR implementation. I really didn't know much about content repositories until  I went through  the JSR 170 specification. I knew about  database ,  XML configuration  files ,  property files but not content repositories. So it was a new thing ( to me ) so I was in interested.  Jackrabbit site can be found at (http://jackrabbit.apache.org/).  One thing about the Jackrabbit community, they are very supportive and helpful. These days I'm sending mails to the mailing list to grab some information, I really get a good feedback. Wish I can successfully  complete this  project  and  be  a Guru  in JCR.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-7211069658579304472?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/7211069658579304472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=7211069658579304472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7211069658579304472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/7211069658579304472'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2007/03/jackrabbit.html' title='Jackrabbit'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K3-wXDk_J6Q/Rf-a_yw3-UI/AAAAAAAAABc/KOj1sUCNiTo/s72-c/225px-Hase.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-3225160315337378041</id><published>2007-03-16T21:37:00.000-07:00</published><updated>2007-03-16T21:49:34.997-07:00</updated><title type='text'>Back to blogging</title><content type='html'>Yep,  it has been a long time since I wrote my last blog. I was doing my internship then. But when I came back to uni again , oh yeah, work work and more work as usual. So couldn't find much time to blog. You won't believe we did ten subjects with at least two three assignments a week. So life was tough and didn't feel like blogging. But anyway lot of things happened during that time. Some very happy moments which should have been blogged .....&lt;br /&gt;                           These days most of my time is spent for my final year project, CMe a.k.a MyDiary, mblogging suite. I'm determined to update the blog regularly here onwards. So here I'm at Blogger again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-3225160315337378041?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/3225160315337378041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=3225160315337378041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3225160315337378041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/3225160315337378041'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2007/03/back-to-blogging.html' title='Back to blogging'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-115028562357409491</id><published>2006-06-14T04:41:00.000-07:00</published><updated>2006-06-14T05:14:11.770-07:00</updated><title type='text'>iKVM</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;                &lt;/span&gt;what ? you may probably heard of KVM ( K Virtual Machine ) , which is sun’s implementation of the Java 2 Micro Edition ( J2ME ) J2ME. But what is iKVM , (it has no relation with KVM as far as I know ) iKVM is an implementation of java for Mono and Microsoft .NET framework. Yes, that means you can use your java libraries in .NET or mono. Say you have implemented your business logic in java already and you want to migrate to C# , iKVM removes the necessity of re-implementing it in C# again and you and use iKVM and convert the necessary java libraries in to dll’s or exes . &lt;span style=""&gt; &lt;/span&gt;Further you can develop your .NET applications in java if you want.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size:14;"&gt;iKVM consists of&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;IKVM.Runtime.dll (&lt;/span&gt;&lt;/strong&gt;VM      runtime)&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;IKVM.GNU.Classpath.dll&lt;/span&gt;&lt;/strong&gt;&lt;b style=""&gt; &lt;span style=""&gt; &lt;/span&gt;&lt;/b&gt;(compiled version of &lt;a href="http://www.gnu.org/software/classpath/classpath.html"&gt;&lt;span style="text-decoration: none;color:#000000;" &gt;&lt;/span&gt;&lt;/a&gt;  GNU  Classpath)&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;IKVM.JNI.[Mono|CLR-Win32].dll&lt;/span&gt;&lt;/strong&gt;&lt;b style=""&gt; &lt;/b&gt;(JNI interface)&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;ikvm.exe&lt;/span&gt;&lt;/strong&gt;&lt;b style=""&gt; &lt;/b&gt;(Starter executable)&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;ikvmc.exe&lt;/span&gt;&lt;/strong&gt;&lt;b style=""&gt; &lt;/b&gt;(Static compiler)&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;ikvmstub.exe&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;IKVM.AWT.WinForms.dll&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in;"&gt;&lt;strong&gt;&lt;span style=""&gt;             &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;you can find more about these components from the official site.A little word about GNU Classpath , &lt;/span&gt;&lt;/strong&gt;it is open source GNU project which creates free core class libraries for use with virtual machines and compilers for the java programming language. When I was writing this , GNU Classpath was almost compatible with JDK 1.4 .&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b style=""&gt;Convert java libraries in to .net or mono assemblies&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=""&gt;                       &lt;/span&gt;iKVM &lt;span style=""&gt; &lt;/span&gt;provides a with a easy to command tool, ikvmc which can be used to generate dll’s or exe’s from java class files or .jar archives. Usage of this tool is pretty simple.&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;ikvmc [-options] "class file or jar file" "more class fiels or jar files"&lt;more&gt;&lt;br /&gt;&lt;/more&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=""&gt;                      &lt;/span&gt;there are many options available but I will just mention a few. Use of most of the options is obvious from the name. For example –out &lt;output&gt; option can be used to provide the name of the output file or –version &lt;m.m.b.r&gt; to provide the version. &lt;span style=""&gt; &lt;/span&gt;And -reference:&lt;assembly&gt; or in short –r:&lt;assembly&gt; to make a reference to another assembly . Somewhat for important option would be –keyfile &lt;keyfilename&gt; or –key &lt;keycontatiner&gt; . This options lets us to give the output assembly we are building a strong name. Strong name is the concept that .net uses to eliminate the problem commonly known as “dll hell”. &lt;span style=""&gt; &lt;/span&gt;If you want to add the dll you are creating in to the .net GAC ( Global Assembly Cache ) , having a strong name is a must. Actually I wasted two days figuring out a method to assign a strong name to the dlls I created, just because of I didn’t go through the usage well and that is why I thought I should mention little more about this option here.&lt;/keycontatiner&gt;&lt;/keyfilename&gt;&lt;/assembly&gt;&lt;/assembly&gt;&lt;/m.m.b.r&gt;&lt;/output&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;References:&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;iKVM&lt;span style=""&gt;  &lt;/span&gt;- &lt;span style=""&gt; &lt;/span&gt;&lt;a href="http://www.ikvm.net/"&gt;&lt;span style=""&gt;http://www.ikvm.net/&lt;/span&gt;&lt;/a&gt; &lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;GNU Classpath - &lt;a href="http://www.gnu.org/software/classpath/home.html"&gt;&lt;span style=""&gt;http://www.gnu.org/software/classpath/home.html&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-115028562357409491?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/115028562357409491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=115028562357409491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/115028562357409491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/115028562357409491'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2006/06/ikvm.html' title='iKVM'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-114857053415518189</id><published>2006-05-25T08:06:00.000-07:00</published><updated>2006-05-25T08:22:14.166-07:00</updated><title type='text'>Galle Face</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/7266/3039/1600/colombo_galle_face_green.0.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/7266/3039/320/colombo_galle_face_green.0.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Today in the early morning, I went to galle face at about 5.30 am. If you haven't been there, at that time , just go once and see. It is so cool ... At that time there is no one there except for the few policemen at the police post. And such a breeze .... you got to experience it ..... You know what, I am going tomorrow too ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-114857053415518189?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/114857053415518189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=114857053415518189' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/114857053415518189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/114857053415518189'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2006/05/galle-face.html' title='Galle Face'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-114848328998313932</id><published>2006-05-24T08:00:00.000-07:00</published><updated>2006-05-24T08:08:09.993-07:00</updated><title type='text'>XSLT</title><content type='html'>If you don’t know what XSLT is or how it works, don’t worry , I also didn’t know anything about it yesterday, but is it pretty easy to catch up if you know little XML. XSLT  ( eXtensible Stylesheet Language Transformations ) is a cool thing that allows us to transform XML documents into XHTML or XML or text documents. You may not see how a useful tool this is at the first sight but when you use it you come to get to know how useful and powerful tool that is. By the way, I won’t write my own tutorial for XSLT because there are so many great tutorials available in the web and I will just mention some good links ……&lt;br /&gt;                 &lt;br /&gt;                   &lt;a href="http://www.w3schools.com/xsl/"&gt;http://www.w3schools.com/xsl/&lt;/a&gt; ( make sure to go through this )&lt;br /&gt;                   &lt;a href="http://incrementaldevelopment.com/xsltrick/"&gt;http://incrementaldevelopment.com/xsltrick/&lt;/a&gt;&lt;br /&gt;                   &lt;a href="http://www.4serendipity.com/xml/testfiles/xmlexamples.html"&gt;http://www.4serendipity.com/xml/testfiles/xmlexamples.html&lt;/a&gt;&lt;br /&gt;                                       &lt;br /&gt;                    If these links are not working just google “XSLT” , you will get more than enough tutorials and plenty of examples.  &lt;br /&gt;&lt;br /&gt;And as I believe, the best way to learn something is to get a hands in experience by playing with it a little, doing some example, changing some code and looking at what is happening. There was a great tool which allowed me to do these things , so I will mention it also here so that it will be useful if you want to write some XSLT and test them. This a GUI based program which is so easy to use  and free to download  J. It is called XRay2 XML editor. You can download it from here ….&lt;br /&gt;                &lt;br /&gt;                  &lt;a href="http://www.architag.com/xray/"&gt;http://www.architag.com/xray/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Believe me, when you get to know XSLT , you will see so many places where you can apply it . So why wait  ……..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-114848328998313932?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/114848328998313932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=114848328998313932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/114848328998313932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/114848328998313932'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2006/05/xslt.html' title='XSLT'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28662836.post-114847731895370436</id><published>2006-05-24T05:47:00.000-07:00</published><updated>2006-05-24T06:28:38.960-07:00</updated><title type='text'>My First Blog</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7266/3039/1600/knowledge_mainimg06.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/7266/3039/320/knowledge_mainimg06.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Hi Everyone ,&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                  This is my very fisrt blog , so nothing comes to mind at this moment. So let me tell you why I thought of having my own blog. I have learned a lot by reading other peoples blogs  and  what a wonderful idea to share our ideas , experience in a blog like this. So thought I should also contribute what I know, though the scope is so small, for the sake of others. So here I am ...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28662836-114847731895370436?l=www.nandana.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.nandana.org/feeds/114847731895370436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28662836&amp;postID=114847731895370436' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/114847731895370436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28662836/posts/default/114847731895370436'/><link rel='alternate' type='text/html' href='http://www.nandana.org/2006/05/my-first-blog.html' title='My First Blog'/><author><name>Nandana Mihindukulasooriya</name><uri>http://www.blogger.com/profile/02955053760467813288</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://4.bp.blogspot.com/_K3-wXDk_J6Q/TI3dpkY-w2I/AAAAAAAAAZs/rcB6a507vNk/S220/profile2.jpg'/></author><thr:total>4</thr:total></entry></feed>
