<?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-749240152179953836</id><updated>2011-07-08T10:56:39.688-04:00</updated><category term='jopr tomcat'/><category term='RHQ'/><title type='text'>Start Making Sense...</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jayshaughnessy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jayshaughnessy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jay Shaughnessy</name><uri>http://www.blogger.com/profile/09037042000553312744</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_quNRdALXjPU/TG2NYUNVLnI/AAAAAAAAAAk/rnrvMCVWP_E/S220/pic.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-749240152179953836.post-466629288530809647</id><published>2011-05-23T09:57:00.012-04:00</published><updated>2011-05-25T17:02:47.037-04:00</updated><title type='text'>SmartGWT IE7, IE8 Support</title><content type='html'>Version 4.0.1 of the &lt;a href="http://www.rhq-project.org/"&gt;RHQ project&lt;/a&gt; adds IE7 and IE8 support.  It took a bit of wrangling to figure out how best to support IE with our spiffy new &lt;a href="http://code.google.com/p/smartgwt"&gt;SmartGWT&lt;/a&gt; interface.  There are a few parts in play:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IE version (7,8,9...).&lt;/li&gt;&lt;li&gt;IE Mode (quirks, standards7, standards8, standards9...)&lt;/li&gt;&lt;li&gt;SmartGWT version&lt;br /&gt;&lt;/li&gt;&lt;li&gt;GWT build user.agent values (ie6, ie8)&lt;/li&gt;&lt;/ul&gt;Our goal is to function with IE7, IE8 and going forward, IE9 and onwards.&lt;br /&gt;&lt;br /&gt;One big blocker we ran into is that if you don't quite get things lined up in the build you can get a situation where IE simply will not load. The behavior basically looks like a GET request, usually with high CPU, hanging while waiting for a response for either CSS or JavaScript. Very hard to do much when you hit this.&lt;br /&gt;&lt;br /&gt;I'm not going to go into the details too much, here's pretty much the end-game:&lt;span style="color: rgb(204, 51, 204);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Use a recent version of SmartGWT:&lt;/span&gt; Version 2.2 or later.  We're on 2.4.  &lt;/span&gt;&lt;/span&gt;This in itself solves an older issue with IE not being able to handle larger chunks of JavaScript. Later versions of  SmartGWT chunk the generated JS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 51);"&gt;Stick with Quirks Mode:&lt;/span&gt; This is recommended by SmartGWT because they already code for the quirks of the browser vendors.  That's pretty much what you're getting with your permutations you ask for in the build.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 51);"&gt;Don't use DOCTYPE in your bootstrap HTML:&lt;/span&gt;  This is also recommended by SmartGWT because the presence of a DOCTYPE decl will send IE into standards mode for that version of IE.  It also affects other vendor's behavior so really, it changes quite a lot.  We were initially lured to DOCTYPE because it solved the hanging load issue, but it caused several rendering issues later on.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 51);"&gt;Do use the &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(51, 0, 51);"&gt;meta &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 51);"&gt;tag to declare IE7 emulation:&lt;/span&gt; This avoids the DOCTYPE problem, will be used by IE8 onwards, and will be ignored by other browser vendors.  So basically, if your GUI is working well for IE7 you have a pretty good chance of forward compatibility.  It's placed right at the top, just inside the &lt;span style="font-family:courier new;"&gt;head&lt;/span&gt; tag, like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 51);font-family:courier new;" &gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt; &amp;lt;meta http-equiv="X-UA-Compatible"&lt;br /&gt;       content="IE=EmulateIE7" /&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-family:courier new;"&gt;content="IE=7"&lt;/span&gt; will give you standards mode, which causes other rendering issues as mentioned above.  Also, any attempt to use IE8 modes resulted (at least with SmartGWT 2.4) in issues with TreeGrid rendering;  unindented child nodes and excessive vertical spacing.  This was true even with the SmartGWT showcase.  There is definitely an issue between SmartGWT and IE8 for trees.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 51);"&gt;Use the IE6 GWT user agent:&lt;/span&gt;  You must include the "ie6" GWT user agent in your build.  We're emulating IE7 and that requires the "ie6" userAgent.  If you don't include this you will get the hanging loading issue mentioned above.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 51);"&gt;Tip:&lt;/span&gt; Starting with IE8 (I was using IE9) you get a nice feature by hitting the &lt;span style="font-weight: bold;font-family:courier new;" &gt;F12&lt;/span&gt; key.  This console allows you to easily see and modify the browser mode and standards/quirks mode settings currently in use.&lt;br /&gt;&lt;br /&gt;Hope this helps...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/749240152179953836-466629288530809647?l=jayshaughnessy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayshaughnessy.blogspot.com/feeds/466629288530809647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=749240152179953836&amp;postID=466629288530809647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/466629288530809647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/466629288530809647'/><link rel='alternate' type='text/html' href='http://jayshaughnessy.blogspot.com/2011/05/smartgwt-ie7-ie8-support.html' title='SmartGWT IE7, IE8 Support'/><author><name>Jay Shaughnessy</name><uri>http://www.blogger.com/profile/09037042000553312744</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_quNRdALXjPU/TG2NYUNVLnI/AAAAAAAAAAk/rnrvMCVWP_E/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-749240152179953836.post-7994941642579552837</id><published>2011-02-18T14:44:00.005-05:00</published><updated>2011-02-18T15:21:11.045-05:00</updated><title type='text'>SmartGWT Tip - Regex Evaluation</title><content type='html'>The &lt;a href="http://www.rhq-project.org/"&gt;RHQ project&lt;/a&gt; is building a new user interface using GWT (actually, &lt;a href="http://code.google.com/p/smartgwt"&gt;SmartGWT&lt;/a&gt;).  There is a definite learning curve to SmartGWT but overall I think this is a great technology for UI building. It offers a rich set of GUI Widgets, a strong architecture, an active community, and responsive developers.  But maybe best of all, since you can write your GUI in Java, it can quickly enable a historically non-GUI Java programmer (like me) to contribute to a GUI implementation.  As we move forward I'll try and share some tips about things we've stumbled over.&lt;br /&gt;&lt;br /&gt;Tip: Remember that hosted mode (i.e. dev mode) is driven by Java, but your standard runtime environment is JavaScript.&lt;br /&gt;&lt;br /&gt;GWT takes your Java code and generates vendor-specific JavaScript.  This is great in that it frees the Java developer from having to, for the most part, deal with JavaScript or certain vendor-specific browser differences.  But, during development you'll be running in hosted mode in order to run with a JPDA debugger, and to evaluate code changes quickly.  As you learn quickly in GWT, not everything in Java is available in GWT, because it needs to be able to be supported in the resulting JavaScript.  But even the things that are supported may not behave exactly the same way.  One example is regular expression (regex) evaluation.&lt;br /&gt;&lt;br /&gt;In most cases the evaluation will be the same. But, you may want to test patterns you're using in both a &lt;a href="http://www.fileformat.info/tool/regex.htm"&gt;Java regex evaluator&lt;/a&gt; &lt;span style="font-weight: bold;"&gt;and a &lt;/span&gt;&lt;a href="http://regexpal.com/"&gt;JavaScript regex evaluator&lt;/a&gt;, ensuring they behave the same way.&lt;br /&gt;&lt;br /&gt;I ran into this sort of regex problem recently. Here is a slightly contrived example:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;(foo|foo/bar)/[^/]*&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I wanted to match path segments like:  &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;foo/1234&lt;/span&gt;&lt;/span&gt; or&lt;span style="font-size:85%;"&gt; &lt;span style="font-family:courier new;"&gt;foo/bar/1234&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Java (i.e when running in dev mode for GWT) this worked just fine, both of the sample paths matched just fine.&lt;br /&gt;&lt;br /&gt;The match went like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;"foo/1234"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(foo|foo/bar) matched "foo"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/[^/]*        matched "/1234"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;"foo/bar/1234"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(foo|foo/bar) matched "foo/bar"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/[^/]*        matched "/1234"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But in JavaScript the second example did not work as I expected.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;"foo/1234"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(foo|foo/bar) matched "foo"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/[^/]*        matched "/1234"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;"foo/bar/1234"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(foo|foo/bar) matched "foo"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/[^/]*        failed  "/bar/1234"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After matching the first OR option, it did not try the second one, despite the fact that the overall match failed.&lt;br /&gt;&lt;br /&gt;The solution was to order the OR options from most complex to least complex, avoiding the subtle issue created by option 1 being a substring of option 2:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;(foo/bar|foo)/[^/]*&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The left to right evaluation now gave us the desired result.&lt;br /&gt;&lt;br /&gt;This is not a blog about regex handling, there are probably several ways to do what we wanted, and we're not encountering a bug here.  This is to point out a fundamental design point in GWT development, keep in mind that dev mode and production mode have different runtime environments that can produce subtle differences in behavior.  For the same reason you're sure to encounter entire Java classes that work in dev mode and are not available in production mode, because they aren't supported in the JavaScript environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/749240152179953836-7994941642579552837?l=jayshaughnessy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayshaughnessy.blogspot.com/feeds/7994941642579552837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=749240152179953836&amp;postID=7994941642579552837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/7994941642579552837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/7994941642579552837'/><link rel='alternate' type='text/html' href='http://jayshaughnessy.blogspot.com/2011/02/smartgwt-tip-regex-evaluation.html' title='SmartGWT Tip - Regex Evaluation'/><author><name>Jay Shaughnessy</name><uri>http://www.blogger.com/profile/09037042000553312744</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_quNRdALXjPU/TG2NYUNVLnI/AAAAAAAAAAk/rnrvMCVWP_E/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-749240152179953836.post-5719380159587314304</id><published>2010-08-19T13:27:00.002-04:00</published><updated>2010-08-19T15:18:21.247-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RHQ'/><title type='text'>Scripted Provisioning with RHQ 3.0 and JON 2.4</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;The new JBoss Operations Network (JON) 2.4.0, and its upstream project &lt;a href="http://rhq-project.org/display/RHQ/Home"&gt;RHQ 3.0.0&lt;/a&gt;, introduce &lt;span style="font-style: italic;"&gt;provisioning&lt;/span&gt;.  Users can now begin to manage content distribution via RHQ by deploying bundles to managed platforms, and laying them down with flexible Ant scripting.  RHQ can help manage and track different bundle versions on different destinations with varied configuration.  Deployments can be upgraded and reverted as well, on groups of mixed platforms.  And all deployments generate extensive auditing. For more information on provisioning see the &lt;a href="http://rhq-project.org/display/JOPR2/Provisioning"&gt;docs&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;For a gui-based demo, check out &lt;a href="http://management-platform.blogspot.com/2010/06/provisioning-content-via-rhq.html"&gt;Mazz's blog entry&lt;/a&gt;. (note, the gui has been improved since this demo was recorded&lt;/span&gt;.)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;I want to discuss RHQ provisioning via CLI scripting.  RHQ has a powerful CLI for interactive use or for executing scripts via the Rhino Javascript engine.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Most of what you can do via the RHQ GUI can also be done via scripting, allowing IT managers to automate their processes. RHQ's &lt;a href="http://rhq-project.org/display/JOPR2/API+Documentation"&gt;Remote API&lt;/a&gt; is fully accessible as well as CLI features that can further simplify your scripting.  The RHQ Git repository houses the following four sample scripts that I'll talk through.  For the full set of commented, repeatable scripts go &lt;a href="http://git.fedorahosted.org/git/?p=rhq/rhq.git;a=tree;f=etc/samples/provisioning/sample-cli"&gt;here&lt;/a&gt;.  I'll just cover the snippets that do the provisioning work...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;By the way, here are instructions to &lt;a href="http://rhq-project.org/display/JOPR2/RHQ+CLI+Installation"&gt;install the CLI&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;A Bundle is basically some logical content, like an application, that you want to deploy out to your RHQ managed platforms.  This example will use a bundle named &lt;span style="font-weight: bold;"&gt;sample-bundle&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Script 1: Create version 1.0 of sample-bundle&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;pre  style="font-family:courier new;"&gt;       // create bundleVersion 1.0 for the sample bundle&lt;br /&gt;       var distributionFile = new java.io.File(bundleDistroV1Path);&lt;br /&gt;[1]    distributionFile = new java.io.File(distributionFile.getAbsolutePath());&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;[2]    var bundleVersion1 = BundleManager.createBundleVersionViaFile(&lt;br /&gt;                              distributionFile);&lt;br /&gt;       print("\nCreated " + bundleVersion1 + "!")&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;ol style="font-family: arial;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Get the bundle distribution file path. This is a zip file containing the Ant deploy recipe and the files to be deployed. In this an example, a simple WAR file.  The recipe let's us know this is V1.0 of sample-bundle.  The distribution files are provided along with the scripts in the git repo link above.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Call the RHQ Server and have it create the new bundle, starting with bundle version 1.0.  Note that in this case the bundle file is small so we just send it in one shot, the API provides for streaming alternatives for larger distributions.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;pre  style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Script 2: Deploy version 1.0 of sample-bundle&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre  style="font-family:courier new;"&gt;[1]    // get the bundle&lt;br /&gt;       var bundleName = 'sample-bundle';&lt;br /&gt;       var bc = new BundleCriteria();&lt;br /&gt;       bc.addFilterName(bundleName);&lt;br /&gt;       bc.fetchBundleVersions( true );&lt;br /&gt;       var bundles = BundleManager.findBundlesByCriteria(bc);&lt;br /&gt;       var bundle = bundles.get(0);&lt;br /&gt;       var bundleVersion = bundle.getBundleVersions().get(0);&lt;br /&gt;&lt;br /&gt;[2]    // get the "platforms" group&lt;br /&gt;       var rgc = new ResourceGroupCriteria();&lt;br /&gt;       rgc.addFilterName("platforms");&lt;br /&gt;       var groups = ResourceGroupManager.findResourceGroupsByCriteria(rgc);&lt;br /&gt;       var groupId = groups.get(0).getId();&lt;br /&gt;&lt;br /&gt;[3]    // create a destination for the deployment&lt;br /&gt;       var dest = BundleManager.createBundleDestination(&lt;br /&gt;                      bundle.getId(),&lt;br /&gt;                      "sample destination",&lt;br /&gt;                      "sample destination",&lt;br /&gt;                      "/tmp/sample-bundle",&lt;br /&gt;                      groupId);&lt;br /&gt;&lt;br /&gt;[4]    // create a config for the V1.0 deployment&lt;br /&gt;       // setting the required properties for recipe in distro 1.0&lt;br /&gt;       var config1 = new Configuration();&lt;br /&gt;       var property11 = new PropertySimple("sample.name", "V1 Name");&lt;br /&gt;       config1.put( property11 );&lt;br /&gt;       var property12 = new PropertySimple("sample.port", "11111");&lt;br /&gt;       config1.put( property12 );&lt;br /&gt;&lt;br /&gt;[5]    // create a deployment for sample bundle 1.0 using the 1.0 config&lt;br /&gt;       var deployment = BundleManager.createBundleDeployment(&lt;br /&gt;                            bundleVersion.getId(),&lt;br /&gt;                            dest.getId(),&lt;br /&gt;                            "Deploying Sample Ant Bundle V1",&lt;br /&gt;                            config1);&lt;br /&gt;       deployment = BundleManager.scheduleBundleDeployment(&lt;br /&gt;                            deployment.getId(),&lt;br /&gt;                            true);&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/span&gt;&lt;ol style="font-family: arial;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Use a criteria find to locate sample-bundle and retrieve it's BundleVersion info.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Again, use a criteria find to locate the group of platforms to which we want to deploy this bundle.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;A bundle is deployed to a *Destination*, which is basically a combination of a platform group and a deploy directory.  The deploy directory is where the deployment will be rooted on each of the target platforms. Note that the platform group can be of mixed platform types.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;A bundle *Deployment* is basically a combination of a bundle version, a destination, and a *Configuration*. Here we define the configuration that will be used for this deployment. The same bundle version may need to be provisioned to different platforms with different configuration. In this case we have name and port values that will be applied on the target deployments.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Finally, we create the BundleDeployment and then schedule it for execution.  Note that in the first release only immediate schduling is available. The sample-bundle, version 1.0 will be provisioned to the /tmp/sample-bundle directory on each member of the platforms group, and configured with name="V1 Name" and port 11111.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;pre face="courier new"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Script 3: Upgrade to version 2.0 of sample-bundle to the same Destination.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;" &gt;&lt;pre&gt;[1]    //get the bundle if it exists&lt;br /&gt;       var bc = new BundleCriteria();&lt;br /&gt;       bc.addFilterName(bundleName);&lt;br /&gt;       bc.fetchDestinations( true );&lt;br /&gt;       var bundles = BundleManager.findBundlesByCriteria(bc);&lt;br /&gt;       var bundle = bundles.get(0);&lt;br /&gt;       var dest = bundle.getDestinations().get(0);&lt;br /&gt;&lt;br /&gt;[2]    //create bundleVersion 2.0 for the sample bundle&lt;br /&gt;       var distributionFile = new java.io.File(bundleDistroV2Path);&lt;br /&gt;       distributionFile = new java.io.File(distributionFile.getAbsolutePath());&lt;br /&gt;       var bundleVersion2 = BundleManager.createBundleVersionViaFile(&lt;br /&gt;                                distributionFile);&lt;br /&gt;&lt;br /&gt;[3]    //create a config for the V2.0 deployment&lt;br /&gt;       var config2 = new Configuration();&lt;br /&gt;       var property21 = new PropertySimple("sample.name", "V2 Name");&lt;br /&gt;       config2.put( property21 );&lt;br /&gt;       var property22 = new PropertySimple("sample.port", "22222");&lt;br /&gt;       config2.put( property22 );&lt;br /&gt;       var property23 = new PropertySimple("sample.new", "V2.0 ONLY!");&lt;br /&gt;       config2.put( property23 );&lt;br /&gt;&lt;br /&gt;[4]    // upgrade the deployment to 2.0 using the 2.0 config&lt;br /&gt;       var deployment = BundleManager.createBundleDeployment(&lt;br /&gt;                            bundleVersion2.getId(),&lt;br /&gt;                            dest.getId(),&lt;br /&gt;                            "Upgrading Sample Ant Bundle to V2",&lt;br /&gt;                            config2);&lt;br /&gt;       deployment = BundleManager.scheduleBundleDeployment(&lt;br /&gt;                            deployment.getId(),&lt;br /&gt;                            false&lt;span style="font-family:Georgia,serif;"&gt;);&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Again, using criteria fetch, get the Bundle and it's destination.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;span style="font-family: monospace;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: monospace;"&gt;&lt;/span&gt;Just like script 1, now create a new BundleVersion, 2.0, with a distribution fil &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Showing the different versions can have different configuration needs, a new property is added.&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Just like script 2, deploy to the same destination, this time version 2.0.  The sample-bundle will be upgraded on each member of the platforms group, same directory, new configuration applied.&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;pre face="courier new"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Script 4. Revert back to version 1.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;"&gt;[1]     //revert the live V2 deployment to the replaced V1 deployment&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        var deployment = BundleManager.scheduleRevertBundleDeployment(&lt;br /&gt;                         dest.getId(),&lt;br /&gt;                         "Reverting Sample Ant Bundle from V2 to V1",&lt;br /&gt;                         false);&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/span&gt;&lt;ol style="font-family: arial;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Omitted is a criteria search for the bunde information, as shown in script 3.  here we ask to revert the live deployment, version 2.0, to the version it had replaced, version 1.0.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;font-family:arial;font-size:85%;"  &gt;All of this can be done via the RHQ GUI as well.  The GUI of course can show details of everything involved, including the audits for the individual resource deployments.  The API can also provide this information to the CLI, mainly via criteria fetches asking for various data to be supplied with the results.&lt;/span&gt;&lt;span style="font-family: arial;font-family:arial;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Provisioning is a major new feature in RHQ 3.0.0 and JON 2.4, check it out!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/749240152179953836-5719380159587314304?l=jayshaughnessy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayshaughnessy.blogspot.com/feeds/5719380159587314304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=749240152179953836&amp;postID=5719380159587314304' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/5719380159587314304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/5719380159587314304'/><link rel='alternate' type='text/html' href='http://jayshaughnessy.blogspot.com/2010/08/scripted-provisioning-with-rhq-30-and.html' title='Scripted Provisioning with RHQ 3.0 and JON 2.4'/><author><name>Jay Shaughnessy</name><uri>http://www.blogger.com/profile/09037042000553312744</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_quNRdALXjPU/TG2NYUNVLnI/AAAAAAAAAAk/rnrvMCVWP_E/S220/pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-749240152179953836.post-1804185018430058634</id><published>2009-04-30T09:53:00.006-04:00</published><updated>2009-04-30T16:21:57.953-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jopr tomcat'/><title type='text'>Jopr 2.2 adds Tomcat Management</title><content type='html'>&lt;span style="font-size:85%;"&gt;Version 2.2.0 of the &lt;a href="http://www.jboss.org/jopr/"&gt;Jopr&lt;/a&gt; management platform has been released today.  It is a powerful system that allows you to manage a complex, distributed environment of deployed hardware and software.  Jopr has a plugin architecture allowing different plugins to provide management for specific products or systems.   Jopr provides strong management support for environments running JBoss Application Servers but out of the box provides a large set of plugins for managing an entire system. For example, platform plugins (Linux, Windows), database plugins (Oracle, Postgres), Hibernate, Apache web server, and many, many more.&lt;br /&gt;&lt;br /&gt;A major addition in Jopr 2.2 is the Tomcat plugin, introducing powerful management for standalone Tomcat environments via Jopr.  Jopr already provided support for Tomcat embedded in JBoss Application Server and the new Tomcat plugin completes the picture.&lt;br /&gt;&lt;br /&gt;The beauty of Tomcat management with Jopr is that Tomcat is often only one piece of your infrastructure.  With Jopr you get seamless, holistic management of your whole, distributed, environment, from hardware, to middleware, to applications.  And, Jopr is completely extensible, allowing easy custom plugin writing and deployment.&lt;br /&gt;&lt;br /&gt;OK, let's take a look at what the new Tomcat plugin provides.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Discovery&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_quNRdALXjPU/Sfn3yy219vI/AAAAAAAAAAM/Qyh74-i10kY/s1600-h/blog1-1.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 165px; height: 400px;" src="http://4.bp.blogspot.com/_quNRdALXjPU/Sfn3yy219vI/AAAAAAAAAAM/Qyh74-i10kY/s320/blog1-1.png" alt="" id="BLOGGER_PHOTO_ID_5330564085987014386" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Automatic discovery of your running Tomcat Servers&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Manual discovery of Tomcat Servers.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Hierarchical inventory of your Tomcat Server's resources&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;As Jopr utilizes the Tomcat JMX Beans your Tomcat server does need to be enabled for remote JMX access.  Secure, authenticated JMX is supported.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Control&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Server:  Start, Shutdown, Restart, Save Configuration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Connector: Start, Stop, Pause, Resume&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Application: Start, Stop, Reload&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;Any Jopr Operation can be executed immediately or flexibly scheduled for future or repeated executions.  Operations can also be executed in response to the firing of a triggered alert.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web Application Management&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Web applications offer a full slate of management and monitoring options.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Control operations&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Deploy/Undeploy&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;        Version control&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;        URL specific response time monitoring&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;        Application cache monitoring&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Powerful metric collection&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Configuration&lt;/span&gt;&lt;br /&gt;Configuration changes to the Tomcat Server are applied immediately and persisted, surviving Tomcat restarts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Virtual Host Management&lt;/span&gt;&lt;br /&gt;Supports management of multiple hosts and configuration of deploy options for the hosts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;User Management&lt;/span&gt;&lt;br /&gt;For environments using Tomcat's default Realm and supplied User Database, manage your users with immediate and persisted updates. &lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Role: Create/Delete/Assignment/Configuration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  User: Create/Delete/Configuration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Group: Create/Delete/Assignment/Configuration&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;And More...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Connector Management&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Threadpool monitoring&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;  Powerful monitoring of the Tomcat Server JVM&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;And the Tomcat plugin gets all of the Jopr infrastructure for free!    Jopr gives you:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Cluster Management&lt;/span&gt;&lt;br /&gt;Group together resources of the same type, like your Tomcat Servers, and immediately see a cluster view of your resources, easily pointing out similarities and differences.  Perform configuration update or operations &lt;/span&gt;&lt;span style="font-size:85%;"&gt;across the cluster.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_quNRdALXjPU/SfoFFxJLzMI/AAAAAAAAAAU/H4bVjPK2AFo/s1600-h/blog1-2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 163px;" src="http://3.bp.blogspot.com/_quNRdALXjPU/SfoFFxJLzMI/AAAAAAAAAAU/H4bVjPK2AFo/s320/blog1-2.png" alt="" id="BLOGGER_PHOTO_ID_5330578705595747522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Availability, Monitoring, Metric gathering and Charting&lt;/span&gt;&lt;br /&gt;See your data graphically, with personal views and overlayed metric charts.  Granular metric collection scheduling and access to plenty of historical data.  Plus, aggregate views for manually created or autogroups.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Alerting and Operations&lt;/span&gt;&lt;br /&gt;Define simple or complex alerts with various notification options.&lt;span style="font-weight: bold;"&gt;  &lt;/span&gt;Schedule immediate or scheduled operations.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Resource Summary and Timeline&lt;/span&gt;&lt;br /&gt;A Quick summary of important activity for any Tomcat resource.  Plus, a timeline view for correlating availability, operations, alerts and other activity for your resource.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Security&lt;/span&gt;&lt;br /&gt;Complete role-based and permission based security for Jopr users limits access to and authorization of inventoried resources.&lt;br /&gt;&lt;br /&gt;If you've used Jopr for your management needs in the past then this adds one more tool for you to use.  If you haven't I hope you found this brief introduction useful. &lt;a href="http://www.jboss.org/jopr/"&gt;Download Jopr 2.2.0&lt;/a&gt; and let us know what you like and what you'd still like to see for Tomcat management in Jopr.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&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/749240152179953836-1804185018430058634?l=jayshaughnessy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayshaughnessy.blogspot.com/feeds/1804185018430058634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=749240152179953836&amp;postID=1804185018430058634' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/1804185018430058634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/1804185018430058634'/><link rel='alternate' type='text/html' href='http://jayshaughnessy.blogspot.com/2009/04/jopr-22-adds-tomcat-management.html' title='Jopr 2.2 adds Tomcat Management'/><author><name>Jay Shaughnessy</name><uri>http://www.blogger.com/profile/09037042000553312744</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_quNRdALXjPU/TG2NYUNVLnI/AAAAAAAAAAk/rnrvMCVWP_E/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_quNRdALXjPU/Sfn3yy219vI/AAAAAAAAAAM/Qyh74-i10kY/s72-c/blog1-1.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-749240152179953836.post-6367708329238052288</id><published>2008-06-20T16:10:00.001-04:00</published><updated>2008-06-20T16:11:28.440-04:00</updated><title type='text'>JBoss Operations Network, JBossON, JON, RHQ : Whats in a name...</title><content type='html'>Usually folks know less than they think they do. Occasionally, though, you know more than you may think. You may know quite a lot about something but can't participate due to a language barrier. This isn't always due to a geographical language issue, but in the tech-community it happens because tech-speak can be like listening to a foreign language. Tech-speak is abbreviated, It uses a lot of acronyms and is littered with enormous amounts of context and presumption. It's used to minimize conversation while maximizing content. Or, sometimes it's just used to impress, buzzwords thrown out like Hollywood name-drops. But, often enough two people seem to be understanding each other while I am thoroughly mystified. The same thing happens when I get hit with academic-speak. I usually need stuff spelled out for me, just just a little bit, and then perhaps I may be able to offer something valuable. Of course, a tech-savvy academic from another country is my worst nightmare. Reminds me of a guy named Boris, but wait, I digress...&lt;br /&gt;&lt;br /&gt;All I want to do here is ensure that if you hear or see any of the following names, and you know about one of them, you actually know about all of them!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JBoss Operations Network&lt;/span&gt; is a management system aimed at managing deployments of JBoss Application Servers. It offers all kinds of great management features already described and demoed &lt;a href="http://docs.jbosson.redhat.com/confluence/display/JON2/Home"&gt;here&lt;/a&gt;. V2.0.0 is available now and V2.0.1 will be available probably by the time you read this entry. JBoss is a division of Red Hat.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JBossON&lt;/span&gt; is in fact, the longer acronym for JBoss Operations Network and is the management-preferred acronym for the product.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JON&lt;/span&gt; is a further distillation and used most often due to its brevity, and its real-name-ness. But, certainly, if you see this acronym you'd never guess what it refers to.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RHQ&lt;/span&gt; is an open-source project on which JON is built. It is a collaboration between Red Hat and Hyperic, hence the obvious RHQ acronym. What's not obvious is that 90+ percent of JON is in fact available as RHQ. Its also not obvious that RHQ has to do with JBoss management. You can learn about and participate in the RHQ community starting &lt;a href="http://www.rhq-project.org/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you knew all of this already, great, next time we'll get into some detailed tech-speak about how RHQ's alert sub-system can make life easier for the IT pro or for managing your own laptop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/749240152179953836-6367708329238052288?l=jayshaughnessy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jayshaughnessy.blogspot.com/feeds/6367708329238052288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=749240152179953836&amp;postID=6367708329238052288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/6367708329238052288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/749240152179953836/posts/default/6367708329238052288'/><link rel='alternate' type='text/html' href='http://jayshaughnessy.blogspot.com/2008/06/jboss-operations-network-jbosson-jon.html' title='JBoss Operations Network, JBossON, JON, RHQ : Whats in a name...'/><author><name>Jay Shaughnessy</name><uri>http://www.blogger.com/profile/09037042000553312744</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_quNRdALXjPU/TG2NYUNVLnI/AAAAAAAAAAk/rnrvMCVWP_E/S220/pic.jpg'/></author><thr:total>0</thr:total></entry></feed>
