<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Random, Happy Dev Thoughts</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:48:25 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Application Insights (for Java): Quickstart for Apache Tomcat</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/application-insights-for-java-quickstart-for-apache-tomcat</link>
      <pubDate>Tue, 25 Mar 2014 16:22:58 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2014/03/25/application-insights-for-java-quickstart-for-apache-tomcat/</guid>
      <description><![CDATA[This post will highlight a quickstart guide to getting-up and running with the Visual Studio Online...]]></description>
      <content:encoded><![CDATA[<p>This post will highlight a quickstart guide to getting-up and running with the Visual Studio Online Application Insights for Java.&nbsp; If <a href="http://msdn.microsoft.com/en-us/library/dn481099.aspx">this looks extremely similar to the content posted on MSDN, that would because it is</a>.</p>
<h2>1) Login to Application Insights for Visual Studio Online.&nbsp;</h2>
<p>If necessary, <a href="http://go.microsoft.com/fwlink/?LinkId=330424">sign-up here first</a>.</p>
<h2>2) Download the Java APM Agent</h2>
<p>Again,&nbsp;I will <a href="http://msdn.microsoft.com/en-us/library/dn481099.aspx">defer to the official documentation for describing how to navigate the UI pages</a>&nbsp;as this contains several pretty pictures.&nbsp; The short version is that after logging-in to the site, choose the settings icon and navigate to the <strong>Keys and Downloads</strong> tab.</p>
<h2>3) Unzip the Agent locally</h2>
<p>For the purposes of this quickstart guide, let&#39;s assume that after downloading you have decided to place the zip files to the root folder.&nbsp; For your own sanity, <em><strong>a folder without spaces tends to make life easier</strong></em>.&nbsp; The rest of the guide will assume that the Java agent exists in a folder <strong>\JavaAgent</strong>.</p>
<h2>4) Update the Account ID and Account Key in SEAgent.config.xml</h2>
<p>In the unzipped folder, locate the SEAgent.config.xml file</p>
<pre><br /> &nbsp;&nbsp; &lt;dataWriter&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ApmProcessingAddress&gt;https://eus-amt-wt1.tofino.windowsazure.com&lt;/ApmProcessingAddress&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--&lt;accountId&gt;Put the account id obtained from app-analytics portal here&lt;/accountId&gt;--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--&lt;accountKey&gt;Put the instrumentation key obtained from app-analytics portal here&lt;/accountKey&gt;--&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;batchSize&gt;100&lt;/batchSize&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/dataWriter&gt;</pre>
<p>change to (for some reason, the blog is fubar&#39;ing the XML below - just make sure to uncomment these <strong>accountId</strong> and <strong>accountKey</strong> elements and replace them with the values from the Application Insights web page)</p>
<pre> &nbsp;&nbsp; &lt;dataWriter&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ApmProcessingAddress&gt;https://eus-amt-wt1.tofino.windowsazure.com&lt;/ApmProcessingAddress&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;accountId&gt;00000000-0000-0000-0000-000000000000&lt;/accountId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;accountKey&gt;00/00000000000000000000000000000000000000000000000000000000000000000000000000000000000==&lt;/accountKey&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;batchSize&gt;100&lt;/batchSize&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/dataWriter&gt;</pre>
<h2>5a) Modify Start-up Script (Windows)</h2>
<p>Locate the <strong>catalina.bat</strong> script and the following line:</p>
<pre>:noJuliManager 
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

set APM_DIR=\JavaAgent
set APM_OPTS=-Djava.library.path=&quot;%APM_DIR%&quot; <br />-javaagent:&quot;%APM_DIR%\apm_facade.jar&quot; <br />-Xbootclasspath/p:&quot;%APM_DIR%\apm_facade.jar&quot; <br />-Xbootclasspath/p:&quot;%APM_DIR%\apm_producers.jar&quot;
set JAVA_OPTS=%JAVA_OPTS% %APM_OPTS%
 
rem ----- Execute The Requested Command ---------------------------------------
</pre>
<p>The above code should be on a single line; however, for formatting reasons this has been broken into several lines to improve readability. <a href="/b/random_happy_dev_thoughts/archive/2013/08/20/command-line-options-to-enabling-application-performance-monitoring-for-tomcat.aspx">For more details, see here</a>.</p>
<h2>5b)&nbsp;[Alternate] Modify Start-up Script (Windows as a Service)</h2>
<p>The exact syntax will change slightly depending on the version of Tomcat, but the general invocation should look like:</p>
<pre>.\bin\Tomcat7 //US//Tomcat7 ++JvmOptions=-javaagent:&quot;\JavaAgent\apm_facade.jar&quot;<br />#-Xbootclasspath/p:&quot;\JavaAgent\apm_facade.jar&quot;<br />#-Xbootclasspath/p:&quot;\JavaAgent\apm_producers.jar&quot;<br />#-Djava.library.path=&quot;\JavaAgent&quot;</pre>
<p>The above code should be on a single line; however, for formatting reasons this has been broken into several lines to improve readability.&nbsp; <a href="/b/random_happy_dev_thoughts/archive/2013/12/10/scom-2012-r2-tomcat-as-a-windows-service-with-apm-options.aspx">For more details, see this blog post</a>.</p>
<h2>5c) [Alternate] Modify Start-up Script (Linux)</h2>
<p>Locate the <strong>catalina.sh</strong> script and the following line:</p>
<pre>if [ -z &quot;$LOGGING_MANAGER&quot; ]; then
 JAVA_OPTS=&quot;$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager&quot;
else
 JAVA_OPTS=&quot;$JAVA_OPTS $LOGGING_MANAGER&quot;
fi
 
APM_DIR=/path/to/apm/agent/zip/contents 
APM_OPTS=&quot;-javaagent:$APM_DIR/apm_facade.jar <br />-Xbootclasspath/p:$APM_DIR/apm_producers.jar <br />-Xbootclasspath/p:$APM_DIR/apm_facade.jar&quot;
JAVA_OPTS=&quot;$JAVA_OPTS $APM_OPTS&quot;

# ----- Execute The Requested Command -----------------------------------------
</pre>
<p>The above code should be on a single line; however, for formatting reasons this has been broken into several lines to improve readability. <a href="/b/random_happy_dev_thoughts/archive/2013/08/20/command-line-options-to-enabling-application-performance-monitoring-for-tomcat.aspx">For more details, see here</a>.</p>
<h2>6) (Re-)Start Apache Tomcat</h2>]]></content:encoded>
    </item>
    <item>
      <title>Java APM Agent Changelog</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/java-apm-agent-changelog</link>
      <pubDate>Tue, 25 Mar 2014 14:35:03 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2014/03/25/java-apm-agent-changelog/</guid>
      <description><![CDATA[I just realized that there is not a great means of tracking the changes to the Java APM agent for...]]></description>
      <content:encoded><![CDATA[<p>I just realized that there is not a great means of tracking the changes to the Java APM agent for Visual Studio Online.&nbsp; And so without further ado, a blog post to rectify the situation.&nbsp; This post will discuss how to determine the version of the Java APM Agent as well as a changelog of features and fixes.</p>
<p></p>
<h1>How Can I Know What Version I Have</h1>
<p>Due to some technical requirements, the name of the zip file needs to remain constant between versions.&nbsp; Hence, when you download the zip file the file does not contain the version string in the file name.&nbsp; The good news is that in the ZIP file there is a XML file version.xml that contains.... (what for it)... the version!&nbsp; This human-readable file is intended for information use:</p>
<p></p>
<pre><span style="font-family:courier new,courier;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;</span><br /><span style="font-family:courier new,courier;">&lt;!-- /////////////////////////////////////////////////// --&gt;</span><br /><span style="font-family:courier new,courier;">&lt;!--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copyright (c) Microsoft Corporation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;</span><br /><span style="font-family:courier new,courier;">&lt;!-- /////////////////////////////////////////////////// --&gt;</span><br /><span style="font-family:courier new,courier;">&lt;!-- Human-readable file with version/build information. --&gt;</span><br /><span style="font-family:courier new,courier;">&lt;!-- This is an auto-generated file (i.e. modifying this --&gt;</span><br /><span style="font-family:courier new,courier;">&lt;!-- file will not change the version information&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;</span><br /><span style="font-family:courier new,courier;">&lt;!-- displayed in the running program.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt;</span><br /><span style="font-family:courier new,courier;">&lt;VersionInformation&gt;</span><br /><span style="font-family:courier new,courier;">&nbsp; &lt;Version&gt;1.13.100.1&lt;/Version&gt;</span><br /><span style="font-family:courier new,courier;">&nbsp; &lt;LabelName&gt;NotFromLabel&lt;/LabelName&gt;</span><br /><span style="font-family:courier new,courier;">&nbsp; &lt;BuildDate&gt;20140325&lt;/BuildDate&gt;</span><br /><span style="font-family:courier new,courier;">&lt;/VersionInformation&gt;
</span></pre>
<p></p>
<p>Additionally, each jar file contains an XML file with the version number in it.&nbsp; To access it, <a title="http://en.wikipedia.org/wiki/JAR_(file_format)" href="/controlpanel/blogs/posteditor.aspx/rename%20the%20jar%20file%20to%20a%20zip%20file">rename the jar file to a zip file</a> (you may need to <a href="http://windows.microsoft.com/en-us/windows/show-hide-file-name-extensions#show-hide-file-name-extensions=windows-vista">update your Windows Explorer settings to show know file extensions</a>).&nbsp; <em>And if you are curious, no you may not unzip the file, update the version number, and re-zip the jar file.&nbsp;&nbsp; If you do, chaos will ensue!&nbsp; :)</em></p>
<p>If there is no version file, that means you are using a very old agent, in which case download a newer one in order to take advantage of the features listed below.</p>
<h1>The Changelog</h1>
<p>Here is a non-exhaustive list of changes to the Java Agent as far back as I was willing to look in version control.&nbsp; Moving forward, I will (try to) update this blog post as new Agents roll-out.</p>
<p></p>
<h2 style="margin:0in 0in 10pt;line-height:115%;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">1.12.100.4 (March 2014)</span></h2>
<ul>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Finalized support for gathering Custom Performance Counters from JMX</span></span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Improved Configuration Plan format</span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Added feature to send counters without waiting for entrypoints to enable support for elasticSearch, Kafka, etc&hellip;</span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Bug fixes</span></li>
</ul>
<h2 style="margin:0in 0in 10pt;line-height:115%;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">1.12.100.1 (January 2014)</span></h2>
<ul>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Preliminary support for gathering Custom Performance Counters from JMX</span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Bug Fixes</span><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;"><br /></span></li>
</ul>
<h2 style="margin:0in 0in 10pt;line-height:115%;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">1.11.100.1 <span style="font-size:small;">(November 2013)</span></span></h2>
<ul>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Run-time Dependency Discovery (RDD) support for HTTP methods</span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Performance and bug fixes</span><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">&nbsp;</span></li>
</ul>
<h2 style="margin:0in 0in 10pt;line-height:115%;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">1.10.100.15 (November 2013)</span></h2>
<ul>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Version released for SCOM 2012 R2 on-premise solution</span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Send events directly to the VSO Endpoint</span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Java Policy Support</span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Event parameter regular expression filtering</span></li>
<li style="line-height:115%;margin-top:0in;margin-right:0in;margin-bottom:10pt;"><span style="line-height:115%;font-family:&#39;Arial&#39;,&#39;sans-serif&#39;;font-size:10pt;">Security Fixes</span></li>
</ul>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>How To Instrument Catching Exceptions for Java APM</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/how-to-instrument-catching-exceptions-for-java-apm</link>
      <pubDate>Wed, 22 Jan 2014 17:05:00 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2014/01/22/how-to-instrument-catching-exceptions-for-java-apm/</guid>
      <description><![CDATA[This post applies to both the Java APM Agent available from Application Insights as well as the RTM...]]></description>
      <content:encoded><![CDATA[<p><em>This post applies to both the Java APM Agent available from Application Insights as well as the RTM release of SCOM 2012 R2 (this feature was not available for the preview release of SCOM 2012 R2). &nbsp;This article is written by myself and my co-author: <strong>Cijo Thomas</strong>.</em></p>
<p>This post will discuss Exception Events generated by the Java APM Agent. &nbsp;To illustrate this, let me briefly explain how instrumentation works, the limitations of this, and how to modify the configuration files to account for cases interesting to you. &nbsp;In an ideal world, a method might look like:</p>
<p><span style="font-family:&#39;courier new&#39;, courier;">public foo() throws Exception {<br /></span><span style="font-family:&#39;courier new&#39;, courier;">&nbsp; // Do stuff<br /></span><span style="font-family:&#39;courier new&#39;, courier;">}</span></p>
<p>If foo() has been identified as a method to instrument (i.e. it is specified in pmonitor.config.xml), then at runtime the code is instrumented to look like:</p>
<p><span style="font-family:&#39;courier new&#39;, courier;">public foo() throws Exception {<br />&nbsp; prefix()<br /></span><span style="font-family:&#39;courier new&#39;, courier;">&nbsp; try {<br />&nbsp; &nbsp; // Do stuff<br />&nbsp; &nbsp; postfix()<br />&nbsp; }<br />&nbsp; catch(Exception e)<br />&nbsp; {<br />&nbsp; &nbsp; handleException()<br />&nbsp; }<br /></span><span style="font-family:&#39;courier new&#39;, courier;">}</span></p>
<p><span>And generally, this works.... except for when it does not. &nbsp;Sometimes various web frameworks (such as Struts) may have code that catches and maps exceptions. &nbsp;True, the web browser may display a message and an exception stack trace, but from a code point-of-view there was no exception. &nbsp;Consider this code:</span></p>
<p><span style="font-family:&#39;courier new&#39;, courier;">public callRestService(){<br /></span><span style="font-family:&#39;courier new&#39;, courier;">&nbsp; try {<br /></span><span style="font-family:&#39;courier new&#39;, courier;">&nbsp; &nbsp; // contains calls to all other methods, which could throw any exceptions.<br /></span><span style="font-family:&#39;courier new&#39;, courier;">&nbsp; } catch(Exception ex){<br />&nbsp; &nbsp;&nbsp;</span><span style="font-family:&#39;courier new&#39;, courier;">logException(ex);<br /></span><span style="font-family:&#39;courier new&#39;, courier;">&nbsp; }<br /></span><span style="font-family:&#39;courier new&#39;, courier;">}</span></p>
<p>In order to address this (common) software pattern, there are two suggestions:</p>
<ol>
<li>ExceptionHandler instrumentation</li>
<li>Stackborder instrumentation</li>
</ol>
<h1><span style="font-family:&#39;courier new&#39;, courier;">Using ExceptionHandler Instrumentation</span></h1>
<p><strong>What it that?</strong> &nbsp;ExceptionHandler instrumentation is for methods which are called by user code(or a framework) when an exception is occurred. These methods typically do some logging or hide exception from surfacing to webpage. As the goal is to capture exception information, we will make the assumption that these methods take the exception object as one of the function&#39;s argument. When a method is instrumented as ExceptionHandler, this instrumentation extracts the exception object from the argument list and creates an exception event.</p>
<p>For example, consider the before mentioned code with a master try/catch statement.</p>
<p><span style="font-family:&#39;courier new&#39;, courier;">public callRestService(){<br />&nbsp; try {<br />&nbsp; &nbsp; // contains calls to all other methods, which could throw any exceptions.<br />&nbsp; } catch(Exception ex){<br />&nbsp; &nbsp;&nbsp;logException(ex, &quot;uh-oh!&quot;);<br />&nbsp; }<br />}</span></p>
<p>All exceptions thrown from user code gets caught in <strong>callRestService() </strong>and the method calls <strong>logException()</strong> to deal with the exception. &nbsp;This would imply that in <strong>logException()</strong> is called, then there has been an exception. &nbsp;If the method <strong>logException()</strong> is instrumented as ExceptionHandler, then when it is called the instrumentation code will generate an exception event.</p>
<p>Using this type of instrumentation is easy. &nbsp; Just edit the <strong>ss:applicationSetting</strong> section of the <strong>pmonitor.config.xml</strong> file. All that needs to be done is to declare an exceptionHandler and declare the type of instrumentation to use. &nbsp;A sample XML snippet is below for an exception logging method from a sample class called <strong>com.contoso.logger.logException </strong>(so if you substitute your package name and method in this syntax, you can just paste this into your configuration file). &nbsp;Once done the logic describe above will be called with the exception handling code gets called. &nbsp;<em>An important caveat of note: this will <strong>only</strong> work if the method takes an exception object as one of its parameters.</em></p>
<p>The following shows the entries to be made in Pmonitor.config file to instrument the method as <strong>ExceptionHandler</strong>.</p>
<p><span style="font-family:&#39;courier new&#39;, courier;">&lt;ss:applicationSetting&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">...</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;ss:exceptionHandlers&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;ss:exceptionHandler name=&quot;<strong>com.contoso.logger.logException</strong>&quot;/&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;/ss:exceptionHandlers&gt;<br />...</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;/ss:applicationSetting&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> ...<br />&lt;ss:producers&gt;<br />...</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;ss:method name=&quot;<strong>com.contoso.logger.logException</strong>&quot;&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"><span style="font-family:&#39;courier new&#39;, courier;"> &lt;ss:instrum</span>entation name=&quot;com.microsoft.ManagementServices.APMAgent.Producers.GenericExceptionHandlerProducers.GenericExceptionHandlerPrefixDataProducer &quot; value=&quot;prefix&quot;/&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;ss:instrumentation name=&quot;com.microsoft.ManagementServices.APMAgent.Producers.GenericExceptionHandlerProducers.GenericExceptionHandlerPostfixDataProducer &quot; value=&quot;postfix&quot;/&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;ss:instrumentation name=&quot;com.microsoft.ManagementServices.APMAgent.Producers.GenericExceptionHandlerProducers.GenericExceptionHandlerOnExceptionDataProducer &quot; value=&quot;onException&quot;/&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;/ss:method&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">...</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;/ss:producers&gt;</span></p>
<h1><span style="font-family:&#39;courier new&#39;, courier;">Using StackBo<span style="font-family:&#39;courier new&#39;, courier;">rder In</span>strumentation</span></h1>
<p><strong>What is that? &nbsp;</strong>Suppose what is really important to know is that when a given method throws an exception - regardless of whether this event gets caught elsewhere in the code.</p>
<p><span style="font-family:&#39;courier new&#39;, courier;">public callRestService(){<br />&nbsp; try {<br />&nbsp; &nbsp; ...<br />&nbsp; &nbsp;canaryInTheCave()<br />&nbsp; &nbsp; ...<br />&nbsp; } catch(Exception ex){</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &nbsp; &nbsp;logException(ex, &quot;uh-oh!&quot;);</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&nbsp; }</span><br /><span style="font-family:&#39;courier new&#39;, courier;">}</span></p>
<p><span style="font-family:&#39;courier new&#39;, courier;">public canaryInTheCave() throws Exception {<br />&nbsp; // some bellweather code<br />}</span></p>
<p><span>In this case, the method to instrument is <strong>canaryInTheCave()</strong> decides to throw an exception and the type of instrumentation is <strong>StackBorder</strong>. &nbsp;If any</span>&nbsp;unhandled exceptions is thrown from a method with this instrumentation, it will result in &quot;<strong>Critical Exception</strong>&quot;. &nbsp;What this means is that irrespective of whether this exception is handled at a higher level or not, the code will create an exception event. This is ideal for scenarios where all exceptions generated from user code are handled by a framework code (or even a master try catch in use code itself). Without this type of instrumentation, this scenario would not generate any exception events because at a code level no exceptions surface. &nbsp;Some other level of framework code is handling the exception and the <strong>StackBorder</strong> instrumentation comes to rescue. By instrumenting the method which stands at the boundary of user code and framework code (aka the stack border), then the exception crossing the method will be marked as critical and an exception event will be created.</p>
<p>This is not any more difficult from an XML perspective, an appropriate method should be marked in the pmonitor.config.xml. &nbsp;The catch is to know the method name! &nbsp;This is little tricky (we&#39;re looking at you Struts) as one must identify method(s) between where the user code generates an exception and the framework code that handles the exception.&nbsp;</p>
<p>The following shows the entries to be made in Pmonitor.config file to instrument the method as <strong>StackBorder</strong>.</p>
<p><span style="font-family:&#39;courier new&#39;, courier;">&lt;ss:applicationSetting&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">...</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;ss:stackBorders&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;ss:stackBorder name=&quot;<span>com.contoso.restService.canaryInTheCave</span>&quot;/&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;"> &lt;/ss:stackBorders&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">..</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;/ss:applicationSetting&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">..</span></p>
<p><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;ss:producers&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">...</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;ss:method name=&quot;com.contoso.restService.canaryInTheCave&quot;&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;ss:instrumentation name=&quot;com.microsoft.ManagementServices.APMAgent.Producers.LightWeightProducers.LightWeightPrefixDataProducer&quot; value=&quot;prefix&quot;/&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;ss:instrumentation name=&quot;com.microsoft.ManagementServices.APMAgent.Producers.LightWeightProducers.LightWeightPostfixDataProducer&quot; value=&quot;postfix&quot;/&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;ss:instrumentation name=&quot;com.microsoft.ManagementServices.APMAgent.Producers.LightWeightProducers.LightWeightOnExceptionDataProducer&quot; value=&quot;onException&quot;/&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;/ss:method&gt;</span><br /><span style="font-family:&#39;courier new&#39;, courier;">...</span><br /><span style="font-family:&#39;courier new&#39;, courier;">&lt;/ss:producers&gt;</span></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Application Insights (for Java): What is it and How to Get It</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/application-insights-for-java-what-is-it-and-how-to-get-it</link>
      <pubDate>Thu, 16 Jan 2014 13:40:42 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2014/01/16/application-insights-for-java-what-is-it-and-how-to-get-it/</guid>
      <description><![CDATA[I previously mentioned that Application Insights supports Java and this post is a follow-up with...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:Calibri;font-size:medium;">I <a href="/b/random_happy_dev_thoughts/archive/2013/12/09/application-insights-for-java-too.aspx">previously mentioned that Application Insights supports Java</a> and this post is a follow-up with some more links and information.&nbsp; The official information page for <a href="http://msdn.microsoft.com/en-us/library/dn481095.aspx">Application Insights is here</a>.&nbsp; Briefly stated, Application Insights is a way to get the same great Application Performance Monitoring (APM) available in SCOM 2012 R2 <i>in the cloud</i>. The agent itself has the same codebase as the SCOM 2012 R2 feature, the difference being the serialization code at the end sends the performance information to a different location to a REST interface.</span></p>
<p><span style="font-family:Calibri;font-size:medium;"></span><span style="font-family:Calibri;font-size:medium;">The Application Insight feature is presently preview-only.&nbsp; To gain access to this feature create a <a href="http://www.visualstudio.com/get-started/overview-of-get-started-tasks-vs">Visual Studio Online</a> account and choose the Application Insights tile in your account page.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">The <em>officially</em> supported platforms are:</span></p>
<ul>
<li><span style="font-family:Calibri;font-size:medium;">Tomcat (5.5, 6, 7)</span></li>
<li><span style="font-family:Calibri;font-size:medium;">JBoss Application Server 6</span></li>
</ul>
<p><span style="font-family:Calibri;font-size:medium;">Unofficially, it is possible to get some level of monitoring from most any Java application because the means of <a href="/b/random_happy_dev_thoughts/archive/2013/08/20/command-line-options-to-enabling-application-performance-monitoring-for-tomcat.aspx">instrumenting the Java process</a> is done via the <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html">java.lang.instrument package</a>. &nbsp;While the data may not be as rich as the above supported platforms, there will be some information available and I will detail how to do this is a future blog post.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Wrapping up, here are some external links that will be of interest. &nbsp;</span><span style="font-family:Calibri;font-size:medium;">The </span><a href="http://msdn.microsoft.com/en-us/library/dn481095.aspx" style="font-family:Calibri;font-size:medium;">general feature description of Application Insights are available on MSDN</a><span style="font-family:Calibri;font-size:medium;">, with the </span><a href="http://msdn.microsoft.com/en-us/library/dn481099.aspx" style="font-family:Calibri;font-size:medium;">Java installation notes available here</a><span style="font-family:Calibri;font-size:medium;">.&nbsp; In addition, the </span><a href="http://social.msdn.microsoft.com/Forums/vstudio/en-US/home?forum=ApplicationInsights" style="font-family:Calibri;font-size:medium;">Application Insight forum is available here</a><span style="font-family:Calibri;font-size:medium;">.</span></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>System Center 2012 Management Pack for Java Application Performance Monitoring Released!</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/system-center-2012-management-pack-for-java-application-performance-monitoring-released</link>
      <pubDate>Tue, 07 Jan 2014 15:44:04 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2014/01/07/system-center-2012-management-pack-for-java-application-performance-monitoring-released/</guid>
      <description><![CDATA[I am proud to announce the release version of Java Application Performance Monitoring (aka Java...]]></description>
      <content:encoded><![CDATA[<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/12/0724_PREVIEW_PerformanceEvent.PNG" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-12/0724_5F00_PREVIEW_5F00_PerformanceEvent.PNG"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/12/5531_PREVIEW_ExceptionEvent.PNG" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-12/5531_5F00_PREVIEW_5F00_ExceptionEvent.PNG"></a>I am proud to announce the release version of Java Application Performance Monitoring (aka Java APM), available for download (<a href="https://www.microsoft.com/en-us/download/details.aspx?id=39709"><span style="color:#00749e;">https://www.microsoft.com/en-us/download/details.aspx?id=39709</span></a>).&nbsp; This feature builds upon the previous release (available for download here: <a href="https://www.microsoft.com/en-us/download/details.aspx?id=29270"><span style="color:#00749e;">https://www.microsoft.com/en-us/download/details.aspx?id=29270</span></a>) to enabled APM functionality for several versions of Apache Tomcat.&nbsp;For more information, <a href="http://technet.microsoft.com/en-us/library/dn502605.aspx">refer to the online documentation on TechNet</a>.</p>
<p><em><a href="/b/random_happy_dev_thoughts/archive/2013/08/05/system-center-2012-management-pack-for-java-application-performance-monitoring-preview-released.aspx">Note: this supersedes the Preview release mentioned here.</a></em></p>
<p>The MSI contains the following Management Packs</p>
<ul>
<li>Microsoft.JEE.APM.Library.mpb</li>
<li>Microsoft.JEE.Tomcat.5.Apm.mp</li>
<li>Microsoft.JEE.Tomcat.6.Apm.mp</li>
<li>Microsoft.JEE.Tomcat.7.Apm.mp</li>
<li>Microsoft.JEE.Tomcat.APM.Library.mp</li>
</ul>
<p>&nbsp;</p>
<p>With these Management Packs, it will be possible to get APM Performance and Exception events for deployed Java Web Applications.</p>
<p></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/12/0724_PREVIEW_PerformanceEvent.PNG" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-12/0724_5F00_PREVIEW_5F00_PerformanceEvent.PNG"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/12/0724_PREVIEW_PerformanceEvent.PNG" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-12/0724_5F00_PREVIEW_5F00_PerformanceEvent.PNG" border="0" /></a></p>
<p></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/12/5531_PREVIEW_ExceptionEvent.PNG" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-12/5531_5F00_PREVIEW_5F00_ExceptionEvent.PNG"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/90/12/5531_PREVIEW_ExceptionEvent.PNG" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-12/5531_5F00_PREVIEW_5F00_ExceptionEvent.PNG" border="0" /></a></p>
<p></p>
<h3>Supported Operating System Platforms</h3>
<ul>
<li>Windows</li>
<li>Red Hat</li>
<li>Oracle</li>
<li>Centos</li>
<li>Ubuntu</li>
</ul>
<p>&nbsp;</p>
<h3>Support JVMs</h3>
<ul>
<li>Oracle Java version 5</li>
<li>Oracle Java version 6</li>
<li>Oracle Java version 7</li>
</ul>
<p>&nbsp;</p>
<h3>Supported Web/Application Servers</h3>
<ul>
<li>Apache Tomcat version 5.5</li>
<li>Apache Tomcat version 6.0</li>
<li>Apache Tomcat version 7.0</li>
</ul>
<p>&nbsp;</p>
<h3>Supported Web Frameworks</h3>
<ul>
<li>General Servlets</li>
<li>Axis 2</li>
<li>Struts&nbsp;&nbsp;</li>
</ul>
<h3>Forum Location</h3>
<p>For questions, comments, feature requests, etc&hellip;, please add a note to the <a href="http://social.technet.microsoft.com/Forums/en-US/home?forum=scomapm"><span style="color:#00749e;">System Center Operations Manager Application Performance Management (SCOM APM) forum</span></a>&nbsp;on TechNet:</p>
<p><a href="http://social.technet.microsoft.com/Forums/en-US/home?forum=scomapm"><span style="color:#00749e;">http://social.technet.microsoft.com/Forums/en-US/home?forum=scomapm</span></a></p>
<p></p>
<h3>Other Resources</h3>
<p><a href="/b/random_happy_dev_thoughts/archive/2013/12/10/video-java-application-performance-monitoring-with-operations-manager-in-system-center-2012-r2.aspx">Video: Feature Overview</a></p>
<p><a href="/b/random_happy_dev_thoughts/archive/2013/10/08/recommended-tutorial-for-using-java-apm-with-scom-2012-r2.aspx">Tutorial of setting-up and using the Java APM Features</a></p>
<p><a href="/b/random_happy_dev_thoughts/archive/2013/08/28/java-apm-agent-configuration-files-explained.aspx">In-depth discussion of configuration file settings</a></p>
<h3>Download Link</h3>
<p><a href="https://www.microsoft.com/en-us/download/details.aspx?id=39709"><span style="color:#00749e;">https://www.microsoft.com/en-us/download/details.aspx?id=39709</span></a></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>SCOM 2012 R2: Tomcat as a Windows Service with APM options</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/scom-2012-r2-tomcat-as-a-windows-service-with-apm-options</link>
      <pubDate>Tue, 10 Dec 2013 12:44:00 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2013/12/10/scom-2012-r2-tomcat-as-a-windows-service-with-apm-options/</guid>
      <description><![CDATA[There are many ways start Tomcat. &nbsp;The documentation covers the basics, which for Windows is to...]]></description>
      <content:encoded><![CDATA[<p>There are many ways start Tomcat. &nbsp;The <a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/08/20/command-line-options-to-enabling-application-performance-monitoring-for-tomcat.aspx">documentation covers the basics</a>, which for Windows is to modify the catalina.bat:</p>
<pre class="scroll"><code class="cplusplus">:noJuliManager <br />set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%<br /></code><span style="font-family: 'courier new', courier;"><code class="cplusplus">set APM</code><span style="font-size: 12px;">_DIR=\path\to\apm\agent\zip\contents</span><span style="font-size: 12px;">set <br /><span style="font-family: 'courier new', courier;">APM_OPTS=-Djava.library.path="%APM_DIR%" -javaagent:"%APM_DIR%\apm_facade.jar" -Xbootclasspath/p:"%APM_DIR%\apm_facade.jar" -Xbootclasspath/p:"%APM_DIR%\apm_producers.jar"</span><br /><span style="font-family: 'courier new', courier; font-size: 12px;">set JAVA_OPTS=%JAVA_OPTS% %APM_OPTS%<br /></span></span></span><span style="font-size: 12px; font-family: 'courier new', courier;">rem ----- Execute The Requested Command ---------------------------------------</span></pre>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><span style="font-size: 12px;">However, what if there is no said file. &nbsp;Suppose, it is desirable to run Tomcat as a service (see documentation for <a href="http://tomcat.apache.org/tomcat-5.5-doc/windows-service-howto.html">Tomcat 5</a>, <a href="http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html">Tomcat 6</a>, and <a href="http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html">Tomcat 7</a>). &nbsp;What does one do then? &nbsp;</span><span style="font-size: 12px;">Below I will give an example for Tomcat 7 with the&nbsp;</span><span style="font-size: 12px;">supposition</span><span style="font-size: 12px;">&nbsp;that the Java APM agent have been placed in the folder <strong>\apm</strong>.&nbsp;</span></div>
<div>
<pre class="scroll"><code class="cplusplus">.\bin\Tomcat7 //US//Tomcat7 ++JvmOptions=-javaagent:"\apm\apm_facade.jar"#-Xbootclasspath/p:"\apm\apm_facade.jar"#-Xbootclasspath/p:"\apm\apm_producers.jar"#-Djava.library.path="\apm"</code></pre>
<p class="scroll">&nbsp;</p>
<p class="scroll"><span style="font-size: 12px;">As per the Tomcat (7) documentation, the arguments should be&nbsp;separated&nbsp;by <strong>#</strong> characters.</span><span style="font-size: 12px;">&nbsp;Also, "<em>If the command line is prefixed with&nbsp;<strong>++</strong></em><span><em>&nbsp;then it's value will be appended to the existing option</em>.</span>"</span></p>
<p class="scroll">&nbsp;</p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Video: Java Application Performance Monitoring with Operations Manager in System Center 2012 R2</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/video-java-application-performance-monitoring-with-operations-manager-in-system-center-2012-r2</link>
      <pubDate>Tue, 10 Dec 2013 11:09:00 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2013/12/10/video-java-application-performance-monitoring-with-operations-manager-in-system-center-2012-r2/</guid>
      <description><![CDATA[Looking for more information&nbsp;Java Application Performance Monitoring with Operations Manager in...]]></description>
      <content:encoded><![CDATA[<p>Looking for more information&nbsp;Java Application Performance Monitoring with Operations Manager in System Center 2012 R2 - but tired of reading? &nbsp;Take a stroll over to <a href="https://channel9.msdn.com/">Channel 9</a> and take a look at the <a href="https://channel9.msdn.com/Shows/Edge/Edge-Show-84--Java-Application-Performance-Monitoring-with-Operations-Manager-in-System-Center-2012-">Edge Show</a> for an approximately 20 minute interview with the feature Program Manager for an overview of the offering. &nbsp;<a href="https://channel9.msdn.com/Shows/Edge/Edge-Show-84--Java-Application-Performance-Monitoring-with-Operations-Manager-in-System-Center-2012-#time=12m15s">The interview starts 12:15</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Application Insights: For Java Too!</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/application-insights-for-java-too</link>
      <pubDate>Mon, 09 Dec 2013 16:06:18 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2013/12/09/application-insights-for-java-too/</guid>
      <description><![CDATA[Microsoft recently announced a new service for VS Online called Application Insights&nbsp;(This is...]]></description>
      <content:encoded><![CDATA[<p><a href="http://blogs.msdn.com/b/bharry/archive/2013/11/15/application-insights-invitation.aspx">Microsoft recently announced</a> a new service for VS Online called <a href="http://www.visualstudio.com/en-us/news/2013-nov-13-vso#ApplicationInsights">Application Insights</a>&nbsp;(This is an invite-only service at the time of this writing). &nbsp;In addition to providing deeper insight into your .NET applications, this online solution also has the ability to monitor your Java application as well. &nbsp;Very similar to the Application Performance Management (APM) pieces available for monitoring your System Center Operations Manager, there is a capability of monitoring Java processes deployed anywhere (in any cloud or on premise).</p>
<p>The initial release targets supports for Tomcat 6, Tomcat 7, or JBoss 6. &nbsp;<span style="font-size: 12px;">If you have more questions, please post them in the </span><a style="font-size: 12px;" href="http://social.msdn.microsoft.com/Forums/vstudio/en-US/home?forum=TFService">Visual Studio Forums</a><span style="font-size: 12px;">.</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Enable Windows 8.1 Lock Screen Slideshow</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/enable-windows-8-1-lock-screen-slideshow</link>
      <pubDate>Mon, 04 Nov 2013 14:49:11 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2013/11/04/enable-windows-8-1-lock-screen-slideshow/</guid>
      <description><![CDATA[A bit of fun for today's post, finally got around to personalizing my computer's lock screens...]]></description>
      <content:encoded><![CDATA[<p>A bit of fun for today's post, finally got around to personalizing my computer's lock screens today.&nbsp; <a href="http://blog.laptopmag.com/lock-screen-windows-8-1">Thanks to this blog post at laptopmag.com</a>, I now have a bunch of highlights from my various photo-manipulating applications.</p>
<p>I must warning that if you are doing this in a work environment, you may want to double-check that the inclusion of photos from the <strong>Camera Roll</strong> folder is disabled.&nbsp; You never know who might happen to walk by your computer when that picture from last night's party appears.&nbsp; :)</p>]]></content:encoded>
    </item>
    <item>
      <title>Java APM MP Guide now Available... On TechNet</title>
      <link>https://docs.microsoft.com/archive/blogs/random_happy_dev_thoughts/java-apm-mp-guide-now-available-on-technet</link>
      <pubDate>Wed, 23 Oct 2013 12:01:18 GMT</pubDate>
      <dc:creator><![CDATA[Christopher Crammond]]></dc:creator>
      <guid
        isPermaLink="false">http://technet.qa.msdn.wdslab.com/random_happy_dev_thoughts/2013/10/23/java-apm-mp-guide-now-available-on-technet/</guid>
      <description><![CDATA[If you are looking the Java Application Performance Monitoring (APM) Preview Management Pack (MP)...]]></description>
      <content:encoded><![CDATA[<p><span>If you are looking the Java Application Performance Monitoring (APM) Preview Management Pack (MP) Guide,&nbsp;it can now be downloaded at&nbsp;</span><a href="https://www.microsoft.com/en-us/download/details.aspx?id=39709">https://www.microsoft.com/en-us/download/details.aspx?id=39709</a>&nbsp;or view it on TechNet at&nbsp;<a href="http://technet.microsoft.com/en-us/library/dn502605.aspx">http://technet.microsoft.com/en-us/library/dn502605.aspx</a>. &nbsp;Hooray for having documentation searchable online - welcome to 2003! &nbsp;:)</p>]]></content:encoded>
    </item>
  </channel>
</rss>