<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<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/"
	>

<channel>
	<title>Deng Ching</title>
	<link>http://blogs.exist.com/oching</link>
	<description>Thoughts to ponder..</description>
	<pubDate>Tue, 08 Mar 2011 14:27:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>Maestro 3.2 (Hot off the press!)</title>
		<link>http://blogs.exist.com/oching/2011/03/07/maestro-32-hot-off-the-press/</link>
		<comments>http://blogs.exist.com/oching/2011/03/07/maestro-32-hot-off-the-press/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 19:14:52 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<category><![CDATA[build]]></category>

		<category><![CDATA[deployment]]></category>

		<category><![CDATA[git]]></category>

		<category><![CDATA[glassfish]]></category>

		<category><![CDATA[lifecycle]]></category>

		<category><![CDATA[maestro]]></category>

		<category><![CDATA[maven]]></category>

		<category><![CDATA[selenium]]></category>

		<category><![CDATA[sonar]]></category>

		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2011/03/07/maestro-32-hot-off-the-press/</guid>
		<description><![CDATA[The latest release of the 3.2 series has just been made available last Friday (March 4, 2011). There are a lot of new and exciting features plus a number of improvements and significant fixes in this series. Check them out below!
What&#8217;s new in Maestro 3.2?
Glassfish Support
You can now deploy your war and ear files to [...]]]></description>
			<content:encoded><![CDATA[<p>The latest release of the 3.2 series has just been made available last Friday (March 4, 2011). There are a lot of new and exciting features plus a number of improvements and significant fixes in this series. Check them out below!</p>
<p><b>What&#8217;s new in Maestro 3.2?</b></p>
<p><b><i>Glassfish Support</i></b></p>
<p>You can now deploy your war and ear files to Glassfish from a composition task in Maestro. It&#8217;s as simple as adding your Glassfish server as a standalone deployment server in Maestro, adding a deployment composition task that points to your Glassfish server in your composition then executing your composition.. and voila! Your J2EE or web application is now deployed in Glassfish. To get us started, here are some screenshots for each of these steps:</p>
<p><img alt="Add Glassfish Server" src="http://blogs.exist.com/oching/wp-content/uploads/image/maestro/add_glassfish3_server.png" style="width: 687px; height: 429px;" /></p>
<p><i>Step 1: Add a standalone Glassfish Server</i></p>
<p>
<img width="624" height="418" alt="Configure Glassfish Deploy Composition Task" src="http://blogs.exist.com/oching/wp-content/uploads/image/maestro/configure_glassfish_binding.png" /></p>
<p><i>Step 2: Configure Glassfish Deploy composition task</i></p>
<p>
<img alt="Execute deployment to Glassfish" src="http://blogs.exist.com/oching/wp-content/uploads/image/maestro/deploy_to_glassfish.png" style="width: 740px; height: 355px;" /></p>
<p><i>Step 3: Execute deployment to Glassfish Server</i></p>
<p>Glassfish support is also available in target environment deployment. Target environments are basically groups of deployment servers where you can deploy to in one go. If, for example, you want to test your application in different application servers.. you can create a target environment for testing purposes that has a Tomcat server and a Glassfish server. You can make use of the composition task specifically for deployment to a specific target environment, as opposed to adding and configuring one composition task each for deploying to Tomcat and deploying to Glassfish.</p>
<p><img src="http://blogs.exist.com/oching/wp-content/uploads/image/maestro/target_environment.png" alt="Target Environment" style="width: 761px; height: 238px;" /></p>
<p><i>Target Environment</i></p>
<p><img width="479" height="391" src="http://blogs.exist.com/oching/wp-content/uploads/image/maestro/configure_target_env_binding.png" alt="" /></p>
<p><i>Deploy to Target Environment composition task configuration</i></p>
<p>
<i><b>Composition Task/Phase Binding archetype<br />
</b></i></p>
<p>The composition lifecycle has different phases defined, and for each phase, there are tasks or bindings attached to it. Maestro comes with default tasks/bindings, but you can create your own and plug it in to whichever phase you&#8217;d like to attach it to. This is made easier by the composition task archetype. You can use it to create your custom composition task/binding module. A class that implements the Phase Binding API is created by default including a test class for it, as well as the Spring context file where the task/binding bean is defined and configured.</p>
<p><i><b>Composition Task/Binding for Sending Mail Notifications</b></i></p>
<p>This task/binding can be added to any of the phases in your composition to send a notification to all developers of the Build project regarding the result of the build. It includes the following information in the email:</p>
<ul>
<li>Project Name</li>
<li>Link to the Build project</li>
<li>Name of the Composition that was executed</li>
<li>Phase where the mail notification binding was defined in the composition</li>
<li>Date and time when the notification was sent</li>
<li>Message</li>
</ul>
<p><i><b>User-Role Assignment Management</b></i></p>
<p>Another handy feature present in the Maestro 3.2 series is the User-Role Assignment page. You can now assign specific roles to a user from the UI instead of doing it directly to the database. There are four types of roles that can be assigned to a user:</p>
<ul>
<li>Admin</li>
<li>Developer</li>
<li>Tester</li>
<li>Guest</li>
</ul>
<p><img src="http://blogs.exist.com/oching/wp-content/uploads/image/maestro/user_management.png" alt="User Management" style="width: 802px; height: 316px;" /></p>
<p><i>User Management</i></p>
<p>The Developer and Tester roles are both dynamic roles, meaning for each Build and Test project added in Maestro, a corresponding Developer role and Tester role are created respectively. If the user is assigned a Developer role for Build Project A, the user would only be able to see/access Build Project A. The same behavior goes for a dynamic Tester role. If the user is assigned a Tester role for Test Project B, the user would only be able to see/access Test Project B.</p>
<p><i><b>Preliminary GIT Support</b></i></p>
<p>Preliminary GIT support has also been implemented in 3.2. Projects in GIT SCM can now be added and built from Maestro. Expect more enhancements for this feature in the succeeding releases!</p>
<p><i><b>Upgrade to Sonar 2.5</b></i></p>
<p>Maestro 3.2 now bundles and uses Sonar version 2.5. With this upgrade, you can utilize the new features and enhancements available in the release. You may visit <a href="http://www.sonarsource.org/downloads/#2.5">www.sonarsource.org/downloads/#2.5</a> for the complete list of issues included in Sonar 2.5.</p>
<p><b>Other Enhancements and Bug Fixes</b></p>
<p>In addition to the new features listed above, there have also been a number of UI improvements put in place in 3.2. Some of these are:</p>
<ul>
<li>In the Admin page, there is now an indication whether a restart is required when you edit specific configuration fields.</li>
<li>Username and password for standalone deployment servers can now be configured from the Add/Edit Standalone Server form.</li>
<li>Improvement in error handling. All exceptions are either logged in the rolling log file or propagated to the user via the UI, depending on the type of error encountered.</li>
</ul>
<p>There have also been a number of bug fixes in 3.2, some of the more significant ones are:</p>
<ul>
<li>Profiles are not activated during release, even if explicitly specified in the release prepare and perform goals.</li>
<li>Timing in checking and updating of build result when running Selenium  tests sometimes causes Test to have inconsistent results.</li>
<li>Deleting a Build project does not delete the User-Role assignment entry associated to the project.</li>
<li>In Test, conversion of Selenium scripts written in the script editor  to java tests doesn&#8217;t allow assertions. Lines that doesn&#8217;t start with  &quot;selenium&quot; are not transformed to getSelenium().</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2011/03/07/maestro-32-hot-off-the-press/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Staging Repositories and Artifact Promotion in Archiva</title>
		<link>http://blogs.exist.com/oching/2010/09/17/staging-repositories-and-artifact-promotion-in-archiva/</link>
		<comments>http://blogs.exist.com/oching/2010/09/17/staging-repositories-and-artifact-promotion-in-archiva/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 15:55:05 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[archiva]]></category>

		<category><![CDATA[artifact]]></category>

		<category><![CDATA[artifact promotion]]></category>

		<category><![CDATA[ASF]]></category>

		<category><![CDATA[gsoc]]></category>

		<category><![CDATA[maven]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[opensource]]></category>

		<category><![CDATA[release]]></category>

		<category><![CDATA[repository]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[staging repository]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2010/09/17/staging-repositories-and-artifact-promotion-in-archiva/</guid>
		<description><![CDATA[The Google Summer of Code (GSoC) recently wrapped up. The Archiva project was one of the projects in the Apache Software Foundation that participated in the program. Eshan Sudharaka, a student from the University of Moratuwa in Sri Lanka, submitted a proposal in the GSoC to work on the staging repositories and artifact promotion support [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://code.google.com/soc/">Google Summer of Code</a> (GSoC) recently wrapped up. The <a href="http://archiva.apache.org">Archiva</a> project was one of the projects in the <a href="http://apache.org">Apache Software Foundation</a> that participated in the program. Eshan Sudharaka, a student from the University of Moratuwa in Sri Lanka, submitted a proposal in the GSoC to work on the staging repositories and artifact promotion support feature of Archiva.&nbsp;</p>
<p class="p1">You might wonder what staging repositories and artifact promotion are. Let me explain that a bit..</p>
<p class="p1">One of the important concepts in developing software is releasing. Releasing means freezing your code, versioning it and then publishing it to an artifact repository which can be consumed publicly or internally. Now, usually when you release software, it undergoes testing first before it gets officially published (e.g. pushed to a repository where users of the software or project can get it). That&#8217;s where staging repositories come in. It is the place where a release is first pushed where developers, testers and QA engineers get the release for testing before it is pushed and made available to the project&#8217;s official download repository.&nbsp;</p>
<p class="p1">Here&#8217;s how this feature currently works in Archiva..</p>
<p class="p1">When creating a new managed repository, you will be given an option to create a staging repository by ticking the <code>Create stage repository</code> checkbox as seen below.</p>
<p class="p1">&nbsp;<img width="583" height="424" border="1" align="middle" alt="" src="http://blogs.exist.com/oching/wp-content/uploads/image/managed_repository_staging.png" /></p>
<p class="p1">The staging repository can be distinguished from the managed repository it is attached to by the <code>-stage</code> appended to it&#8217;s ID. So in the above example, since the ID of the managed repository is <code>myproject.releases</code>, the staging repository attached to it is <code>myproject.releases-stage</code>. While the former is accessible in the webdav URL <code>http://mycompany.com/archiva/repository/myproject.releases/</code>, the latter is accessible in <code>http://mycompany.com/archiva/repository/myproject.releases-stage/</code>.</p>
<p class="p1">So when you release your project, you can deploy it to the staging repository first where it can be obtained for testing (and in cases of open source projects, undergo voting in the community).&nbsp;</p>
<p class="p1">Once testing (and voting) is finished, and the release has been approved, it can now be promoted to the official repo, which is the <code>myproject.releases </code>repository in our example above. This can be done in Archiva by clicking the <code>Merge</code> button in the repositories page as seen below.&nbsp;</p>
<p class="p1">&nbsp;<img width="701" height="385" alt="" src="http://blogs.exist.com/oching/wp-content/uploads/image/repos_merge.png" /></p>
<p class="p1">Archiva will then check for possible conflicts &#8212; artifacts in the staging repository with the same version already existing in the managed repository. If there are conflicting artifacts found, they will be listed where you can choose whether to merge everything (existing artifacts will be overwritten) or to skip the conflicting artifacts in the merge.</p>
<p class="p1"><img width="801" height="332" border="1" align="middle" alt="" src="http://blogs.exist.com/oching/wp-content/uploads/image/merge_withconflict.png" /></p>
<p>Once you selected an option, the contents of the staging repository will be merged to the managed repository.</p>
<p class="p1">This is still the initial implementation of the feature and there are still a number of enhancements to watch out for. One of these is the ability to select specific conflicting artifacts to merge as an additional option aside from just skipping everything or merging everything. The UI can also use some improvements. Access control on who can merge/promote artifacts can also needs to be improved. Right now only users with a <code>System Administrator</code> role can do this.</p>
<p class="p1">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2010/09/17/staging-repositories-and-artifact-promotion-in-archiva/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Continuum Tip: Builds Scheduling</title>
		<link>http://blogs.exist.com/oching/2010/04/05/continuum-tip-builds-scheduling/</link>
		<comments>http://blogs.exist.com/oching/2010/04/05/continuum-tip-builds-scheduling/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 07:44:22 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<category><![CDATA[continuum]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2010/04/05/continuum-tip-builds-scheduling/</guid>
		<description><![CDATA[&#34;When scheduling project builds in Continuum, keep development builds and nightly builds separate. Development builds should run quick and often so that broken builds are immediately flagged, while nightly builds should run everything and must deploy the generated artifacts to an accessible repository where developers and QA members can retrieve it the following day.&#34;
For example, [...]]]></description>
			<content:encoded><![CDATA[<p>&quot;When scheduling project builds in Continuum, keep development builds and nightly builds separate. Development builds should run quick and often so that broken builds are immediately flagged, while nightly builds should run everything and must deploy the generated artifacts to an accessible repository where developers and QA members can retrieve it the following day.&quot;</p>
<p>For example, if most of the development work happens during daytime, you can schedule your development builds to run every two or three hours (depending on how long your builds take) during the day when changes are being pushed in your source repository. You can simply configure it with &quot;clean install&quot; as you goals since the purpose of the development builds is to ensure that your build is not broken.</p>
<p>On the other hand, you can schedule your nightly builds to run at night (say every 10 in the evening). All the integration tests must be executed and builds must be deployed to your internal artifact<br />
repository. This ensures that the development team and the QA team get all the changes from the previous day when they build the project and test the nightly builds the following day, respectively.</p>
<p>Make sure that your build notifications are configured so that the development team are immediately notified if the build breaks.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2010/04/05/continuum-tip-builds-scheduling/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Apache Maven 2 Effective Implementation book (final version) now available!</title>
		<link>http://blogs.exist.com/oching/2009/09/15/apache-maven-2-effective-implementation-book-final-version-now-available/</link>
		<comments>http://blogs.exist.com/oching/2009/09/15/apache-maven-2-effective-implementation-book-final-version-now-available/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 02:01:23 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[archiva]]></category>

		<category><![CDATA[best practices]]></category>

		<category><![CDATA[build]]></category>

		<category><![CDATA[build tools]]></category>

		<category><![CDATA[ci]]></category>

		<category><![CDATA[continuous integration]]></category>

		<category><![CDATA[continuum]]></category>

		<category><![CDATA[effective implementation]]></category>

		<category><![CDATA[effective maven]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[maven]]></category>

		<category><![CDATA[pom]]></category>

		<category><![CDATA[repo manager]]></category>

		<category><![CDATA[repository manager]]></category>

		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2009/09/15/apache-maven-2-effective-implementation-book-final-version-now-available/</guid>
		<description><![CDATA[After almost a year of writing and revising, our book is finally finished and published  The book is about Apache Maven and centered on a &#34;best practices&#34; approach. It is not the usual how-to books but more on effective usage and application of Maven in your projects/applications. You will also learn how to use [...]]]></description>
			<content:encoded><![CDATA[<p>After almost a year of writing and revising, our book is finally finished and published <img src="http://blogs.exist.com/oching/wp-content/plugins/fckeditor-for-wordpress-plugin/smiles/msn/regular_smile.gif" alt="" /> The book is about Apache Maven and centered on a &quot;best practices&quot; approach. It is not the usual how-to books but more on effective usage and application of Maven in your projects/applications. You will also learn how to use Maven together with Apache Continuum (continuous integration server) and Apache Archiva (a repository manager) and use these tools to your advantage.</p>
<p>To learn more about these projects, visit:</p>
<p><a href="http://maven.apache.org/">maven.apache.org/</a></p>
<p><a href="archiva.apache.org/">archiva.apache.org/</a></p>
<p><a href="continuum.apache.org/">continuum.apache.org/</a></p>
<p>You can grab a copy of the book at <a href="http://www.packtpub.com/apache-maven-2-effective-implementations/book">www.packtpub.com/apache-maven-2-effective-implementations/book</a>. Grab a copy now while it&#8217;s still on sale <img src='http://blogs.exist.com/oching/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>(Thanks again to everyone who helped us out and supported us with this book!)</p>
<p><a href="http://www.packtpub.com/apache-maven-2-effective-implementations/book"><img width="233" height="273" src="http://images.packtpub.com/images/full/1847194540.jpg" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2009/09/15/apache-maven-2-effective-implementation-book-final-version-now-available/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;Managing Your Repositories with Archiva&#8221; @ApacheCon Europe 2009</title>
		<link>http://blogs.exist.com/oching/2009/03/05/managing-your-repositories-with-archiva-apachecon-europe-2009/</link>
		<comments>http://blogs.exist.com/oching/2009/03/05/managing-your-repositories-with-archiva-apachecon-europe-2009/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 12:28:03 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2009/03/05/managing-your-repositories-with-archiva-apachecon-europe-2009/</guid>
		<description><![CDATA[&#160;
ApacheCon Europe is coming up!** I&#8217;m given the privilege of holding an hour long session at the conference to talk about Archiva. Here&#8217;s a short summary of what I will be covering in my presentation: www.eu.apachecon.com/c/aceu2009/sessions/169
&#160;Wendy Smoak and Carlos Sanchez will also be speaking at the conference. Wendy will be doing a presentation on Apache [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>ApacheCon Europe is coming up!** I&#8217;m given the privilege of holding an hour long session at the conference to talk about Archiva. Here&#8217;s a short summary of what I will be covering in my presentation: <a href="http://www.eu.apachecon.com/c/aceu2009/sessions/169">www.eu.apachecon.com/c/aceu2009/sessions/169</a></p>
<p>&nbsp;Wendy Smoak and Carlos Sanchez will also be speaking at the conference. Wendy will be doing a presentation on Apache Continuum <a href="http://www.eu.apachecon.com/c/aceu2009/sessions/170">www.eu.apachecon.com/c/aceu2009/sessions/170</a> while Carlos will be talking about Enterprise Build and Test <a href="http://www.eu.apachecon.com/c/aceu2009/sessions/171">www.eu.apachecon.com/c/aceu2009/sessions/171</a>, and Eclipse IAM <a href="http://www.eu.apachecon.com/c/aceu2009/sessions/185">www.eu.apachecon.com/c/aceu2009/sessions/185</a></p>
<p>See you all in Amsterdam!&nbsp;</p>
<p>**ApacheCon Europe 2009 is on March 23-27 at Movenpick Hotel, Amsterdam - <a href="http://www.eu.apachecon.com/c/aceu2009/">www.eu.apachecon.com/c/aceu2009/</a>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2009/03/05/managing-your-repositories-with-archiva-apachecon-europe-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Configuring JSW + embedded Jetty with JMX</title>
		<link>http://blogs.exist.com/oching/2009/02/26/configuring-jsw-embedded-jetty-with-jmx/</link>
		<comments>http://blogs.exist.com/oching/2009/02/26/configuring-jsw-embedded-jetty-with-jmx/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 02:00:51 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<category><![CDATA[appassembler-maven-plugin]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jetty]]></category>

		<category><![CDATA[jmx]]></category>

		<category><![CDATA[jsw]]></category>

		<category><![CDATA[maven]]></category>

		<category><![CDATA[mbeans]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2009/02/26/configuring-jsw-embedded-jetty-with-jmx/</guid>
		<description><![CDATA[
I thought I&#8217;d share this knowledge that I&#8217;ve learned while migrating our project to be distributed in a Jetty bundle JMX (see java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/)
I&#8217;ve summarized this into the following steps:
1. You must have a jetty-jmx.xml file with the following configuration:
&#60;?xml version=&#34;1.0&#34;?&#62;
&#60;!DOCTYPE Configure PUBLIC &#34;-//Mort Bay Consulting//DTD Configure//EN&#34; &#34;http://jetty.mortbay.org/configure.dtd&#34;&#62;
&#60;Configure id=&#34;Server&#34; class=&#34;org.mortbay.jetty.Server&#34;&#62;
&#160;&#160;&#160; &#60;!&#8211; =========================================================== &#8211;&#62;
&#160;&#160;&#160; &#60;!&#8211; Initialize an [...]]]></description>
			<content:encoded><![CDATA[<p>
I thought I&#8217;d share this knowledge that I&#8217;ve learned while migrating our project to be distributed in a Jetty bundle JMX (see <a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/">java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/</a>)</p>
<p>I&#8217;ve summarized this into the following steps:</p>
<p>1. You must have a jetty-jmx.xml file with the following configuration:</p>
<p style="margin-left: 40px;">&lt;?xml version=&quot;1.0&quot;?&gt;<br />
&lt;!DOCTYPE Configure PUBLIC &quot;-//Mort Bay Consulting//DTD Configure//EN&quot; &quot;http://jetty.mortbay.org/configure.dtd&quot;&gt;<br />
&lt;Configure id=&quot;Server&quot; class=&quot;org.mortbay.jetty.Server&quot;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!&#8211; =========================================================== &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!&#8211; Initialize an mbean server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!&#8211; =========================================================== &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!&#8211; Use the jdk 1.5 platformMBeanServer &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;Call id=&quot;MBeanServer&quot; class=&quot;java.lang.management.ManagementFactory&quot; name=&quot;getPlatformMBeanServer&quot;/&gt;<br />
&nbsp;&nbsp;  <br />
&nbsp;&nbsp;&nbsp; &lt;!&#8211; =========================================================== &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!&#8211; Initialize the Jetty MBean container&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;!&#8211; =========================================================== &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;Get id=&quot;Container&quot; name=&quot;container&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Call name=&quot;addEventListener&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Arg&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;New class=&quot;org.mortbay.management.MBeanContainer&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Arg&gt;&lt;Ref id=&quot;MBeanServer&quot;/&gt;&lt;/Arg&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!&#8211; If using &lt; jdk1.5 uncomment to start http adaptor &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!&#8211; Set name=&quot;managementPort&quot;&gt;8082&lt;/Set &#8211;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Call name=&quot;start&quot; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/New&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Arg&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Call&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/Get&gt;&nbsp;&nbsp;&nbsp; <br />
&lt;/Configure&gt;&nbsp;</p>
<p>2. In your wrapper.conf file, add the jetty-jmx.xml file in the Application Parameters section like the following:</p>
<p style="margin-left: 40px;">wrapper.app.parameter.1=org.mortbay.start.Main<br />
wrapper.app.parameter.2=[PATH_TO_JETTY_CONFIG]/jetty-jmx.xml<br />
wrapper.app.parameter.3=[PATH_TO_JETTY_CONFIG]/jetty.xml</p>
<p>3. Add&nbsp; also the following in the Java Additional Parameters section of the wrapper.conf:</p>
<p style="margin-left: 40px;">wrapper.java.additional.7=-Dcom.sun.management.jmxremote.ssl=false<br />
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false<br />
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.port=9999</p>
<p>4. Start the Jetty bundle by invoking the startup script for the JSW.</p>
<p>5. To see if JMX was enabled, use jconsole to connect. In jconsole, create a new connection and in the Advanced tab, provide the following JMX url then click Connect:</p>
<p style="margin-left: 40px;"><code>service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi</code></p>
<p>After step 4, you should be able to see the Memory, Threads, Classes and MBeans info of your application.</p>
<p>&nbsp;</p>
<p><i>Specifics for the tools used above: </i></p>
<ul>
<li><i>appassembler-maven-plugin 1.0-beta-2</i></li>
<li><i>java 1.5.0_11</i></li>
<li><i>jetty 6.1.11</i><i><br />
    </i></li>
<li><i>jsw 3.2.3</i>&nbsp;</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2009/02/26/configuring-jsw-embedded-jetty-with-jmx/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Continuum 1.3.1 (Alpha) now released!</title>
		<link>http://blogs.exist.com/oching/2009/01/21/continuum-131-alpha-now-released/</link>
		<comments>http://blogs.exist.com/oching/2009/01/21/continuum-131-alpha-now-released/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 10:11:26 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2009/01/21/continuum-131-alpha-now-released/</guid>
		<description><![CDATA[Continuum 1.3.1 (Alpha) has been officially released today! Although this is just an alpha release, there&#8217;s a vast amount of new features (in it&#8217;s initial implementation) to look out for as can be seen in the release notes below:
Release Notes - Continuum - Version 1.3.1
** Sub-task
&#160;&#160;&#160; * [CONTINUUM-2023] - Document usage of parallel builds
** Bug
&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Continuum 1.3.1 (Alpha) has been officially released today! Although this is just an alpha release, there&#8217;s a vast amount of new features (in it&#8217;s initial implementation) to look out for as can be seen in the release notes below:</p>
<p>Release Notes - Continuum - Version 1.3.1</p>
<p>** Sub-task<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2023] - Document usage of parallel builds</p>
<p>** Bug<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1513] - Release does not work when maven 2 executable is not on PATH<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1978] - regression from 1.1 to 1.2.2: Add Maven 2.0+ Project using https POM Url where the source server has self signed certificate<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1981] - Error while using Windows domain in username when adding a M2 project<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1984] - Dead link to data-management-cli-1.2-app.jar in upgrade documentation<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1988] - Cannot build project if triggered from Project Information page<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1998] - Unable to delete a user<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1999] - Missing validation error message for duplicate project group<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2008] - Creating or Editing&nbsp; &quot;build definition&quot; and &quot;build definition template&quot; generates javascript error<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2017] - Unable to add build definitions to a template<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2021] - NullPointerException when sending mail notification<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2030] - Show Users in Role paging not working<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2035] - Unable to release when Distributed Build is enabled<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2040] - NPE encountered when building a project migrated from an old database</p>
<p>** Improvement<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1829] - separate transient errors from build failures in notification and display<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1864] - Transient State<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1884] - Clicking &#8216;Done&#8217; after a successful release perform sends you all the way out to the list of groups<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1962] - Migrate to Struts 2<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1969] - Externalize all strings and make continuum fully localizable.<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2010] - Add group cancel build<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2013] - Database migration tool for migration from 1.2.x to 1.3.x</p>
<p>** New Feature<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-265] - Concurrent builds<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1666] - Distributed Builds</p>
<p>** Task<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1990] - Unable to publish website from 1.3.0 tag<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-2024] - Upgrade httpclient to 4.0beta2</p>
<p>
** Wish<br />
&nbsp;&nbsp;&nbsp; * [CONTINUUM-1635] - Manage configurable number of parallel build queues
</p>
<p>BTW, the release can be obtained here: http://continuum.apache.org/download.html</p>
<p>Enjoy!</p>
<p>
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2009/01/21/continuum-131-alpha-now-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BarCampApache @ApacheCon US 2008</title>
		<link>http://blogs.exist.com/oching/2008/11/04/barcampapache-apachecon-us-2008/</link>
		<comments>http://blogs.exist.com/oching/2008/11/04/barcampapache-apachecon-us-2008/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 14:41:11 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2008/11/04/barcampapache-apachecon-us-2008/</guid>
		<description><![CDATA[For the first time in Apache Con history, Apache will be hosting a bar camp! Visit http://barcamp.pbwiki.com/BarCampApache for more details  
]]></description>
			<content:encoded><![CDATA[<p>For the first time in Apache Con history, Apache will be hosting a bar camp! Visit http://barcamp.pbwiki.com/BarCampApache for more details <img src='http://blogs.exist.com/oching/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2008/11/04/barcampapache-apachecon-us-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Archiva @ApacheCon US 2008</title>
		<link>http://blogs.exist.com/oching/2008/11/04/archiva-apachecon-us-2008/</link>
		<comments>http://blogs.exist.com/oching/2008/11/04/archiva-apachecon-us-2008/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 14:31:33 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2008/11/04/archiva-apachecon-us-2008/</guid>
		<description><![CDATA[&#160;
I was given a chance to do a fast feather talk about Archiva at the ApacheCon US 2008 on Wednesday Nov. 5, 3pm at the Sheraton Hotel in New Orleans. See you there!
]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>I was given a chance to do a fast feather talk about Archiva at the ApacheCon US 2008 on Wednesday Nov. 5, 3pm at the Sheraton Hotel in New Orleans. See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2008/11/04/archiva-apachecon-us-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Generating RSS Feeds with Rome</title>
		<link>http://blogs.exist.com/oching/2008/08/26/generating-rss-feeds-with-rome/</link>
		<comments>http://blogs.exist.com/oching/2008/08/26/generating-rss-feeds-with-rome/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 12:46:17 +0000</pubDate>
		<dc:creator>Deng Ching</dc:creator>
		
		<category><![CDATA[Tech blogs]]></category>

		<category><![CDATA[archiva]]></category>

		<category><![CDATA[atom]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[rome]]></category>

		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://blogs.exist.com/oching/2008/08/26/generating-rss-feeds-with-rome/</guid>
		<description><![CDATA[Want to have RSS feeds in your Java application? Try Rome..
&#34;Rome is an open source library for generating, parsing and manipulating RSS and Atom feeds. It supports different RSS and Atom feed formats such as Atom 0.3, and Atom 1.0, RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS [...]]]></description>
			<content:encoded><![CDATA[<p>Want to have RSS feeds in your Java application? Try Rome..</p>
<p>&quot;<a href="https://rome.dev.java.net/" title="Rome">Rome</a> is an open source library for generating, parsing and manipulating RSS and Atom feeds. It supports different RSS and Atom feed formats such as Atom 0.3, and Atom 1.0, RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0 and RSS 2.0.&quot;</p>
<p>A couple months back, I got to use the Rome library to implement RSS in <a href="http://archiva.apache.org/" title="Archiva">Archiva</a>. What I liked about Rome is how it&#8217;s so easy to understand and use. To generate an RSS feed, you basically just need to be familiar with these three classes: SyndFeed, SyndEntry and SyndContent. These three are Java interfaces with the following concrete implementations: SyndFeedImpl, SyndEntryImpl and SyndContentImpl respectively. Here&#8217;s a short example on how you can generate a RSS 2.0 feed:</p>
<blockquote>
<p>SyndFeed feed = new SyndFeedImpl();            // create the feed<br />
Date publishDate = new Date( System.currentTimeMillis() );</p>
<p>
feed.setTitle( &quot;Techblog.ph RSS Feeds&quot; );<br />
feed.setDescription( &quot;RSS feeds of blog entries from Techblog.ph&quot; );<br />
feed.setLanguage( &quot;en-us&quot; );<br />
feed.setPublishedDate( publishDate );<br />
feed.setFeedType( &quot;rss_2.0&quot; );          // set the type of your feed</p>
<p>List&lt;SyndEntry&gt; entries = new ArrayList&lt;SyndEntry&gt;();</p>
<p>SyndEntry entry = new SyndEntryImpl();           // create a feed entry<br />
entry.setTitle( &quot;Generating RSS Feeds with Rome&quot; );<br />
entry.setPublishedDate( publishDate );</p>
<p>SyndContent content = new SyndContentImpl();         // create the content of your entry<br />
content.setType( &quot;text/plain&quot; );<br />
content.setValue( &quot;Want to have RSS feeds in your Java application? Try Rome&#8230;..&quot; );</p>
<p>entry.setDescription( content );<br />
entries.add( entry );<br />
feed.setEntries( entries );              // you can add multiple entries in your feed</p>
</blockquote>
<p>For the published date, make sure that you update it whenever you have a new entry and publish the feed so that the reader knows there were changes/updates in your feed.</p>
<p>Now, to publish your feed.. you can write it into a file (example, write it to rss.xml) which the feed reader checks for updates or you can generate the feed by request (like how it is done in Archiva). If you are publishing your feeds by writing it on a file, you might need to read the file into a SyndFeed before adding new entries as shown below:</p>
<blockquote>
<p>SyndFeedInput input = new SyndFeedInput();<br />
SyndFeed  feed = input.build( new XmlReader( outputFile ) );</p>
</blockquote>
<p>To learn more about the Rome library, check out the <a href="https://rome.dev.java.net/apidocs/1_0/overview-summary.html">Rome API</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.exist.com/oching/2008/08/26/generating-rss-feeds-with-rome/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

