<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Engwar</title>
	<atom:link href="http://engwar.com/feed" rel="self" type="application/rss+xml" />
	<link>http://engwar.com</link>
	<description>Chintana Wilamuna&#039;s weblog</description>
	<lastBuildDate>Fri, 13 Aug 2010 14:29:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Maven setup for Axis2 service development</title>
		<link>http://engwar.com/post/415</link>
		<comments>http://engwar.com/post/415#comments</comments>
		<pubDate>Fri, 13 Aug 2010 14:29:49 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[axis2]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=415</guid>
		<description><![CDATA[There are many resources on the Net giving how to write an Axis2 service. And of course internals of Axis2 itself. This is a simple guide that aims to provide info on howto setup the build environment so that you can get a deployable artifact of an Axis2 service. For the most part you&#8217;ll be [...]]]></description>
			<content:encoded><![CDATA[<p>There are many resources on the Net giving how to write an Axis2 service. And of course internals of Axis2 itself. This is a simple guide that aims to provide info on howto setup the build environment so that you can get a deployable artifact of an Axis2 service.</p>
<ol>
<li>For the most part you&#8217;ll be starting after generating Java code against a given WSDL. Generate code with the same version of Axis2 that you&#8217;ll be using to deploy this service. <a href="http://engwar.com/post/417">Evil things will happen otherwise</a>.</li>
<li>After this, you can create a skeleton maven project using the maven quickstart archetype.
<pre style="overflow: auto;">
$ mvn archetype:generate -DgroupId=com.example.myproject -DartifactId=mysuper-service -DpackageName=org.example.myproject -Dversion=1.0-SNAPSHOT
</pre>
<p>In the next screen you just have to press enter the selected archetype is the quickstart archetype. Then you can select an appropriate version number for the project followed by the package name. Now you should have a skeleton maven project where you can run <code>mvn clean install</code> and it&#8217;ll successfully build it.
</li>
<li>Now you can copy the generated classes to mysuper-service/src/main/java and start developing your services.</li>
<li>To generate an Axis2 <code>.aar<code> file you have to tell maven to build a <code>.aar</code> file using the maven aar plugin.
<pre style="overflow: auto;">
    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.apache.axis2&lt;/groupId&gt;
                &lt;artifactId&gt;axis2-aar-maven-plugin&lt;/artifactId&gt;
                &lt;version&gt;1.4&lt;/version&gt;
                &lt;extensions&gt;true&lt;/extensions&gt;
                &lt;configuration&gt;
                    &lt;servicesXmlFile&gt;${basedir}/resources/services.xml&lt;/servicesXmlFile&gt;
                    &lt;wsdlFile&gt;${basedir}/resources/test.wsdl&lt;/wsdlFile&gt;
                    &lt;fileSets&gt;
                        &lt;fileSet&gt;
                            &lt;directory&gt;${basedir}/lib&lt;/directory&gt;
                            &lt;outputDirectory&gt;lib&lt;/outputDirectory&gt;
                            &lt;includes&gt;
                                &lt;include&gt;*.jar&lt;/include&gt;
                            &lt;/includes&gt;
                        &lt;/fileSet&gt;
                    &lt;/fileSets&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/build&gt;
</pre>
<p>Here, I've included a lib folder as well, which contains 3rd party <code>.jar</code> files that's not available on a maven repo. Once you've added the lib folder containing a set of <code>.jar</code> files you can add the dependency later using something like,</p>
<pre style="overflow: auto;">
&lt;dependency&gt;
            &lt;groupId&gt;com.example.myjar&lt;/groupId&gt;
            &lt;artifactId&gt;jarfile&lt;/artifactId&gt;
            &lt;version&gt;1.0&lt;/version&gt;
            &lt;scope&gt;system&lt;/scope&gt;
            &lt;systemPath&gt;${basedir}/lib/the-other-awesome-project.jar&lt;/systemPath&gt;
&lt;/dependency&gt;
</pre>
<p>When you're specifying a 3rd party JAR dependency even though the actual JAR file might not contain a version number, you have to include something in the <code>&lt;version&gt;</code> element. Otherwise maven will not work correctly.
</li>
</ol>
<p>Now, when you type <code>$ mvn clean install</code> you should have a <code>.aar</code> file in the target folder. You can upload this to Axis2 and your services will be deployed in a few seconds.</p>
<h3>Building within the IDE</h3>
<p>An IntelliJ IDEA project file for your project can be easily generated with <code>$ mvn idea:idea</code>. But if you project use maven, you have to install IntelliJ IDEA maven 2 integration plugin. This can be done using the IDEA plugin browser. Even after adding my root <code>pom.xml</code> to Maven-2 Build in IDEA, I was only able to compile all the classes. I couldn't get any maven plugin goals to be executed. So, Ctrl+F9 still doesn't generate the <code>.aar</code> file.</p>
<p>As it turns out, you need to install Maven Reloaded plugin to be able to execute maven plugin goals. After installing this, the execution process dies with exit status 1 without any helpful remarks.</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/415/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codegen and runtime Axis2 versions</title>
		<link>http://engwar.com/post/417</link>
		<comments>http://engwar.com/post/417#comments</comments>
		<pubDate>Fri, 13 Aug 2010 05:40:11 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=417</guid>
		<description><![CDATA[I was bitten by this error a couple of times I thought of blogging it for my own reference. It&#8217;s important to remember that when you&#8217;re generating code against some WSDL, you have to use the same version of Axis2 that you&#8217;re going to deploy this service on. So, when you&#8217;re running WSDL2Java.sh that should [...]]]></description>
			<content:encoded><![CDATA[<p>I was bitten by this error a couple of times I thought of blogging it for my own reference. It&#8217;s important to remember that when you&#8217;re generating code against some WSDL, you have to use the same version of Axis2 that you&#8217;re going to deploy this service on. So, when you&#8217;re running WSDL2Java.sh that should come from a Axis2 distribution that is used in the application server that your service will get deployed. Otherwise, if the Axis2 versions differ you&#8217;ll see the following error message.</p>
<pre style="overflow: auto;">
java.lang.AbstractMethodError
	at org.apache.axis2.databinding.ADBDataSource.serialize(ADBDataSource.java:90)
	at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691)
	at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:965)
	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283)
	at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245)
	at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193)
	at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:79)
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.sendUsingOutputStream(CommonsHTTPTransportSender.java:361)
	at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:238)
	at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
	at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:43)
	at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:178)
	at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173)
	at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)
	at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.wso2.carbon.bridge.BridgeServlet.service(BridgeServlet.java:154)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Thread.java:619)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/417/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PaaS and open source</title>
		<link>http://engwar.com/post/404</link>
		<comments>http://engwar.com/post/404#comments</comments>
		<pubDate>Wed, 11 Aug 2010 13:38:50 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[paas]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=404</guid>
		<description><![CDATA[Ted Leung has some interesting ideas about Platform As a Service (PaaS) and open source. I agree with Ted that open source software is not becoming any less relevant. Looking at current platform as a service offerings Ted&#8217;s view of, The more interesting question for developers has to do with infrastructure software. In my mind [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sauria.com/blog/">Ted Leung</a> has some interesting <a href="http://www.sauria.com/blog/2010/05/31/thoughts-on-open-source-and-platform-as-a-service/">ideas about Platform As a Service (PaaS) and open source</a>. I agree with Ted that open source software is not becoming any less relevant. Looking at current platform as a service offerings Ted&#8217;s view of,</p>
<blockquote><p>The more interesting question for developers has to do with infrastructure software. In my mind LAMP is really a proxy for “infrastructure software” If you’ve been paying any attention at all to the development of web application software, you know that there is a lot happening with various kinds of infrastructure software.</p></blockquote>
<p>is understandable. Almost all the current PaaS vendors have developed mechanisms to harvest <a href="http://en.wikipedia.org/wiki/Commons-based_peer_production">commons based peer production</a>. Ultimately all of this ends up in some server of a vendor locked away in a data center somewhere. Most of the vendors use open source software heavily for their PaaS offerings and some have open sourced bits and pieces of their platform. While I&#8217;m certainly not the overzealous freedom fighter I was, this awfully sounds like writing open source applications for a proprietary platform. Not that it&#8217;s necessarily a bad thing. Unlike developing software on a proprietary operating system, developing on a proprietary platform as a service offering is limited in various aspects which are unique to its usecase.</p>
<p>So, IMHO, a more interesting problem to tackle in an environment like this is open source platform as a service. You still have a hosted service where people can just develop applications and forget about underlying technical details of the platform, where your data is residing and so on. At the same time this entire platform is open source! Sounds like a pipe dream but it&#8217;s a reality. I hope this will set a trend that other vendors follow, eventually.</p>
<p>The open source platform as a service is <a href="http://wso2.com/cloud/stratos/">Stratos</a>. The hosted platform reside in <a href="http://cloud.wso2.com">cloud.wso2.com</a> where anyone can register for free (during the alpha and beta stages) and get an entire middleware platform at your fingertips with a few clicks. Another bold move is that the code base of the downloadable version and the hosted version are exactly the same! So, the platform itself and hosted applications behave in a predictable manner where ever they&#8217;re deployed. Also, it should be mentioned here that most of the services provided by Stratos started their life as standalone programs (like Tomcat). This also, provide invaluable repository of information if anyone wants to study how their should architect their applications to make them <a href="http://pzf.fremantle.org/2010/05/cloud-native.html">cloud native</a>. Source code for the entire platform available <a href="http://svn.wso2.org/repos/wso2/trunk/stratos/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/404/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is AGPL?</title>
		<link>http://engwar.com/post/400</link>
		<comments>http://engwar.com/post/400#comments</comments>
		<pubDate>Sat, 03 Jul 2010 08:48:12 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[agpl]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=400</guid>
		<description><![CDATA[Recently bumped into a license called AGPL. If you don&#8217;t know what it is, just by looking at the name you can guess that it&#8217;s one from FSF. AGPL is designed to close the &#8220;ASP loophole&#8221;. What does that mean? If you&#8217;re using GPL licensed software, you MUST release the source code if you&#8217;re redistributing [...]]]></description>
			<content:encoded><![CDATA[<p>Recently bumped into a license called AGPL. If you don&#8217;t know what it is, just by looking at the name you can guess that it&#8217;s one from FSF. AGPL is designed to close the &#8220;ASP loophole&#8221;. What does that mean? If you&#8217;re using GPL licensed software, you MUST release the source code if you&#8217;re redistributing the software. For example, if you use a GPL licensed library or program in your software projects, when you put your product out there (either sell or give it away free) you must release the source code for your program under the same license. So your program will also be GPL licensed automatically. If not it&#8217;s a violation of the GPL licensing terms.</p>
<p>Now, if you use a GPL licensed program in the server side (a CMS such as WordPress for example) to provide a service and you&#8217;ve done some modifications to the server side software, then even though it&#8217;s GPL licensed you don&#8217;t have to release your modifications. In this case you&#8217;re not really redistributing the software so you&#8217;re alright. This has been referred to as the &#8220;ASP loophole&#8221;.</p>
<p>So, AGPL is designed to close this &#8220;loophole&#8221;. Meaning, if you&#8217;re using an AGPL licensed program on the server side and you have done some modifications, you MUST release the source code with those modifications.</p>
<p>My view about the AGPL, as with anything GPL, don&#8217;t bother.</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/400/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VMware ESXi on Realtek NIC</title>
		<link>http://engwar.com/post/392</link>
		<comments>http://engwar.com/post/392#comments</comments>
		<pubDate>Tue, 15 Jun 2010 12:07:52 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vmware esxi]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=392</guid>
		<description><![CDATA[VMware ESXi 4.0 doesn&#8217;t support Realtek RTL8111/8168 network cards by default. When you try to install ESXi on a computer with a Realtek NIC it will say the network card is not supported and will not allow you to proceed with the installation. Luckily you can modify the ESXi ISO to include the Realtek driver [...]]]></description>
			<content:encoded><![CDATA[<p>VMware ESXi 4.0 doesn&#8217;t support Realtek RTL8111/8168 network cards by default. When you try to install ESXi on a computer with a Realtek NIC it will say the network card is not supported and will not allow you to proceed with the installation. Luckily you can modify the ESXi ISO to include the Realtek driver so that you&#8217;ll be able to install it without a problem. A <a href="http://www.vm-help.com/forum/viewtopic.php?f=12&#038;t=1272">forum post describes how to do this</a>. I&#8217;m echoing the steps below.</p>
<ol>
<li>Create a folder and copy your VMware ESXi ISO file</li>
<li>Download <a href="http://www.vm-help.com/forum/download/file.php?id=136&#038;sid=21f103615394978397b90bc0c1b4ba9a">RTL8111_8168_P55_integr_SATA_Ctrl.(AHCI).oem.tgz</a> and copy it to the folder you just created</li>
<li>Download <a href="http://mkesxiaio.googlecode.com/files/mkesxiaio_3.9.1.sh">mkesxiaio_3.9.sh</a> and <a href="http://mkesxiaio.googlecode.com/files/inetd.conf">inetd.conf</a> from <a href="http://code.google.com/p/mkesxiaio/">here</a> and copy it to the same folder.
<li>Run sudo ./mkesxiaio_3.9.sh</li>
<li>Burn the modified ISO</li>
</ol>
<p>Realtek network cards are not exactly esoteric hardware. Not sure why the default installation doesn&#8217;t have support for this. If you&#8217;re trying to install ESXi better <a href="http://www.vm-help.com/esx40i/esx40_whitebox_HCL.php">check the HCL</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/392/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Howto install WSO2 Stratos?</title>
		<link>http://engwar.com/post/378</link>
		<comments>http://engwar.com/post/378#comments</comments>
		<pubDate>Wed, 02 Jun 2010 18:53:35 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[wso2 stratos]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=378</guid>
		<description><![CDATA[If you tried the hosted version of WSO2 Stratos at cloud.wso2.com and wants to get down to install it in your virtualized environment, this will help you to build it from the source code. Before you build WSO2 Stratos you have to build WSO2 Carbon. This guide only assumes that you&#8217;ve installed Sun JDK and [...]]]></description>
			<content:encoded><![CDATA[<p>If you tried the hosted version of <a href="http://wso2.com/cloud/stratos/">WSO2 Stratos</a> at <a href="http://cloud.wso2.com">cloud.wso2.com</a> and wants to get down to install it in your virtualized environment, this will help you to build it from the source code. Before you build  WSO2 Stratos you have to build WSO2 Carbon. This guide only assumes that you&#8217;ve installed Sun JDK and Apache Maven which is in your PATH.</p>
<h3>Building WSO2 Stratos</h3>
<ol>
<li>Checkout WSO2 Carbon and WSO2 Stratos
<p><pre>
$ svn checkout http://svn.wso2.org/repos/wso2/trunk/carbon
$ svn checkout http://svn.wso2.org/repos/wso2/trunk/stratos
</pre>
</p>
</li>
<li>In order to build WSO2 Carbon, first need to build two Axis2 plugins. As the Axis2 README points out, this is due to some dependency resolution issues in Maven
<ul>
<li>Build Axis2 AAR Maven plugin
<p><pre>
$ cd carbon/dependencies/axis2/modules/tool/axis2-aar-maven-plugin/
$ mvn clean install
</pre>
</p>
</li>
<li>Bulid Axis2 MAR Maven plugin
<p><pre>
$ cd carbon/dependencies/axis2/modules/tool/axis2-mar-maven-plugin/
$ mvn clean install
</pre>
</p>
</li>
</ul>
</li>
<li>Build Carbon dependencies
<p><pre>
$ cd carbon/dependencies
$ mvn clean install
</pre>
</p>
</li>
<li>Build Carbon Orbit
<p><pre>
$ cd carbon/orbit
$ mvn clean install
</pre>
</p>
</li>
<li>Bulid Carbon core
<p><pre>
$ cd carbon/core
$ mvn clean install
</pre>
</p>
</li>
<li>Bulid Carbon components
<p><pre>
$ cd carbon/components
$ mvn clean install
</pre>
</p>
</li>
<li>Build Carbon features
<p><pre>
$ cd carbon/features
$ mvn clean install
</pre>
</p>
</li>
<li>Build WSO2 Stratos
<ul>
<li>Bulid WSO2 Stratos components
<p><pre>
$ cd stratos/components
$ mvn clean install
</pre>
</p>
</li>
<li>Build WSO2 Stratos features
<p><pre>
$ cd stratos/components
$ mvn clean install
</pre>
</p>
</li>
<li>Build WSO2 Stratos services
<p><pre>
$ cd stratos/services
$ mvn clean install
</pre>
<p>This will create binary distributions for each service in, <code>stratos/services/<servicename>/modules/distribution</code>/target
</p>
</li>
</ul>
</li>
</ol>
<h3>Configuring WSO2 Stratos</h3>
<p>Cloud manager is a special program designed to manage all other services. Therefore some configuration parameters differ from other services. There are some configuration  parameters which are common across all the services.</p>
<p>Once you build WSO2 Stratos, unzip binary packages to a folder. <code>&lt;statos dir&gt;</code> in the following configurations refer to the folder you get when you unzip a binary distribution.</p>
<h3>Common configurations</h3>
<p>These are common to cloud manager as well as other services. Configuration files are located at <code>&lt;stratos dir&gt;/repository/conf</code></p>
<ol>
<li><code>carbon.xml</code>
<p>
You should change ServerURL, HostName, and Name parameter. E.g.,</p>
<pre>
&lt;ServerURL&gt;https://example.com${carbon.context}/services/&lt;/ServerURL&gt;
&lt;HostName&gt;example.com&lt;/HostName&gt;
&lt;Name&gt;WSO2 Stratos Cloud Application Server&lt;/Name&gt; (this name should
be same as the name given in cloud-services-desc.xml cloud manager)
</pre>
</p>
</li>
<li><code>axis2.xml</code>
<p>
Configure mail transport. E.g.,</p>
<pre>
&lt;transportSender name=&quot;mailto&quot; class=&quot;org.apache.axis2.transport.mail.MailTransportSender&quot;&gt;
        &lt;parameter name=&quot;mail.smtp.host&quot;&gt;smtp.example.org&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.port&quot;&gt;25&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.starttls.enable&quot;&gt;false&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.auth&quot;&gt;true&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.user&quot;&gt;user&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.password&quot;&gt;password&lt;/parameter&gt;
        &lt;parameter name=&quot;mail.smtp.from&quot;&gt;noreply@example.com&lt;/parameter&gt;
&lt;/transportSender&gt;
</pre>
</p>
</li>
<li><code>mgt-transport.xml</code>
<p>
Configure proxy ports. E.g.,</p>
<pre>
&lt;transport name=&quot;http&quot; class=&quot;org.wso2.carbon.server.transports.http.HttpTransport&quot;&gt;
        &lt;parameter name=&quot;port&quot;&gt;9763&lt;/parameter&gt;1
        &lt;parameter name=&quot;proxyPort&quot;&gt;80&lt;/parameter&gt;
        ...

&lt;transport name=&quot;https&quot; class=&quot;org.wso2.carbon.server.transports.http.HttpsTransport&quot;&gt;
        &lt;parameter name=&quot;port&quot;&gt;9443&lt;/parameter&gt;
        &lt;parameter name=&quot;proxyPort&quot;&gt;443&lt;/parameter&gt;
</pre>
</p>
</li>
<li><code>registry.xml</code>
<p>
Database configuration. E.g.,</p>
<pre>
&lt;/dbConfig&gt;
        &lt;dbConfig name=&quot;WSO2Registry&quot;&gt;
        &lt;url&gt;jdbc:mysql://db.example.com:3306/registry_db?autoReconnect=true&lt;/url&gt;
        &lt;userName&gt;user&lt;/userName&gt;
        &lt;password&gt;password&lt;/password&gt;
        &lt;driverName&gt;com.mysql.jdbc.Driver&lt;/driverName&gt;
        &lt;maxActive&gt;50&lt;/maxActive&gt;
        &lt;maxWait&gt;60000&lt;/maxWait&gt;
        &lt;minIdle&gt;5&lt;/minIdle&gt;
        &lt;validationQuery&gt;SELECT 1&lt;/validationQuery&gt;
&lt;/dbConfig&gt;
</pre>
</p>
</li>
<li><code>user-mgt.xml</code>
<p>
Configure user store. E.g.,</p>
<pre>
&lt;Property name=&quot;url&quot;&gt;jdbc:mysql://db.example.com:3306/userstore_db?autoReconnect=true&lt;/Property&gt;
&lt;Property name=&quot;userName&quot;&gt;user&lt;/Property&gt;
&lt;Property name=&quot;password&quot;&gt;password&lt;/Property&gt;
&lt;Property name=&quot;driverName&quot;&gt;com.mysql.jdbc.Driver&lt;/Property&gt;
&lt;Property name=&quot;maxActive&quot;&gt;50&lt;/Property&gt;
&lt;Property name=&quot;maxWait&quot;&gt;60000&lt;/Property&gt;
&lt;Property name=&quot;minIdle&quot;&gt;5&lt;/Property&gt;
&lt;Property name=&quot;MultiTenantRealmConfigBuilder&quot;&gt;org.wso2.carbon.user.core.config.multitenancy.SimpleRealmConfigBuilder&lt;/Property&gt;
&lt;Property name=&quot;validationQuery&quot;&gt;SELECT 1&lt;/Property&gt;
</pre>
</p>
</li>
<li>Copy MySQL JDBC driver to <code>&lt;stratos dir&gt;/repository/components/lib</code>. MySQL JDBC driver can be downloaded from <a href="http://dev.mysql.com/downloads/connector/j/">http://dev.mysql.com/downloads/connector/j/</a></li>
<li><code>wrapper.conf</code>
<p><pre>
wrapper.java.additional.11=-Dcarbon.https.port=443
wrapper.java.additional.12=-Dcarbon.http.port=80
</pre>
</p>
</li>
<li><code>axis2_client.xml</code>
<p>
Increase SO_TIMEOUT of http and https about 60 seconds <code>&lt;parameter name="SO_TIMEOUT"&gt;60000&lt;/parameter&gt;</code>
</p>
</li>
</ol>
<h3>Cloud Manager Configuration</h3>
<ol>
<li><code>billing-config.xml</code>
<p>
Database configuration. E.g.,</p>
<pre>
&lt;dbConfig&gt;
        &lt;url&gt;jdbc:mysql://db.example.com:3306/billing_db?autoReconnect=true&lt;/url&gt;
        &lt;userName&gt;user&lt;/userName&gt;
        &lt;password&gt;password&lt;/password&gt;
        &lt;driverName&gt;com.mysql.jdbc.Driver&lt;/driverName&gt;
        &lt;maxActive&gt;80&lt;/maxActive&gt;
        &lt;maxWait&gt;60000&lt;/maxWait&gt;
        &lt;minIdle&gt;5&lt;/minIdle&gt;
        &lt;validationQuery&gt;SELECT 1&lt;/validationQuery&gt;
&lt;/dbConfig&gt;
</pre>
</p>
</li>
<li><code>tenant-reg-agent.xml</code>
<p><pre>
&lt;tenantRegListenerServers&gt;
        &lt;server&gt;
            &lt;!-- governance --&gt;
            &lt;serverUrl&gt;https://governance.example.com/services/&lt;/serverUrl&gt;
            &lt;userName&gt;admin&lt;/userName&gt;
            &lt;password&gt;password&lt;/password&gt;
        &lt;/server&gt;
        &lt;server&gt;
            &lt;!-- identity --&gt;
            &lt;serverUrl&gt;https://identity.example.com/services/&lt;/serverUrl&gt;
            &lt;userName&gt;admin&lt;/userName&gt;
            &lt;password&gt;password&lt;/password&gt;
        &lt;/server&gt;
        &lt;server&gt;
            &lt;!-- gadget --&gt;
            &lt;serverUrl&gt;https://gadget.example.com/services/&lt;/serverUrl&gt;
            &lt;userName&gt;admin&lt;/userName&gt;
            &lt;password&gt;password&lt;/password&gt;
        &lt;/server&gt;
        ...
&lt;/tenantRegListenerServers&gt;
</pre>
</p>
</li>
<li><code>cloud-services-desc.xml</code>
<p><pre>
&lt;cloudService name=&quot;WSO2 Stratos Cloud Governance&quot;&gt;
        &lt;label&gt;Cloud Governance&lt;/label&gt;
        &lt;link&gt;https://governance.example.com&lt;/link&gt;
        &lt;description&gt;Governance in the cloud.&lt;/description&gt;
        &lt;icon&gt;

https://example.com/cloud-services-icons/governance.gif

        &lt;/icon&gt;
&lt;/cloudService&gt;
</pre>
</p>
</li>
<li>All the configurations starting with email_ should be modified with correct<br />
   cloud manager URL</li>
</ol>
<h3>Other services</h3>
<p>Other services means all the services except could manager.</p>
<ol>
<li><code>metering-config.xml</code>
<p>
Metering configuration have to be changed to include cloud admin username, password    (in post handler and pre handler)</p>
<pre>
&lt;handler service=&quot;org.wso2.stratos.metering.agent.handlers.RemoteTaskInvoker&quot; async=&quot;true&quot; frequency=&quot;1&quot;&gt;
        &lt;parameter name=&quot;taskServiceUrl&quot;&gt;https://cloud.wso2.com/services/&lt;/parameter&gt;
        &lt;parameter name=&quot;userName&quot;&gt;user&lt;/parameter&gt;
        &lt;parameter name=&quot;password&quot;&gt;password&lt;/parameter&gt;
        &lt;parameter name=&quot;taskName&quot;&gt;org.wso2.stratos.metering.manager.task.PerRegistryRequestRemoteTask&lt;/parameter&gt;
&lt;/handler&gt;
</pre>
</p>
</li>
<li>In Appserver <code>carbon.xml</code>, you can specify the URL for BAM so that you can monitor appserver.
<p><pre>
&lt;BamServerURL&gt;https://bam.example.com/services/BAMServiceStatisticsSubscriberService&lt;/BamServerURL&gt;
</pre>
</p>
</li>
</ol>
<p>That&#8217;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/378/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Private cloud endeth?!</title>
		<link>http://engwar.com/post/370</link>
		<comments>http://engwar.com/post/370#comments</comments>
		<pubDate>Wed, 02 Jun 2010 17:40:00 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[iaas]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=370</guid>
		<description><![CDATA[I agree with what Werner said about the private cloud. From Amazon&#8217;s point of view, it make sense to &#8220;kill it&#8221; since they&#8217;re not going to make money when someone is having a private cloud. So it&#8217;s logical to sell their VPC offering as a replacement to a private cloud. If you take a step [...]]]></description>
			<content:encoded><![CDATA[<p>I agree with what <a href="http://www.itnews.com.au/News/175953,video-time-to-kill-the-private-cloud.aspx">Werner said about the private cloud</a>. From Amazon&#8217;s point of view, it make sense to &#8220;kill it&#8221; since they&#8217;re not going to make money when someone is having a private cloud. So it&#8217;s logical to sell <a href="http://aws.amazon.com/vpc/">their VPC offering</a> as a replacement to a private cloud.</p>
<p>If you take a step back and look at the big picture, I think the audience for a private cloud is vastly different from the audience for a public cloud.</p>
<p>Public cloud is the ideal solution if you&#8217;re just a startup trying to setup infrastructure such as source code repositories, bug trackers, wikis, CRMs and so on. Utilizing features of a public cloud like <a href="http://aws.amazon.com/ec2">Amazon EC2</a>, you can increase the computing resource when you need it. No need to pay big sums upfront for high end hardware. You can expand or shrink your computing resources as you go along.</p>
<p>Private cloud, on the other hand, is useful if you <em>already</em> have the hardware. You have purchased high end hardware anticipating your resource needs in the future and now they&#8217;re under utilized. In this case, having a private cloud infrastructure will help you to make use of your otherwise idle computing resources. Pay as you go feature of public clouds doesn&#8217;t apply in this case. Elasticity, yes, if your applications are written using the same APIs.</p>
<p>For example, <a href="http://wso2.com/cloud/stratos/">WSO2 Stratos</a>, can scale in Amazon EC2 as well as in a private cloud such as UEC (Ubuntu Enterprise Cloud). UEC runs Eucalyptus for providing a private cloud infrastructure which is API compatible with Amazon EC2/S3/EBS.</p>
<p>So, IMHO, public cloud and private cloud has their own places in this world.</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/370/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud native middleware</title>
		<link>http://engwar.com/post/366</link>
		<comments>http://engwar.com/post/366#comments</comments>
		<pubDate>Wed, 02 Jun 2010 03:52:52 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[stratos]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=366</guid>
		<description><![CDATA[Also known as WSO2 Stratos and it&#8217;s all open source. It comes in two forms. You can either set it up on top of a private cloud used in an enterprise or you could try out the hosted service at cloud.wso2.com. Samisa has written a post giving some background about how Stratos came to life. [...]]]></description>
			<content:encoded><![CDATA[<p>Also known as <a href="http://wso2.com/cloud/stratos/">WSO2 Stratos</a> and it&#8217;s all open source. It comes in two forms. You can either set it up on top of a private cloud used in an enterprise or you could try out the hosted service at <a href="http://cloud.wso2.com">cloud.wso2.com</a>.</p>
<p><a href="http://samisa-abeysinghe.blogspot.com/2010/06/six-weeks-and-12-people-magic.html">Samisa has written a post</a> giving some background about how Stratos came to life. <a href="http://www.infoworld.com/d/cloud-computing/wso2-debuts-cloud-platform-apps-687">Infoworld has some more info</a>.</p>
<p>Usually people don&#8217;t open up all their source code that goes into a hosted version. But the source code for WSO2 Stratos is open source and available with an Apache license. You can <a href="http://wso2.org/downloads/stratos">grab a source tarball here</a> or <a href="http://svn.wso2.org/repos/wso2/trunk/stratos/">checkout the source code using subversion</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/366/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up Ubuntu Enterprise Cloud</title>
		<link>http://engwar.com/post/356</link>
		<comments>http://engwar.com/post/356#comments</comments>
		<pubDate>Mon, 31 May 2010 17:59:56 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[cloud]]></category>
		<category><![CDATA[private cloud]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[uec]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=356</guid>
		<description><![CDATA[On a previous post I briefly looked at Ubuntu Enterprise Cloud. Let&#8217;s see how UEC can be setup quickly on two machines. This is a simple configuration. One computer will have cloud controller (CLC), Walrus, cluster controller (CC), and storage controller (SC). The other computer will act as the node controller (NC). As the name [...]]]></description>
			<content:encoded><![CDATA[<p>On a <a href="http://engwar.com/post/338">previous post</a> I briefly looked at Ubuntu Enterprise Cloud. Let&#8217;s see how UEC can be setup quickly on two machines. This is a simple configuration. One computer will have cloud controller (CLC), Walrus, cluster controller (CC), and storage controller (SC). The other computer will act as the node controller (NC). As the name implies cloud controller machine acts as a controlling node. Actual virtual machines will be running on node controllers. You can add node controllers as your resource requirements increase. More complex and supported topologies are <a href="https://help.ubuntu.com/community/UEC/Topologies">listed in the Ubuntu wiki</a>. UEC by default use KVM as the virtualization technology.</p>
<ol>
<li>Easiest way to install UEC is to do a CD Install. Follow the <a href="https://help.ubuntu.com/community/UEC/CDInstall">instruction on the Ubuntu Wiki</a> to get it installed.</li>
<li>Select CLC/Walrus/CC/SC on one machine</li>
<li>Install NC in the second machine</li>
<li>With the default configuration, the number of instances you can start is very limited. Through the web based admin console, you can configure number of CPUs and memory that goes into small, medium and large instances. Medium instances by default is configured to have 2 CPUs. If your host computer have 8 CPU cores, the number of medium instances you can start is 4. The maximum number of virtual machines KVM support by default is 8 * number of CPU cores. If you&#8217;re having 8 cores, KVM can start 64 guests (assuming you have enough memory). So, we need to get this number intu Eucalyptus. On the node controller machine, edit <code>/etc/eucalyptus/eucalypus.conf</code> and add <code>MAX_CORES="64"</code>. Or whatever the number applicable to your system.</li>
<li>Next, when you install a cloud controller on a computer residing in your LAN, it&#8217;ll add another DHCP server. When you start your instances they&#8217;ll start getting IPs from the main DHCP server in the LAN. Which is not what you probably want. To prevent this from happening, you have to blacklist MAC addresses generated by UEC. UEC generated MAC addresses begins with <code>d0::0d</code>. <a href="https://help.ubuntu.com/community/UEC/Tips">Ubuntu wiki contains how to do this for dnsmasq</a>. If you&#8217;re using dhcpd you can add,
<p><pre>
class "uec-members" {
    match pick-first-value (option agent.remote-id);
}

subclass "uec-members" d0:0d:00:00:00:00;
subclass "uec-members" d0:0d:ff:ff:ff:ff;

subnet ... {

     pool {
         deny members of "uec-members";
         range 10.100.1.100 10.100.1.252;
     }

 }
</pre>
</p>
</li>
</ol>
<p>Voila! You&#8217;re on your way to do great things on your private cloud!</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/356/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloudapps</title>
		<link>http://engwar.com/post/345</link>
		<comments>http://engwar.com/post/345#comments</comments>
		<pubDate>Mon, 31 May 2010 09:44:33 +0000</pubDate>
		<dc:creator>Chintana</dc:creator>
				<category><![CDATA[cloud apps]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://engwar.com/?p=345</guid>
		<description><![CDATA[When the cloud buzzword hit the intrawebs, one issue I kept thinking about turned out to be more interesting than I thought. Different type of applications have varying requirements when it comes to running inside a cloud. A virtualized environment to be more precise. A virtualized environment means it&#8217;s just another computer right? So, it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>When the cloud buzzword hit the intrawebs, one issue I kept thinking about turned out to be more interesting than I thought. Different type of applications have varying requirements when it comes to running inside a cloud. A virtualized environment to be more precise. A virtualized environment means it&#8217;s just another computer right? So, it&#8217;s just a VPS somewhere isn&#8217;t it? Yes but there&#8217;s more to the story.</p>
<p>&#8220;Cloud requirements&#8221; differ from person to person and for what they&#8217;ll be using the technology. And of course,  methods for reaching to the clouds are as diverse as the requirements (ahem).</p>
<ul>
<li>For a hosting company adopting cloud technologies means having an infrastructure that enable them to create virtual machines from a cluster of servers upon customer requests. Using Xen/KVM/OpenNebula etc&#8230; they can easily do this. Additionally what they need is a nice web based interface that they can integrate into their existing customer portals.</li>
<li>A web based application vendor, changes they need to make their applications to run in the cloud is minimal. Here, a differentiation should be made for single-tenanted vs. <a href="http://en.wikipedia.org/wiki/Multitenancy">multi-tenanted applications</a>. Popular multi-tenanted web applications include Google Apps and Salesforce.com. <a href="http://www.microsoft.com/windowsazure/sqlazure/">SQL Azure</a>, the popular database as a service platform runs on a multi-tenanted version of SQL Server.
</li>
<li>When it&#8217;s not a web based application things start to get interesting. <a href="http://pzf.fremantle.org/2010/05/cloud-native.html">Paul has written a wonderful post</a> explaining the requirements that need to fulfill in order to be called a &#8220;cloud native&#8221; application.</li>
</ul>
<p>As Paul mentions, being &#8220;on the cloud&#8221;, applications need to have features like autoscaling. Pay for what you use has a huge advantage of paying for resources depending on your daily resource needs. Several more aspects are listed on his post.</p>
]]></content:encoded>
			<wfw:commentRss>http://engwar.com/post/345/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
