<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>Blogging Techstacks</title>
    
    <link rel="alternate" type="text/html" href="http://blog.techstacks.com/" />
    <id>tag:typepad.com,2003:weblog-78092932782397196</id>
    <updated>2009-11-07T21:51:08-05:00</updated>
    <subtitle>A blog and help resource for systems admins and site admins.</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <link rel="self" href="http://feeds.feedburner.com/BloggingTechstacks" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
        <title>Another Bling Release: v0.4.1 - So Long, Technorati</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/0dd1Hf9cgYg/another-bling-release-v041-so-long-technorati.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/11/another-bling-release-v041-so-long-technorati.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a6614612970b</id>
        <published>2009-11-07T21:51:08-05:00</published>
        <updated>2009-11-07T21:51:08-05:00</updated>
        <summary>Another update to the Bling blog-ping tool written in groovy.  Removes Technorati--and that is all it does.</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        
        <category scheme="http://sixapart.com/ns/types#tag" term="blog ping" />
        <category scheme="http://sixapart.com/ns/types#tag" term="groovy" />
        <category scheme="http://sixapart.com/ns/types#tag" term="technorati" />
        <category scheme="http://sixapart.com/ns/types#tag" term="xmlrpc" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I'm releasing a new version of Bling. &amp;nbsp;The only change is the removal of the Technorati ping, since this doesn't work any more. &amp;nbsp;&lt;/p&gt;

&lt;p&gt;According to their developer page, all (all?) previously published developer APIs ceased being available on October 25th, 2009. &amp;nbsp;Now I am sure that many of you running blogs out there were able to get some useful and interesting data from these APIs and maybe some of you are even bummed that they are gone but there is at least one bitter semi-professional blogger contributing posts on this site who still hasn't been able to attract Technorat's spider, let alone the attention of their support staff. &amp;nbsp;&lt;/p&gt;

&lt;p&gt;Back when this site first went live, the first thing I learned as a budding new blogger was to get listed on Technorati. &amp;nbsp;**Everyone** who had a blog needed to be listed on Technorati. &amp;nbsp;Tagging your pages with Technorati-specific links was one of the first things you were supposed to do. &amp;nbsp;Heck, people even developed lots of cool widgets and applications that would create those tags for you. &amp;nbsp;Technorati had ping buttons available everywhere. &amp;nbsp;Then something happened. &amp;nbsp;Sometime within the last 18 months or so, Technorati started experiencing lots and lots of problems. &amp;nbsp;Blog claims wouldn't work. &amp;nbsp;Searching would fail. &amp;nbsp;You couldn't even load your profile at times. &amp;nbsp;What I suspect that happened was that instead of confessing to twitter-like outages and documenting every little thing on some Technorati status site, Technorati stayed online by ignoring the small sites. &amp;nbsp;Support requests would go unanswered. &amp;nbsp;Pings, although accepted, would never result in an actual crawl by their searchbot. &amp;nbsp;Then a couple months ago, a new Technorati launches. Pings don't work. &amp;nbsp;APIs are deprecated and then retired wholesale. &amp;nbsp;The new site does...something.&lt;/p&gt;

&lt;p&gt;If anyone hits this page via search engine query and you are trying to find out if Technorati works any more, the answer from me is "No. &amp;nbsp;It doesn't work. &amp;nbsp;It never really worked for me. &amp;nbsp;My site profile never updated. &amp;nbsp;I never saw their crawler unless I deleted and recreated my blog claim. &amp;nbsp;I would almost state that for all I know, my Technorati listing is actually hurting me but I won't because I really have no clue what they do. &amp;nbsp;I'm not even sure why I'm still tagging my pages with technorati tags. &amp;nbsp;Why am I doing this?"&lt;/p&gt;

&lt;p&gt;WasaLive and BlogBuzzMachine may have to go to in the near future. &amp;nbsp;The two of them worked great until I released v0.3 and I guess they weren't ready for the 10's (yes, I meant "tens") of new bloggers running xmlrpc pings with this script. &amp;nbsp;Although truthfully, I need to add a debug option to the script in order to display the raw output for failed pings to really see why they are failing.&lt;/p&gt;

&lt;p&gt;The new version is available on the downloads page. &amp;nbsp;The &lt;a href="http://blog.techstacks.com/bling.html"&gt;main bling page&lt;/a&gt; has been updated as well. &amp;nbsp; The full source is available in the download (which mostly includes lots and lots of comments). &amp;nbsp;The source, without the 60+ lines of comments documenting change history at the beginning of the script, is below:&lt;/p&gt;

&lt;pre class="brush: groovy; auto-links: false;"&gt;#!/usr/bin/env groovy

import groovy.net.xmlrpc.*
import groovy.util.slurpersupport.GPathResult

// You'll want to make this next section your own
def blogTitle = "YOUR_BLOG_TITLE_HERE"
def blogURL = "YOUR_BLOG_URL_HERE"

// Set up a map (hash) of popular rpc endpoints
// It is too bad for my syntax highlighter, but some of 
// the blogs containing periods in their names required
// placing them in quotes. 

def trackbacks = [
 Google:'http://blogsearch.google.com/ping/RPC2',
 Weblogs:'http://rpc.weblogs.com/RPC2',
 FeedBurner:'http://ping.feedburner.com/',
 Moreover:'http://api.moreover.com/RPC2',
 Syndic8:'http://ping.syndic8.com/xmlrpc.php' ,
 BlogRolling:'http://rpc.blogrolling.com/pinger/',
 NewsGator:'http://services.newsgator.com/ngws/xmlrpcping.aspx',
 Bloglines:'http://www.bloglines.com/ping',
 'Blo.gs':'http://ping.blo.gs/',
 BlogCatalog:'http://rpc.blogcatalog.com/',
 PubSub:'http://xping.pubsub.com/ping/',
 'MyBlog.jp':'http://ping.myblog.jp/',
 Goo:'http://blog.goo.ne.jp/XMLRPC',
 BlogPeople:'http://www.blogpeople.net/servlet/weblogUpdates',
 Twingly:'http://rpc.twingly.com/',
 Spinn3r:'http://rpc.spinn3r.com/open/RPC2',
 PostRank:'http://api.postrank.com/v2/ping',
 WasaLive:'http://www.wasalive.com/ping/',
 BlogBuzzMachine:'http://rpc.blogbuzzmachine.com/RPC2',
 IceRocket:'http://rpc.icerocket.com:10080/',
 FeedBlitz:'http://www.feedblitz.com/f/f.fbz?XmlPing',
 ]

// Set up canned responses to make the outputted responses nicer.
// Previously, the output used the literal response from the endpoint
// which did not look all that nice in a terminal window.
def weal = "Thanks for the ping!"
def woe = "PING ATTEMPT FAILED."

// IceRocket is separate because their ping method call
// is different from everyone else's--go figure...


// Here is the section responsible for iterating through each ping
// url in the trackbacks map.

println "====PING RESULTS===="

trackbacks.each {
 try{
  def url = it.value
  def proxy = new XMLRPCServerProxy(url)
  response = proxy.weblogUpdates.ping(blogTitle, blogURL)
   response.data instanceof GPathResult

  if (!response.flerror)
    println " ${it.key}".padRight(25) + "${weal}"
   else
    println " ${it.key}".padRight(25) + "${woe}"

  }catch(ConnectException ex) {
   println " ${it.key}".padRight(25) + "${woe}"   
  }catch(IOException ex){
   println " ${it.key}".padRight(25) + "${woe}"
  }
}
println "===================="
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wDYYrPB71JkgmxdiL-fXkSm_S40/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wDYYrPB71JkgmxdiL-fXkSm_S40/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wDYYrPB71JkgmxdiL-fXkSm_S40/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wDYYrPB71JkgmxdiL-fXkSm_S40/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=0dd1Hf9cgYg:VUcByTuuR90:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=0dd1Hf9cgYg:VUcByTuuR90:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=0dd1Hf9cgYg:VUcByTuuR90:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=0dd1Hf9cgYg:VUcByTuuR90:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=0dd1Hf9cgYg:VUcByTuuR90:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=0dd1Hf9cgYg:VUcByTuuR90:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/0dd1Hf9cgYg" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/11/another-bling-release-v041-so-long-technorati.html</feedburner:origLink></entry>
    <entry>
        <title>Testing for Trace and Track</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/TWIfDLPcgWM/testing-for-trace-and-track.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/11/testing-for-trace-and-track.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a6a82200970c</id>
        <published>2009-11-04T09:52:03-05:00</published>
        <updated>2009-11-07T12:29:33-05:00</updated>
        <summary>Article providing a script that allows the web site administrator to test for the existence of the http trace method and the http track method.</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="apache" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="bigip" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="cryptonark" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Disable TRACE" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="IIS" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="jboss" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="PCI Compliance" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="perl" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="tomcat" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="tools" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="PCI Compliance" />
        <category scheme="http://sixapart.com/ns/types#tag" term="Perl" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I am modifying &lt;a href="http://blog.techstacks.com/cryptonark.html"&gt;cryptonark&lt;/a&gt; to report on more commonly-reported PCI findings than just SSL cipher strength. Another popular issue reported during PCI Scans is the "Web Server HTTP Trace/Track Method Support Cross-Site Tracing Vulnerability". The wording of this particular error has been a small thorn in my side mainly because "Trace/Track" can, and has, been interpreted as meaning "trace and track", "trace or track", or "trace and/or track".  The modifications I've made to this script proved to be so useful, I thought breaking it out and sharing it might be useful to others as well.  &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The truth is, with most modern web servers and application servers, this vulnerability notification really means:  "trace is enabled unless you're running a fairly old version of IIS--like IIS4--then it is **probably** track".  &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The script below uses Perl 5.10 and LWP::UserAgent.  I've already got Net::SSLeay and Crypt::SSLeay installed, so I did not need to declare or install them in order for LWP to be able to connect to ssl-encrypted web sites.  The script is a little bit cooler than others that I have written because not only does it attempt an HTTP Trace request and report back success, failure, or other information but it also tests for HTTP Track.  The script right now only assumes that you'll be testing against a well known ssl port, unfortunately, so your web server will need to be running ssl on port 443.  Otherwise, the port is assumed to be an HTTP port.   It should help you satisfy those security and compliance administrators who demand proof that both methods are disabled, (even though TRACK does not really exist anywhere any more).&lt;/p&gt;&#xD;
&#xD;
&lt;pre class="brush: perl; auto-links: false;"&gt;#!/usr/bin/perl &#xD;
#===============================================================================&#xD;
#&#xD;
#   FILE: test4trace.pl&#xD;
#&#xD;
#  USAGE: ./test4trace.pl &amp;lt;host&amp;gt; &amp;lt;port&amp;gt;&#xD;
#&#xD;
# DESCRIPTION: The "UI" for this script may not&#xD;
#    make sense but this is a sub&#xD;
#    routine of a future version of my&#xD;
#    cryptonark script that tests for&#xD;
#    the existence of the TRACE method&#xD;
#    on a web site. That's why,&#xD;
#    syntactically, this script follows&#xD;
#    cryptonark's syntax and version&#xD;
#    numbering.&#xD;
#&#xD;
#  OPTIONS: ---&#xD;
# REQUIREMENTS: Perl 5.10 and LWP::UserAgent&#xD;
#   BUGS: None Found Yet&#xD;
#  NOTES: ---&#xD;
#  AUTHOR: Chris Mahns&#xD;
#  COMPANY: Blogging Techstacks&#xD;
#  VERSION: 0.3&#xD;
#  CREATED: 11/03/2009 21:45:30&#xD;
#  REVISION: ---&#xD;
#===============================================================================&#xD;
&#xD;
use strict;&#xD;
use warnings;&#xD;
use feature ':5.10';&#xD;
&#xD;
use LWP::UserAgent;&#xD;
&#xD;
my $host = $ARGV[0];&#xD;
my $port = $ARGV[1];&#xD;
my $scheme;&#xD;
&#xD;
my $help = "Usage: $0 &amp;lt;hostname&amp;gt; &amp;lt;port&amp;gt;";&#xD;
&#xD;
if ( !@ARGV ) {&#xD;
 print $help . "\n";&#xD;
 exit 0;&#xD;
}&#xD;
&#xD;
if ( $port == 443 ) {&#xD;
 $scheme = 'https';&#xD;
}&#xD;
else {&#xD;
 $scheme = 'http';&#xD;
}&#xD;
&#xD;
sub test_for_trace {&#xD;
 my $url = "$scheme://$host/";&#xD;
&#xD;
 my $method = "TRACE";&#xD;
 my $ua  = LWP::UserAgent-&amp;gt;new;&#xD;
 $ua-&amp;gt;timeout(10);&#xD;
 $ua-&amp;gt;env_proxy;&#xD;
 $ua-&amp;gt;agent('test4trace-pci-auditor/v0.3');&#xD;
 &#xD;
 my $request = HTTP::Request-&amp;gt;new( $method =&amp;gt; $url );&#xD;
 $request-&amp;gt;header(Header0 =&amp;gt; "TRACE");&#xD;
 $request-&amp;gt;header(Header1 =&amp;gt; "Test");&#xD;
&#xD;
 my $response = $ua-&amp;gt;request($request);&#xD;
&#xD;
 given ( $response-&amp;gt;code ) {&#xD;
  when (200) {&#xD;
   say "======this is what you sent======";&#xD;
   say $response-&amp;gt;content;&#xD;
   say "=================================";&#xD;
   say $method, " is enabled and working.";&#xD;
  }&#xD;
  when (301) {&#xD;
   say "Redirect present. Retry request against ",&#xD;
    $response-&amp;gt;header('Location');&#xD;
  }&#xD;
  when (302) {&#xD;
   say "Redirect present. Retry request against ",&#xD;
    $response-&amp;gt;header('Location');&#xD;
  }&#xD;
  when (307) {&#xD;
   say "Redirect present. Retry request against ",&#xD;
    $response-&amp;gt;header('Location');&#xD;
  }&#xD;
  when (403) {&#xD;
   say $response-&amp;gt;status_line;&#xD;
   say $method, " is forbidden.";&#xD;
  }&#xD;
  when (404) {&#xD;
   say $response-&amp;gt;status_line;&#xD;
   say "This is an unexpected response";&#xD;
  }&#xD;
  when (405) {&#xD;
   say $response-&amp;gt;status_line;&#xD;
   say $method, " is not permitted.";&#xD;
  }&#xD;
  when (501) {&#xD;
   say $response-&amp;gt;status_line;&#xD;
   say $method, " is not implemented.";&#xD;
  }&#xD;
  default {&#xD;
   say $response-&amp;gt;status_line;&#xD;
  }&#xD;
 }&#xD;
}&#xD;
&#xD;
sub test_for_track {&#xD;
 my $test = 'This is an HTTP TRACE test.';&#xD;
 my $url = "$scheme://$host/";&#xD;
&#xD;
 my $method = "TRACK";&#xD;
 my $ua  = LWP::UserAgent-&amp;gt;new;&#xD;
 $ua-&amp;gt;timeout(10);&#xD;
 $ua-&amp;gt;env_proxy;&#xD;
 $ua-&amp;gt;agent('test4trace-pci-auditor/v0.3');&#xD;
 &#xD;
 my $request = HTTP::Request-&amp;gt;new( $method =&amp;gt; $url );&#xD;
 $request-&amp;gt;header(Header0 =&amp;gt; "TRACK");&#xD;
 $request-&amp;gt;header(Header1 =&amp;gt; "Test");&#xD;
&#xD;
 my $response = $ua-&amp;gt;request($request);&#xD;
&#xD;
 given ( $response-&amp;gt;code ) {&#xD;
  when (200) {&#xD;
   say "======this is what you sent======";&#xD;
   say $response-&amp;gt;content;&#xD;
   say "=================================";&#xD;
   say $method, " is enabled and working.";&#xD;
  }&#xD;
  when (301) {&#xD;
   say "Redirect present. Retry request against ",&#xD;
    $response-&amp;gt;header('Location');&#xD;
  }&#xD;
  when (302) {&#xD;
   say "Redirect present. Retry request against ",&#xD;
    $response-&amp;gt;header('Location');&#xD;
  }&#xD;
  when (307) {&#xD;
   say "Redirect present. Retry request against ",&#xD;
    $response-&amp;gt;header('Location');&#xD;
  }&#xD;
  when (403) {&#xD;
   say $response-&amp;gt;status_line;&#xD;
   say $method, " is forbidden.";&#xD;
  }&#xD;
  when (404) {&#xD;
   say $response-&amp;gt;status_line;&#xD;
   say "This is an unexpected response";&#xD;
  }&#xD;
  when (405) {&#xD;
   say $response-&amp;gt;status_line;&#xD;
   say $method, " is not permitted.";&#xD;
  }&#xD;
  when (501) {&#xD;
   say $response-&amp;gt;status_line;&#xD;
   say $method, " is not implemented.";&#xD;
  }&#xD;
  default {&#xD;
   say $response-&amp;gt;status_line;&#xD;
  }&#xD;
 }&#xD;
}&#xD;
say "First we test for Trace...";&#xD;
sleep 2;&#xD;
test_for_trace();&#xD;
&#xD;
say "\nNow we test for Track...";&#xD;
sleep 2;&#xD;
test_for_track();&#xD;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_msz9EFeFaqBt9JTem5E2Xi1I5k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_msz9EFeFaqBt9JTem5E2Xi1I5k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_msz9EFeFaqBt9JTem5E2Xi1I5k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_msz9EFeFaqBt9JTem5E2Xi1I5k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=TWIfDLPcgWM:9Yw0a3Sr0mg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=TWIfDLPcgWM:9Yw0a3Sr0mg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=TWIfDLPcgWM:9Yw0a3Sr0mg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=TWIfDLPcgWM:9Yw0a3Sr0mg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=TWIfDLPcgWM:9Yw0a3Sr0mg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=TWIfDLPcgWM:9Yw0a3Sr0mg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/TWIfDLPcgWM" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/11/testing-for-trace-and-track.html</feedburner:origLink></entry>
    <entry>
        <title>Bling v0.4 Released - Blog Ping Tool</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/kjWX0ycmKoA/bling-v04-released-blog-ping-tool.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/10/bling-v04-released-blog-ping-tool.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a627f658970b</id>
        <published>2009-10-28T06:23:05-04:00</published>
        <updated>2009-11-07T11:51:00-05:00</updated>
        <summary>Bling v4.0 release announcement.  Groovy blog ping script that pings 22 services.</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="bling" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="blogging" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="groovy" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="tools" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="blogging" />
        <category scheme="http://sixapart.com/ns/types#tag" term="groovy" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I'm releasing an updated version of bling today. &amp;nbsp;Written in groovy, the changes and additions made in this version are as follows:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;p style="margin-top: 11px; margin-right: 0px; margin-bottom: 11px; margin-left: 0px; "&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Added 2 Additional Services: &amp;nbsp;&lt;a href="http://www.blogbuzzmachine.com/" style="color: blue !important; text-decoration: underline !important; cursor: text !important; "&gt;BlogBuzzMachine&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://www.feedblitz.com/" style="color: blue !important; text-decoration: underline !important; cursor: text !important; "&gt;FeedBlitz&lt;/a&gt;. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;IceRocket is no longer managed separately since using the same XML-RPC calls that everything else uses also now seems to work for IceRocket. &amp;nbsp;Right now, the section of the script that contained the separate IceRocket calls has been commented out and will be removed entirely in the net release.&lt;/li&gt;
&lt;li&gt;As mentioned above in the version 3.0 section, WeBlogALot has been removed. &amp;nbsp;In the time since version 3.0 was released, I never got a successful ping.&lt;/li&gt;
&lt;li&gt;The spooky and primitive output format utilizing whitespace and tabs has been replaced with padded output. &amp;nbsp;Thanks again to Mr.Haki for publishing his post about&amp;nbsp;&lt;a href="http:/http://mrhaki.blogspot.com/2009/09/groovy-goodness-padding-strings.html" style="color: blue !important; text-decoration: underline !important; cursor: text !important; "&gt;Padding Strings in Groovy&lt;/a&gt;. &amp;nbsp;&lt;/li&gt;
&lt;li&gt;Finally, fixed a potential bug in the &lt;code&gt;!response.flerror&lt;/code&gt; section, where &lt;code&gt;!response&lt;/code&gt; was actually set as &lt;code&gt;!resp&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
With this script, after modifying it to include your Blog Title and Blog URL, you can ping 22 blog directories, news aggregators, and other blog services.&amp;nbsp; This script is a bit different from all the other posts out there in that I've actually tested each endpoint and the ones included in bling seem to work. &lt;p&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://blog.techstacks.com/bling.html"&gt;main bling page&lt;/a&gt; provides all the documentation and the &lt;a href="http://blog.techstacks.com/downloads.html"&gt;main downloads page&lt;/a&gt; has been updated. &amp;nbsp;Source is below.&lt;/p&gt;
&lt;pre class="brush: groovy; auto-links: false;"&gt;#!/usr/bin/env groovy

import groovy.net.xmlrpc.*
import groovy.util.slurpersupport.GPathResult

// You'll want to make this next section your own
def blogTitle = "YOUR_BLOG_TITLE_HERE"
def blogURL = "YOUR_BLOG_URL_HERE"

// Set up a map (hash) of popular rpc endpoints
// It is too bad for my syntax highlighter, but some of 
// the blogs containing periods in their names necessitated
// placing them in quotes. 

def trackbacks = [
 Google:'http://blogsearch.google.com/ping/RPC2',
 Weblogs:'http://rpc.weblogs.com/RPC2',
 FeedBurner:'http://ping.feedburner.com/',
 Moreover:'http://api.moreover.com/RPC2',
 Syndic8:'http://ping.syndic8.com/xmlrpc.php' ,
 BlogRolling:'http://rpc.blogrolling.com/pinger/',
 Technorati:'http://rpc.technorati.com/rpc/ping' ,
 NewsGator:'http://services.newsgator.com/ngws/xmlrpcping.aspx',
 Bloglines:'http://www.bloglines.com/ping',
 'Blo.gs':'http://ping.blo.gs/',
 BlogCatalog:'http://rpc.blogcatalog.com/',
 PubSub:'http://xping.pubsub.com/ping/',
 'MyBlog.jp':'http://ping.myblog.jp/',
 Goo:'http://blog.goo.ne.jp/XMLRPC',
 BlogPeople:'http://www.blogpeople.net/servlet/weblogUpdates',
 Twingly:'http://rpc.twingly.com/',
 Spinn3r:'http://rpc.spinn3r.com/open/RPC2',
 PostRank:'http://api.postrank.com/v2/ping',
 WasaLive:'http://www.wasalive.com/ping/',
 BlogBuzzMachine:'http://rpc.blogbuzzmachine.com/RPC2',
 IceRocket:'http://rpc.icerocket.com:10080/',
 FeedBlitz:'http://www.feedblitz.com/f/f.fbz?XmlPing',
 ]

// Set up canned responses to make the outputted responses nicer.
// Previously, the output used the literal response from the endpoint
// which did not look all that nice in a terminal window.
def weal = "Thanks for the ping!"
def woe = "PING ATTEMPT FAILED."

// Here is the section responsible for iterating through each ping
// url in the trackbacks map.

println "====PING RESULTS===="
trackbacks.each {
 try{
 def url = it.value
 def proxy = new XMLRPCServerProxy(url)
 response = proxy.weblogUpdates.ping(blogTitle, blogURL)
 response.data instanceof GPathResult

 if (!response.flerror)
 println " ${it.key}".padRight(25) + "${weal}"
 else
 println " ${it.key}".padRight(25) + "${woe}"

 }catch(ConnectException ex) {
 println " ${it.key}".padRight(25) + "${woe}" 
 }catch(IOException ex){
 println " ${it.key}".padRight(25) + "${woe}"
 }
}
println "===================="
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xgUHtGxCzLiohLOk8zhLv1Vndo0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xgUHtGxCzLiohLOk8zhLv1Vndo0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xgUHtGxCzLiohLOk8zhLv1Vndo0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xgUHtGxCzLiohLOk8zhLv1Vndo0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=kjWX0ycmKoA:PwT8vKNKJIU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=kjWX0ycmKoA:PwT8vKNKJIU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=kjWX0ycmKoA:PwT8vKNKJIU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=kjWX0ycmKoA:PwT8vKNKJIU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=kjWX0ycmKoA:PwT8vKNKJIU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=kjWX0ycmKoA:PwT8vKNKJIU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/kjWX0ycmKoA" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/10/bling-v04-released-blog-ping-tool.html</feedburner:origLink></entry>
    <entry>
        <title>SpringSource Releases tc Server Developer Edition Preview </title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/_kmqpO5mV8U/springsource-releases-tc-server-developer-edition-preview-.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/10/springsource-releases-tc-server-developer-edition-preview-.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a6689a61970c</id>
        <published>2009-10-21T23:08:33-04:00</published>
        <updated>2009-10-21T23:08:33-04:00</updated>
        <summary>A release announcement for SpringSource's tc Server Developer Edition product.</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="info" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="springsource" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="tomcat" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="springsource" />
        <category scheme="http://sixapart.com/ns/types#tag" term="tc server" />
        <category scheme="http://sixapart.com/ns/types#tag" term="tomcat" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">&lt;p&gt;I just downloaded it myself and watched the demo and tc Server Developer Edition actually looks pretty cool.  It integrates tomcat 6.0.20 and an application health and application monitoring tool called Spring Insight, which lets you view in real time a bevy of application and server-related statistics.   Personally, I think developers are really going to love this but this product is not meant for production deployments.&lt;/p&gt;&lt;p&gt;The &lt;a href="http://blog.springsource.com/2009/10/21/introducing-tc-server-developer-edition-with-spring-insight/"&gt;entry on the SpringSource Team Blog&lt;/a&gt; provides an introduction to tc Server Developer Edition.  There is also a short screencast that provides an introduction to the bundled Spring Insight tool.  &lt;/p&gt;&lt;p&gt;Currently a preview release, the cost to get access to SpringSource tc Server Developer Edition is some basic registration information.  &lt;a href="http://www.springsource.com/products/tc-server-developer-edition-preview"&gt;Download it&lt;/a&gt; when you can.  If you are in operations and/or infrastructure, this will also give you an introduction to the tc Server product and provide some intel on how the product differs from a standard tomcat distribution.&lt;/p&gt;&lt;p&gt;I still have no idea how much SpringSource charges for tc Server.  If anyone out there uses it, let me know and also let me know if you have any opinions on it that we can share.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FR9wObtG12mH_QxjbuT6kp20JAo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FR9wObtG12mH_QxjbuT6kp20JAo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FR9wObtG12mH_QxjbuT6kp20JAo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FR9wObtG12mH_QxjbuT6kp20JAo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=_kmqpO5mV8U:S-JQFCt0WO0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=_kmqpO5mV8U:S-JQFCt0WO0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=_kmqpO5mV8U:S-JQFCt0WO0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=_kmqpO5mV8U:S-JQFCt0WO0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=_kmqpO5mV8U:S-JQFCt0WO0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=_kmqpO5mV8U:S-JQFCt0WO0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/_kmqpO5mV8U" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/10/springsource-releases-tc-server-developer-edition-preview-.html</feedburner:origLink></entry>
    <entry>
        <title>Sun Publishes Glassfish vs. JBoss Comparison Guide</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/Qby9YEM9NUk/sun-publishes-glassfish-vs-jboss-comparison-guide.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/10/sun-publishes-glassfish-vs-jboss-comparison-guide.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a60849c9970b</id>
        <published>2009-10-20T16:58:50-04:00</published>
        <updated>2009-10-20T16:59:37-04:00</updated>
        <summary>A link to a Sun provided Glassfish vs. JBoss Comparison Guide.  </summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="frippery" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="jboss" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="glassfish" />
        <category scheme="http://sixapart.com/ns/types#tag" term="jboss" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">Poor Redhat.  First SpringSource declares war and now Sun is joining in.  Today Sun made available a 14 page &lt;a href="https://www.sun.com/offers/details/glassfish_jboss.xml"&gt;Glassfish vs. JBoss Comparison Guide&lt;/a&gt;, (Sun login required to download).  Check it out.  It actually makes for pretty interesting reading and if I was eager to see Redhat/JBoss's response to SpringSource, they've now got me besides myself with excitement waiting to hear how they respond to both SpringSource &lt;em&gt;and&lt;/em&gt; Sun!  It's going to be epic!!
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DDdul_Xc9IX3N2PPufXUDBiYb8E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DDdul_Xc9IX3N2PPufXUDBiYb8E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DDdul_Xc9IX3N2PPufXUDBiYb8E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DDdul_Xc9IX3N2PPufXUDBiYb8E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=Qby9YEM9NUk:6iK5gNcbv7Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=Qby9YEM9NUk:6iK5gNcbv7Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=Qby9YEM9NUk:6iK5gNcbv7Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=Qby9YEM9NUk:6iK5gNcbv7Y:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=Qby9YEM9NUk:6iK5gNcbv7Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=Qby9YEM9NUk:6iK5gNcbv7Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/Qby9YEM9NUk" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/10/sun-publishes-glassfish-vs-jboss-comparison-guide.html</feedburner:origLink></entry>
    <entry>
        <title>Help Wanted:  Generating Remote Thread Dumps for Large Numbers of Servers</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/PBKHCrV8_sY/help-wanted-generating-remote-thread-dumps-for-large-numbers-of-servers.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/10/help-wanted-generating-remote-thread-dumps-for-large-numbers-of-servers.html" thr:count="2" thr:updated="2009-10-09T07:19:16-04:00" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a5d00468970b</id>
        <published>2009-10-08T20:31:37-04:00</published>
        <updated>2009-10-09T07:18:28-04:00</updated>
        <summary>A recent commenter on this site posted a request for assistance on generating thread dumps remotely, quickly, across a large number (30+) of servers, whenever an incident occurs. I thought it would be a good idea to solicit ideas from anyone reading this site for ideas on how you might be doing it. When a failure occurs within their web application, he must remotely generate thread dumps across 34 load-balanced jboss systems and restore service as quickly as possible. Since I've been experimenting a lot with Jmx4Perl and we are talking specifically about JBoss servers, scripting something in Jmx4Perl that...</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="jboss" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="sysadmin" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="jboss" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">&lt;p&gt;A recent commenter on this site posted a request for &lt;a href="http://blog.techstacks.com/2008/11/jboss-remotely-generating-thread-dumps.html"&gt;assistance on generating thread dumps remotely&lt;/a&gt;, quickly, across a large number (30+) of servers, whenever an incident occurs.  I thought it would be a good idea to solicit ideas from anyone reading this site for ideas on how you might be doing it.  &lt;/p&gt;&lt;p&gt;When a failure occurs within their web application, he must remotely generate thread dumps across 34 load-balanced jboss systems and restore service as quickly as possible.  Since I've been experimenting a lot with Jmx4Perl and we are talking specifically about JBoss servers, scripting something in Jmx4Perl that would iterate through a list of servers would certainly be worth a try since Jmx4Perl has built-in methods that would help. Is anyone out there doing something similar today?  JMX-Console is too slow for his purposes and depending upon the failure, both jmx-console and jmx4perl might not be all that usable, (if for example, the http connector is dead).&lt;/p&gt;&lt;p&gt;I would love to hear what other people are doing managing large clusters of JBoss systems, especially in the area of remotely generating thread dumps.  Please brag about it in the comments! :)  Let's assume, for the solution's sake, that we do not know 'why' he has to remotely generate thread dumps across this many systems.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QolPAdZe-NaCAWZlLM5Veftg18o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QolPAdZe-NaCAWZlLM5Veftg18o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QolPAdZe-NaCAWZlLM5Veftg18o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QolPAdZe-NaCAWZlLM5Veftg18o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=PBKHCrV8_sY:CAF6U3KSMl4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=PBKHCrV8_sY:CAF6U3KSMl4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=PBKHCrV8_sY:CAF6U3KSMl4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=PBKHCrV8_sY:CAF6U3KSMl4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=PBKHCrV8_sY:CAF6U3KSMl4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=PBKHCrV8_sY:CAF6U3KSMl4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/PBKHCrV8_sY" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/10/help-wanted-generating-remote-thread-dumps-for-large-numbers-of-servers.html</feedburner:origLink></entry>
    <entry>
        <title>Apache HTTP Server v2.2.14 Released</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/Ebwzi_d2Yrc/apache-http-server-v2214-released.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/10/apache-http-server-v2214-released.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a5c1aa62970b</id>
        <published>2009-10-05T20:08:25-04:00</published>
        <updated>2009-10-05T20:08:25-04:00</updated>
        <summary>Apache 2.2.14 release re-announcement.</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        
        <category scheme="http://sixapart.com/ns/types#tag" term="apache" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">&lt;p&gt;The Apache HTTP Server project has released version 2.2.14.  The release fixes three security vulnerabilities and 11 bugs and renders thousands of web sites out of PCI Compliance.  (ok, ok, technically you are not out of compliance instantaneously)&lt;/p&gt;&lt;p&gt;Apache on Solaris and mod_proxy_ftp users seem to be directly impacted by the vulnerabilities fixed in this release.  The &lt;a href="http://www.fightrice.com/mirrors/apache/httpd/CHANGES_2.2.14" title="Apache 2.2.14 CHANGELOG"&gt;CHANGELOG&lt;/a&gt; goes into more detail on the fixes and updates addressed in this release.  Downloads are at the &lt;a href="http://httpd.apache.org/download.cgi" title="Apache HTTP Downloads"&gt;usual location&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pFfaACr6yEuhAlHuZ-T7jmTVozM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pFfaACr6yEuhAlHuZ-T7jmTVozM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pFfaACr6yEuhAlHuZ-T7jmTVozM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pFfaACr6yEuhAlHuZ-T7jmTVozM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=Ebwzi_d2Yrc:pK6BmoeSfHU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=Ebwzi_d2Yrc:pK6BmoeSfHU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=Ebwzi_d2Yrc:pK6BmoeSfHU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=Ebwzi_d2Yrc:pK6BmoeSfHU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=Ebwzi_d2Yrc:pK6BmoeSfHU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=Ebwzi_d2Yrc:pK6BmoeSfHU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/Ebwzi_d2Yrc" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/10/apache-http-server-v2214-released.html</feedburner:origLink></entry>
    <entry>
        <title>New HOWTO Article on Setting Up JSessionID Persistence on a BigIP</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/pBvWmTJqQOo/new-howto-article-on-setting-up-jsessionid-persistence-on-a-bigip.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/10/new-howto-article-on-setting-up-jsessionid-persistence-on-a-bigip.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a5bc600e970b</id>
        <published>2009-10-04T18:30:57-04:00</published>
        <updated>2009-10-04T18:30:57-04:00</updated>
        <summary>HOWTO Announcement:  How to set up jsessionid-based persistence on a bigip ltm.</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="bigip" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="HOWTO" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="integration" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="irule" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="loadbalancing" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="BigIP" />
        <category scheme="http://sixapart.com/ns/types#tag" term="HOWTO" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">&lt;p&gt;This article serves more as a reminder for me than anything else, since I'm always forgetting the last step.  However, if it serves useful to anyone else out there...great!  &lt;/p&gt;&lt;p&gt;One of the first things I wanted to tackle when we got our spiffy new BigIPs in several years ago was persisting user sessions to tomcat or jboss application servers using iRules.  There are lots of examples of persisting traffic based on JSESSIONID, ASPSESSIONID, etc., but one thing that the budding application traffic manager may not necessarily realize from browsing &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/CodeShare.html" title="F5 DevCentral iRule CodeShare Sample Site"&gt;CodeShare&lt;/a&gt; on F5's &lt;a href="http://devcentral.f5.com/" title="F5 DevCentral Home"&gt;DevCentral&lt;/a&gt; site (login required) is that you don't (always) simply code an irule and attach it to your VIP.  There are a couple steps necessary and this new HOWTO article outlines those steps.&lt;/p&gt;&lt;p&gt;Go to &lt;a href="http://www.techstacks.com/howto/set-up-jsessionidbased-persistence-on-a-bigip.html" title="HOWTO: Set Up JSESSIONID-Based Persistence on a BigIP"&gt;HOWTO: Set Up JSESSIONID-Based Persistence on a BigIP&lt;/a&gt; now.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j6s_rnNYMhnc4XhC1rsWhH5BHAQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j6s_rnNYMhnc4XhC1rsWhH5BHAQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j6s_rnNYMhnc4XhC1rsWhH5BHAQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j6s_rnNYMhnc4XhC1rsWhH5BHAQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=pBvWmTJqQOo:UHzLBFkLP7Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=pBvWmTJqQOo:UHzLBFkLP7Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=pBvWmTJqQOo:UHzLBFkLP7Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=pBvWmTJqQOo:UHzLBFkLP7Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=pBvWmTJqQOo:UHzLBFkLP7Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=pBvWmTJqQOo:UHzLBFkLP7Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/pBvWmTJqQOo" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/10/new-howto-article-on-setting-up-jsessionid-persistence-on-a-bigip.html</feedburner:origLink></entry>
    <entry>
        <title>Groovy 1.6.5 is out</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/n8h9J7y42FE/groovy-165-is-out.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/10/groovy-165-is-out.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a60c3116970c</id>
        <published>2009-10-02T11:07:13-04:00</published>
        <updated>2009-10-02T11:07:13-04:00</updated>
        <summary>Release re-broadcast for Groovy 1.6.5</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="groovy" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="groovy" />
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">&lt;p&gt;Announced earlier today on the mailing lists, Groovy 1.6.5 is out.  Source and binaries are available at the &lt;a href="http://groovy.codehaus.org/Download" title="Groovy Downloads"&gt;codehaus download site&lt;/a&gt; and &lt;a href="http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10242&amp;amp;styleName=Html&amp;amp;version=15539" title="Groovy 1.6.5 Release Notes"&gt;release notes&lt;/a&gt; are available as well.  &lt;/p&gt;&lt;p&gt;There are no new features but there are quite a few bug fixes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BchWs-LpxLpKO36aWP3AYHoJKAY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BchWs-LpxLpKO36aWP3AYHoJKAY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BchWs-LpxLpKO36aWP3AYHoJKAY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BchWs-LpxLpKO36aWP3AYHoJKAY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=n8h9J7y42FE:6bC6w4TAH5Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=n8h9J7y42FE:6bC6w4TAH5Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=n8h9J7y42FE:6bC6w4TAH5Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=n8h9J7y42FE:6bC6w4TAH5Q:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=n8h9J7y42FE:6bC6w4TAH5Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=n8h9J7y42FE:6bC6w4TAH5Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/n8h9J7y42FE" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/10/groovy-165-is-out.html</feedburner:origLink></entry>
    <entry>
        <title>Tomcat Management: Basic Tomcat Interrogation Using Jmx4Perl</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BloggingTechstacks/~3/SiKZSakggic/tomcat-management-basic-tomcat-interrogation-using-jmx4perl.html" />
        <link rel="replies" type="text/html" href="http://blog.techstacks.com/2009/09/tomcat-management-basic-tomcat-interrogation-using-jmx4perl.html" thr:count="2" thr:updated="2009-09-29T16:53:30-04:00" />
        <id>tag:typepad.com,2003:post-6a01156fbc6fe6970c0120a5fd7cc1970c</id>
        <published>2009-09-28T23:18:11-04:00</published>
        <updated>2009-09-28T23:19:25-04:00</updated>
        <summary>Many of us have scores, hundreds, or more tomcat servers sitting on our network and sometimes (often, for me) the naming conventions we might use for our servers are not necessarily descriptive enough for us to figure out what applications that server might be running. I first started writing about the goodness that is Jmx4Perl a couple weeks ago. I've been playing with it off and on ever since and I have not lost my initial favorable impressions. I thought it would be a useful learning exercise writing some basic script that I would use on a semi-regular basis at...</summary>
        <author>
            <name>Chris Mahns</name>
        </author>
        
        
<content type="html" xml:lang="en-us" xml:base="http://blog.techstacks.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Many of us have scores, hundreds, or more tomcat servers sitting on our network and sometimes (often, for me) the naming conventions we might use for our servers are not necessarily descriptive enough for us to figure out what applications that server might be running.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;I first started writing about the goodness that is &lt;a title="Jmx4Perl on CPAN" href="http://search.cpan.org/%7Eroland/jmx4perl/"&gt;Jmx4Perl&lt;/a&gt; a &lt;a title="Tomcat Management: Jmx4Perl Makes it Easier" href="http://blog.techstacks.com/2009/09/tomcat-management-jmx4perl-makes-it-easier.html.html"&gt;couple weeks ago&lt;/a&gt;.&amp;nbsp; I've been playing with it off and on ever since and I have not lost my initial favorable impressions.&amp;nbsp; I thought it would be a useful learning exercise writing some basic script that I would use on a semi-regular basis at work—I do not necessarily care to write something that I won't ever use again once I've been able to successfully execute it. &amp;nbsp; Since I have plenty of tomcat servers on my network now, things have gotten to the point that if someone in our NOC reports an issue with server297, a simple running of the following script is enough to freshen my memory as to what applications this server is hosting.&amp;nbsp; Heck, it may even turn out to be something that will grow into a full server interrogation script in the future, like &lt;a title="CryptoNark Main Page" href="http://blog.techstacks.com/cryptonark.html"&gt;cryptonark&lt;/a&gt; did.&lt;/p&gt;

&lt;p&gt;Below is a basic Jmx4Perl server interrogation script I'm calling &lt;strong&gt;sooth.pl&lt;/strong&gt;.  It's designed so that you execute &lt;code&gt;&lt;strong&gt;sooth.pl $host $port&lt;/strong&gt;&lt;/code&gt; and it will tell you the Tomcat version string and will print out all the webapps it finds.  The script calls a couple of the actual mbeans and attributes, to demonstrate syntax when no suitable alias exists. I'd like to thank Roland Huß for publishing such a useful module that lowers the learning curve for folks like me who want to take advantage of the utility that JMX provides but who don't necessarily have the time to invest in doing it the "Java-way" right now.&lt;/p&gt;
&lt;pre class="brush: perl; auto-links: false;"&gt;
#!/usr/bin/env perl 
#===============================================================================
#
#         FILE:  sooth.pl
#
#        USAGE:  ./sooth.pl $host $port  
#
#  DESCRIPTION:  Demonstrates Jmx4Perl.
#
# REQUIREMENTS:  JMX::Jmx4Perl
#        NOTES:  ---
#       AUTHOR:  Chris Mahns 
#      COMPANY:  techstacks.com
#      VERSION:  0.1
#      CREATED:  09/06/2009
#===============================================================================

use strict;
use warnings;
use feature ':5.10';

use JMX::Jmx4Perl;
use JMX::Jmx4Perl::Alias;

my $host = $ARGV[0];
my $port = $ARGV[1];

my $usage = "Usage:  $0 &amp;lt;host&amp;gt; &amp;lt;port&amp;gt;";

if ( !@ARGV ) {
  say $usage;
  exit 0;
}

my $jmxconn = JMX::Jmx4Perl-&gt;new(url =&gt; "http://$host:$port/j4p");
my $version = $jmxconn-&gt;get_attribute( {
  mbean =&gt; "Catalina:type=Server",
  attribute =&gt; "serverInfo",
  } );

my $contexts = $jmxconn-&gt;get_attribute( {
  mbean =&gt; "Catalina:port=8080,type=Mapper",
  attribute =&gt; "contextNames",
  } );

say "";
say "$host is running: $version";
say "";
say "The following webapp contexts were found";

foreach (@$contexts) {
say $_;
}
&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j0OgCTHiDSru6XNgv5H9YFj3SGs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j0OgCTHiDSru6XNgv5H9YFj3SGs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j0OgCTHiDSru6XNgv5H9YFj3SGs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j0OgCTHiDSru6XNgv5H9YFj3SGs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=SiKZSakggic:4wugnU0Yljs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=SiKZSakggic:4wugnU0Yljs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=SiKZSakggic:4wugnU0Yljs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=SiKZSakggic:4wugnU0Yljs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BloggingTechstacks?a=SiKZSakggic:4wugnU0Yljs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BloggingTechstacks?i=SiKZSakggic:4wugnU0Yljs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BloggingTechstacks/~4/SiKZSakggic" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://blog.techstacks.com/2009/09/tomcat-management-basic-tomcat-interrogation-using-jmx4perl.html</feedburner:origLink></entry>

</feed><!-- ph=1 --><!-- nhm:from_kauri -->
