<?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-23089790</id><updated>2012-01-19T19:09:38.326+05:30</updated><category term='Terrorist'/><category term='Defence'/><category term='SQL'/><category term='web service application server'/><category term='Article'/><category term='registry'/><category term='Amazon'/><category term='codegen'/><category term='gadget server'/><category term='Workshop'/><category term='measure'/><category term='WSF/Ruby'/><category term='make'/><category term='Sri Lanka'/><category term='app server'/><category term='Blast'/><category term='makefile'/><category term='Flex'/><category term='eclipse'/><category term='PHP Helper Classes'/><category term='mashup'/><category term='bps'/><category term='agile enterprsie'/><category term='xml'/><category term='News Search'/><category term='stratos'/><category term='mysql'/><category term='java'/><category term='dimuthu.org'/><category term='WSF/C'/><category term='webinar'/><category term='WSMessage'/><category term='sequence'/><category term='esb'/><category term='BAM'/><category term='governance as a service'/><category term='Webservices'/><category term='RESTful'/><category term='carbon'/><category term='report'/><category term='Stonehenge'/><category term='WSF/PHP'/><category term='axis2/c'/><category term='WSService'/><category term='release'/><category term='zend'/><category term='New Features'/><category term='OCTET_LENGTH'/><category term='3.0.0'/><category term='WSDL2'/><category term='Interoperability'/><category term='Analytics'/><category term='SOA Governance'/><category term='ec2'/><category term='wsf/c++'/><category term='GaaS'/><category term='G-Reg'/><category term='all'/><category term='Tutorial'/><category term='SEMF'/><category term='Tutorial/Guide'/><category term='SOA'/><category term='WSO2'/><category term='Amazon Web Services'/><category term='blob'/><category term='mashup server'/><category term='WSDL'/><category term='SaaS'/><category term='remote registry'/><category term='eclipse tools'/><category term='business rules'/><category term='WSClient'/><category term='Private'/><category term='services'/><category term='SSL'/><category term='Governace'/><category term='Web Service Framework for PHP'/><category term='Yahoo'/><category term='Cloud'/><category term='WS-*'/><category term='database'/><category term='DataServices'/><category term='wsas'/><category term='new blog'/><category term='ant'/><category term='code first'/><category term='Governance'/><category term='REST'/><category term='writer'/><category term='fopen'/><category term='web services'/><category term='Blogspot'/><category term='axis2c'/><category term='wsdl generation'/><category term='ordered'/><category term='WSDL Generator'/><category term='Google'/><category term='SOAP'/><category term='PHP'/><category term='stream context'/><category term='governance registry'/><category term='dimuthu'/><category term='xml schema'/><category term='PageRank'/><category term='identity'/><category term='Flickr'/><category term='MXML'/><category term='Tools'/><category term='data services'/><category term='wsdl2c'/><category term='buisness activity monitor'/><category term='data'/><category term='WSDL1.1'/><category term='reader'/><title type='text'>Dimuthu's Blog</title><subtitle type='html'>Just using what others shared</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>56</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23089790.post-8312166310789877297</id><published>2010-07-07T18:12:00.000+05:30</published><updated>2011-11-30T02:08:50.707+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>WSO2 Web Services Framework for PHP 2.1.0 Released</title><content type='html'>WSO2 just released a newer version of the popular web services framework for php (WSF/PHP). It has lot of bug fixes + performance improvement.  And it now support PHP 5.3. So you can use wsf/php with the latest php version.&lt;br/&gt;&lt;br/&gt;You can download the new release from &lt;a href="http://wso2.org/downloads/wsf/php"&gt;http://wso2.org/downloads/wsf/php&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-8312166310789877297?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/8312166310789877297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=8312166310789877297' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8312166310789877297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8312166310789877297'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/07/wso2-web-services-framework-for-php-210.html' title='WSO2 Web Services Framework for PHP 2.1.0 Released'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-4488018121832325993</id><published>2010-06-03T16:29:00.000+05:30</published><updated>2011-11-30T02:08:50.638+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='app server'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance Registry'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup server'/><category scheme='http://www.blogger.com/atom/ns#' term='gadget server'/><category scheme='http://www.blogger.com/atom/ns#' term='stratos'/><title type='text'>WSO2 Stratos: WSO2 Brings The Whole SOA Stack to The Cloud</title><content type='html'>WSO2 announced that the SOA stack that they provided as downloadable packages are now available in the cloud as hosted instances with the code name WSO2 Stratos. You can try them out for free from &lt;a href="https://cloud.wso2.com"&gt;https://cloud.wso2.com&lt;/a&gt;. You can register your organization for an account in the WSO2 Stratos by clicking the 'Register' button in the home page. You can find a detail guide on 'How to register for WSO2 Stratos' from Charitha's blog, &lt;a href="http://charithaka.blogspot.com/2010/06/wso2-stratos-introducing-wso2.html"&gt;http://charithaka.blogspot.com/2010/06/wso2-stratos-introducing-wso2.html&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;At the registration, you will be asked to provide a username and password for the admin account. Use this credential to login as admin for the Stratos services and surf through the products. Here is a brief introduction on all the products currently available.&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="https://governance.cloud.wso2.com"&gt;Stratos Governance&lt;/a&gt;: Store and govern your services, wsdls, schemas, policies and other SOA artifacts&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="https://identity.cloud.wso2.com"&gt;Stratos Identity&lt;/a&gt;: Manage user bases, authentication mechanisms, permissions and all the identity aspects of your enterprise.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="https://appserver.cloud.wso2.com"&gt;Stratos Application Server&lt;/a&gt;: Host your web apps, web services and manage their QoS aspects like security, reliability.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="https://gadget.cloud.wso2.com"&gt;Stratos Gadgets Server&lt;/a&gt;: Write and host gadgets complaint with Google gadget standards.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="https://mashup.cloud.wso2.com"&gt;Stratos Mashup Server&lt;/a&gt;: Write mashup using scripting languages like javascript.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="https://bam.cloud.wso2.com"&gt;Stratos Business Activity Monitor&lt;/a&gt;: Monitor activities of your services.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Stratos Enterprise Service Bus: Coming soon with message routing, intermediate message transformations, task scheduling and many more features.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;With this release WSO2 bring complete SOA stack to the cloud, Now your enterprise can enjoy the power of SOA without the hassle of maintaining your own SOA infrastructure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-4488018121832325993?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/4488018121832325993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=4488018121832325993' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4488018121832325993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4488018121832325993'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/06/wso2-stratos-wso2-brings-whole-soa.html' title='WSO2 Stratos: WSO2 Brings The Whole SOA Stack to The Cloud'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-1551315159100237316</id><published>2010-05-19T19:00:00.000+05:30</published><updated>2011-11-30T02:08:50.573+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='webinar'/><category scheme='http://www.blogger.com/atom/ns#' term='zend'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>PHP Web Services: Webinar From WSO2 And Zend</title><content type='html'>WSO2 and Zend jointly present a webinar titling "&lt;a href="http://wso2.org/library/webinars/2010/05/webinar-php-web-services-you-should-care"&gt;PHP Web Services: Why You Should Care&lt;/a&gt;" on 26th of May, 2010. The webinar will mainly focus on the following aspects,&lt;br/&gt;• Understand Web services development best practices&lt;br/&gt;• Discuss Web service myths and pitfalls&lt;br/&gt;• Learn about prominent PHP Web services extensions&lt;br/&gt;• Watch a demo of building Web Services with both the Zend Framework and WSO2 Web Services Framework for PHP.&lt;br/&gt;&lt;br/&gt;You can find more information about the webinar and the link to registration here, &lt;a href="http://wso2.org/library/webinars/2010/05/webinar-php-web-services-you-should-care"&gt;http://wso2.org/library/webinars/2010/05/webinar-php-web-services-you-should-care&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-1551315159100237316?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/1551315159100237316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=1551315159100237316' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1551315159100237316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1551315159100237316'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/05/php-web-services-webinar-from-wso2-and.html' title='PHP Web Services: Webinar From WSO2 And Zend'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-2764840800441140279</id><published>2010-05-05T09:08:00.000+05:30</published><updated>2011-11-30T02:08:50.594+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='reader'/><category scheme='http://www.blogger.com/atom/ns#' term='writer'/><category scheme='http://www.blogger.com/atom/ns#' term='measure'/><title type='text'>Metering Java Reader and Writer Objects</title><content type='html'>Last few days I was working on measuring the bandwidth consumed by different java objects passed to our remote interfaces. It was simple task to do it with 'String' objects, byte arrays as we can directly get the sizes of them using String.length and byte[].size() methods.&lt;br/&gt;&lt;br/&gt;But there were objects of type &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Reader.html"&gt;Reader&lt;/a&gt; and &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Writer.html"&gt;Writer&lt;/a&gt;, which is supposed to transfer big chunk of data. There also we could load all the data to memory and measure the sizes.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// measuring reader size - memory inefficient method&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// read all data to buffer and measure the length&lt;/span&gt;&lt;br/&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AStringReader+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;StringReader&lt;/span&gt;&lt;/a&gt; stringReader = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AStringReader+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;StringReader&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;reader&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; size = stringReader.&lt;span style="color: #006600;"&gt;toString&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;length&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;doRealWork&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;stringReader&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;br/&gt;But that will consume lot of memory (even possible to exceed available heap size). So it is wrong to use the above method to measure the size of reader or writer.&lt;br/&gt;&lt;br/&gt;Anyway there is an easy solution for the problem. We can use the design of Reader API itself to measure it size. The Reader interface has a method that read the data by small chunks. We just need to intercept that call and measure the size of each small chunk and add them all. For that we need to implement the Reader interface in to a custom class (say 'MonitoredReader'). Here is how it is implemented.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #a1a100;"&gt;import java.io.IOException;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #a1a100;"&gt;import java.io.Reader;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt; * The class to intercept the read method and calculate&lt;br/&gt; * the number of reads&lt;br/&gt; */&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; MonitoredReader &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AReader+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Reader&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AReader+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Reader&lt;/span&gt;&lt;/a&gt; reader;&lt;br/&gt;    &lt;span style="color: #993333;"&gt;int&lt;/span&gt; totalReadSize;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * constructor that wraps the original reader object&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; MonitoredReader&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AReader+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Reader&lt;/span&gt;&lt;/a&gt; reader&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: #006600;"&gt;reader&lt;/span&gt; = reader;&lt;br/&gt;        totalReadSize = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * The method to call by the user to read the data. We will just calculate the amount&lt;br/&gt;     * of data read here.&lt;br/&gt;     *&lt;br/&gt;     * @param cBuf destination buffer&lt;br/&gt;     * @param off  offset at which to start storing characters&lt;br/&gt;     * @param len  maximum number of characters to read&lt;br/&gt;     *&lt;br/&gt;     * @return the number of characters read, or -1 if the end of the stream has been reached&lt;br/&gt;     * @throws IOException if an I/O error occurs&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; read&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #993333;"&gt;char&lt;/span&gt; cbuf&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt;, &lt;span style="color: #993333;"&gt;int&lt;/span&gt; off, &lt;span style="color: #993333;"&gt;int&lt;/span&gt; len&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;throws&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AIOException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #993333;"&gt;int&lt;/span&gt; read = reader.&lt;span style="color: #006600;"&gt;read&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;cbuf, off, len&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        totalReadSize += read;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; read;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * Method to call after finishing reading the data. We will just pass the call to the&lt;br/&gt;     * original reader&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; close&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;throws&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AIOException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        reader.&lt;span style="color: #006600;"&gt;close&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * Custom method that will return the total size of read data&lt;br/&gt;     *&lt;br/&gt;     * @return the size of the data read&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; getTotalReadSize&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; totalReadSize;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;So our code to measure the size will simple reduce to the following piece of code.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// measuring reader size - memory efficient method&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// just wrap the original reader with our custom reader&lt;/span&gt;&lt;br/&gt;MonitoredReader monitoredReader = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; MonitoredReader&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;reader&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// pass our custom reader to the real work&lt;/span&gt;&lt;br/&gt;doRealWork&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;monitoredReader&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// get the size read in the real work&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; size = monitoredReader.&lt;span style="color: #006600;"&gt;getTotalReadSize&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;br/&gt;Similarly we can use this method to get the data size of the writer. (amount of data written to the writer).&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #a1a100;"&gt;import java.io.IOException;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #a1a100;"&gt;import java.io.Writer;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt; * The class to intercept the write method and calculate&lt;br/&gt; * the number of writes&lt;br/&gt; */&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; MonitoredWriter &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AWriter+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Writer&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AWriter+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Writer&lt;/span&gt;&lt;/a&gt; writer;&lt;br/&gt;    &lt;span style="color: #993333;"&gt;int&lt;/span&gt; totalWrittenSize;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * constructor that wraps the original writer object&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; MonitoredWriter&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AWriter+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Writer&lt;/span&gt;&lt;/a&gt; writer&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: #006600;"&gt;writer&lt;/span&gt; = writer;&lt;br/&gt;        totalWrittenSize = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * The method to call by the user to write the data. We will just calculate the amount&lt;br/&gt;     * of data written here.&lt;br/&gt;     *&lt;br/&gt;     * @param  cBuf  Array of characters&lt;br/&gt;     * @param  off   Offset from which to start writing characters&lt;br/&gt;     * @param  len   Number of characters to write&lt;br/&gt;     *&lt;br/&gt;     * @throws java.io.IOException  If an I/O error occurs&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; write&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #993333;"&gt;char&lt;/span&gt; cbuf&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt;, &lt;span style="color: #993333;"&gt;int&lt;/span&gt; off, &lt;span style="color: #993333;"&gt;int&lt;/span&gt; len&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;throws&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AIOException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        totalWrittenSize += &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;len - off&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        writer.&lt;span style="color: #006600;"&gt;write&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;cbuf, off, len&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * Method to call after finishing writing the data. We will just pass the call to the&lt;br/&gt;     * original writer&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; close&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;throws&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AIOException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        writer.&lt;span style="color: #006600;"&gt;close&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * flush already written data. Here also we just pass the call to the original writer&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; flush&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;throws&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AIOException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;IOException&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        writer.&lt;span style="color: #006600;"&gt;flush&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;/**&lt;br/&gt;     * Custom method that will return the total size of written data&lt;br/&gt;     *&lt;br/&gt;     * @return the size of the data written&lt;br/&gt;     */&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; getTotalWrittenSize&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; totalWrittenSize;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;Here is how it is used in measuring the writer size.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// measuring writer size - memory efficient method&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// just wrap the original writer with our custom writer&lt;/span&gt;&lt;br/&gt;MonitoredWriter monitoredWriter = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; MonitoredWriter&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;writer&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// pass our custom wrter to the real work&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;doRealWork&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;monitoredWriter&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;// get the size written in the real work&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; size = monitoredWriter.&lt;span style="color: #006600;"&gt;getTotalWrittenSize&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;br/&gt;Anyway like every good methods, there are drawbacks of using these methods to measure the data size on Reader and Writer objects.&lt;br/&gt;&lt;br/&gt;If we take measuring the bandwidth consumed by a reader in a remote interface, this gives a slightly low value because this particular code only provide the size of the data read by the end user application and not by the network hardware layers. But actually these low layers read more data and keep it in a buffer which is not measured here. But if we assume that most of the time the end user application read all the data from the reader (and very rarely read portion of data and give up), this give nearly accurate value.&lt;br/&gt;&lt;br/&gt;The other drawback could be the performance degradation  by wrapping the reader/writer with our custom implementation. But mostly reader and writers are used in IO bound operations (like to read through network or files), so going through an another layer does really little effect to the overall performance. And after all the 'Observer effect theory' says we can't measure anything without causing any effect to the actual cause...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-2764840800441140279?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/2764840800441140279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=2764840800441140279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/2764840800441140279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/2764840800441140279'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/05/metering-java-reader-and-writer-objects.html' title='Metering Java Reader and Writer Objects'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-8804522573767543675</id><published>2010-05-03T09:32:00.000+05:30</published><updated>2011-11-30T02:08:50.716+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='web service application server'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='wsas'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='governance registry'/><title type='text'>WSO2 Governance Registry, WSO2 Identity Server, WSO2 ESB, WSO2 Web
Service Application Server Released</title><content type='html'>WSO2 has released new versions of their SOA platform products including &lt;a href="http://wso2.org/projects/governance-registry"&gt;WSO2 Governance Registry&lt;/a&gt;, &lt;a href="http://wso2.org/projects/identity"&gt;WSO2 Identity Server&lt;/a&gt;, &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt;, &lt;a href="http://wso2.org/projects/wsas/java"&gt;WSO2 Web Service Application Server&lt;/a&gt;. This is a major version upgrade of these products introducing many features.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://wso2.org/projects/esb/java"&gt;ESB&lt;/a&gt;:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Priority based mediation through priority executors&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;WS-Discovery support and dynamic endpoint discovery&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Message Relay for efficient pass through of messages&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Component manager to install and uninstall features (provisioning support)&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Common Internet File System (CIFS) support through the VFS transport&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;File locking functionality in the VFS transport to support concurrent polling&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Smooks mediator for efficient message transformation&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Enrich mediator for smart message manipulation&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;OAuth mediator for 2-legged OAuth support&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Default endpoint UI&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Hot deploy and hot update configuration elements (sequences, endpoints, proxy services etc)&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Transport level statistics collection and monitoring&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;POX security support&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Dependency detection and alerting for mediation configuration elements&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Mediation statistics API and custom mediation statistics consumers&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Multiple certificate/identity support in the NHTTP transport sender&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Improved logging capabilities for the NHTTP transport&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Templates based proxy service development in the UI&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Dashboard to monitor server environment and runtime&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Easy creation and management capabilities for dynamic sequences and endpoints&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Pagination to service management, endpoint management and sequence management UIs&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Obtaining resources like WSDL's through web proxy servers&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://wso2.org/projects/governance-registry"&gt;Governance Registry&lt;/a&gt;&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Gadgets for impact analysis on services and registry resources&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;WSDL custom view&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Dynamic Handler configuration&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Handler simulator&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Tree-based Resource view&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;API to govern SOA artifacts&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Complete Web Services API for Registry&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Improved options for Service discovery&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;WS-Discovery support&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Scripting support for lifecycle management&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Improved P2 based provisioning and feature management support&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Support for adding remote mounts&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Platform, and Group/Cluster based deployment model&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Support for multiple server instances&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;E-mail verification for subscriptions&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Support for deleting tags and comments&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Support for PostgreSQL and DB2 DBMS&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Paged activity and resource search&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Hierarchical permission model with granular and extensible permissions&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Ability to upload metadata (in addition to importing)&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Governance Archive for uploading WSDLs and Schemas with imports&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Ability to update resource content by uploading&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Rich text editor for editing text resources&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;XML editor for editing handler, lifecycle and service UI configurations&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://wso2.org/projects/wsas/java"&gt;Web Service Application Server&lt;/a&gt; (WSO2 WSAS):&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Component Manager - The UI tool to install/uninstall Carbon featrues.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Various bug fixes &amp;amp; enhancements including architectural improvements         to Apache Axis2, Apache Rampart, Apache Sandesha2         , WSO2 Carbon &amp;amp; other projects.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Equinox P2 based provisioning support -         extend your WSAS instance by installin new P2 features. See         &lt;a href="https://wso2.org/wiki/display/carbon/p2-based-provisioning-support"&gt; P2 based provisioning in WSO2 Carbon &lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Hierarchical service support for Axis2 services, JAX-WS services, Spring         services &amp;amp; Jar services&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Report generation for deployed services&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://wso2.org/projects/identity"&gt;Identity Server&lt;/a&gt;:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;SAML 2.0 based Single Sign-on support&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;OAuth Support&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Support for bulk-user import&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Various bug fixes and enhancements including architectural improvements to Apache Axis2, Apache Rampart, Apache Sandesha2 , WSO2 Carbon and other projects.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-8804522573767543675?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/8804522573767543675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=8804522573767543675' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8804522573767543675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8804522573767543675'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/05/wso2-governance-registry-wso2-identity.html' title='WSO2 Governance Registry, WSO2 Identity Server, WSO2 ESB, WSO2 Web&#xA;Service Application Server Released'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-7546862101115562613</id><published>2010-02-03T07:33:00.000+05:30</published><updated>2011-11-30T02:08:50.697+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='BAM'/><category scheme='http://www.blogger.com/atom/ns#' term='agile enterprsie'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='buisness activity monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='webinar'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='report'/><title type='text'>Webinar: WSO2 Business Activity Monitor for Agile Enterprises</title><content type='html'>&lt;a href="http://samisa-abeysinghe.blogspot.com"&gt;Samisa Abeysinghe&lt;/a&gt;, the directory of engineering at WSO2 will present a &lt;a href="http://wso2.org/library/webinars/02-03-2010-webinar-building-agile-enterprise-business-activity-monitoring/?otbdate=22110"&gt;webinar on Building an Agile Enterprise With Business Activity Monitoring&lt;/a&gt; today (3rd February 2010).&lt;br/&gt;&lt;br/&gt;There he will provide an overview of &lt;a href="http://wso2.org/projects/bam"&gt;WSO2 Business Activity Monitor (WSO2 BAM)&lt;/a&gt;, the latest product from the WSO2 Carbon platform, including its built-in dashboard to view analytics , reports of past and present activities of the enterprise SOA infrastructure and how these information can be used in tactical and strategic decision making.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-7546862101115562613?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/7546862101115562613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=7546862101115562613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7546862101115562613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7546862101115562613'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/02/webinar-wso2-business-activity-monitor.html' title='Webinar: WSO2 Business Activity Monitor for Agile Enterprises'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-8582151321928025634</id><published>2010-01-11T22:06:00.000+05:30</published><updated>2011-11-30T02:08:50.712+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='governance as a service'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='GaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='governance registry'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='remote registry'/><title type='text'>Access WSO2 Governance as a Service From Remote Registry</title><content type='html'>&lt;a href="http://governance.cloud.wso2.com"&gt;WSO2 Governance as a Service&lt;/a&gt; is a hosted instance of &lt;a href="http://wso2.org/projects/governance-registry"&gt;WSO2 Governance Registry&lt;/a&gt; with multi-tenant support. WSO2 Governance as a Service provide you almost all the functionalities provided with the Governance Registry targeting the enterprise SOA governance, same time it provides all the advantages  inherent with the Software as a Service model.&lt;br/&gt;&lt;br/&gt;Here I'm talking about how to use a popular feature available in Governance Registry, inside WSO2 Governance as a Service. i.e. &lt;a href="http://wso2.org/project/registry/3.0.2/docs/developer_guide/remote_registry_client.html"&gt;Remote Registry Client&lt;/a&gt;. With Remote Registry Client, you can access the resources in registry programatically. It uses atom/pub protocol to communicate with the registry server.&lt;br/&gt;&lt;br/&gt;Here is an example of using Remote Registry Client. I assumed I have an account with domain name 'example.com' with a user name 'example_user' ('example_password'). You have to change this to valid values before running this code, You can create an account in Governance as a Service freely for a limited use.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #a1a100;"&gt;import java.net.URL;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #a1a100;"&gt;import org.wso2.carbon.registry.core.Registry;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #a1a100;"&gt;import org.wso2.carbon.registry.core.Resource;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #a1a100;"&gt;import org.wso2.carbon.registry.app.RemoteRegistry;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; RegistryDemo &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; main&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt; args&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;throws&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Exception&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #808080; font-style: italic;"&gt;// calls the registry with the authentication information&lt;/span&gt;&lt;br/&gt;        callRemoteRegistry&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"http://governance.cloud.wso2.com/registry"&lt;/span&gt;,&lt;br/&gt;                   &lt;span style="color: #ff0000;"&gt;"example_username@example.com"&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;"example_password"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; callRemoteRegistry&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; url, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; username,&lt;br/&gt;                       &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; password&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;throws&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Exception&lt;/span&gt;&lt;/a&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ARegistry+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Registry&lt;/span&gt;&lt;/a&gt; myRegistry = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; RemoteRegistry&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AURL+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;URL&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;url&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;, username, password&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;!myRegistry.&lt;span style="color: #006600;"&gt;resourceExists&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"/demoResource"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;            Resource r = myRegistry.&lt;span style="color: #006600;"&gt;newResource&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;            r.&lt;span style="color: #006600;"&gt;setContent&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"demo content"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;            myRegistry.&lt;span style="color: #006600;"&gt;put&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"/demoResource"&lt;/span&gt;, r&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        Resource r = myRegistry.&lt;span style="color: #006600;"&gt;get&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"/demoResource"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #993333;"&gt;byte&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt; contentBytes = &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #993333;"&gt;byte&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;r.&lt;span style="color: #006600;"&gt;getContent&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; content = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;contentBytes&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ASystem+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;out&lt;/span&gt;.&lt;span style="color: #006600;"&gt;println&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"Content: "&lt;/span&gt; + content&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-8582151321928025634?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/8582151321928025634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=8582151321928025634' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8582151321928025634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8582151321928025634'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/01/access-wso2-governance-as-service-from.html' title='Access WSO2 Governance as a Service From Remote Registry'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-8003792493184360114</id><published>2010-01-10T18:36:00.000+05:30</published><updated>2011-11-30T02:08:50.702+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='makefile'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='make'/><title type='text'>Make vs Ant</title><content type='html'>Ant was developed mainly to run java programs, so it is good at building and running java programs. But you can use the good all Make program to build and even run java programs.&lt;br/&gt;&lt;br/&gt;Say I have an ant file that will&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;	&lt;li&gt;Clean the build - ant clean&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Compile - ant compile&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Make a Jar - ant jar&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Run - ant run or simply ant&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;For this, I will only compile one java file name src/test/HelloWorld.java&lt;br/&gt;&lt;pre&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;project&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"HelloWorld"&lt;/span&gt; &lt;span style="color: #000066;"&gt;basedir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"."&lt;/span&gt; &lt;span style="color: #000066;"&gt;default&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"main"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"src.dir"&lt;/span&gt;     &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"src"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"build.dir"&lt;/span&gt;   &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"build"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"classes.dir"&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${build.dir}/classes"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"jar.dir"&lt;/span&gt;     &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${build.dir}/jar"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"main-class"&lt;/span&gt;  &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"test.HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"clean"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;delete&lt;/span&gt; &lt;span style="color: #000066;"&gt;dir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${build.dir}"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/target&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"compile"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color: #000066;"&gt;dir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${classes.dir}"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;javac&lt;/span&gt; &lt;span style="color: #000066;"&gt;srcdir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${src.dir}"&lt;/span&gt; &lt;span style="color: #000066;"&gt;destdir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${classes.dir}"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/target&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"jar"&lt;/span&gt; &lt;span style="color: #000066;"&gt;depends&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"compile"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;mkdir&lt;/span&gt; &lt;span style="color: #000066;"&gt;dir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${jar.dir}"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jar&lt;/span&gt; &lt;span style="color: #000066;"&gt;destfile&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${jar.dir}/${ant.project.name}.jar"&lt;/span&gt; &lt;span style="color: #000066;"&gt;basedir&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${classes.dir}"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;            &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;manifest&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;                &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;attribute&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"Main-Class"&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${main-class}"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;            &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/manifest&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jar&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/target&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"run"&lt;/span&gt; &lt;span style="color: #000066;"&gt;depends&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"jar"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;java&lt;/span&gt; &lt;span style="color: #000066;"&gt;jar&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"${jar.dir}/${ant.project.name}.jar"&lt;/span&gt; &lt;span style="color: #000066;"&gt;fork&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"true"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/target&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"clean-build"&lt;/span&gt; &lt;span style="color: #000066;"&gt;depends&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"clean,jar"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;target&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"main"&lt;/span&gt; &lt;span style="color: #000066;"&gt;depends&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"clean,run"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/project&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;If you want to learn what each line of this means, just follow the excellent ant tutorial at &lt;a href="http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html"&gt;http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Here is the Makefile that will do the above tasks,&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #007800;"&gt;SRC_DIR=&lt;/span&gt;src&lt;br/&gt;&lt;span style="color: #007800;"&gt;BUILD_DIR=&lt;/span&gt;build&lt;br/&gt;&lt;span style="color: #007800;"&gt;CLASSES_DIR=&lt;/span&gt;$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;BUILD_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/classes&lt;br/&gt;&lt;span style="color: #007800;"&gt;JAR_DIR=&lt;/span&gt;$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;BUILD_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/jar&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #007800;"&gt;PROJECT=&lt;/span&gt;HelloWorld&lt;br/&gt;&lt;span style="color: #007800;"&gt;MAIN_CLASS=&lt;/span&gt;test.HelloWorld&lt;br/&gt;&lt;span style="color: #007800;"&gt;PACKAGE=&lt;/span&gt;test&lt;br/&gt; &lt;br/&gt;run: clean jar&lt;br/&gt;        java -jar $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;JAR_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;PROJECT&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;.jar&lt;br/&gt; &lt;br/&gt;&lt;br/&gt;jar: $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;JAR_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;PROJECT&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;.jar&lt;br/&gt; &lt;br/&gt;$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;JAR_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;PROJECT&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;.jar: $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;CLASSES_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;PACKAGE&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/*.class&lt;br/&gt;        &lt;span style="color: #7a0874; font-weight: bold;"&gt;echo&lt;/span&gt; Main-Class: $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;MAIN_CLASS&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&amp;gt; mf&lt;br/&gt;        &lt;span style="color: #7a0874; font-weight: bold;"&gt;test&lt;/span&gt; -d $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;JAR_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; | &lt;span style="color: #c20cb9; font-weight: bold;"&gt;mkdir&lt;/span&gt; -p $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;JAR_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        jar cfm $@ mf -C $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;CLASSES_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; .&lt;br/&gt; &lt;br/&gt;compile: $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;CLASSES_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;PACKAGE&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/*.class&lt;br/&gt;&lt;br/&gt; &lt;br/&gt;$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;CLASSES_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;PACKAGE&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/%.class: &lt;span style="color: #007800;"&gt;$&lt;span style="color: #7a0874; font-weight: bold;"&gt;{&lt;/span&gt;SRC_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;/$&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;PACKAGE&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;/*.java&lt;br/&gt;        &lt;span style="color: #7a0874; font-weight: bold;"&gt;test&lt;/span&gt; -d $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;CLASSES_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt; | &lt;span style="color: #c20cb9; font-weight: bold;"&gt;mkdir&lt;/span&gt; -p $&lt;span style="color: #7a0874; font-weight: bold;"&gt;(&lt;/span&gt;CLASSES_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        javac -sourcepath src -d &lt;span style="color: #007800;"&gt;$&lt;span style="color: #7a0874; font-weight: bold;"&gt;{&lt;/span&gt;CLASSES_DIR&lt;span style="color: #7a0874; font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt; $&amp;lt;&lt;br/&gt; &lt;br/&gt;clean:&lt;br/&gt;        &lt;span style="color: #c20cb9; font-weight: bold;"&gt;rm&lt;/span&gt; -rf build mf&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;You may notice I had to provide the package name to the compile command, as it doesn't have a proper wildcards to represent the jar. Similar to ant all these make tasks will execute only if it is required. i.e. for an example if all the .class files are up to date with .java it will not try to recompile it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-8003792493184360114?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/8003792493184360114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=8003792493184360114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8003792493184360114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8003792493184360114'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/01/make-vs-ant.html' title='Make vs Ant'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-1739097477836579824</id><published>2010-01-08T07:35:00.000+05:30</published><updated>2011-11-30T02:08:50.580+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml schema'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='wsdl generation'/><category scheme='http://www.blogger.com/atom/ns#' term='code first'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial/Guide'/><title type='text'>WSF/PHP Code First Approach: Returning an Array of String</title><content type='html'>Here is a problem that many people have asked me how to do it. "Returning an array of string" with the code first approach. The API or WSDL generation annotation guide, &lt;a href="http://wso2.org/project/wsf/php/2.0.0/docs/wsdl_generation_api.html"&gt;http://wso2.org/project/wsf/php/2.0.0/docs/wsdl_generation_api.html&lt;/a&gt; contain all the things required in details. Here is an example of a service that return an array of string.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;/** splitMe function&lt;br/&gt; * @param string $string_to_split string to split&lt;br/&gt; * (maps to the xs:string XML schema type )&lt;br/&gt; * @return array of string $result split to array&lt;br/&gt; *(maps to the xs:double XML schema type )&lt;br/&gt; */&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; splitMe&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$string_to_split&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"result"&lt;/span&gt; =&amp;gt; &lt;a href="http://www.php.net/split"&gt;&lt;span style="color: #000066;"&gt;split&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;":"&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$string_to_split&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;$operations&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"splitMe"&lt;/span&gt;=&amp;gt;&lt;span style="color: #ff0000;"&gt;"splitMe"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;$opParams&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"splitMe"&lt;/span&gt;=&amp;gt;&lt;span style="color: #ff0000;"&gt;"MIXED"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;$svr&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; WSService&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"operations"&lt;/span&gt;=&amp;gt;&lt;span style="color: #0000ff;"&gt;$operations&lt;/span&gt;,&lt;br/&gt;                           &lt;span style="color: #ff0000;"&gt;"bindingStyle"&lt;/span&gt;=&amp;gt;&lt;span style="color: #ff0000;"&gt;"doclit"&lt;/span&gt;,&lt;br/&gt;                           &lt;span style="color: #ff0000;"&gt;"opParams"&lt;/span&gt;=&amp;gt;&lt;span style="color: #0000ff;"&gt;$opParams&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;$svr&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;reply&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;Note that the annotation corresponding to the return value.&lt;br/&gt;&lt;pre&gt; * @return array of spring $result split to array&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;This will generate an schema with an element of maxOccurs='unbounded'. Note that you can get the wsdl from the 'serviceurl?wsdl'.&lt;br/&gt;&lt;pre&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"splitMeResponse"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;xsd:complexType&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;xsd:sequence&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;            &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"result"&lt;/span&gt; &lt;span style="color: #000066;"&gt;maxOccurs&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"unbounded"&lt;/span&gt; &lt;span style="color: #000066;"&gt;type&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"xsd:string"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/xsd:sequence&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/xsd:complexType&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/xsd:element&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;Now just generate a client for this service using wsdl2php and try invoke it. You will get an array of string as the response.&lt;br/&gt;&lt;pre&gt;    &lt;span style="color: #0000ff;"&gt;$input&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; splitMe&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;$input&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;string_to_split&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;"a:b:c:d"&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt; &lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;// call the operation&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;$response&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$proxy&lt;/span&gt;-&amp;gt;&lt;span style="color: #006600;"&gt;splitMe&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$input&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;a href="http://www.php.net/print_r"&gt;&lt;span style="color: #000066;"&gt;print_r&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$response&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&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/23089790-1739097477836579824?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/1739097477836579824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=1739097477836579824' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1739097477836579824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1739097477836579824'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/01/wsfphp-code-first-approach-returning.html' title='WSF/PHP Code First Approach: Returning an Array of String'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-1922416357459469642</id><published>2010-01-07T09:22:00.000+05:30</published><updated>2011-11-30T02:08:50.589+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='business rules'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial/Guide'/><title type='text'>Writing Business Rules in WSO2 Carbon Platform</title><content type='html'>If you want to write rules in a Java program you have lot of choices. You can use a &lt;a href="http://java-source.net/open-source/rule-engines"&gt;third party library&lt;/a&gt; like Drools or use the JAVA built-in JSR-94 reference implementation. In &lt;a href="http://wso2.org"&gt;WSO2&lt;/a&gt; Carbon, there is a component that abstract the behaviour of different rule engine and give you a unified API. Currently it has plugged into Drools and JAVA built-in JSR-94 implementation.&lt;br/&gt;&lt;br/&gt;The rule component in WSO2 Carbon platform mainly used by &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; product to mediate messages according to the given business rules. But the component is written to facilitate any requirement of using business rules in WSO2 Carbon platform. I had such a requirement in past few days and manage to use the rule component easily with the help of the component author, indika@wso2.com. So I thought it is worth sharing my experience in here.&lt;br/&gt;&lt;br/&gt;Here You will be preparing the following stuff.&lt;br/&gt;&lt;br/&gt;1. Rule configuration -&lt;br/&gt;&lt;br/&gt;We can use this to provide the information about the rule implementation we are going to use, the rules (You can write rules inline or provide a reference to an external file) and the input and output adapter information.&lt;br/&gt;&lt;pre&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;configuration&lt;/span&gt; &lt;span style="color: #000066;"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"http://www.wso2.org/products/rule/drools"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;executionSet&lt;/span&gt; &lt;span style="color: #000066;"&gt;uri&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"simpleItemRuleXML"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;source&lt;/span&gt; &lt;span style="color: #000066;"&gt;key&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"file:src/test/resources/rules/simple-rules.drl"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;lt;!-- &amp;lt;source&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;x&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #339933;"&gt;&amp;lt;![CDATA[&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #339933;"&gt; rule InvokeABC&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #339933;"&gt; // rules inbuilt to the rule conf&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #339933;"&gt; end&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #339933;"&gt; ]]&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/x&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/source&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; --&amp;gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;creation&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;property&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"source"&lt;/span&gt; &lt;span style="color: #000066;"&gt;value&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"drl"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/creation&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/executionSet&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;session&lt;/span&gt; &lt;span style="color: #000066;"&gt;type&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"stateless"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;input&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"facts"&lt;/span&gt; &lt;span style="color: #000066;"&gt;type&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"itemData"&lt;/span&gt; &lt;span style="color: #000066;"&gt;key&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"dataContext"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/input&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;output&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"results"&lt;/span&gt; &lt;span style="color: #000066;"&gt;type&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"itemData"&lt;/span&gt; &lt;span style="color: #000066;"&gt;key&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;"dataContext"&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/output&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/configuration&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;2. The Rules  -&lt;br/&gt;&lt;br/&gt;You can write rules inline in the above configuration or put it in a file and refer it from a key which can be refered from the ResourceHelper (described below).&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #a1a100;"&gt;import java.util.Calendar;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;rule YearEndDiscount&lt;br/&gt;when&lt;br/&gt;$item : org.&lt;span style="color: #006600;"&gt;test&lt;/span&gt;.&lt;span style="color: #006600;"&gt;pojo&lt;/span&gt;.&lt;span style="color: #006600;"&gt;SimpleItem&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;price &amp;gt; &lt;span style="color: #cc66cc;"&gt;100&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;then&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ACalendar+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Calendar&lt;/span&gt;&lt;/a&gt; calendar = &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ACalendar+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Calendar&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;getInstance&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;calendar.&lt;span style="color: #006600;"&gt;get&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ACalendar+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Calendar&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;MONTH&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; == &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ACalendar+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Calendar&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;JANUARY&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;$item.&lt;span style="color: #006600;"&gt;setPrice&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;$item.&lt;span style="color: #006600;"&gt;getPrice&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; * &lt;span style="color: #cc66cc;"&gt;80&lt;/span&gt;/&lt;span style="color: #cc66cc;"&gt;100&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;end&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;3. Data Context -&lt;br/&gt;&lt;br/&gt;The context object that can be used to feed and retrieve data from and to rule engine. Here is the data context for my application.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; SimpleDataContext &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; List&amp;lt;NameValuePair&amp;gt; getInput&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #808080; font-style: italic;"&gt;// in reality the data will be retrieve from a database or some datasource &lt;/span&gt;&lt;br/&gt;        List&amp;lt;NameValuePair&amp;gt; itemPairList = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; ArrayList&amp;lt;NameValuePair&amp;gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        SimpleItem item1 = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; SimpleItem&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        item1.&lt;span style="color: #006600;"&gt;setName&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"item1"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        item1.&lt;span style="color: #006600;"&gt;setPrice&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;50&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        itemPairList.&lt;span style="color: #006600;"&gt;add&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ANameValuePair+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;NameValuePair&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;item1.&lt;span style="color: #006600;"&gt;getName&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;, item1&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;        SimpleItem item2 = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; SimpleItem&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        item2.&lt;span style="color: #006600;"&gt;setName&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"item2"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        item2.&lt;span style="color: #006600;"&gt;setPrice&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;120&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        itemPairList.&lt;span style="color: #006600;"&gt;add&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ANameValuePair+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;NameValuePair&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;item2.&lt;span style="color: #006600;"&gt;getName&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;, item2&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;        SimpleItem item3 = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; SimpleItem&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        item3.&lt;span style="color: #006600;"&gt;setName&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"item3"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        item3.&lt;span style="color: #006600;"&gt;setPrice&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;130&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        itemPairList.&lt;span style="color: #006600;"&gt;add&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ANameValuePair+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;NameValuePair&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;item3.&lt;span style="color: #006600;"&gt;getName&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;, item3&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; itemPairList;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; setResult&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AObject+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Object&lt;/span&gt;&lt;/a&gt; result&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;!&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;result &lt;span style="color: #000000; font-weight: bold;"&gt;instanceof&lt;/span&gt; SimpleItem&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;            &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ASystem+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;out&lt;/span&gt;.&lt;span style="color: #006600;"&gt;println&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"it is not a SimpleItem"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        SimpleItem item = &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;SimpleItem&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;result;&lt;br/&gt;        &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ASystem+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;out&lt;/span&gt;.&lt;span style="color: #006600;"&gt;println&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"Item: "&lt;/span&gt; + item.&lt;span style="color: #006600;"&gt;getName&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; + &lt;span style="color: #ff0000;"&gt;", Price: "&lt;/span&gt; + item.&lt;span style="color: #006600;"&gt;getPrice&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;And the Item I'm going to manipulate using rule is a simple bean like this,&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; SimpleItem &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;    &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; name;&lt;br/&gt;    &lt;span style="color: #993333;"&gt;int&lt;/span&gt; price;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; getName&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; name;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; setName&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; name&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: #006600;"&gt;name&lt;/span&gt; = name;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; getPrice&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; price;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; setPrice&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; price&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: #006600;"&gt;price&lt;/span&gt; = price;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;4. Data Adapter&lt;br/&gt;&lt;br/&gt;You have to adapt the input and output with the rule engine. Mostly here you only have to wrap the data context. The advantage of having the data adapter is, a data adapter always associated with a input/output type. So in the rule configuration I can provide the type for the input and output. If you see my rule configuration above, you see the input/output type is marked as "ItemData".  Here is my custom data adapter that is associated with the "itemData" type.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; SimpleDataAdapter &lt;span style="color: #000000; font-weight: bold;"&gt;implements&lt;/span&gt;&lt;br/&gt;        ResourceAdapter, InputAdaptable, OutputAdaptable &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;// the type associated with the adapter&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;final&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;static&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; TYPE = &lt;span style="color: #ff0000;"&gt;"itemData"&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; getType&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; TYPE;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AObject+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Object&lt;/span&gt;&lt;/a&gt; adaptInput&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;ResourceDescription resourceDescription, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AObject+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Object&lt;/span&gt;&lt;/a&gt; tobeadapted&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;!&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;tobeadapted &lt;span style="color: #000000; font-weight: bold;"&gt;instanceof&lt;/span&gt; SimpleDataContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;            &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        SimpleDataContext dataContext = &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;SimpleDataContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;tobeadapted;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; dataContext.&lt;span style="color: #006600;"&gt;getInput&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;boolean&lt;/span&gt; adaptOutput&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;ResourceDescription description,&lt;br/&gt;                               &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AObject+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Object&lt;/span&gt;&lt;/a&gt; value,&lt;br/&gt;                               &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AObject+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Object&lt;/span&gt;&lt;/a&gt; context,&lt;br/&gt;                               ResourceHelper resourceHelper&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;!&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;context &lt;span style="color: #000000; font-weight: bold;"&gt;instanceof&lt;/span&gt; SimpleDataContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;            &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;SimpleDataContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;context&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;setResult&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;value&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;boolean&lt;/span&gt; canAdapt&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;ResourceDescription description, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AObject+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Object&lt;/span&gt;&lt;/a&gt; ouptput&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;        &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; key = description.&lt;span style="color: #006600;"&gt;getKey&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; key != &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span style="color: #ff0000;"&gt;""&lt;/span&gt;.&lt;span style="color: #006600;"&gt;equals&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;key&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;5. Resource Helper&lt;br/&gt;&lt;br/&gt;Resource Helper will map the keys refered from the configuration to JAVA objects. This is mostly used in mediation rule configurations which can extract the message data using a key or an xpath. In this example, we don't have much keys refering from the configuration only the rule file and the data context.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; SimpleResourceHelper &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; ResourceHelper &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; ReturnValue findByKey&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; key, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AObject+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Object&lt;/span&gt;&lt;/a&gt; source, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AObject+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Object&lt;/span&gt;&lt;/a&gt; defaultValue&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;!&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;source &lt;span style="color: #000000; font-weight: bold;"&gt;instanceof&lt;/span&gt; SimpleDataContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;            &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; ReturnValue&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;defaultValue&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;        SimpleDataContext dataContext = &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;SimpleDataContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;source;&lt;br/&gt;        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;key.&lt;span style="color: #006600;"&gt;startsWith&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"file:"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;            &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; filename = key.&lt;span style="color: #006600;"&gt;substring&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"file:"&lt;/span&gt;.&lt;span style="color: #006600;"&gt;length&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;            &lt;span style="color: #000000; font-weight: bold;"&gt;try&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;                &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ABufferedInputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;BufferedInputStream&lt;/span&gt;&lt;/a&gt; in = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ABufferedInputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;BufferedInputStream&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AFileInputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;FileInputStream&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;filename&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;                &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; ReturnValue&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;in&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;            &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;catch&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Exception&lt;/span&gt;&lt;/a&gt; e&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;                &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; ReturnValue&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;defaultValue&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;            &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;key.&lt;span style="color: #006600;"&gt;startsWith&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"dataContext"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;            &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; ReturnValue&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;dataContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; ReturnValue&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;defaultValue&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;// there are few more methods to be implemented, which can just leave not implemented for this example&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;That is all the accessories. Now you will be able to write the rule engine execution code.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;File&lt;/span&gt; ruleConfigFile = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AFile+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;File&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;ruleConfigFilename&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;XMLStreamReader parser = XMLInputFactory.&lt;span style="color: #006600;"&gt;newInstance&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;createXMLStreamReader&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AFileInputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;FileInputStream&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;ruleConfigFile&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;//create the builder&lt;/span&gt;&lt;br/&gt;StAXOMBuilder builder = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; StAXOMBuilder&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;parser&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #808080; font-style: italic;"&gt;//get the root element (in this case the envelope)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;OMElement ruleConfig =  builder.&lt;span style="color: #006600;"&gt;getDocumentElement&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;EngineConfiguration configuration =&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; EngineConfigurationFactory&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;.&lt;span style="color: #006600;"&gt;create&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;ruleConfig, &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; AXIOMXPathFactory&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;EngineController&lt;br/&gt;        engineController = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; EngineController&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;configuration, &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; SimpleResourceHelper&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;        &lt;span style="color: #000000; font-weight: bold;"&gt;final&lt;/span&gt; ResourceAdapterFactory factory = ResourceAdapterFactory.&lt;span style="color: #006600;"&gt;getInstance&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;ResourceAdapter adapter = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; SimpleDataAdapter&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; adapterType = adapter.&lt;span style="color: #006600;"&gt;getType&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;!factory.&lt;span style="color: #006600;"&gt;containsResourceAdapter&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;adapterType&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    factory.&lt;span style="color: #006600;"&gt;addResourceAdapter&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;adapter&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;SimpleDataContext simpleContext = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; SimpleDataContext&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;!engineController.&lt;span style="color: #006600;"&gt;isInitialized&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;    engineController.&lt;span style="color: #006600;"&gt;init&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;simpleContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;engineController.&lt;span style="color: #006600;"&gt;isInitialized&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;    engineController.&lt;span style="color: #006600;"&gt;execute&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;simpleContext, simpleContext&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&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/23089790-1922416357459469642?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/1922416357459469642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=1922416357459469642' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1922416357459469642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1922416357459469642'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/01/writing-business-rules-in-wso2-carbon.html' title='Writing Business Rules in WSO2 Carbon Platform'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-1283662991361208708</id><published>2010-01-06T08:23:00.000+05:30</published><updated>2011-11-30T02:08:50.558+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='OCTET_LENGTH'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial/Guide'/><category scheme='http://www.blogger.com/atom/ns#' term='blob'/><title type='text'>Getting the size of BLOB in MySql</title><content type='html'>If you want to store binary in database, you can use &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/blob.html"&gt;BLOB&lt;/a&gt; as the data type of that column. In Mysql you can use TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB depending on your space requirement. Here is an example of database table using BLOB as a column type.&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #993333; font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;TABLE&lt;/span&gt; BloBTest &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;br/&gt;    id INT &lt;span style="color: #993333; font-weight: bold;"&gt;NOT&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;NULL&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;AUTO_INCREMENT&lt;/span&gt;,&lt;br/&gt;    filename VARCHAR&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;32&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;NOT&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;NULL&lt;/span&gt;,&lt;br/&gt;    content BLOB &lt;span style="color: #993333; font-weight: bold;"&gt;NOT&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;NULL&lt;/span&gt;,&lt;br/&gt;    &lt;span style="color: #993333; font-weight: bold;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;KEY&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt; id &lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;&lt;strong&gt;Storing Data&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;PHP:&lt;/strong&gt;&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;$filename&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;"myimage.png"&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;$filecontent&lt;/span&gt; = &lt;a href="http://www.php.net/file_get_contents"&gt;&lt;span style="color: #000066;"&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$filename&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;$filecontent_escaped&lt;/span&gt; = &lt;a href="http://www.php.net/mysql_real_escape_string"&gt;&lt;span style="color: #000066;"&gt;mysql_real_escape_string&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$filecontent&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;$sql&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;"INSERT INTO BloBTest(filename, content) "&lt;/span&gt; +&lt;br/&gt;       &lt;span style="color: #ff0000;"&gt;"VALUES('$filename','$filecontent_escaped')"&lt;/span&gt;;&lt;br/&gt;&lt;a href="http://www.php.net/mysql_query"&gt;&lt;span style="color: #000066;"&gt;mysql_query&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$sql&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$link&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;br/&gt;&lt;strong&gt; Java:&lt;/strong&gt;&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt; filename = &lt;span style="color: #ff0000;"&gt;"myimage.png"&lt;/span&gt;;&lt;br/&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AInputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;InputStream&lt;/span&gt;&lt;/a&gt; filecontent = &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AFileInputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;FileInputStream&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;filename&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; sql = &lt;span style="color: #ff0000;"&gt;"INSERT INTO BloBTest(filename, content) VALUES(?, ?)"&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; size = filecontent.&lt;span style="color: #006600;"&gt;available&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3APreparedStatement+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;PreparedStatement&lt;/span&gt;&lt;/a&gt; ps = conn.&lt;span style="color: #006600;"&gt;prepareStatement&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;sql&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;ps.&lt;span style="color: #006600;"&gt;setString&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;, filename&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;ps.&lt;span style="color: #006600;"&gt;setBinaryStream&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;, filecontent, size&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;ps.&lt;span style="color: #006600;"&gt;executeUpdate&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;br/&gt;&lt;strong&gt;Retrieving Data&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;$sql&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;"SELECT filename, content FROM BloBTest"&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;$result&lt;/span&gt; = &lt;a href="http://www.php.net/mysql_query"&gt;&lt;span style="color: #000066;"&gt;mysql_query&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$sql&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$link&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #b1b100;"&gt;while&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$row&lt;/span&gt; = &lt;a href="http://www.php.net/mysql_fetch_assoc"&gt;&lt;span style="color: #000066;"&gt;mysql_fetch_assoc&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$result&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;$filename&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$row&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"filename"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;$content&lt;/span&gt; = &lt;span style="color: #0000ff;"&gt;$row&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"content"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;$new_filename&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;"new_"&lt;/span&gt; . &lt;span style="color: #0000ff;"&gt;$filename&lt;/span&gt;;&lt;br/&gt;    file_put_contents&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;$new_filename&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;$content&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;&lt;strong&gt;Java&lt;/strong&gt;:&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt; sql = &lt;span style="color: #ff0000;"&gt;"SELECT filename, content FROM BloBTest"&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;PrepareStatement ps  = conn.&lt;span style="color: #006600;"&gt;prepareStatement&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;resourceContentSQL&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AResultSet+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;ResultSet&lt;/span&gt;&lt;/a&gt; result = ps.&lt;span style="color: #006600;"&gt;executeQuery&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;result.&lt;span style="color: #006600;"&gt;next&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;{&lt;/span&gt;&lt;br/&gt;    &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; filename = result.&lt;span style="color: #006600;"&gt;getString&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"filename"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AInputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;InputStream&lt;/span&gt;&lt;/a&gt; contentStream = result.&lt;span style="color: #006600;"&gt;getBinaryStream&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"content"&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; newFilename = &lt;span style="color: #ff0000;"&gt;"new_"&lt;/span&gt; + filename;&lt;br/&gt;    &lt;span style="color: #808080; font-style: italic;"&gt;// storing the input stream in the file&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AOutputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;OutputStream&lt;/span&gt;&lt;/a&gt; out=&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AFileOutputStream+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;FileOutputStream&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;newFilename&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #993333;"&gt;byte&lt;/span&gt; buf&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt;=&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;span style="color: #993333;"&gt;byte&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;[&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;1024&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;]&lt;/span&gt;;&lt;br/&gt;    &lt;span style="color: #993333;"&gt;int&lt;/span&gt; len;&lt;br/&gt;    &lt;span style="color: #b1b100;"&gt;while&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;len=contentStream.&lt;span style="color: #006600;"&gt;read&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;buf&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&amp;gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;    out.&lt;span style="color: #006600;"&gt;write&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;buf,&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;,len&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;    out.&lt;span style="color: #006600;"&gt;close&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br/&gt;&lt;span style="color: #66cc66;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;&lt;strong&gt;Retrieving the Size of the Blob&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;After you store your data as a blob, you can manipulate or query the data with some of the in-built &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/string-functions.html"&gt;String functions&lt;/a&gt; in mysql. For an example if you want to query the size of the blob you just stored, you can use &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_octet-length"&gt;OCTET_LENGTH&lt;/a&gt; function. Here is an example,  (this will give you the size in bytes.)&lt;br/&gt;&lt;pre&gt;&lt;span style="color: #993333; font-weight: bold;"&gt;SELECT&lt;/span&gt; OCTET_LENGTH&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;content&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt; &lt;span style="color: #993333; font-weight: bold;"&gt;FROM&lt;/span&gt; BloBTest &lt;span style="color: #993333; font-weight: bold;"&gt;WHERE&lt;/span&gt; filename=&lt;span style="color: #ff0000;"&gt;'myimage.png'&lt;/span&gt;&lt;/pre&gt;&lt;br/&gt;&lt;div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 228px; width: 1px; height: 1px;"&gt;&lt;br/&gt;&lt;pre&gt;.&lt;/pre&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/23089790-1283662991361208708?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/1283662991361208708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=1283662991361208708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1283662991361208708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1283662991361208708'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/01/getting-size-of-blob-in-mysql.html' title='Getting the size of BLOB in MySql'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-3748897053075236496</id><published>2010-01-05T18:02:00.000+05:30</published><updated>2011-11-30T02:08:50.629+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='gaas'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='SaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance Registry'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial/Guide'/><title type='text'>Register Today for WSO2 Governance as a Service</title><content type='html'>&lt;a href="http://governance.cloud.wso2.com/"&gt;WSO2 Governance as a Service&lt;/a&gt; is an online multi-tenant supported instance of WSO2 Governance Registry which is the solution for SOA Governance from the WSO2 SOA stack. You can start trying out WSO2 Governance as a Service by accessing the &lt;a href="http://governance.cloud.wso2.com"&gt;http://governance.cloud.wso2.com&lt;/a&gt; and creating an account for your organization (free for limited use).&lt;br/&gt;&lt;br/&gt;In order to identify your account, you have to provide the domain name of your organization. I will demonstrate how to create an account using the "ws.dimuthu.org" as my domain name.&lt;br/&gt;&lt;br/&gt;1. First go to http://governance.cloud.wso2.com from a web browser and click the 'Register' button. You will be asked to enter the domain name as the first step.&lt;br/&gt;&lt;br/&gt;[caption id="attachment_1036" align="aligncenter" width="773" caption="Enter the domain"]&lt;a href="http://www.dimuthu.org/wp-content/uploads/2010/01/enter-domain.png"&gt;&lt;img class="size-full wp-image-1036" title="Enter the domain" src="http://www.dimuthu.org/wp-content/uploads/2010/01/enter-domain.png" alt="Enter the domain" width="773" height="303" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;After that, you have the option of validating the ownership of the domain right at the registration process, or you can skip the validation and continue to the next step in which case your domain will be appended '-trial' suffix. You can validate the ownership of the domain later at any stage.&lt;br/&gt;&lt;br/&gt;Here I want to validate the domain right now, so I click 'Take me to the domain ownership confirmation page straight-away' and click the 'Submit' button.&lt;br/&gt;&lt;br/&gt;2. This will redirect you to the domain ownership validation page. You can validate the ownership of your domain in one of two ways.&lt;br/&gt;&lt;br/&gt;Method i). Just create a text file named 'wso2gaas.txt' in the web root of your domain and enter the given text. This is the most simplest method of two.&lt;br/&gt;&lt;br/&gt;[caption id="attachment_1039" align="aligncenter" width="722" caption="Validate domain name using Textfile"]&lt;a href="http://www.dimuthu.org/wp-content/uploads/2010/01/validate-domain-by-testfile.png"&gt;&lt;img class="size-full wp-image-1039" title="validate-domain-by-textfile" src="http://www.dimuthu.org/wp-content/uploads/2010/01/validate-domain-by-testfile.png" alt="Validate domain name using Textfile" width="722" height="256" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;Method ii). You can put a DNS entry according to the given instructions. This is a little tedious approch to validate the domain. In fact it may take a while to propagate the new DNS information, so you may have to wait hours without refreshing the page until you finally validate the domain ownership.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.dimuthu.org/wp-content/uploads/2010/01/validate-domain-by-dns-entry.png"&gt;&lt;img class="aligncenter size-full wp-image-1040" title="validate-domain-by-dns-entry" src="http://www.dimuthu.org/wp-content/uploads/2010/01/validate-domain-by-dns-entry.png" alt="" width="723" height="294" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Click the continue button after the domain validation done. Then you will be redirected to a page requesting more information.&lt;br/&gt;&lt;br/&gt;3. Tenant Registration Page&lt;br/&gt;&lt;br/&gt;[caption id="attachment_1041" align="aligncenter" width="787" caption="Tenant Registration"]&lt;a href="http://www.dimuthu.org/wp-content/uploads/2010/01/registration-page.png"&gt;&lt;img class="size-full wp-image-1041" title="registration-page" src="http://www.dimuthu.org/wp-content/uploads/2010/01/registration-page.png" alt="Tenant Registration" width="787" height="478" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;4) After this step, you will be notified to check for your email which will contain a mail with a link to proceed with the registration. There you will be able to select a theme for your organization and finalize creating your account. Login to the admin account for your tenant with the credential you provided a the time of the registration.&lt;br/&gt;&lt;br/&gt;The domain ownership validation was introduced to WSO2 Governance as a Service account registration only now. So for organizations who have already have account will have a message similar to this when they are trying to login to their account.&lt;br/&gt;&lt;br/&gt;[caption id="attachment_1046" align="aligncenter" width="460" caption="Info box at login"]&lt;a href="http://www.dimuthu.org/wp-content/uploads/2010/01/login-warning-message.png"&gt;&lt;img class="size-full wp-image-1046" title="login-warning-message" src="http://www.dimuthu.org/wp-content/uploads/2010/01/login-warning-message.png" alt="Info box at login" width="460" height="169" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;So the account I have registered using the domain name 'example.com' has been renamed to 'example.com-trial'. As the instruction of the message says you can go to the account management page after the login and validate the domain ownership.&lt;br/&gt;&lt;br/&gt;[caption id="attachment_1043" align="aligncenter" width="808" caption="Account Management Page"]&lt;a href="http://www.dimuthu.org/wp-content/uploads/2010/01/account-mgt.png"&gt;&lt;img class="size-full wp-image-1043" title="account-mgt" src="http://www.dimuthu.org/wp-content/uploads/2010/01/account-mgt.png" alt="Account Management Page" width="808" height="536" /&gt;&lt;/a&gt;[/caption]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-3748897053075236496?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/3748897053075236496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=3748897053075236496' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3748897053075236496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3748897053075236496'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/01/register-today-for-wso2-governance-as.html' title='Register Today for WSO2 Governance as a Service'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-3005292755802211474</id><published>2010-01-03T23:46:00.000+05:30</published><updated>2011-11-30T02:08:50.601+05:30</updated><title type='text'>WSO2 Governance as a Service - Create a trial account for</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-3005292755802211474?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/3005292755802211474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=3005292755802211474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3005292755802211474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3005292755802211474'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2010/01/wso2-governance-as-service-create-trial.html' title='WSO2 Governance as a Service - Create a trial account for'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-3655954167131078711</id><published>2009-12-02T07:36:00.000+05:30</published><updated>2011-11-30T02:08:50.621+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='gaas'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='ec2'/><title type='text'>WSO2 Bringing Cloud Computing and SOA Together</title><content type='html'>&lt;div id="__ss_2511160" style="width: 425px; text-align: left;"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Wso2 Cloud Public 2009 11 16" href="http://www.slideshare.net/sanjiva/wso2-cloud-public-2009-11-16"&gt;Wso2 Cloud Public 2009 11 16&lt;/a&gt;&lt;object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wso2-cloud-public-2009-11-16-091116095441-phpapp02&amp;amp;rel=0&amp;amp;stripped_title=wso2-cloud-public-2009-11-16" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wso2-cloud-public-2009-11-16-091116095441-phpapp02&amp;amp;rel=0&amp;amp;stripped_title=wso2-cloud-public-2009-11-16" allowscriptaccess="always" allowfullscreen="true"&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/23089790-3655954167131078711?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/3655954167131078711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=3655954167131078711' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3655954167131078711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3655954167131078711'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/12/wso2-bringing-cloud-computing-and-soa.html' title='WSO2 Bringing Cloud Computing and SOA Together'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-7289188222270163617</id><published>2009-11-19T08:10:00.000+05:30</published><updated>2011-11-30T02:08:50.691+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><title type='text'>WSO2 SOA Platform Enters in to the Cloud</title><content type='html'>WSO2 announced the &lt;a href="http://wso2.com/about/news/wso2-launches-industry%E2%80%99s-most-comprehensive-platform-for-extending-an-soa-to-cloud-computing/"&gt;launch of their SOA platform inside the Cloud&lt;/a&gt; earlier this week. With this launch, you can try out and use their comprehensive SOA platform inside the cloud.&lt;br/&gt;&lt;br/&gt;WSO2 Cloud Platform consists of various products, including&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.com/cloud/virtual-machines"&gt;WSO2 Cloud Virtual Machines&lt;/a&gt;: All WSO2 Java products are now available as&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Amazon Machine Images (AMIs). Visit the 'Getting Started' tutorial from &lt;a href="http://wso2.org/library/articles/getting-started-wso2-cloud-virtual-machines-amazon-ec2"&gt;Getting Started with WSO2 Cloud Virtual Machines for Amazon EC2&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;VMWare/VMWare VSX and KVM images. Visit the tutorial, &lt;a href="http://wso2.org/library/tutorials/getting-started-wso2-vmware-images"&gt;Getting Started with WSO2 VMWare Images&lt;/a&gt;.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.com/wp-content/themes/wso2ng/images/cloud-connectors-small.gif"&gt;WSO2 Cloud Connectors&lt;/a&gt;:&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;WSO2 Cloud Service Gateway - A manage and secured gateway between the services in your Enterprise and the cloud. Visit &lt;a href="http://wso2.org/library/tutorials/introducing-wso2-cloud-services-gateway"&gt;Introducing WSO2 Cloud Services Gateway&lt;/a&gt; for a comprehensive tutorial.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;WSO2 Service Accelerator - Accelerate the processing of WS-Security and WS-Reliable Messaging using WSO2 Web Service Framework for C++.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; &lt;a href="http://wso2.com/cloud/services"&gt;WSO2 Cloud Services&lt;/a&gt;: Providing WSO2 Products as Services following the Software as a Service (SaaS) Model.&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;WSO2 Governance as a Service: Hosted instance of WSO2 Governance Registry with multi-tenant support. You can try out the software from &lt;a href="https://governance.cloud.wso2.com"&gt;https://governance.cloud.wso2.com&lt;/a&gt;. Visit &lt;a href="http://wso2.org/library/tutorials/getting-started-wso2-governance-as-a-service"&gt;Getting Started With WSO2 Governance as a Service&lt;/a&gt; and &lt;a href="http://wso2.org/library/articles/faqs-governance-service"&gt;FAQ&lt;/a&gt; for more information.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-7289188222270163617?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/7289188222270163617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=7289188222270163617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7289188222270163617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7289188222270163617'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/11/wso2-soa-platform-enters-in-to-cloud.html' title='WSO2 SOA Platform Enters in to the Cloud'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-4926656033643488429</id><published>2009-10-27T07:19:00.000+05:30</published><updated>2011-11-30T02:08:50.644+05:30</updated><title type='text'>Code First Web Service Development in WSF/PHP</title><content type='html'>When we&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-4926656033643488429?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/4926656033643488429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=4926656033643488429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4926656033643488429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4926656033643488429'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/10/code-first-web-service-development-in.html' title='Code First Web Service Development in WSF/PHP'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-1227855588966844129</id><published>2009-10-13T18:47:00.000+05:30</published><updated>2011-11-30T02:08:50.550+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance Registry'/><category scheme='http://www.blogger.com/atom/ns#' term='bps'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup server'/><title type='text'>WSO2 SOA Workshop 2009, Santa Clara, CA</title><content type='html'>&lt;a href="http://wso2.com"&gt;WSO2&lt;/a&gt; is hosting a SOA Workshop in Santa Clara, California in November 3rd 2009. You will be able to attend to the following sessions covered by the industry leading experts in SOA.&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;ESBS and SOA&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;SOA Security&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Mashups and Business Process Management for SOA&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;SOA Governance&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;SOA with C, C++, PHP&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;SOA Architecture Pattern&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;Visit here to find more details about the event, &lt;a href="http://wso2.com/events/2009-us-soa-workshop/?soaotad=10072009"&gt;http://wso2.com/events/2009-us-soa-workshop/?soaotad=10072009&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-1227855588966844129?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/1227855588966844129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=1227855588966844129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1227855588966844129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1227855588966844129'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/10/wso2-soa-workshop-2009-santa-clara-ca.html' title='WSO2 SOA Workshop 2009, Santa Clara, CA'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-5432293296422133791</id><published>2009-10-13T07:38:00.000+05:30</published><updated>2011-11-30T02:08:50.654+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='wsas'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance Registry'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup server'/><title type='text'>WSO2 Releases Goernance Registry 3.0.1, ESB 2.1.1, WSAS 3.1.1, IS 2.0.1
AND Mashup Server 2.0.0</title><content type='html'>WSO2 announced an another round of release of their famous SOA products.&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.org/projects/governance-registry"&gt;WSO2 Governance Registry 3.0.1&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB 2.1.1&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.org/projects/wsas/java"&gt;WOS2 Web Services Application Server (WSAS) 3.1.1&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.org/projects/identity"&gt;WSO2 Identity Server (IS) 2.0.1&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.org/projects/mashup"&gt;WSO2 Mashup Server 2.0.0&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;Although the version numbers say this is minor patch release (Other than the Mashup Server which is shipping as a major release), in fact there are new features and improvements. Some basic new features shares among all of these products are&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;	&lt;li&gt;Improved registry level transaction Support.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Improved Support for deploying on top of Application Servers other than tomcat like WebSphere, WebLogic, and&lt;br/&gt;JBoss.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Support for Eclipse P2 based provisioning. (Yes, you can add/remove features from these WSO2 products , see &lt;a href="https://wso2.org/wiki/display/carbon/p2-based-provisioning-support"&gt;https://wso2.org/wiki/display/carbon/p2-based-provisioning-support&lt;/a&gt; for more details)&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Improved Remote Registry model&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-5432293296422133791?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/5432293296422133791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=5432293296422133791' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5432293296422133791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5432293296422133791'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/10/wso2-releases-goernance-registry-301.html' title='WSO2 Releases Goernance Registry 3.0.1, ESB 2.1.1, WSAS 3.1.1, IS 2.0.1&#xA;AND Mashup Server 2.0.0'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-7125492708287517714</id><published>2009-08-24T17:03:00.000+05:30</published><updated>2011-11-30T02:08:50.686+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='wsas'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse tools'/><category scheme='http://www.blogger.com/atom/ns#' term='bps'/><title type='text'>WSO2 Releases Eclipse IDE Tooling for WSAS and BPS</title><content type='html'>&lt;a href="http://samindaw.wordpress.com/"&gt;Saminda Wijerathna&lt;/a&gt; the lead of the WSO2 tooling team, announced the release of a new version of IDE tools for &lt;a href="http://wso2.org/projects/wsas/java"&gt;WSO2 WSAS&lt;/a&gt; and &lt;a href="http://wso2.org/projects/bps"&gt;BPS&lt;/a&gt;. These tools will help you to write web services or web service clients and test them within your Eclipse IDE.&lt;br/&gt;&lt;br/&gt;You can download the tools and the related documentation from &lt;a href="http://wso2.org/downloads/tools/eclipse"&gt;http://wso2.org/downloads/tools/eclipse&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Here are the key features of the set of IDE tools,&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;Create Web services&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Create web service client&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Convert WSDL 1.1 to 2.0&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Module and service validators&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Creating wsdl from a java class&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Create Axis2 archives&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Hot update a Web service&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Debug Web services&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Test Web services&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Conversion of WSDL 1.1 to 2.0 can now be done vice versa as well.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Creating Bpel archives for deploy&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Start WSAS 3.0.x inside Eclipse&lt;/li&gt;&lt;br/&gt;	&lt;li&gt; Run multiple instances of WSAS inside eclipse&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-7125492708287517714?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/7125492708287517714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=7125492708287517714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7125492708287517714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7125492708287517714'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/08/wso2-releases-eclipse-ide-tooling-for.html' title='WSO2 Releases Eclipse IDE Tooling for WSAS and BPS'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-6291760362436909423</id><published>2009-07-29T07:45:00.000+05:30</published><updated>2011-11-30T02:08:50.665+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WS-*'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='wsf/c++'/><category scheme='http://www.blogger.com/atom/ns#' term='RESTful'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><title type='text'>WSO2 Releases Web Service Framework For C++</title><content type='html'>WSO2 announced the release of the &lt;a href="http://wso2.org/projects/wsf/cpp"&gt;Web Services Framework for C++ (WSF/C++)&lt;/a&gt; version 2.0.0. Similar to &lt;a href="http://wso2.org/projects/wsf/php"&gt;WSF/PHP&lt;/a&gt; which is really popular among the PHP community, WSF/CPP is the C++ language binding for the Apache Axis2/C and the other supporting web services projects like Apache Sandesha/C, Apache Rampart/C.&lt;br/&gt;&lt;br/&gt;With this release C++ developers will be able to write web services and web service clients to inter-op with .NET/Java/PHP or any other platform built-on web service standards. The release is shiped with a code generation tool that will be used to generate the code for skeletons and stubs from a WSDL, so developers only need to concentrate on their business logic as the generated code will take care of building or parsing xmls and running them on top of the framework.&lt;br/&gt;Here are the key features of the new release.&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;	&lt;li&gt;Support core web service standards like SOAP 1.1, SOAP 1.2, WSDL 1.1, WSDL 2.0, REST&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Support for web services QoS specifications.&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt;WS-Addressing&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;WS-Security&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;WS-Policy&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;WS-Security-Policy&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;WS-Reliable-Messaging&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Support binary attachment with MTOM and SWA (With the Support for large binaries)&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Code generation tool.&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Proven interoperability with .NET.&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;As a side note, you will be able to participate to a free summer school training session on the WSF/CPP conducted by&lt;a href="http://nandikajayawardana.blogspot.com/"&gt; Nandika Jayawardane&lt;/a&gt; who is the project lead of both WSF/CPP and WSF/PHP on 30th July. You can register to it (for free) from &lt;a href="http://wso2.org/training/cpp_in_soa"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-6291760362436909423?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/6291760362436909423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=6291760362436909423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6291760362436909423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6291760362436909423'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/07/wso2-releases-web-service-framework-for.html' title='WSO2 Releases Web Service Framework For C++'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-6700000761485487114</id><published>2009-07-12T22:55:00.000+05:30</published><updated>2011-11-30T02:08:50.671+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Governace'/><category scheme='http://www.blogger.com/atom/ns#' term='3.0.0'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='G-Reg'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance Registry'/><category scheme='http://www.blogger.com/atom/ns#' term='New Features'/><title type='text'>WSO2 Governance Registry 3.0.0 - What's New?</title><content type='html'>&lt;a href="http://wso2.org/projects/governance-registry"&gt;WSO2 Governance Registry (G-Reg)&lt;/a&gt; (Formally known as WSO2 Registry) is released its 3.0.0 version along with two other sibling &lt;a href="http://www.dimuthu.org/blog/2009/07/11/wso2-carbon-2-wsas-esb-governance-registry-released/"&gt;WSO2 products, WSAS 3.1.0 and ESB 2.1.0&lt;/a&gt;. This is a major release specially for WSO2 Governance Registry as it contain number of new features and improvements.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;1. The New Name - s/Registry/Governance Registry&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;The product name itself changed from 'Registry' to 'Governance Registry' (abbreviated as 'G-Reg'). As it may hint you, now the product is more focused on the 'Governance' aspects than just the 'registry' or a 'repository' aspects. In early releases, it mainly used to store, retrieve configurations and persistence data that the other products would need. Now you can govern these resources (Services, Policies, Processes, People) inside the G-Reg itself. It has emerged to become a complete tool that help you in governing your SOA platform.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;2. Separate Views for Add/View/Remove Services&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;In G-Reg 'Services' along with Service MetaData (policies, wsdls, schemas) are distinguished from other resources, as they are the key resources in a SOA platform. You will be able to add/list/view services directly from the main menu in the G-Reg UI.&lt;br/&gt;&lt;br/&gt;[caption id="attachment_1004" align="aligncenter" width="228" caption="Add Service Metadata"]&lt;a href="http://www.dimuthu.org/wp-content/uploads/2009/07/metadata.png"&gt;&lt;img class="size-full wp-image-1004" title="Add Service Metadata" src="http://www.dimuthu.org/wp-content/uploads/2009/07/metadata.png" alt="Add Service Metadata" width="228" height="269" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;When adding a service you will be prompted to provide additional details on the services. As they will help users in discovering these services. The fields of these details are configurable as you will change them according to the policies and requirements of your organizations, but the defaults will be adequate for most of the scenarios.  Additionally G-Reg will do WS-I validation as you add WSDLs, Schemas.&lt;br/&gt;Note that this is an additional view you will get as you can still discover services on a tree view arranged according to their namespaces using the registry browser as in previous releases.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;3. Service Life cycle Management with Check-lists&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Managing service lifecycle is a core part of governing services. G-Reg provides you this functionality with a simple user interface.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.dimuthu.org/wp-content/uploads/2009/07/lcm.png"&gt;&lt;img class="aligncenter size-full wp-image-1005" title="Life Cycle Management with Check-Lists" src="http://www.dimuthu.org/wp-content/uploads/2009/07/lcm.png" alt="Life Cycle Management with Check-Lists" width="252" height="265" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Lifecycle states can be promoted or demoted. The state transition can be 'Designing' -&amp;gt; 'Developing' -&amp;gt; 'Testing' -&amp;gt; 'Deployed'. You can enforce a validation of a checklist in promoting the state to the next level. This states and the associated check-list items are highly configurable as you will change them to suit to the process of your organizations as you wish.&lt;br/&gt;&lt;br/&gt;And G-Reg is shipped with a sample that extend the lifecycle management functionality by making it distributed. In there as you promote or demote the state, the service resource will move its position. The user guide on &lt;a href="http://wso2.org/project/registry/3.0.0/docs/samples_guide.html#Distributed%20LifeCycle%20Management%20sample"&gt;'Distributed Life Cycle Management Sample'&lt;/a&gt; will describe how to use this functionality in more details. This will be really useful if you are enforcing a structured permission model in managing lifecycles. For an example you can enforce only developer role will be able to modify, check or promote a service in the 'Developing' state and QA role has permission in promoting a service in 'Testing' state and so on.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;4. Business Activity Monitoring (BAM)&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;This is a brand new feature provide in G-Reg. You may find the &lt;a href="http://wso2.org/project/registry/3.0.0/docs/user_guide/bam.html"&gt;user guide on 'BAM'&lt;/a&gt; will be really helpful in configuring the servers you want to monitor. But in order to view the monitoring data you have to go to the dashboard, which is the next new feature.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;5. Dashboard&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;For most of the you, this will be the coolest feature in the new G-Reg., an eye-catching dashboard filled with bunch of Gadgets.&lt;br/&gt;&lt;br/&gt;[caption id="attachment_1007" align="aligncenter" width="753" caption="Dashboard"]&lt;a href="http://www.dimuthu.org/wp-content/uploads/2009/07/dashboard.png"&gt;&lt;img class="size-full wp-image-1007" title="Dashboard" src="http://www.dimuthu.org/wp-content/uploads/2009/07/dashboard.png" alt="Dashboard" width="753" height="1083" /&gt;&lt;/a&gt;[/caption]&lt;br/&gt;&lt;br/&gt;The dashboard provides you the information related to runtime governance as well as design-time governance as described in the &lt;a href="http://wso2.org/project/registry/3.0.0/docs/user_guide/dashboard.html"&gt;'Dashboard' user guide&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;6. Eventing and Notifications&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;If you want you to notified when a resource is updated or a lifecycle state of a service is changed, this feature will be really helpful. Look at the &lt;a href="http://wso2.org/project/registry/3.0.0/docs/user_guide/notifications.html#notifications"&gt;'Eventing and Notifications' user guide&lt;/a&gt; on how you can get notified and the built-in events that you can listen.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;7. Mount Remote Resources - Federating Registries&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;If you are maintaining two separate registry instances, this feature will enable you to share resources among them. In G-Reg you can create links to resources in remote registries (remote-links) as well as to the resources in the same registry (sym-links). Here is the &lt;a href="http://wso2.org/project/registry/3.0.0/docs/user_guide/sym_remote.html#SymRemote"&gt;user guide for 'Sym Links and Remote Links'&lt;/a&gt; to read more details of the subject.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;8. User Profiles&lt;/strong&gt;&lt;br/&gt;The new G-Reg has the ability to keep multiple user profiles per user. A simple how to on creating profiles can be found in the &lt;a href="http://wso2.org/project/registry/3.0.0/docs/user_guide/user_profile.html"&gt;user guide on 'User Profiles'&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;9. Checkin/Checkout with Local Filesystem&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;The new G-Reg is shipped with a command line tool that allows you to checkin and checkout registry resources with your local filesystem. If you are familiar with a version control system like subversion, the checkin/checkout commands will not be much difficult to you.&lt;br/&gt;&lt;br/&gt;Checking out a resource is simple as (the following command is what you typed in linux, in windows you will use the checkin-client.bat instead).&lt;br/&gt;&lt;pre&gt;&lt;em&gt;&lt;br/&gt;./checkin-client.sh co / -u user -p user_pw&lt;br/&gt;&lt;/em&gt;&lt;/pre&gt;&lt;br/&gt;And to checkin,&lt;br/&gt;&lt;pre&gt;&lt;em&gt;&lt;br/&gt;./checkin-client.sh ci -u user -p user_pw&lt;br/&gt;&lt;/em&gt;&lt;/pre&gt;&lt;br/&gt;Similarly you can use this tool to create backups or move resource or resource hierarchy off-line. Here is a complete &lt;a href="http://wso2.org/project/registry/3.0.0/docs/user_guide/checkin_client.html#checkin-client"&gt;user guide on 'Checkin-Client'&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;10. Performance Boost&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Last but not least, the new G-Reg is performing very fast than its predecessor. In the performance test, it was seen each primitive operation in the registry is at least 10% faster in this release, where as some operations are performing much faster (for an example, 'Add Collection' operation seemed 50% faster). And the remote registry calls also optimized by keeping a local cache (http-level-caching).&lt;br/&gt;&lt;br/&gt;This was a list of most notable new features in addition to the bunch of the features that was already there in the previous releases. You will be able to download WSO2 Governance Registry freely from the product website, &lt;a href="http://wso2.org/projects/governance-registry"&gt;http://wso2.org/projects/governance-registry&lt;/a&gt; and evaulate these features as you want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-6700000761485487114?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/6700000761485487114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=6700000761485487114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6700000761485487114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6700000761485487114'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/07/wso2-governance-registry-300-what-new.html' title='WSO2 Governance Registry 3.0.0 - What&amp;#39;s New?'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-5950066121283819409</id><published>2009-07-11T11:59:00.000+05:30</published><updated>2011-11-30T02:08:50.660+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='DataServices'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='wsas'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='governance registry'/><category scheme='http://www.blogger.com/atom/ns#' term='data services'/><category scheme='http://www.blogger.com/atom/ns#' term='Governance'/><title type='text'>WSO2 Carbon 2 - WSAS, ESB &amp; Governance Registry Released</title><content type='html'>&lt;a href="http://wso2.org"&gt;WSO2&lt;/a&gt; -An open source middleware company- announced the release of bunch of their SOA enabling products along with Carbon 2.0.0 which is an OSGI based unified platform that all the WSO2 java products are built on.&lt;br/&gt;&lt;ul&gt;&lt;br/&gt;	&lt;li&gt; &lt;a href="http://wso2.org/projects/wsas/java"&gt;WSAS (Web Service Application Server)&lt;/a&gt; - Provide and consume web services, data services with full WS-*, REST support, GUI tools, Integration with Eclipse, etc..&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.org/projects/esb/java"&gt;ESB (Enterprise Service Bus)&lt;/a&gt; - Message routing, mediation, transformation, logging, task scheduling, load balancing, failover routing, event brokering, etc. with number of transports support&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;&lt;a href="http://wso2.org/projects/governance-registry"&gt;Governance Registry&lt;/a&gt; - Govern you SOA platform, introducing number of new features including Dashboard with Gadgets, lifecycle management with checklists, eventing and notifications, remote/symbolic links, checkin/checkout functionality and new meta data management UI.&lt;/li&gt;&lt;br/&gt;&lt;/ul&gt;&lt;br/&gt;You will be able to get the advantage of the carbon platform by extending the functionality of any of these products, just by mixing components from other products (Just like &lt;a href="http://www.dimuthu.org/blog/2009/03/01/composable-soa-platform/"&gt;running an ESB within WSAS&lt;/a&gt;).&lt;br/&gt;&lt;br/&gt;Download, Play around with them and Enjoy:)!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-5950066121283819409?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/5950066121283819409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=5950066121283819409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5950066121283819409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5950066121283819409'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/07/wso2-carbon-2-wsas-esb-governance.html' title='WSO2 Carbon 2 - WSAS, ESB &amp;amp; Governance Registry Released'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-3471741092172359795</id><published>2009-07-05T12:13:00.000+05:30</published><updated>2011-11-30T02:08:50.611+05:30</updated><title type='text'>JDBC Transactions And Deadlocks</title><content type='html'>Programming with Database is very challenging. It is all about you designed and normalized the database really correctly without missing any important indexing and writing the most optimized queries. In addition to that database programmer should be aware of whether the order of the queries in an execution flow will make a deadlock specially in very complex systems.&lt;br/&gt;There are many guidelines that you can follow specially on avoiding (probably minimizing) deadlocks. Specially the guide "&lt;a href="http://www.sql-server-performance.com/tips/deadlocks_p1.aspx"&gt;Reducing SQL Server Deadlocks&lt;/a&gt;" provides a checklist to reduce deadlocks in a database program.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-3471741092172359795?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/3471741092172359795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=3471741092172359795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3471741092172359795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3471741092172359795'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/07/jdbc-transactions-and-deadlocks.html' title='JDBC Transactions And Deadlocks'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-9163333359282277207</id><published>2009-06-23T07:41:00.000+05:30</published><updated>2011-11-30T02:08:50.720+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Stonehenge'/><category scheme='http://www.blogger.com/atom/ns#' term='wsas'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Apache Stonehenge Releases First Milestone</title><content type='html'>&lt;a href="http://incubator.apache.org/stonehenge/index.html"&gt;Apache Stonehenge&lt;/a&gt;, A project to demonstrate the interoperability between heterogeneous platforms has done their first &lt;a href="http://mail-archives.apache.org/mod_mbox/www-announce/200906.mbox/%3C20090605023114.22781.qmail@minotaur.apache.org%3E"&gt;milestone release&lt;/a&gt; few days back.&lt;br/&gt;&lt;br/&gt;The first milestone demonstrate the interoperability between&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;	&lt;li&gt;.NET - &lt;a href="http://msdn.microsoft.com/en-us/library/ms735119.aspx"&gt;Microsoft WCF&lt;/a&gt; implementation&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;Java - &lt;a href="http://wso2.org/projects/wsas/java"&gt;WSO2 Web Service Application Server (WSAS)&lt;/a&gt; implementation&lt;/li&gt;&lt;br/&gt;	&lt;li&gt;PHP - &lt;a href="http://wso2.org/projects/wsf/php"&gt;WSO2 Web Service Framework for PHP (WSF/PHP)&lt;/a&gt; implementation&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;Each of these technologies has implemented a Stock trader application with Business Service, Order Processor and Trader Client components. You will be able to assemble the application by mixing components from any of the above implementations.&lt;br/&gt;&lt;br/&gt;It provides you a great sample on using basic web services features (SOAP, WSDL etc..) and WS-Security across the above platforms.&lt;br/&gt;&lt;br/&gt;If you are interested, you can download the sources and binaries from here, &lt;a href="http://www.apache.org/dist/incubator/stonehenge/"&gt;http://www.apache.org/dist/incubator/stonehenge/&lt;/a&gt;. Installation guides and other documentations can be found from here, &lt;a href="http://cwiki.apache.org/STONEHENGE/"&gt;http://cwiki.apache.org/STONEHENGE/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-9163333359282277207?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/9163333359282277207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=9163333359282277207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/9163333359282277207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/9163333359282277207'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2009/06/apache-stonehenge-releases-first.html' title='Apache Stonehenge Releases First Milestone'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-6235956117107375548</id><published>2008-07-19T21:02:00.002+05:30</published><updated>2008-07-19T21:08:13.339+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='new blog'/><category scheme='http://www.blogger.com/atom/ns#' term='dimuthu.org'/><category scheme='http://www.blogger.com/atom/ns#' term='dimuthu'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogspot'/><title type='text'>Moving to dimuthu.org</title><content type='html'>This is not the first time I moved away from blogspot. But this time it is to a more permanent place. Yea it is to my own place with my own domain name.&lt;br /&gt;&lt;br /&gt;Just check my new web site and the blog &lt;a href="http://www.dimuthu.org"&gt;http://www.dimuthu.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It sill just a blog, but hope to make it more than that in future as time permits. Hope you will be in touch with me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-6235956117107375548?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/6235956117107375548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=6235956117107375548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6235956117107375548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6235956117107375548'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/07/moving-to-dimuthuorg.html' title='Moving to dimuthu.org'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-1895722581164025626</id><published>2008-05-21T21:13:00.001+05:30</published><updated>2008-05-21T21:16:17.772+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='codegen'/><category scheme='http://www.blogger.com/atom/ns#' term='wsdl2c'/><category scheme='http://www.blogger.com/atom/ns#' term='axis2/c'/><title type='text'>Tutorial on Axis2/C codegen (WSDL2C) tool</title><content type='html'>Finally I managed to write a simple step by step tutorial on how to use WSDL2C tool in Axis2/C. Visit it here, &lt;a href="http://wso2.org/library/3534"&gt;http://wso2.org/library/3534&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-1895722581164025626?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/1895722581164025626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=1895722581164025626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1895722581164025626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1895722581164025626'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/05/tutorial-on-axis2c-codegen-wsdl2c-tool.html' title='Tutorial on Axis2/C codegen (WSDL2C) tool'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-6521141320015231277</id><published>2008-03-22T20:46:00.002+05:30</published><updated>2008-03-22T20:54:55.234+05:30</updated><title type='text'>Axis2/C Architecture</title><content type='html'>I found a discussion on Axis2/C user list about the references where you can find information on Axis2 Architecture and Damitha in the axis2/c list have posted list of great resources. Looks like the mail achieves think it is a junk message due to the bunch of links, So I thought it is better I can publish the list here, hopefully this will be useful for future users..&lt;br /&gt;&lt;br /&gt;Flows, Phases, Handlers and modules &lt;&lt;a href="http://wso2.org/library/777" target="_blank"&gt;http://wso2.org/library/777&lt;/a&gt;&gt;&lt;br /&gt;Introducing Apache Aixs2/C &lt;&lt;a href="http://wso2.org/library/252" target="_blank"&gt;http://wso2.org/library/252&lt;/a&gt;&gt;&lt;br /&gt;Apache Axis2/C - Web services engine &lt;&lt;a href="http://wso2.org/library/2406" target="_blank"&gt;http://wso2.org/library/2406&lt;/a&gt;&gt;&lt;br /&gt;Web Services Endpoints with Apache Axis2/C &lt;&lt;a href="http://wso2.org/library/2663" target="_blank"&gt;http://wso2.org/library/2663&lt;/a&gt;&gt;&lt;br /&gt;WS-Addressing in Action &lt;&lt;a href="http://wso2.org/library/2605" target="_blank"&gt;http://wso2.org/library/2605&lt;/a&gt;&gt;&lt;br /&gt;Sine Axis2/C and Axis2/java are based on same architecture these could&lt;br /&gt;also be helpful to read&lt;br /&gt;How Apache Axis2 Finds the Operation and Service a Message is Destined&lt;br /&gt;To &lt;&lt;a href="http://wso2.org/library/176" target="_blank"&gt;http://wso2.org/library/176&lt;/a&gt;&gt;&lt;br /&gt;Web services and Axis2 architecture&lt;br /&gt;&lt;&lt;a href="http://www-128.ibm.com/developerworks/webservices/library/ws-apacheaxis2/" target="_blank"&gt;http://www-128.ibm.com/develop&lt;wbr&gt;erworks/webservices/library/ws&lt;wbr&gt;-apacheaxis2/&lt;/a&gt;&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-6521141320015231277?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/6521141320015231277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=6521141320015231277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6521141320015231277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6521141320015231277'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/03/axis2c-architecture.html' title='Axis2/C Architecture'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-7239472723540592181</id><published>2008-02-03T19:59:00.000+05:30</published><updated>2008-02-03T21:26:46.457+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sri Lanka'/><category scheme='http://www.blogger.com/atom/ns#' term='Terrorist'/><title type='text'>Be aware of Terrorists</title><content type='html'>Yesterday (in Sri Lanka) there was a bomb blast in a bus, followed by two today one in Zoo, one in Colombo railway station targeting civilians. There are no any argument that only &lt;a href="http://www.fbi.gov/page2/jan08/tamil_tigers011008.html"&gt;LTTE terrorists&lt;/a&gt; can do these kind of ruthless attacks.&lt;br /&gt;&lt;br /&gt;No matter whoever do this, as responsible citizens we have to think what we can do to prevent or at least minimize this. Just ignore the country, at least to save our selves we should be able to do something.&lt;br /&gt;&lt;br /&gt;From these and the past incidents it is obvious that terrorisst mostly target public places and public transport. Well I personally very rarely visit public place. But I always travels in public transport. I have to travel a long distance at weekends to visit my home and back, and short distance to go to my office and back to boarding place.&lt;br /&gt;&lt;br /&gt;From these two kind, I mostly concern about my long distance travel since yesterday and some reason attacks were done on long distance buses specially when traveling in early morning. I and my Friend Omega who also ride long distance at every weekend had a little discussion yesterday on this subject. According to him, ( I also agree with him) there is a high probability that somebody can put a bomb bag in an early morning bus, because&lt;br /&gt;&lt;br /&gt;1. Almost all the ppl sleep in the buses traveling in the morning (the ones who not standing),  so no one notices if anything strange happens..&lt;br /&gt;2. There are a lot of ppl traveling in the morning so the buses get crowded.&lt;br /&gt;&lt;br /&gt;What we can do is simply ask bus conductor to check the bags  of whoever want to come in. But this is not happening, It will delay the ride, and course people angry (NOTE, There are percentage of people who are really angry showing their bags for no reason) .  Anyway we can ask conductor to do that just for our safeness.  So we can at least make sure that there will be no blasting inside the bus.&lt;br /&gt;&lt;br /&gt;Not only Government, But also normal ppl like us should do our maximum to halt terrorists acts and bring the peace to our country.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-7239472723540592181?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/7239472723540592181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=7239472723540592181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7239472723540592181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7239472723540592181'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/02/be-aware-of-terrorists.html' title='Be aware of Terrorists'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-2665329142912295750</id><published>2008-02-02T14:21:00.000+05:30</published><updated>2008-02-02T15:03:33.726+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sri Lanka'/><category scheme='http://www.blogger.com/atom/ns#' term='Terrorist'/><title type='text'>Shameless publications of a dying Terrorist Group</title><content type='html'>Sri Lanka is about to win the war against LTTE terrorists. Meanwhile these terrorists are trying to do all sort of things to show that they are still alive.&lt;br /&gt;Hm. But the Internet seems a very difficult place to cheat.:)&lt;br /&gt;&lt;br /&gt;Extracted from&lt;a href="http://www.tamilnet.tv/blogs/index.php?blog=1&amp;amp;title=the-murder-of-thamilchelvan&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1#feedbacks"&gt; &lt;span style="text-decoration: underline;"&gt;feedbacks on tamilnet.tv&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.tamileditors.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=2035&amp;amp;Itemid=1"&gt;Here&lt;/a&gt; is a tiger terrorists publication last Wednesday, they claims it is a photo of Sri Lanka Government soldier. And they named that is the body of N.Kumara, a local name.&lt;br /&gt;Funny thing is same photo have been published 18 months ago &lt;a href="http://www.worldproutassembly.org/archives/2006/06/the_medias_bloo.html"&gt;here&lt;/a&gt;. It is a body of a soldier in Iraq.&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.tamilweek.com/images/LtteAir01.jpg"&gt;Here&lt;/a&gt; in tamilweek web site the image is named as it is an air crafts of LTTE. But here the same picture posted in the India &lt;a href="http://www.bharat-rakshak.com/IAF/Images/Special2/Iskras/Aircraft.html"&gt;Air Force web site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;They spend six years cheating World (But not Sri Lankan,  I mean people who are living in Sri Lanka) with the Cease fire agreement.  The cheat will not last long..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-2665329142912295750?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/2665329142912295750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=2665329142912295750' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/2665329142912295750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/2665329142912295750'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/02/shameless-publications-of-dying.html' title='Shameless publications of a dying Terrorist Group'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-659408819934600898</id><published>2008-01-29T23:02:00.000+05:30</published><updated>2008-01-30T12:07:03.254+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service Framework for PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Article'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Amazon Online Shopping with Web Service Framework for PHP</title><content type='html'>I finally managed to submit my &lt;a href="http://wso2.org/library/3077"&gt;first article&lt;/a&gt; for &lt;a href="http://wso2.org/library/3077"&gt;WSO2 Oxygen Tank&lt;/a&gt;. It is about how to do online shopping with Amazon Web Services using &lt;a href="http://wso2.org/projects/wsf/php"&gt;Web Service Framework for PHP&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There I'm demonstrating how to write a simple client library to access Amazon Web Services and how to use that library to write your own application to do online shopping with Amazon.com&lt;br /&gt;&lt;br /&gt;There I attached the Client library code and two sample applications, one very simple  php command line application and the other much  improved web  application. Hope this will be useful to people who are interested in working with WSF/PHP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-659408819934600898?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/659408819934600898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=659408819934600898' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/659408819934600898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/659408819934600898'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/amazon-online-shopping-with-web-service.html' title='Amazon Online Shopping with Web Service Framework for PHP'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-5885286049917147335</id><published>2008-01-28T23:06:00.000+05:30</published><updated>2008-01-28T23:19:05.029+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service Framework for PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSService'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><title type='text'>Select you service operation parameters..</title><content type='html'>In Web Service Framework for PHP 1.2, when you are writing a service using WSService with a WSDL, you always had to specify the type of the operation parameters to be "MIXED". But it would have been more convenient that the 'MIXED' to be default for ther service operation parameters when WSDL is specified.&lt;br /&gt;&lt;br /&gt;So yesterday I took some minitues and change the logic so that,&lt;br /&gt;&lt;br /&gt;1. When the WSDL is specified, the opParms would be default to "MIXED"&lt;br /&gt;2. Otherwise, the opParams would be default to 'WSMESSAGE'.&lt;br /&gt;&lt;br /&gt;So wsdl-mode code will be simplified to this..&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; QueryPurchaseOrderFunction&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$pro_name&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;$quantity&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;$date&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;$orderNo&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// the business logic.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$operations&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"QueryPurchaseOrder"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"QueryPurchaseOrderFunction"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// The following line is not required&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// $opParms = array("QueryPurchaseOrderFunction" =&amp;gt; "MIXED")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$svr&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSService&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"wsdl"&lt;/span&gt;=&amp;gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"sample_wsdl_11.wsdl"&lt;/span&gt;,&lt;br /&gt;                         &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;//opParams" =&amp;gt; $opParams; // This too not required&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                          &lt;span style="color: rgb(255, 0, 0);"&gt;"operations"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$operations&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-5885286049917147335?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/5885286049917147335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=5885286049917147335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5885286049917147335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5885286049917147335'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/select-you-service-operation-parameters.html' title='Select you service operation parameters..'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-7495060734810928361</id><published>2008-01-23T17:02:00.000+05:30</published><updated>2008-01-23T19:59:29.143+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Service Framework for PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSClient'/><category scheme='http://www.blogger.com/atom/ns#' term='WSMessage'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Where to set your options?.. in WSClient or in WSMessage?</title><content type='html'>If you are familiar with &lt;a href="http://wso2.org/projects/wsf/php"&gt;WSF/PHP&lt;/a&gt; web service API, you may find that you can set your options in different level. For an example in order to set the endpoint you can either use the WSClient constructor like this,&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSClient&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"to"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"endpoint"&lt;/span&gt;,&lt;br /&gt;        &lt;span style="color: rgb(255, 0, 0);"&gt;"other_options"&lt;/span&gt; =&amp;gt; .. &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;or you can use the WSMesasge constructor&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSMessage&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"to"&lt;/span&gt; =&amp;amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"endpoint"&lt;/span&gt;,&lt;br /&gt;         &lt;span style="color: rgb(255, 0, 0);"&gt;"other_options"&lt;/span&gt; =&amp;amp;gt; .. &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It may seems quite unnecessary to have duplicate methods to set something like "endpoint".  But there are cases this is really helpful in your application.&lt;br /&gt;&lt;br /&gt;If you ever tried calling two web service operations from one WSClient object, you may have already found the importance of having this way.&lt;br /&gt;&lt;br /&gt;In such a case you can set the common options in the WSClient and operation specific options in the WSMessage.&lt;br /&gt;&lt;br /&gt;Most probably you will use the same WSClient to invoke different operation in a  service. There your service endpoint is the same for all the operation. So you can set the service endpoint and additionally some other common configurations like the soap version in the WSClient constructor.&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSClient&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"to"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"common_endpoint"&lt;/span&gt;,&lt;br /&gt;          &lt;span style="color: rgb(255, 0, 0);"&gt;"useSOAP"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(204, 102, 204);"&gt;1.1&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;After that you can concentrate on message specific options. One would be "action" which is different from message to message. In addition to that common case, say you have some set of  operations which need authentication and others don't need. For that you have to use user-name tokens for that particular set of operations. What you can do is setting that security policy and the security token only to that request messages.&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$client&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;request&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSMessage&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$payload&lt;/span&gt;,&lt;br /&gt;                     &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"action"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"http://me.org/authenticating_operation"&lt;/span&gt;,&lt;br /&gt;                           &lt;span style="color: rgb(255, 0, 0);"&gt;"securityToken"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$securityToken&lt;/span&gt;,&lt;br /&gt;                           &lt;span style="color: rgb(255, 0, 0);"&gt;"policy"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$policy&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So I think it is clear the flexibility provided by the duplicate methods of doing the same thing. It make your code more organized and most importantly more efficient.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-7495060734810928361?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/7495060734810928361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=7495060734810928361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7495060734810928361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7495060734810928361'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/where-to-set-your-options-in-wsclient.html' title='Where to set your options?.. in WSClient or in WSMessage?'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-4856195689254486731</id><published>2008-01-22T09:30:00.000+05:30</published><updated>2008-01-22T12:57:44.084+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='fopen'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='stream context'/><title type='text'>PHP Web Services with fopen ..</title><content type='html'>If you have done little bit of 'C' (at least up to the lesson 'File Handling'), you may have come up with the function 'fopen'.&lt;br /&gt;&lt;br /&gt;In PHP you can use '&lt;a href="http://www.php.net/fopen"&gt;fopen&lt;/a&gt;' not only to open a file in your hard disk, but also to open resource over network, specially from the Internet. Simply you can emulate http, https or ftp client functionality with the fopen.&lt;br /&gt;&lt;br /&gt;That is simply you may cheat your friends by writing a your own version of Google like this.&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&amp;lt;h1&amp;gt;My Google&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$fp&lt;/span&gt; = &lt;a href="http://www.php.net/fopen"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"http://www.google.com"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"r"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$google_html&lt;/span&gt; = &lt;a href="http://www.php.net/fpassthru"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;fpassthru&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$fp&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$google_html&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You may find out that fopen is just a http client (and load only what it asks to load), it doesn't load images, since they need some additional http request which is automatically done  if you instead did this request from a browser.&lt;br /&gt;&lt;br /&gt;I think it is clear what 'fopen' can do. Why not we use it to access 'REST' web services. Yea, it is possible. To access 'REST' web services you only need is a Http client and as I mentioned 'fopen' is a Http client.&lt;br /&gt;&lt;br /&gt;Let me show you how to access some real web service with fopen. I take amazon web service for an example.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$query&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"TEST"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$catagory&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"Books"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Use your own amazon key,&lt;br /&gt;You can get it from http://aws.amazon.com */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$amazon_key&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"your_amazon_key"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$fp&lt;/span&gt; = &lt;a href="http://www.php.net/fopen"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"http://webservices.amazon.com/onca/xml?"&lt;/span&gt;.&lt;br /&gt;              &lt;span style="color: rgb(255, 0, 0);"&gt;"SubscriptionId={$amazon_key}&amp;amp;"&lt;/span&gt;.&lt;br /&gt;              &lt;span style="color: rgb(255, 0, 0);"&gt;"Service=AWSECommerceService&amp;amp;"&lt;/span&gt;.&lt;br /&gt;              &lt;span style="color: rgb(255, 0, 0);"&gt;"Operation=ItemSearch&amp;amp;"&lt;/span&gt;.&lt;br /&gt;              &lt;span style="color: rgb(255, 0, 0);"&gt;"Keywords={$query}&amp;amp;"&lt;/span&gt;.&lt;br /&gt;              &lt;span style="color: rgb(255, 0, 0);"&gt;"SearchIndex={$catagory}&amp;amp;"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"r"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$res&lt;/span&gt; = &lt;a href="http://www.php.net/fpassthru"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;fpassthru&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$fp&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// For now I m just echoing the output as it is&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$res&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;... It is really simple.&lt;br /&gt;&lt;br /&gt;Is that only what fopen can do?. Hm! do you believe that we can do simple 'SOAP' webservices with  fopen?. If you have seen lot of 'SOAP' messages, that will not be a problem to write a simple SOAP request with 'fopen'.&lt;br /&gt;&lt;br /&gt;That is you can have a good control of your HTTP Request associating a stream context with 'fopen'. A simple SOAP request may only need few http headers and request XML wrapped with 'soap' headers as  'POST' data.&lt;br /&gt;you can create a simple stream context with php standard function &lt;a href="http://www.php.net/stream_context_create"&gt;'stream_context_create'.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is how you may use the 'fopen' with stream_context_create to do a POST http request.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$data&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"Here is my POST data"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$opts&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'http'&lt;/span&gt;=&amp;gt;array&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'method'&lt;/span&gt;=&amp;gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"POST"&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'header'&lt;/span&gt;=&amp;gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"User-Agent: My Own Http Client&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\r&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;.&lt;br /&gt;         &lt;span style="color: rgb(255, 0, 0);"&gt;"Content-length: "&lt;/span&gt; . &lt;a href="http://www.php.net/strlen"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\r&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'content'&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$data&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$context&lt;/span&gt; = &lt;a href="http://www.php.net/stream_context_create"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;stream_context_create&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$opts&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$fp&lt;/span&gt; = &lt;a href="http://www.php.net/fopen"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$url&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;'r'&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;false&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;$context&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* you got the pointer to $fp, use any function like fgets, freed to read the buffer */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So if i use 'fopen' to do a SOAP request to call the same amazon web service, it will be like this..&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$query&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"TEST"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$catagory&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"Books"&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Use your own amazon key,&lt;br /&gt;You can get it from http://aws.amazon.com */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$amazon_key&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"your_amazon_key"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$soap_msg&lt;/span&gt; = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;&amp;lt;soapenv:Envelope xmlns:soapenv=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://schemas.xmlsoap.org/soap/envelope/"&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;soapenv:&lt;a href="http://www.php.net/header"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Header&lt;/span&gt;&lt;/a&gt;/&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;  &amp;lt;ItemSearch xmlns=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://webservices.amazon.com/AWSECommerceService/2007-10-29"&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;SubscriptionId&amp;gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;amazon_key&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&amp;lt;/SubscriptionId&amp;gt;&lt;br /&gt;     &amp;lt;Request&amp;gt;&lt;br /&gt;        &amp;lt;Keywords&amp;gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$query&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&amp;lt;/Keywords&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;SearchIndex&amp;gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;catagory&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&amp;lt;/SearchIndex&amp;gt;&lt;br /&gt;     &amp;lt;/Request&amp;gt;&lt;br /&gt;  &amp;lt;/ItemSearch&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Body&amp;gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;&lt;br /&gt;XML;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$opts&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'http'&lt;/span&gt;=&amp;gt;array&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'method'&lt;/span&gt;=&amp;gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"POST"&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'header'&lt;/span&gt;=&amp;gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"User-Agent: fopen soap engine&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\r&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;.&lt;br /&gt;          &lt;span style="color: rgb(255, 0, 0);"&gt;"Content-Type: text/xml;charset=UTF-8&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\r&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;.&lt;br /&gt;          &lt;span style="color: rgb(255, 0, 0);"&gt;"SOAPAction: &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\"&lt;/span&gt;http://soap.amazon.com&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\r&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;.&lt;br /&gt;          &lt;span style="color: rgb(255, 0, 0);"&gt;"Content-length: "&lt;/span&gt; . &lt;a href="http://www.php.net/strlen"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$soap_msg&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\r&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;,&lt;br /&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'content'&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$soap_msg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$context&lt;/span&gt; = &lt;a href="http://www.php.net/stream_context_create"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;stream_context_create&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$opts&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$fp&lt;/span&gt; = &lt;a href="http://www.php.net/fopen"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"http://soap.amazon.com:80/onca/soap?Service=AWSECommerceService"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;'r'&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;false&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;$context&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt; = &lt;a href="http://www.php.net/fpassthru"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;fpassthru&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$fp&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$resutl&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.php.net/fclose"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;fclose&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$fp&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&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/23089790-4856195689254486731?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/4856195689254486731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=4856195689254486731' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4856195689254486731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4856195689254486731'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/web-services-with-fopen.html' title='PHP Web Services with fopen ..'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-3269211802276109202</id><published>2008-01-20T21:33:00.000+05:30</published><updated>2008-01-20T23:01:23.764+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service Framework for PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Resources for WSF/PHP developers</title><content type='html'>When you go to the &lt;a href="http://www.wso2.org/"&gt;Oxygen Tank&lt;/a&gt; you will find they have plenty of resources related to WSF/PHP project. But just to put references to all of them (including resources outside the Oxygen Tank) from one place, I thought to blog a list of resources, mentioning what, when and why you should pick them.  Please add here, if I m missing anything.&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://wso2.org/project/wsf/php/1.2.0/docs/manual.html"&gt;WSF/PHP Manual&lt;/a&gt;&lt;br /&gt;If you just now happened to heard about WSF/PHP, then this is the place you should go first. Even if you have some experience working with it, this is surely a place you will be regularly visiting. It will guide you from installing WSF/PHP to testing most of the features in very easy steps.&lt;br /&gt;Some of the cool topics it covers are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Quick Start Guide for both providing and consuming web services&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Using REST and SOAP&lt;/li&gt;&lt;li&gt;Attachment with MTOM/XOP&lt;/li&gt;&lt;li&gt; WS-Security with policies&lt;/li&gt;&lt;/ul&gt;2. &lt;a href="http://wso2.org/project/wsf/php/1.2.0/docs/index.html"&gt;WSF/PHP Documentation&lt;/a&gt;&lt;br /&gt;Actually &lt;a href="http://wso2.org/project/wsf/php/1.2.0/docs/manual.html"&gt;WSF/PHP Manual&lt;/a&gt; is a part of the WSF/PHP Documentation. In addition to the manual it contains Introduction which brief out the feature set and more importantly API Reference for WSF/PHP Classes. You will find this API reference is organized in a very structured manner with examples.&lt;br /&gt;&lt;br /&gt;3.  &lt;a href="http://wso2.org/taxonomy/term/283"&gt;Articles, Tutorial &amp;amp; Demonstration&lt;/a&gt;&lt;br /&gt;Oxygen Tanks provides many articles and tutorials for beginners of the PHP web Service development. And recently it is planned to add many demonstration that will guide users to do installation with slide shows. See the first one of it which present you how to install &lt;a href="http://wso2.org/library/3076"&gt;WSF/PHP with XAMPP on Windows&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4. &lt;a href="http://wso2.org/mailarchive/wsf-php-user/"&gt;User list mail archives&lt;/a&gt;&lt;br /&gt;If you can't find the solution in any of above mentioned links, this is the most probable place you will find the answer. If you can not find that in there too, just don't hesitate to post it in the list.  You will be able to subscribe for the list sending a mail to &lt;a href="mailto:wsf-php-user-request@wso2.org?subject=subscribe"&gt;wsf-php-user-request@wso2.org with the subject subscribe&lt;/a&gt;. And there is no prohibition to check the &lt;a href="http://wso2.org/mailarchive/wsf-c-dev/"&gt;dev mail archives&lt;/a&gt; of the project too.&lt;br /&gt;&lt;br /&gt;5. &lt;a href="http://wso2.org/forum/188"&gt;Forum&lt;/a&gt;&lt;br /&gt;If you don't like to subscribe to mailing list (in a case where you are not a regular user), then you have &lt;a href="http://wso2.org/forum/188"&gt;this place&lt;/a&gt;. You can check through the old forum topic or start a new topic mentioning your problem.&lt;br /&gt;&lt;br /&gt;6. Blogs&lt;br /&gt;There are several blogs that would give you new news about the WSF/PHP project. Here is some list of blogs that you may find useful.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://phpwebservices.blogspot.com/"&gt;PHP Web Service Blog&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://samisa-abeysinghe.blogspot.com/"&gt;Samisa Abeysinghe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://nandikajayawardana.blogspot.com/"&gt;Nandika Jayawardana&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kaushalye.org/"&gt;Kaushalya Kapuruge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.manjula-peiris.blogspot.com/"&gt;Manjula Peiris&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://moratuwage.blogspot.com/"&gt;Diluka Moratuwage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dimuthuc.blogspot.com/"&gt;Dimuthu Gamage&lt;/a&gt;, Yea this what you are reading right now;)&lt;/li&gt;&lt;/ul&gt;7. &lt;a href="http://wso2.org/"&gt;Search Oxygen Tank&lt;/a&gt;&lt;br /&gt;Are you tired of finding what you want from dozens of places, go to wso2.org and search for it. By the way you can reach to an &lt;a href="http://wso2.org/search/node/"&gt;advanced search page&lt;/a&gt; too.&lt;br /&gt;&lt;br /&gt;8. Search Google&lt;br /&gt;You trust Google more, then go there and search. Most probably you will be directed to the Oxygen Tank, but sometime with some more accuracy.&lt;br /&gt;&lt;br /&gt;Ok, They are the places I know, that you can find lot of resources about WSF/PHP and mostly about web services in PHP in general. Hope this post will helpful to somebody to locate these resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-3269211802276109202?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/3269211802276109202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=3269211802276109202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3269211802276109202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3269211802276109202'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/resources-for-wsfphp-developers.html' title='Resources for WSF/PHP developers'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-8876448747050057092</id><published>2008-01-19T22:50:00.000+05:30</published><updated>2008-01-20T00:41:25.357+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service Framework for PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Mapping WSDL schema elements to PHP Classes</title><content type='html'>Since I talked about how you can deal with WSDLs using &lt;a href="http://wso2.org/projects/wsf/php"&gt;WSF/PHP&lt;/a&gt; in last two days, I thought of blogging a kind of a hidden feature of WSF/PHP related to WSDLs today.&lt;br /&gt;&lt;br /&gt;When you are using WSF/PHP wsdl mode API in the client side, you can use classes to hold your data. That is simply you will be filling data in your class like you are creating an XML.&lt;br /&gt;&lt;br /&gt;For an example,&lt;br /&gt;&lt;pre class="xml"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;HelloWorld&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;name&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Hiro&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/name&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/HelloWorld&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;would map to the following PHP class,&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; HelloWorld&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$name&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;I will take the &lt;a href="http://dimuthuc.blogspot.com/2008/01/tutorial2-hello-world-using-web-service.html"&gt;yesterdays&lt;/a&gt; (and the same used in day before yesterday) WSDL to explain a full example of use of this feature..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/*&lt;br /&gt;* Client.php&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Class HelloWorld maps to the following schema part&lt;br /&gt;*  &amp;lt;xsd:element name="HelloWorld"&amp;gt;&lt;br /&gt;*      &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;*          &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;*              &amp;lt;xsd:element name="name" type="xsd:string"/&amp;gt;&lt;br /&gt;*          &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;*      &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;*  &amp;lt;/xsd:element&amp;gt;&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; HelloWorld&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$name&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Class HelloWordResponse maps to the following schema part&lt;br /&gt;*  &amp;lt;xsd:element name="HelloWorldResponse"&amp;gt;&lt;br /&gt;*      &amp;lt;xsd:complexType&amp;gt;&lt;br /&gt;*          &amp;lt;xsd:sequence&amp;gt;&lt;br /&gt;*              &amp;lt;xsd:element name="return" type="xsd:string"/&amp;gt;&lt;br /&gt;*          &amp;lt;/xsd:sequence&amp;gt;&lt;br /&gt;*      &amp;lt;/xsd:complexType&amp;gt;&lt;br /&gt;*  &amp;lt;/xsd:element&amp;gt;&lt;br /&gt;&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; HelloWorldResponse&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$return&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/*&lt;br /&gt;* Additionally you have to create the class map&lt;br /&gt;* (i.e. Schema element =&amp;gt; PHP Class Name&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$class_map&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;=&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;,&lt;br /&gt;           &lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldResponse"&lt;/span&gt;=&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldResponse"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* create the WSClient with the given WSDL and my service endpoint&lt;br /&gt;  Note: Here im overwriting the endpoint declared in the WSDL */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$wsclient&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSClient&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(255, 0, 0);"&gt;"classmap"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$class_map&lt;/span&gt;,&lt;br /&gt;               &lt;span style="color: rgb(255, 0, 0);"&gt;"wsdl"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"http://localhost/Service_wsdl.php?wsdl"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* we need to take the proxy object to call the wsdl operation */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$proxy&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$wsclient&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;getProxy&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* prepare the input */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$input&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; HelloWorld&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$input&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;name&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"Hiro"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Right here I'm calling the HelloWorld function with&lt;br /&gt;* argument as the HelloWorld instance&lt;br /&gt;* Remeber in the WSDL we had "HelloWorld"&lt;br /&gt;* operation with name argument */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$ret_val&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$proxy&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;HelloWorld&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$input&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Retrive the response. Just to recall,&lt;br /&gt;* our response is an instance of HelloWorldResponse */&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$ret_val&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;return&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-8876448747050057092?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/8876448747050057092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=8876448747050057092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8876448747050057092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8876448747050057092'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/mapping-wsdl-schema-elements-to-php.html' title='Mapping WSDL schema elements to PHP Classes'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-5848108407264290078</id><published>2008-01-18T22:05:00.000+05:30</published><updated>2008-01-18T23:18:19.349+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service Framework for PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL2'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL Generator'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL1.1'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Tutorial2 - Hello World Using Web Service Framework for PHP with WSDL Generation</title><content type='html'>Yesterday I &lt;a href="http://dimuthuc.blogspot.com/2008/01/hellow-world-with-wsdl-mode-using-web.html"&gt;blogged a tutorial&lt;/a&gt; on how to write a Hello World Web Service Client and Service starting from a WSDL. So in order to follow that approach (Contract first, That is starting from a WSDL. I have described these terms in details &lt;a href="http://phpwebservices.blogspot.com/2008/01/approaches-you-can-select-in-developing.html"&gt;here&lt;/a&gt;) you have to have a WSDL. Yes there are many tools which will help you generating WSDLs. But how if you can generate the WSDL from your PHP service itself.&lt;br /&gt;&lt;br /&gt;In fact with WSF/PHP you can get it done easily. For the simplicity I will get the example service (the HelloWorld  Service) &lt;a href="http://dimuthuc.blogspot.com/2008/01/hellow-world-with-wsdl-mode-using-web.html"&gt;I took yesterday&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;First I write the service like following.&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/**&lt;br /&gt;* Service.php&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* See how we put doc comment for the HelloWorld function */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/**&lt;br /&gt;* First whatever your introduction to the function&lt;br /&gt;* @param string $name&lt;br /&gt;* @return string $return&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; HelloWorld&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$name&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Remember in the response we had 'return' element */&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"return"&lt;/span&gt;=&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"welcome "&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;$name&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"!"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Map of the service opertion "HelloWorld" to php functions "HelloWorld" */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$operations&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* just tell your function parameters should be in mixed format,&lt;br /&gt;that is here parameter will be the string with the name in it*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$opParams&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"MIXED"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Created the WSService */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$svr&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSService&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* "wsdl" =&amp;gt; "HelloWorld.wsdl", */&lt;/span&gt; &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// we removed this line.&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: rgb(255, 0, 0);"&gt;"bindingStyle"&lt;/span&gt;=&amp;gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"doclit"&lt;/span&gt;, &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;// we added this line&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                        &lt;span style="color: rgb(255, 0, 0);"&gt;"operations"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$operations&lt;/span&gt;,&lt;br /&gt;                        &lt;span style="color: rgb(255, 0, 0);"&gt;"opParams"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$opParams&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Reply the client */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$svr&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;reply&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Just note the doc comment in the service operation "HelloWorld"..&lt;br /&gt;&lt;pre class="php"&gt;&lt;span&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/**&lt;br /&gt;* First whatever your introduction to the function&lt;br /&gt;* @param string $name - Whatever the name mean&lt;br /&gt;* @return string $return - Something to return&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;It explain the set of input parameters and the return value with its type. In fact this give a human reader an idea how should somebody should use this operation. But here in this particular case we have put it there just to give the WSF/PHP WSDL Generator a hint about this function (like what are the input and return types)&lt;br /&gt;&lt;br /&gt;So put this in a Apache web root and go the following url in the localhost from a browser,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://localhost/Service.php?wsdl&lt;/span&gt;&lt;br /&gt;and&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://localhost/Service.php?wsdl2&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;You will be able to retrieve the WSDL v 1.1 and WSDL v 2 for our service. Isn't that easy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you followed the yesterday my blog get the same client and just change the wsdl location to the new wsdl. (That is the one just typed in the browser)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/*&lt;br /&gt;* Client.php&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* create the WSClient with the given WSDL and my service endpoint&lt;br /&gt;  Note: Here im overwriting the endpoint declared in the WSDL */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$wsclient&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSClient&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;               &lt;span&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Here is my WSDL */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(255, 0, 0);"&gt;"wsdl"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"http://localhost/Service.php?wsdl2"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* we need to take the proxy object to call the wsdl operation */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$proxy&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$wsclient&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;getProxy&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Right here I'm calling the HelloWorld function with argument "Hiro"&lt;br /&gt;  Remeber in the WSDL we had "HelloWorld" operation with name argument */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$ret_val&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$proxy&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;HelloWorld&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"name"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"Hiro"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Retrive the response. Just to recall, response had the element 'return' */&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$ret_val&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"return"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;/pre&gt;So you are done. You don't need any explanation of what are in the WSDL to do this tutorial. Since in this case you know what you should call since the service is designed by you and you know PHP.&lt;br /&gt;&lt;br /&gt;But some one else (some even you don't know) who want to consume your service may not understand PHP (Say he is a really Java fan),  and even though he is PHP guy you should not show your PHP service code to the unknown consumers.&lt;br /&gt;&lt;br /&gt;That is where WSDL comes in to the play. You can give the WSDL (in fact just generated from the PHP) and let them consume the service. Surely there are many libraries and tools  in Java (or any other language) which understand the WSDL and interpret it that language, so the consumer will find very easy to consume your service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-5848108407264290078?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/5848108407264290078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=5848108407264290078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5848108407264290078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5848108407264290078'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/tutorial2-hello-world-using-web-service.html' title='Tutorial2 - Hello World Using Web Service Framework for PHP with WSDL Generation'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-6811877468475872267</id><published>2008-01-17T16:20:00.000+05:30</published><updated>2008-01-18T22:05:13.876+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Tutorial - Hello World with WSDL Mode Using Web Service Framework for PHP</title><content type='html'>&lt;a href="http://wso2.org/projects/wsf/php"&gt;Web Service Framework for PHP (WSF/PHP)&lt;/a&gt; allows you to write web services and clients using WSDL. In there you are not writing the XML message manually, rather you only need to provide parameters and the framework generate the xml message for you. So this is a simple tutorial which allow you to write a Hellow World service and client from a WSDL.&lt;br /&gt;&lt;br /&gt;Here is my WSDL.&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"1.0"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;encoding&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"UTF-8"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:definitions&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns:wsdl&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://schemas.xmlsoap.org/wsdl/"&lt;/span&gt;&lt;br /&gt;xmlns:ns1=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://org.apache.axis2/xsd"&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; xmlns:wsaw&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://www.w3.org/2006/05/addressing/wsdl"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;xmlns:http&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://schemas.xmlsoap.org/wsdl/http/"&lt;/span&gt;&lt;br /&gt;xmlns:ns0=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://MyTest"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; xmlns:xs&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; xmlns:mime&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://schemas.xmlsoap.org/wsdl/mime/"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;xmlns:soap&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://schemas.xmlsoap.org/wsdl/soap/"&lt;/span&gt;&lt;br /&gt;xmlns:soap12=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://schemas.xmlsoap.org/wsdl/soap12/"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; targetNamespace&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://MyTest"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:types&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:schema&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns:ns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://MyTest"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; attributeFormDefault&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"qualified"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; elementFormDefault&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"qualified"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;targetNamespace&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://MyTest"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:element&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:complexType&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:sequence&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:element&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"greet"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"xs:string"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:sequence&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:complexType&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:element&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:element&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldResponse"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:complexType&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:sequence&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:element&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"return"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"xs:string"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:sequence&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:complexType&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:element&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:schema&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:types&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:message&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldRequest"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:part&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"parameters"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;element&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:message&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:message&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldResponse"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:part&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"parameters"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;element&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorldResponse"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:message&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:portType&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldPortType"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:operation&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:input&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;message&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorldRequest"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;wsaw:Action&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"urn:HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:output&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;message&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorldResponse"&lt;br /&gt;&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 102);"&gt;wsaw:Action&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"urn:HelloWorldResponse"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:operation&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:portType&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:binding&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldSOAP12Binding"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorldPortType"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;soap12:binding&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;transport&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://schemas.xmlsoap.org/soap/http"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;style&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"document"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:operation&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;soap12:operation&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;soapAction&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"urn:HelloWorld"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;style&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"document"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:input&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;soap12:body&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;use&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"literal"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:input&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:output&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;soap12:body&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;use&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"literal"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:output&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:operation&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:binding&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:service&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:port&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldSOAP12port_http"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;binding&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorldSOAP12Binding"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;soap12:address&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;location&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://localhost:8080/axis2/services/HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:port&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:service&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:definitions&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Just don't worry about what it means, But to use this you may need a little knowledge of finding the operation name and finding the arguments that we have to set in order to generate the request XML.&lt;br /&gt;&lt;br /&gt;First to understand what are the operations and arguments, just check the 'wsdl:portType' element.&lt;br /&gt;&lt;pre class="xml"&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:portType&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldPortType"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:operation&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:input&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;message&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorldRequest"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;wsaw:Action&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"urn:HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:output&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;message&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorldResponse"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;wsaw:Action&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"urn:HelloWorldResponse"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:operation&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:portType&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So you can see this has one operation with the name "HelloWorld" and it contains both input and output messages. Anyway this doesn't reveal the format of the message. In order to have a clue on that, you have to go one level up in the WSDL.&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml"&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:message&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldRequest"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:part&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"parameters"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;element&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:message&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:message&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorldResponse"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;wsdl:part&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"parameters"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;element&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"ns0:HelloWorldResponse"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/wsdl:message&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Oops!, you will see this again point to another upper level through the 'element' attribute. Actually It is where the schema of your message is shown. First we will check 'HelloWorld' element.&lt;br /&gt;&lt;pre class="xml"&gt;        &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:element&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:complexType&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:sequence&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;xs:element&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"greet"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"xs:string"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:sequence&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:complexType&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/xs:element&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here is the schema of your "HelloWorld" XML, I can see it validate an XML like this..&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;HelloWorld&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"the namespace"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;greet&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Hiro&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/greet&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/HelloWorld&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Don't worry, here you dont' need to understand the XML. just keeping in mind that we have to provide the argument 'greet' when calling HelloWorld.&lt;br /&gt;&lt;br /&gt;The same way we will can expect the response message.&lt;br /&gt;&lt;pre class="xml"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;HelloWorldResponse&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"the namespace"&lt;/span&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;return&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Welcome Hiro!&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/return&lt;span style="font-weight: bold;color:black;" &gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;color:black;" &gt;&amp;lt;/HelloWorld&lt;span style="font-weight: bold;color:black;" &gt;Reponse&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;So it is all about the explanation of the WSDL. We will go to the real steps of the tutorial&lt;br /&gt;&lt;br /&gt;Building the Provider of the Web Service.. Here I have done explanation inline in each line.&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/**&lt;br /&gt;* Service.php&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* This is where your logic is&lt;br /&gt;Remeber in the WSDL we had "HelloWorld" operation with name argument */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; HelloWorld&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$name&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Remember in the response we had 'return' element */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"return"&lt;/span&gt;=&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"welcome "&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;$name&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"!"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Map of the service opertion "HelloWorld" to php functions "HelloWorld" */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$operations&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* just tell your function parameters should be in mixed format,&lt;br /&gt;that is here parameter will be the string with the name in it*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$opParams&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"MIXED"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Created the WSService */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$svr&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSService&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"wsdl"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld.wsdl"&lt;/span&gt;,&lt;br /&gt;                    &lt;span style="color: rgb(255, 0, 0);"&gt;"operations"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$operations&lt;/span&gt;,&lt;br /&gt;                    &lt;span style="color: rgb(255, 0, 0);"&gt;"opParams"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$opParams&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Reply the client */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$svr&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;reply&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then you may put that in the htdocs directory to deploy with the Apache Server. I put it that directly in the htdocs directory. So my service endpoint is&lt;br /&gt;http://localhost/Service.php.&lt;br /&gt;&lt;br /&gt;Remember you restart the Apache server after you did this..&lt;br /&gt;&lt;br /&gt;Just go to the browser and type "http://localhost/Service.php". This will give you the list of deployed services and their operations. Confirm your service is in there.&lt;br /&gt;&lt;br /&gt;Then start writing the PHP web service client ..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/*&lt;br /&gt;* Client.php&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* create the WSClient with the given WSDL and my service endpoint&lt;br /&gt;Note: Here im overwriting the endpoint declared in the WSDL */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$wsclient&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSClient&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color: rgb(255, 0, 0);"&gt;"wsdl"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"HelloWorld.wsdl"&lt;/span&gt;,&lt;br /&gt;           &lt;span style="color: rgb(255, 0, 0);"&gt;"to"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"http://localhost/Service.php"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* we need to take the proxy object to call the wsdl operation */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$proxy&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$wsclient&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;getProxy&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Right here I'm calling the HelloWorld function with argument "Hiro"&lt;br /&gt;Remeber in the WSDL we had "HelloWorld" operation with name argument */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$ret_val&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$proxy&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;HelloWorld&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"name"&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"Hiro"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Retrive the response. Just to recall, response had the element 'return' */&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$ret_val&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"return"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;It is all coding you should do. Now just go to a command line and run&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;php Client.php &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or go to the browser and type&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://localhost/Client.php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you retrieve exactly what the server set, You are done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-6811877468475872267?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/6811877468475872267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=6811877468475872267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6811877468475872267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6811877468475872267'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/hellow-world-with-wsdl-mode-using-web.html' title='Tutorial - Hello World with WSDL Mode Using Web Service Framework for PHP'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-8253638259668284936</id><published>2008-01-16T20:06:00.000+05:30</published><updated>2008-01-16T20:17:37.221+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP Helper Classes'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><title type='text'>Amazon Search with WSF/PHP Helper classes</title><content type='html'>You can do amazon search with the help of WSF/PHP helper classes which are bundled with &lt;a href="http://wso2.org/projects/wsf/php"&gt;Web service framework for PHP 1.2 release&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is a little demonstration how can you use this,,&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;require_once&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"wso2/amazon/AmazonClient.php"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$amazon_client&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; AmazonClient&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"my amazon key"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$results&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$amazon_client&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;itemSearch&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"My Book"&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;"Books"&lt;/span&gt;, &lt;span style="color: rgb(204, 102, 204);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;foreach&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$res&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"results"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(177, 177, 0);"&gt;as&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"ItemAttributes"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Author"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;. &lt;span style="color: rgb(255, 0, 0);"&gt;"-"&lt;/span&gt;;&lt;br /&gt; &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"ItemAttributes"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Title"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;. &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-8253638259668284936?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/8253638259668284936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=8253638259668284936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8253638259668284936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8253638259668284936'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/amazon-search-with-wsfphp-helper.html' title='Amazon Search with WSF/PHP Helper classes'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-4415977596420447791</id><published>2008-01-14T23:43:00.000+05:30</published><updated>2008-01-14T23:47:44.124+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flickr'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP Helper Classes'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='News Search'/><title type='text'>PHP Helper classes bundled with Web Service Framework for PHP</title><content type='html'>In the new release of Web Service Framework for PHP, it bundles a set of PHP helper classes which allow you to access some of the popular public web service like Flickr, Yahoo and Amazon.&lt;br /&gt;&lt;br /&gt;You can use this helper classes to access those services from your PHP applications&lt;br /&gt;very easily.&lt;br /&gt;&lt;br /&gt;The following is a set of code that I wrote for demonstrate the use of the Yahoo class with Yahoo NewsSearch Service operation.&lt;br /&gt;&lt;br /&gt;&lt;phpcode&gt;&lt;br /&gt;&lt;/phpcode&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;require_once&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"wso2/yahoo/YahooClient.php"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$yahoo_client&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; YahooClient&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"your_yahoo_id"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/* Search news for Presidential election */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$res&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$yahoo_client&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;newsSearch&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"presidential election"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(177, 177, 0);"&gt;foreach&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$res&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"results"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(177, 177, 0);"&gt;as&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Title"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;" - "&lt;/span&gt;;&lt;br /&gt; &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Summary"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&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/23089790-4415977596420447791?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/4415977596420447791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=4415977596420447791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4415977596420447791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4415977596420447791'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/php-helper-classes-bundled-with-web.html' title='PHP Helper classes bundled with Web Service Framework for PHP'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-5119796562570795714</id><published>2008-01-13T21:31:00.000+05:30</published><updated>2008-01-13T22:43:01.452+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='MXML'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>PHP Webservice consume from Flex</title><content type='html'>Yesterday I happened to write a very simple flex web service client which calls a PHP web services, while answering a post on &lt;a href="http://wso2.org/forum/thread/3042"&gt;WSO2 Oxygen Tanks Forum&lt;/a&gt; on &lt;a href="http://wso2.org/projects/wsf/php"&gt;Web service Framework for PHP&lt;/a&gt;. I thought I better share my little experience here. Please note I copied most of the code from Buddhika's and Colinrotherham's posts. Hope they will excuse me for publishing them here..&lt;br /&gt;&lt;br /&gt;Our service is a greet service which just greet when you call it with your name. The final look of our simple application like this..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_n7NySRx9WK4/R4o-gMkperI/AAAAAAAAADo/YEADivt7tko/s1600-h/publish.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_n7NySRx9WK4/R4o-gMkperI/AAAAAAAAADo/YEADivt7tko/s320/publish.jpg" alt="" id="BLOGGER_PHOTO_ID_5155001446330628786" 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;Well first forget the clientside, rather move to the server side. It will be written with Web Service Framework for PHP like following block.&lt;br /&gt;&lt;br /&gt;&lt;pre class="php"&gt;  &lt;span style="color: rgb(204, 102, 204);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;3&lt;/span&gt; &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;/** greet function&lt;br /&gt;4  * @param string $name&lt;br /&gt;5  * (map to xs:string)&lt;br /&gt;6  * @return string $greetReturn&lt;br /&gt;7  * (map to xs:string)&lt;br /&gt;8  */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;9&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;11&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; greet&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$name&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;12&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;13&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'greetReturn'&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"Greetings, "&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;$name&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;14&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;15&lt;/span&gt;   &lt;span style="color: rgb(177, 177, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;16&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;17&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;18&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$operations&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'greet'&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'greet'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;19&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$parameters&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'greet'&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'MIXED'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;20&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;21&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$service&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WSService&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;22&lt;/span&gt;              &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;23&lt;/span&gt;               &lt;span style="color: rgb(255, 0, 0);"&gt;'operations'&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$operations&lt;/span&gt;,&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;24&lt;/span&gt;               &lt;span style="color: rgb(255, 0, 0);"&gt;'opParams'&lt;/span&gt; =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;25&lt;/span&gt;           &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;26&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;27&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$service&lt;/span&gt;-&amp;gt;&lt;span style="color: rgb(0, 102, 0);"&gt;reply&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;28&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;29&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;As you can see we are putting doc comments on top of the service function inorder to generate the WSDL from it.. Then publish it with the web server in your computer.&lt;br /&gt;&lt;br /&gt;And next we will go to the client. Here is my flex code.. Just make sure you have changed the url of the WSDL to the where actually you have hosted the PHP Service.&lt;br /&gt;&lt;br /&gt;&lt;pre class="actionscript"&gt;  &lt;span style="color: rgb(204, 102, 204);"&gt;1&lt;/span&gt; &amp;lt;?&lt;span style="color: rgb(0, 102, 204);"&gt;xml&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"1.0"&lt;/span&gt; encoding=&lt;span style="color: rgb(255, 0, 0);"&gt;"utf-8"&lt;/span&gt;?&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;2&lt;/span&gt; &amp;lt;mx:Application xmlns:mx=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://www.adobe.com/2006/mxml"&lt;/span&gt; xmlns=&lt;span style="color: rgb(255, 0, 0);"&gt;"*"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;3&lt;/span&gt;     paddingBottom=&lt;span style="color: rgb(255, 0, 0);"&gt;"0"&lt;/span&gt; paddingTop=&lt;span style="color: rgb(255, 0, 0);"&gt;"0"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;4&lt;/span&gt;     paddingLeft=&lt;span style="color: rgb(255, 0, 0);"&gt;"0"&lt;/span&gt; paddingRight=&lt;span style="color: rgb(255, 0, 0);"&gt;"0"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;5&lt;/span&gt;     layout=&lt;span style="color: rgb(255, 0, 0);"&gt;"vertical"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;6&lt;/span&gt;     pageTitle=&lt;span style="color: rgb(255, 0, 0);"&gt;"My Greeting Client"&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;8&lt;/span&gt;     &amp;lt;mx:Script&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;9&lt;/span&gt;         &amp;lt;!&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;CDATA&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;11&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; test.&lt;span style="color: rgb(0, 102, 0);"&gt;MyResponder&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;12&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;rpc&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;soap&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;mxml&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;WebService&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;13&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;rpc&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;AsyncToken&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;14&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;rpc&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;events&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;FaultEvent&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;15&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;rpc&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;AbstractService&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;16&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;rpc&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;AsyncToken&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;17&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;rpc&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;Responder&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;18&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;utils&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;ArrayUtil&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;19&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;rpc&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;IResponder&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;20&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;21&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;22&lt;/span&gt;             &lt;span style="color: rgb(0, 102, 204);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; callService&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;:&lt;span style="color: rgb(0, 102, 204);"&gt;void&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;23&lt;/span&gt;             &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;24&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;var&lt;/span&gt; webService:WebService;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;25&lt;/span&gt;                 webService = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; WebService&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;26&lt;/span&gt;                 webService.&lt;span style="color: rgb(0, 102, 0);"&gt;wsdl&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;'http://localhost/mytests/mails/greetService.php?wsdl'&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;27&lt;/span&gt;                 webService.&lt;span style="color: rgb(0, 102, 0);"&gt;useProxy&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;28&lt;/span&gt;                 webService.&lt;span style="color: rgb(0, 102, 0);"&gt;showBusyCursor&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;29&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;30&lt;/span&gt;                 webService.&lt;span style="color: rgb(0, 102, 0);"&gt;loadWSDL&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;31&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;var&lt;/span&gt; token:AsyncToken = AsyncToken&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;webService.&lt;span style="color: rgb(0, 102, 0);"&gt;greet&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;input.&lt;span style="color: rgb(0, 102, 204);"&gt;htmlText&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;32&lt;/span&gt;           &lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;33&lt;/span&gt;                 token.&lt;span style="color: rgb(0, 102, 0);"&gt;addResponder&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new&lt;/span&gt; MyResponder&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;34&lt;/span&gt;                     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; responseHanlder&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 204);"&gt;data&lt;/span&gt;:&lt;span style="color: rgb(0, 102, 204);"&gt;Object&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;:&lt;span style="color: rgb(0, 102, 204);"&gt;void&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;35&lt;/span&gt;                     &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;36&lt;/span&gt;                         result.&lt;span style="color: rgb(0, 102, 204);"&gt;htmlText&lt;/span&gt; = &lt;span style="color: rgb(0, 102, 204);"&gt;data&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;result&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 204);"&gt;toString&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;37&lt;/span&gt;                     &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;38&lt;/span&gt;                 &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;39&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;40&lt;/span&gt;             &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;41&lt;/span&gt;         &lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;42&lt;/span&gt;     &amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;43&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;44&lt;/span&gt;     &amp;lt;mx:Panel id=&lt;span style="color: rgb(255, 0, 0);"&gt;"pnlMain"&lt;/span&gt; x=&lt;span style="color: rgb(255, 0, 0);"&gt;"10"&lt;/span&gt; y=&lt;span style="color: rgb(255, 0, 0);"&gt;"10"&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;width&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"450"&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;height&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"250"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;45&lt;/span&gt;       layout=&lt;span style="color: rgb(255, 0, 0);"&gt;"absolute"&lt;/span&gt; title=&lt;span style="color: rgb(255, 0, 0);"&gt;"My Greeting Client"&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;46&lt;/span&gt;       &amp;lt;mx:TextArea x = &lt;span style="color: rgb(255, 0, 0);"&gt;"10"&lt;/span&gt; y=&lt;span style="color: rgb(255, 0, 0);"&gt;"15"&lt;/span&gt; id=&lt;span style="color: rgb(255, 0, 0);"&gt;"input"&lt;/span&gt; editable=&lt;span style="color: rgb(255, 0, 0);"&gt;"true"&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;width&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"400"&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;height&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"50"&lt;/span&gt; /&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;47&lt;/span&gt;       &amp;lt;mx:TextArea x = &lt;span style="color: rgb(255, 0, 0);"&gt;"10"&lt;/span&gt; y=&lt;span style="color: rgb(255, 0, 0);"&gt;"100"&lt;/span&gt; id=&lt;span style="color: rgb(255, 0, 0);"&gt;"result"&lt;/span&gt; editable=&lt;span style="color: rgb(255, 0, 0);"&gt;"false"&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;width&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"400"&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;height&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"50"&lt;/span&gt; /&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;48&lt;/span&gt;       &amp;lt;mx:&lt;span style="color: rgb(0, 102, 204);"&gt;Button&lt;/span&gt; x=&lt;span style="color: rgb(255, 0, 0);"&gt;"10"&lt;/span&gt; y=&lt;span style="color: rgb(255, 0, 0);"&gt;"170"&lt;/span&gt; label=&lt;span style="color: rgb(255, 0, 0);"&gt;"Call WebService"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;49&lt;/span&gt;         id=&lt;span style="color: rgb(255, 0, 0);"&gt;"butJSDisplay"&lt;/span&gt; click=&lt;span style="color: rgb(255, 0, 0);"&gt;"callService()"&lt;/span&gt;/&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;50&lt;/span&gt;     &amp;lt;/mx:Panel&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;51&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;52&lt;/span&gt; &amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;As you can see we are using class called MyResponder in order to handle the asynchronous call.&lt;br /&gt;That willl be in the Test Package, so you will create a directory call 'Test' and put  the MyResponder.as with the following content.&lt;br /&gt;&lt;br /&gt;&lt;pre class="actionscript"&gt;  &lt;span style="color: rgb(204, 102, 204);"&gt;1&lt;/span&gt; package test&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;2&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;4&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;import&lt;/span&gt; mx.&lt;span style="color: rgb(0, 102, 0);"&gt;rpc&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;IResponder&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;6&lt;/span&gt; &lt;span style="color: rgb(0, 102, 204);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; MyResponder &lt;span style="color: rgb(0, 102, 204);"&gt;implements&lt;/span&gt; IResponder&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;7&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;8&lt;/span&gt;     &lt;span style="color: rgb(0, 102, 204);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;var&lt;/span&gt; handler:&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Function&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;9&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;10&lt;/span&gt;     &lt;span style="color: rgb(0, 102, 204);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; MyResponder&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;ahandler:&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;11&lt;/span&gt;     &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;12&lt;/span&gt;         &lt;span style="color: rgb(0, 102, 204);"&gt;super&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;13&lt;/span&gt;         &lt;span style="color: rgb(0, 102, 204);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;handler&lt;/span&gt; = ahandler;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;14&lt;/span&gt;     &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;15&lt;/span&gt;     &lt;span style="color: rgb(0, 102, 204);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; result&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 204);"&gt;data&lt;/span&gt;:&lt;span style="color: rgb(0, 102, 204);"&gt;Object&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;:&lt;span style="color: rgb(0, 102, 204);"&gt;void&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;16&lt;/span&gt;     &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;17&lt;/span&gt;         handler&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 204);"&gt;data&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;18&lt;/span&gt;     &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;19&lt;/span&gt;     &lt;span style="color: rgb(0, 102, 204);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; fault&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 204);"&gt;data&lt;/span&gt;:&lt;span style="color: rgb(0, 102, 204);"&gt;Object&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;:&lt;span style="color: rgb(0, 102, 204);"&gt;void&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;20&lt;/span&gt;     &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;21&lt;/span&gt;         handler&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 204);"&gt;data&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;22&lt;/span&gt;     &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;24&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;25&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then you will need to compile this file (my_consumer.mxml) using mxml compiler in the Flex SDK.&lt;br /&gt;&lt;br /&gt;mxmlc -use-network=true my_consumer.mxml&lt;br /&gt;&lt;br /&gt;If this works, you will see a file my_consumer.swf which is a compiled flash file and you are done. But just one small thing, you have to embed this flash file inside some html code. Here is the conventional code for that.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="html4strict"&gt;  1 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;&amp;lt;!-- saved from url=(0014)about:internet --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;2 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/html.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;html&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;lang&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"en"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;3 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/head.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;4 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/meta.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;meta&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;http-equiv&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"Content-Type"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;content&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"text/html; charset=utf-8"&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;5 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/title.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;My Project&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;6 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/style.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;7 body { margin: 0px; overflow:hidden }&lt;br /&gt;8 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;9 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;10&lt;br /&gt;11 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/body.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;body&lt;/span&gt;&lt;/a&gt; scroll=&lt;span style="color: rgb(255, 0, 0);"&gt;'no'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;12     &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/object.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;object&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;classid&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;13&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"myproject"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;width&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"100%"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;height&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"100%"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;14&lt;/span&gt;             &lt;span style="color: rgb(0, 0, 102);"&gt;codebase&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;15             &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/param.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;param&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"movie"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"myproject.swf"&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;16             &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/param.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;param&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"quality"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"high"&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;17             &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/param.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;param&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"bgcolor"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"#869ca7"&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;18             &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;&amp;lt;!--&amp;lt;param name="allowScriptAccess" value="sameDomain" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;--&amp;gt;&lt;br /&gt;19             &lt;span style="color: rgb(0, 153, 0);"&gt;&amp;lt;embed &lt;span style="color: rgb(0, 0, 102);"&gt;src&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"my_consumer.swf"&lt;/span&gt; quality=&lt;span style="color: rgb(255, 0, 0);"&gt;"high"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;bgcolor&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"#869ca7"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;20&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 102);"&gt;width&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"100%"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;height&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"100%"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"myproject"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;align&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"middle"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;21&lt;/span&gt;                 play=&lt;span style="color: rgb(255, 0, 0);"&gt;"true"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;22&lt;/span&gt;                 loop=&lt;span style="color: rgb(255, 0, 0);"&gt;"false"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;23&lt;/span&gt;                 quality=&lt;span style="color: rgb(255, 0, 0);"&gt;"high"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;24&lt;/span&gt;                 allowScriptAccess=&lt;span style="color: rgb(255, 0, 0);"&gt;"sameDomain"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;25&lt;/span&gt;                 &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"application/x-shockwave-flash"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 204);"&gt;26&lt;/span&gt;                 pluginspage=&lt;span style="color: rgb(255, 0, 0);"&gt;"http://www.adobe.com/go/getflashplayer"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;27             &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;&lt;/span&gt;/embed&amp;gt;&lt;/span&gt;&lt;br /&gt;28     &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/object&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;29 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;30 &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Looks like you can open the HTML from the browser and you are done. Yea but remember that your server has the &lt;a href="http://www.crossdomainxml.org/"&gt;crossdomain.xml&lt;/a&gt; and favicon.ico in the web server root directory.  There are essential when you access a remote service from flex.&lt;br /&gt;&lt;br /&gt;So that is all. Infact if you go to &lt;a href="http://wso2.org/forum/thread/3042"&gt;the forum thread&lt;/a&gt;, you may find attachments which actually contain the files describe here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-5119796562570795714?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/5119796562570795714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=5119796562570795714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5119796562570795714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5119796562570795714'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/php-webservice-consume-from-flex.html' title='PHP Webservice consume from Flex'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_n7NySRx9WK4/R4o-gMkperI/AAAAAAAAADo/YEADivt7tko/s72-c/publish.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-9089728591442980802</id><published>2008-01-11T23:15:00.000+05:30</published><updated>2008-01-12T20:11:54.037+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blast'/><category scheme='http://www.blogger.com/atom/ns#' term='Defence'/><category scheme='http://www.blogger.com/atom/ns#' term='Sri Lanka'/><title type='text'>FBI is in to real Terrorism</title><content type='html'>Today when  I  visit  &lt;a href="http://www.defence.lk/"&gt;defence.lk (Website for Sri Lankans Defence information)&lt;/a&gt; to find the news of the latest bomb attack in Colombo Sri Lanka, I found out this &lt;a href="http://www.defence.lk/new.asp?fname=20080111_11"&gt;good news&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fbi.gov/page2/jan08/tamil_tigers011008.html"&gt;Here&lt;/a&gt; FBI has given the right place for the LTTE terrorists. Although they have short listed some of the infamous terrorist acts by the LTTE, there are many more ..&lt;br /&gt;&lt;br /&gt;Today the bomb was at the railway station at &lt;a href="http://www.defence.lk/new.asp?fname=20080111_14"&gt;Colombo Fort&lt;/a&gt;. Although comparatively it is a very small one, this is the 5th incident (including shootings and huge blastings) reported in the first 11 days in Colombo of the brand new year 2008. And this is the most close incident to me, as I was at the Colombo fort, few hours before the explosion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-9089728591442980802?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/9089728591442980802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=9089728591442980802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/9089728591442980802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/9089728591442980802'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/fbi-is-in-to-real-terrorism.html' title='FBI is in to real Terrorism'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-3767071558240596560</id><published>2008-01-11T22:26:00.000+05:30</published><updated>2008-01-13T08:48:59.484+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Interoperability'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Interoperability of WSO2 WSF/PHP</title><content type='html'>Interoperability is a very much highly mentioned feature when we talk about &lt;a href="http://wso2.org/projects/wsf/php"&gt;Webservice Framework for PHP&lt;/a&gt;.  It s proven to be inter-operable with Not only WSO2 WSF/C, WSF/Ruby or WSAS, but also with Microsoft WSF and Sun J2EE in case of MTOM, WS-Security and WS-Reliable Messaging support.&lt;br /&gt;&lt;br /&gt;It is no doubt interoperability is a must feature for a Webservice Framework. Because the idea of the webservices itself is to provide a medium to communicate between heterogeneous environments, So whenever you want to host a web service make sure it can be accessed from a client from any environment. In that case WSF/PHP have released PHP developers from these concerns  by providing the interoperability from the framework itself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-3767071558240596560?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/3767071558240596560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=3767071558240596560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3767071558240596560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3767071558240596560'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/interoperability-of-wso2-wsfphp.html' title='Interoperability of WSO2 WSF/PHP'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-4391789020888856411</id><published>2008-01-07T19:35:00.000+05:30</published><updated>2008-01-07T20:36:10.303+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/C'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/PHP'/><title type='text'>Blog for PHP Webservices</title><content type='html'>Recently &lt;a href="http://wso2.org/projects/wsf/php"&gt;WSO2 WSF/PHP&lt;/a&gt; developers started a blog for &lt;a href="http://phpwebservices.blogspot.com/"&gt;PHP Webservices&lt;/a&gt;. And I managed to post my &lt;a href="http://phpwebservices.blogspot.com/2008/01/best-practices-of-using-wsclient.html"&gt;first blog (about 'The Best Practices of using WSClient')&lt;/a&gt; today:)&lt;br /&gt;&lt;br /&gt;In addition to the &lt;a href="http://phpwebservices.blogspot.com/"&gt;PHP Webservices&lt;/a&gt; blog, there are blogs about &lt;a href="http://cwebservices.blogspot.com/"&gt;C Webservices&lt;/a&gt; and &lt;a href="http://rubywebservices.blogspot.com/"&gt;Ruby Webservices&lt;/a&gt; as well.&lt;br /&gt;&lt;br /&gt;Hope these will be a great resource for developers who are hunting web services knowledge no matter what programming language they are mastered in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-4391789020888856411?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/4391789020888856411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=4391789020888856411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4391789020888856411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/4391789020888856411'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/blog-for-php-webservices.html' title='Blog for PHP Webservices'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-208334387325983331</id><published>2008-01-06T14:18:00.000+05:30</published><updated>2008-01-06T14:30:16.720+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analytics'/><category scheme='http://www.blogger.com/atom/ns#' term='Private'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='PageRank'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogspot'/><title type='text'>Comming Back to Blogspot</title><content type='html'>So after spending few months with blogging in &lt;a href="http://dimuthuc.wordpress.com"&gt;wordpress,(dimuthuc.wordpress.com)&lt;/a&gt;, I decided to come back to the Blogspot. &lt;br /&gt;   It s simply because &lt;br /&gt; 1. My Blogspot blog has better Google PageRank.&lt;br /&gt; 2. Wordpress is really nice, but it is too inflexible, just it doesn't give us to edit the html of templates, How can we put Google Ads later on.&lt;br /&gt; 3. I can collect Blog view statistics with Google Analytics, the major reason I tied up with wordpress.&lt;br /&gt; 4. I hope I can find some time to make a good Blogspot template.&lt;br /&gt;&lt;br /&gt;Anyway I may again jump to wordpress or somewhere else, If I feel that is greater than this.. But I am sure I will be spending most of the time here in next couple of months..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-208334387325983331?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/208334387325983331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=208334387325983331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/208334387325983331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/208334387325983331'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2008/01/comming-back-to-blogspot.html' title='Comming Back to Blogspot'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-8721817676975990778</id><published>2007-10-18T18:24:00.000+05:30</published><updated>2007-10-18T18:27:49.882+05:30</updated><title type='text'>Moving Away</title><content type='html'>I'm moving my blog to wordpress, &lt;a href="http://dimuthuc.wordpress.com"&gt;http://dimuthuc.wordpress.com&lt;/a&gt;. Well, I m not regular blogger, But still in the determination of blogging more. May be I can do some good work in the new environment.&lt;br /&gt;Bye!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-8721817676975990778?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/8721817676975990778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=8721817676975990778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8721817676975990778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8721817676975990778'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2007/10/moving-away.html' title='Moving Away'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-1081403643183439457</id><published>2007-09-14T19:15:00.000+05:30</published><updated>2007-09-14T19:35:14.374+05:30</updated><title type='text'>First Few Days at my First Job</title><content type='html'>So I went back to the place where I was doing my internship, well with the title of software engineer, big promotion. Within just 1 year of time It has changed a lot. But It is still there the very familiar and most importantly very friendly faces that I was used to see. &lt;br /&gt;&lt;br /&gt;My first assignment is to write samples, demos, POCs for their php web services extension. And It is really interesting. And I am hopefully looking for touch some c code in next few weeks.&lt;br /&gt;&lt;br /&gt;Hoping to spend some more time in blogging as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-1081403643183439457?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/1081403643183439457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=1081403643183439457' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1081403643183439457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1081403643183439457'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2007/09/first-few-days-at-my-first-job.html' title='First Few Days at my First Job'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-6222959333588452719</id><published>2007-04-19T13:38:00.000+05:30</published><updated>2007-04-19T14:17:15.604+05:30</updated><title type='text'>JAVAScript is difficult..</title><content type='html'>Yesterday I had an opportunity to have a chat with Dr. Sanjiva Weerawarne. Once I told I feel 'working with javascript is more difficult' than 'working with C/C++/java' he seems not much convinced.&lt;br /&gt;Well my reasons were..&lt;br /&gt;&lt;br /&gt;1. Javascript is still difficult to debug. Even though there are great plug-ins like firebug which support Javascript developer very much, javascripting is still difficult to debug. I feel its better put 'alert's  in most of the cases.&lt;br /&gt;2. You have to take decision which part should be kept in server or client.&lt;br /&gt;3. Javascripts more than 1000 lines of codes doesn't mean any thing, as it eat 30/40kbs bandwidth. so client should be kept thin.&lt;br /&gt;&lt;br /&gt;In addition to them, there are some reasons to prove why javascript is really tough.&lt;br /&gt;&lt;br /&gt;1. Browser dependency..&lt;br /&gt;C programmers may tell it is normal;). They work with machine dependent or OS dependent stuff. Actually javascript not much different from browser to browser if you only use only the basic functionality. But the browser independence come into the action sometimes in very minor cases.&lt;br /&gt;for an example: if you type&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  div1 = document.getElementById('div1');&lt;/span&gt;&lt;br /&gt;instead of&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  var div1 = document.getElementById('div1'); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//note the starting 'var' keyword&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;It works on Mozilla, but in IE it don't work. But if you use javascript variables not declared with 'var' in other situations, it works nicely.&lt;br /&gt;&lt;br /&gt;So when you write a big javascirpt work nicely in mozilla and you realize it dont work in IE which dont have a good debugger, It takes a while to realize that the error is due to such a small mistake or a misunderstanding:).&lt;br /&gt;&lt;br /&gt;2. To be a javascript expert you need to be expert on HTML, CSS and most probably in PHP or some other server side language as well.&lt;br /&gt;&lt;br /&gt;3. Javascript should have functions to do drawing at the canvas like drawLine(x,y) drawRectangle(x,y,width,height).  That is the main difference you feel in javascript if you just come from Java/ C++ GUI developing. Javascript have some handy ways to draw lines using some DOM manipulations but not many people are  stupid to use that to do a simple drawing.&lt;br /&gt;&lt;br /&gt;Although I complain a lot about Javascript, It is a great language. I'm still a beginner, I hope I will feel comfortable with it as time goes on. This hope itself is some months old. But I'm still suffering.:(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-6222959333588452719?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/6222959333588452719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=6222959333588452719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6222959333588452719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/6222959333588452719'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2007/04/javascript-is-difficult.html' title='JAVAScript is difficult..'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-9063548912518286263</id><published>2007-03-08T17:37:00.000+05:30</published><updated>2007-03-16T15:12:53.491+05:30</updated><title type='text'>My Home Page</title><content type='html'>Today I upload my home page to &lt;a href="http://www.cse.mrt.ac.lk/%7Edimuthu"&gt;www.cse.mrt.ac.lk/~dimuthu&lt;/a&gt;  &lt;a href="http://people.apache.org/%7Edimuthu"&gt;people.apache.org/~dimuthu&lt;/a&gt;&lt;br /&gt;It is a template from http://www.oswd.org. It is a really cool template.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-9063548912518286263?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/9063548912518286263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=9063548912518286263' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/9063548912518286263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/9063548912518286263'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2007/03/my-home-page.html' title='My Home Page'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-7451703094481234541</id><published>2007-03-07T10:28:00.000+05:30</published><updated>2007-03-07T14:12:18.302+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEMF'/><title type='text'>Back to SEMF design</title><content type='html'>Our co-supervisor is asking us the design of the project &lt;span style="font-weight: bold;"&gt;SEMF&lt;/span&gt;. So it is time to brief our design to a simple mail.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We select our project name as Sport Event Management Framework (SEMF). Our ultimate goal is to build a system that help an administrator to design a whole system in quick time.&lt;br /&gt;&lt;br /&gt;Our framework consists of following features&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Design environment to customize components and use them in a web page.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;     We present a development environment (SEMF Designer) that will give higher level GUI to design the database +  the web interface with customizable components&lt;br /&gt;&lt;br /&gt;   These components mainly compose the final view of the web page&lt;br /&gt;            Example of some components&lt;br /&gt;                1. Grids&lt;br /&gt;                       - Set the layout of a web page&lt;br /&gt;                2. Menu / Sidebar / Site Map&lt;br /&gt;                      - Used to navigate the web site&lt;br /&gt;                3. Calender&lt;br /&gt;                            - Show the current data. Can be used to synchronize the whole page.&lt;br /&gt;                4. Data grids/ Data tables/ Data sheets&lt;br /&gt;                      - Present the data of the system&lt;br /&gt;               5. Forums&lt;br /&gt;&lt;br /&gt;   There are special components which are not directly connect to the view of the page&lt;br /&gt;            Examples&lt;br /&gt;                  1. Printing Components&lt;br /&gt;                        - Used to print reports&lt;br /&gt;                  2. Web service components&lt;br /&gt;                        - Expose data as web services&lt;br /&gt;       &lt;br /&gt; &lt;br /&gt; This is very similar to the approach of &lt;a href="http://en.wikipedia.org/wiki/Portlets"&gt;Portlet&lt;/a&gt;[http://en.wikipedia.org/wiki/Portlets]. But for efficiency and flexibility we are developing a separate 'Portlet Engine' with our project. Visit &lt;a href="http://semf-cse.blogspot.com/2007/02/semf-portlet.html"&gt;here &lt;/a&gt;for more details. [http://semf-cse.blogspot.com/2007/02/semf-portlet.html]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Modularize Approach&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our framework allow to define modules related to the event. For an example Sport Event Management System can have following models&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Accreditation&lt;/li&gt;&lt;li&gt;Playground&lt;/li&gt;&lt;li&gt;Schedule&lt;/li&gt;&lt;li&gt;Accommodation&lt;/li&gt;&lt;li&gt;Transportation&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;3. Sample modules and Components&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With components and modules SEMF is able to provide different levels of customizability.  The Administrator of the system can use existing modules/components and customize as required or build its own components/modules according to the requirement.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Current Status of the project&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;We have started the development in two phases.&lt;br /&gt;&lt;br /&gt;1. Developing the SEMF designer&lt;br /&gt;     &lt;br /&gt;2. Developing a final system manually (without using SEMF designer)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technologies Used/Using&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;PHP, AJAX, Javascript, DHTML&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-7451703094481234541?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/7451703094481234541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=7451703094481234541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7451703094481234541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/7451703094481234541'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2007/03/back-to-semf-design.html' title='Back to SEMF design'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-3422650908965040225</id><published>2007-02-07T14:41:00.000+05:30</published><updated>2007-02-07T14:45:46.910+05:30</updated><title type='text'>Quick Blog</title><content type='html'>So today we upload the first version of the web site of our final year project to the university Moodle.  Same time I created a blog for our project as well and posted some blogs that I have posted here. &lt;a href="http://semf-cse.blogspot.com/"&gt;http://semf-cse.blogspot.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-3422650908965040225?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/3422650908965040225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=3422650908965040225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3422650908965040225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/3422650908965040225'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2007/02/quick-blog.html' title='Quick Blog'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-393824377593372186</id><published>2007-01-29T10:20:00.000+05:30</published><updated>2007-01-29T12:14:20.925+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEMF'/><title type='text'>Architecture for SEMF</title><content type='html'>SEMF ( Sport Event Management Framework) My final year project is hoped to back to active after the exam. Anyway it is in a state which should be start right from the beginning. We spend the last semester waisting time on finding projects, and ultimately selected this one - SEMF which I think is a failure in my point of view. Anyway now we select the stuff, we have to do it.&lt;br /&gt;&lt;br /&gt;The problem of the SEMF is its simplicity. It seems kind of too simple for a final year project. What can we do is, do it in the hardest way which may sometime not work at all.&lt;br /&gt;&lt;br /&gt;So we are searching for a harder architecture to implement which is highly flexible, highly integrable,  and with many great things.. So I suggested one.&lt;br /&gt;&lt;br /&gt;We are providing interfaces to define tables and views.&lt;br /&gt;&lt;br /&gt;In defining tables it is allowed to do all the operations from creating tables to inherit tables from a graphical interfaces. It may not ultimately be the normalized database. But the final system should work with that funny database.&lt;br /&gt;&lt;br /&gt;Then the hardest part defining views. (We would do this only we could finish defining tables part:(.  ) We have to give the views with all the links, menus, tabs. And most importantly these all should be able to define using a graphical interface.&lt;br /&gt;&lt;br /&gt;One way of doing this is following what portlet does. But the thing I was unable to find how they work with database. So our system should provide little windows like portlets to provide different views. But with some greater interaction with databases.&lt;br /&gt;&lt;br /&gt;The features set I am thinking of providing is like this.&lt;br /&gt;&lt;br /&gt;1. Different User level would have different interfaces. At the runtime some users may need to change their privileges. So system should be able to extend their accesses with the admission of a higher privilege one.&lt;br /&gt;e.g.&lt;br /&gt;    Players - At the front interfaces players see the events information they are playing.for. The event information may include the competitors status, playground information.&lt;br /&gt;   Playground Staff - See Event playing in that particular day, weather status around the ground&lt;br /&gt;   Publics - The general view of the public.&lt;br /&gt;&lt;br /&gt;(As far as I see this is the main feature, but it would be thing that maximize the complexity of the architecture. Eliminating this feature we can reduce the complexity more than half)&lt;br /&gt;&lt;br /&gt;2. The interfaces would highlight the events according to the time.&lt;br /&gt;e.g.&lt;br /&gt;    Relevant Players, Playground Staff, Administrators would be highlighted the events happing on the particular day.&lt;br /&gt;    Administrators would be able to handle different stages of organizing the event like register by number stage, register by name stage. This can be defined while defining views.&lt;br /&gt;&lt;br /&gt;3. Interfaces in printing reports, defining forums, and announcements&lt;br /&gt;&lt;br /&gt;Well there are some other features like web services interfaces for registered media and similar things. But I think it need not be considered in the first phase of the architecture.&lt;br /&gt;&lt;br /&gt;I have today and tomorrow. I should do whatever I can do to come up with an architecture. The Architecture of the  lifetime...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-393824377593372186?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/393824377593372186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=393824377593372186' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/393824377593372186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/393824377593372186'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2007/01/architecture-for-semf.html' title='Architecture for SEMF'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-1043462828124197287</id><published>2007-01-13T11:19:00.000+05:30</published><updated>2007-01-13T11:59:24.860+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><title type='text'>In midway of the exam</title><content type='html'>After completing 5 papers and still 3 to go, I m completely out of feelings. So nothing new to write other than the parotized 'pps' slides of the lectures.&lt;br /&gt;&lt;br /&gt;Anyway while studying the security subject for the exam ( well, not until exam), I decided to write simple program ( a little chat program) using open SSL libraries.  It may be the best way I can have a good idea on secure communication. Anyway most of theories are inside the shell of the libraries so it may just a mechanical code but still worth to try.&lt;br /&gt;&lt;br /&gt;http://www-128.ibm.com/developerworks/linux/library/l-openssl.html seems to be a good place to start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-1043462828124197287?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/1043462828124197287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=1043462828124197287' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1043462828124197287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/1043462828124197287'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2007/01/in-midway-of-exam.html' title='In midway of the exam'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-8875429439186450738</id><published>2006-12-28T14:04:00.000+05:30</published><updated>2006-12-28T14:23:14.320+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='axis2c'/><category scheme='http://www.blogger.com/atom/ns#' term='all'/><category scheme='http://www.blogger.com/atom/ns#' term='ordered'/><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='wsdl2c'/><title type='text'>Consecutive  blog</title><content type='html'>Yesterday I post a reply to the axis2 c &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;mailing&lt;/span&gt; list for a complain about handling element order in the generated code. He was able to come over a solution by changing the parse_om function manually. Well actually parse_om function doesn't do any order handling at all.&lt;br /&gt;&lt;br /&gt;I track order just for identify unordered element set (like elements defined inside  'all' &lt;complextype&gt;&lt;all&gt;&lt;/all&gt;&lt;/complextype&gt; tags) rather than identifying ordered thing ( which are &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;within&lt;/span&gt; &lt;sequence&gt;&lt;/sequence&gt;'sequence' tags). Because ordered set inheritely cause no problem, since we always handling things the given order. But the problem comes as user try to parse an xml with an unordered element set. The code should be able to handle these situation. So I write a big xslt code to handle such a situation only in the build_om function which will care of converting any xml to the schema object set.&lt;br /&gt;&lt;br /&gt;So I can't think of a situation where tracking the order of the elements is important inside the parse_om function. Even if it is implemented, it won't be able to do many things than complaining that the elements are not in the right order, so I can't parse it.&lt;br /&gt;&lt;br /&gt;Well parse_om and build_om are also not good names for the above functions. As I posted in the yesterday mail they are doing convert one OM to some other OMformat&lt;br /&gt;    build_om  converts  XML(axiom) --&gt; schema type objects&lt;br /&gt;    parse_om  converts schema type objects-&gt; &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;XML&lt;/span&gt;(axiom)&lt;br /&gt;I may have to replace these functions very soon (at least their names for now).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-8875429439186450738?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/8875429439186450738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=8875429439186450738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8875429439186450738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/8875429439186450738'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2006/12/consecutive-blog.html' title='Consecutive  blog'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-5164426602155832050</id><published>2006-12-27T19:43:00.000+05:30</published><updated>2006-12-27T20:02:58.498+05:30</updated><title type='text'>Back Again</title><content type='html'>Wow, it is nice to be back again. It is better late than never;)&lt;br /&gt;Well when I last blog it was only few weeks in the training place. Now I m back again at studying, most specifically i m on the exam season. So its wonder i still have some rest time enjoy blogging. So at the end of the year if i recall what i have done, and most importantly what i have achieved, it is huge. So at the end it is a wonderful year.&lt;br /&gt;&lt;br /&gt;Starting form the work done on training place, I  could at least release the firefox extension i created there, in a working condition both for windows and linux. And then I was able to do a project form GSOC, code generator for apache axis2/c and commit it to the project svn. For that work i was elected as a committer for ws projects in apache. Well they reported lot of bugs in my code:( Back in the university i struggled on finding a good project for the final year. Finally it was a php application which we named as Sport Event Management Framework.  Still I am not feeling well with this project, but i may find some way to handle this.&lt;br /&gt;&lt;br /&gt;It is a mix of all, But they will not going to waist. It is a good experience at the end.&lt;br /&gt;So I am starting the new year which I m most probably graduated, with a cool mind. I hope I would be able to do some more works in the brand new year, well at least some more blogging.:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-5164426602155832050?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/5164426602155832050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=5164426602155832050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5164426602155832050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/5164426602155832050'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2006/12/back-again.html' title='Back Again'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-114120928643986579</id><published>2006-03-01T16:29:00.000+06:00</published><updated>2006-03-01T16:34:46.446+06:00</updated><title type='text'>The second blogging</title><content type='html'>I never thought i have a time to write something in blog. but wat else I can do. The code is compiling fine. but when i run it it generate errors. and Its happen due to linking . i waist half of this week to find the solution. but it is never close. So i decide have a rest. And this is a very nice blog. Hope I can have a one in my own page.&lt;br /&gt;Hope i can recover somewhere before i go boarding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-114120928643986579?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/114120928643986579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=114120928643986579' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/114120928643986579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/114120928643986579'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2006/03/second-blogging.html' title='The second blogging'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23089790.post-114102715032521373</id><published>2006-02-27T13:53:00.000+06:00</published><updated>2006-02-27T13:59:10.333+06:00</updated><title type='text'>First Bloggin</title><content type='html'>I m here starting a blog. but i m not sure whether i am going to continue. And i m afraid that people going to visit my blog. it is better i would write a diary instead.&lt;br /&gt;ok just see&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23089790-114102715032521373?l=dimuthuc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dimuthuc.blogspot.com/feeds/114102715032521373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23089790&amp;postID=114102715032521373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/114102715032521373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23089790/posts/default/114102715032521373'/><link rel='alternate' type='text/html' href='http://dimuthuc.blogspot.com/2006/02/first-bloggin.html' title='First Bloggin'/><author><name>Dimuthu</name><uri>http://www.blogger.com/profile/14112312266389635163</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_n7NySRx9WK4/SJ2sLQrzCrI/AAAAAAAAAvQ/NNJy5GlaHY4/s1600-R/dimuthu_g.gif'/></author><thr:total>0</thr:total></entry></feed>
