<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Random, Happy Dev Thoughts</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>(Alternate) Chicken and Egg Problem == solved: How to extract BeanSpy or PowerShell scripts if there is no discovery?</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/05/03/alternate-chicken-and-egg-problem-solved-how-to-extract-beanspy-or-powershell-scripts-if-there-is-no-discovery.aspx</link><pubDate>Fri, 03 May 2013 20:24:15 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3570674</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3570674</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/05/03/alternate-chicken-and-egg-problem-solved-how-to-extract-beanspy-or-powershell-scripts-if-there-is-no-discovery.aspx#comments</comments><description>&lt;p&gt;I recently found &lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/04/25/chicken-and-egg-problem-solved-how-to-extract-beanspy-or-powershell-scripts-if-there-is-no-discovery.aspx"&gt;another solution to the chicken v. egg problem that I mentioned in the previous blog post&lt;/a&gt;. &amp;nbsp;&lt;a href="http://gallery.technet.microsoft.com/Operations-Manager-2012-f351e5f8"&gt;This script from TechNet&lt;/a&gt; should be run on the Management Server and will copy BeanSpy and the JEE PowerShell scripts to a well-defined location. &amp;nbsp;See which works for you.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3570674" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/MPB/">MPB</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Management+Pack+Bundles/">Management Pack Bundles</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/PowerShell/">PowerShell</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/SCOM+2012/">SCOM 2012</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/BeanSpy/">BeanSpy</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Sample/">Sample</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Workaround/">Workaround</category></item><item><title>Chicken and Egg Problem == solved: How to extract BeanSpy or PowerShell scripts if there is no discovery?</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/04/25/chicken-and-egg-problem-solved-how-to-extract-beanspy-or-powershell-scripts-if-there-is-no-discovery.aspx</link><pubDate>Thu, 25 Apr 2013 21:30:33 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3569177</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3569177</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/04/25/chicken-and-egg-problem-solved-how-to-extract-beanspy-or-powershell-scripts-if-there-is-no-discovery.aspx#comments</comments><description>&lt;p&gt;One issue that you might experience with &lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2012/02/06/microsoft-open-sources-beanspy.aspx"&gt;BeanSpy&lt;/a&gt; (or the universal discovery PowerShell script)&amp;nbsp;is how to get a hold of these binaries.&amp;nbsp; The expect flow is that the Management Packs (MPs) and Management Pack Bundles (MPBs) get imported, some discoveries occur, and then from the application server instance a task can be run to copy the binaries to disk.&amp;nbsp; All of this is provided&amp;nbsp;from the comfort of the Operations Manager Console.&amp;nbsp; :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Of course, the problem is simply:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;em&gt;The difference between theory and practice is that in theory they are the same, but in practice they are different.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Luckily some of my cohorts have detailed two potential workarounds:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Command-Line - Use PowerShell to extract the binaries (&lt;a href="http://www.systemcentercentral.com/opsmgr-2012-all-my-java-apps-require-manual-discovery-where-do-i-get-beanspy-and-powershell-install-scripts/"&gt;System Center Central blog post&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;GUI approach - Use MPViewer to extract the binaries (&lt;a href="http://blogs.msdn.com/b/dmuscett/archive/2012/02/19/boris-s-tools-updated.aspx"&gt;Boris's OpsMgr Tools blog post&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3569177" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/MPB/">MPB</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Management+Pack+Bundles/">Management Pack Bundles</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/PowerShell/">PowerShell</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/SCOM+2012/">SCOM 2012</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/BeanSpy/">BeanSpy</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Management+Pack/">Management Pack</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Universal+Discovery/">Universal Discovery</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/java/">java</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Workaround/">Workaround</category></item><item><title>MSSQL Report Builder: Connecting to a Report Server</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/02/04/mssql-report-builder-connecting-to-a-report-server.aspx</link><pubDate>Tue, 05 Feb 2013 00:11:58 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3550352</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3550352</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/02/04/mssql-report-builder-connecting-to-a-report-server.aspx#comments</comments><description>&lt;p&gt;By far the most useful page that I have view today is this one about &lt;a href="http://blogs.technet.com/b/jessmeats/archive/2011/01/13/connecting-to-report-server.aspx"&gt;Connecting to a Report Server for MSSQL&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3550352" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Report+Server/">Report Server</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/MSSQL+2008+R2/">MSSQL 2008 R2</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/MSSQL/">MSSQL</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Report+Builder/">Report Builder</category></item><item><title>Howto: Monitor EJBs with BeanSpy in SCOM 2012 on WebSphere 6.1 (version 2)</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/31/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-6-1-version-2.aspx</link><pubDate>Thu, 31 Jan 2013 21:43:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3549683</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3549683</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/31/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-6-1-version-2.aspx#comments</comments><description>&lt;p&gt;It would appear that &lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/30/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-6-1.aspx"&gt;yesterday's post&lt;/a&gt; may not work for everyone, and here is a second version that will bypass this problem.&lt;/p&gt;
&lt;p&gt;The problem relates to the fact that I elected to have the newly created EJB class extend the base &lt;strong&gt;Microsoft.JEE.Application&lt;/strong&gt; class from the &lt;strong&gt;Microsoft.JEE.Library&lt;/strong&gt; management pack.&amp;nbsp; It so happens that the library class has a key property of the ObjectName with a length of 512 (characters).&amp;nbsp; It turns out that sometimes an object name can be more than that.&amp;nbsp; In this case, the discovery data is gathered on the Agent and sent to the Management Server which fails.&amp;nbsp; If you check your event viewer, you'll see something like:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-12/8688.FailCapture.PNG"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-90-12/8688.FailCapture.PNG" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The fix is pretty simple: instead of extending the existing class, just create a class that extends System.Component and create an appropriate relationship&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="cplusplus"&gt; &amp;lt;ClassTypes&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;ClassType ID="Microsoft.JEE.WebSphere.6.1.EJB.Application" Abstract="false" Accessibility="Public" Hosted="true" Base="System!System.ApplicationComponent"&amp;gt;&lt;br /&gt; &amp;lt;Property ID="ApplicationName" Type="string" CaseSensitive="true" MaxLength="256" MinLength="0" /&amp;gt;&lt;br /&gt; &amp;lt;Property ID="j2eeType" Type="string" CaseSensitive="true" MaxLength="32" MinLength="0" /&amp;gt;&lt;br /&gt; &amp;lt;Property ID="ObjectName" Type="string" Key="true" CaseSensitive="true" MaxLength="1024" MinLength="0" /&amp;gt;&lt;br /&gt; &amp;lt;/ClassType&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/ClassTypes&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;RelationshipTypes&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;RelationshipType ID="Microsoft.JEE.WebSphere.6.1.EJB.MonitoredApplicationServerHostsEjbRelationship"&lt;br /&gt; Accessibility="Public" Abstract="false" Base="System!System.Hosting"&amp;gt;&lt;br /&gt; &amp;lt;Source ID="Source" MinCardinality="0" MaxCardinality="2147483647" Type="WebSphere61!Microsoft.JEE.WebSphere.6.1.Monitored.Profile" /&amp;gt;&lt;br /&gt; &amp;lt;Target ID="Target" MinCardinality="0" MaxCardinality="2147483647" Type="Microsoft.JEE.WebSphere.6.1.EJB.Application"/&amp;gt;&lt;br /&gt; &amp;lt;/RelationshipType&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;/RelationshipTypes&amp;gt;&lt;br /&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now, you need to update the discovery class mappings (b/c the class properties should now be part of the class above).&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="cplusplus"&gt; &amp;lt;Discovery ID="Microsoft.JEE.WebSphere.6.1.EJB.Application.Discovery" &lt;br /&gt; Target="WebSphere61!Microsoft.JEE.WebSphere.6.1.Monitored.Profile" Remotable="true" Enabled="true"&amp;gt;&lt;br /&gt; &amp;lt;Category&amp;gt;Discovery&amp;lt;/Category&amp;gt;&lt;br /&gt; &amp;lt;DiscoveryTypes&amp;gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt; &amp;lt;DiscoveryClass TypeID="Microsoft.JEE.WebSphere.6.1.EJB.Application" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt; &amp;lt;DiscoveryRelationship TypeID="Microsoft.JEE.WebSphere.6.1.EJB.MonitoredApplicationServerHostsEjbRelationship" /&amp;gt;&lt;/span&gt;&lt;br /&gt; &amp;lt;/DiscoveryTypes&amp;gt;&lt;br /&gt; &amp;lt;DataSource ID="DS" TypeID="JEE!Microsoft.JEE.Discovery.MBeans.DataSource"&amp;gt;&lt;br /&gt; &amp;lt;ApplicationServerGuid&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/ApplicationServerGuid&amp;gt;&lt;br /&gt; &amp;lt;ComputerName&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/ComputerName&amp;gt;&lt;br /&gt; &amp;lt;Protocol&amp;gt;$Target/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Protocol$&amp;lt;/Protocol&amp;gt;&lt;br /&gt; &amp;lt;Port&amp;gt;$Target/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Port$&amp;lt;/Port&amp;gt;&lt;br /&gt; &amp;lt;BaseURL /&amp;gt;&lt;br /&gt; &amp;lt;JMXQuery&amp;gt;WebSphere:j2eeType=EJBModule,*&amp;lt;/JMXQuery&amp;gt;&lt;br /&gt; &amp;lt;AdditionalArguments&amp;gt;&amp;amp;amp;MaxDepth=0&amp;lt;/AdditionalArguments&amp;gt;&lt;br /&gt; &amp;lt;ReturnMultiplePropertyBags&amp;gt;true&amp;lt;/ReturnMultiplePropertyBags&amp;gt;&lt;br /&gt; &amp;lt;UseAttributesInKeysOfReturnedPropertyBags&amp;gt;false&amp;lt;/UseAttributesInKeysOfReturnedPropertyBags&amp;gt;&lt;br /&gt; &amp;lt;!-- Interval currently set to four hours --&amp;gt;&lt;br /&gt; &amp;lt;IntervalSeconds&amp;gt;14400&amp;lt;/IntervalSeconds&amp;gt;&lt;br /&gt; &amp;lt;TimeoutSeconds&amp;gt;900&amp;lt;/TimeoutSeconds&amp;gt;&lt;br /&gt; &amp;lt;ClassId&amp;gt;$MPElement[Name="&lt;span style="background-color: #ffff00;"&gt;Microsoft.JEE.WebSphere.6.1.EJB.Application&lt;/span&gt;"]$&amp;lt;/ClassId&amp;gt;&lt;br /&gt; &amp;lt;InstanceSettings&amp;gt;&lt;br /&gt; &amp;lt;Settings&amp;gt;&lt;br /&gt; &amp;lt;!-- The following properties are defined for the Application's parent classes --&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="System!System.Entity"]/DisplayName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='/MBeans/javax.management.modelmbean.RequiredModelMBean/objectNameElements/name']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;!-- These properties are for the WebSphere Configuration--&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;!-- The following properties are defined for the Application--&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="&lt;span style="background-color: #ffff00;"&gt;Microsoft.JEE.WebSphere.6.1.EJB.Application&lt;/span&gt;"]/ApplicationName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='/MBeans/javax.management.modelmbean.RequiredModelMBean/objectNameElements/name']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="&lt;span style="background-color: #ffff00;"&gt;Microsoft.JEE.WebSphere.6.1.EJB.Application&lt;/span&gt;"]/j2eeType$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='/MBeans/javax.management.modelmbean.RequiredModelMBean/objectNameElements/j2eeType']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="&lt;span style="background-color: #ffff00;"&gt;Microsoft.JEE.WebSphere.6.1.EJB.Application&lt;/span&gt;"]/ObjectName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='/MBeans/javax.management.modelmbean.RequiredModelMBean/objectName']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;/Settings&amp;gt;&lt;br /&gt; &amp;lt;/InstanceSettings&amp;gt;&lt;br /&gt; &amp;lt;/DataSource&amp;gt;&lt;br /&gt; &amp;lt;/Discovery&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3549683" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-54-96-83/Microsoft.JEE.WebSphere.6.1.EJB.xml" length="13435" type="text/xml" /><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/SCOM+2012/">SCOM 2012</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/BeanSpy/">BeanSpy</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Management+Pack/">Management Pack</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/WebSphere/">WebSphere</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/MBean+JMX+Query/">MBean JMX Query</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/java/">java</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Linux/">Linux</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Windows/">Windows</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/EJB/">EJB</category></item><item><title>Howto: Monitor EJBs with BeanSpy in SCOM 2012 on WebSphere 6.1</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/30/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-6-1.aspx</link><pubDate>Wed, 30 Jan 2013 22:43:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3549347</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3549347</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/30/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-6-1.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/28/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-7-0.aspx"&gt;By simply taking yesterday's post&lt;/a&gt; and applying the match of judicious copy-n-paste methodology: may I present a MP for managing EJBs for WebSphere 6.1.&lt;/p&gt;
&lt;p&gt;All of the caveats regarding support (or rather lack thereof) and this is for information use apply.&amp;nbsp; :)&lt;/p&gt;
&lt;p&gt;Finally, the MP presented uses the debug product key and targets SCOM 2012 SP1; however, by a simple change to the &lt;a href="http://systemcentertech.com/2012/09/24/locating-the-public-key-token-for-a-management-pack/"&gt;reference section for the right key&lt;/a&gt; and adjust the appropriate MP versions this will work with SCOM 2012.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update February 1st 2013: this implementation can be problematic as it limits the ObjectName to 512 characters.&amp;nbsp; Refer to &lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/31/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-6-1-version-2.aspx"&gt;this posting for another implementation that declares a longer ObjectName (key) property&lt;/a&gt;.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3549347" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-54-93-47/Microsoft.JEE.WebSphere.6.1.EJB.xml" length="11349" type="text/xml" /><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Discovery/">Discovery</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/SCOM+2012/">SCOM 2012</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Management+Pack/">Management Pack</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/WebSphere/">WebSphere</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/MBean+JMX+Query/">MBean JMX Query</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Sample/">Sample</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/java/">java</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Unix/">Unix</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/EJB/">EJB</category></item><item><title>Howto: Monitor EJBs with BeanSpy in SCOM 2012 on WebSphere 7.0</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/28/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-7-0.aspx</link><pubDate>Tue, 29 Jan 2013 00:02:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3548890</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3548890</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/28/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-7-0.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/25/howto-monitor-ejbs-with-beanspy-in-scom-2012.aspx"&gt;Similar to my previous posting&lt;/a&gt;, here is a sample management pack for monitoring EJBs on WebSphere 7.0.&amp;nbsp; For an explanation of what is happening, refer to the previous posting (and all of the legal warnings denying responsibility therein).&amp;nbsp; :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Basically, the differences are:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Changed references and class targets to point at WebSphere&lt;/li&gt;
&lt;li&gt;Updated the discovery's JMX Query&lt;/li&gt;
&lt;li&gt;Updated the discovery's "xpath-like" syntax&amp;nbsp;used for string matching to find&amp;nbsp;EJB class information&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3548890" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-54-88-90/Microsoft.JEE.WebSphere.7.0.EJB.xml" length="11343" type="text/xml" /><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/SCOM+2012/">SCOM 2012</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/WebSphere/">WebSphere</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/MBean+JMX+Query/">MBean JMX Query</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/JMX+Store/">JMX Store</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Unix/">Unix</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Windows/">Windows</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/EJB/">EJB</category></item><item><title>Howto: Monitor EJBs with BeanSpy in SCOM 2012 on JBoss 5</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/25/howto-monitor-ejbs-with-beanspy-in-scom-2012.aspx</link><pubDate>Fri, 25 Jan 2013 23:46:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3548478</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3548478</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/25/howto-monitor-ejbs-with-beanspy-in-scom-2012.aspx#comments</comments><description>&lt;p&gt;Out-of-the-box, EJB discovery and monitoring are not supported by the SCOM 2012 JEE MPs (&lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2012/04/18/system-center-operations-manager-scom-2012-released.aspx"&gt;http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2012/04/18/system-center-operations-manager-scom-2012-released.aspx&lt;/a&gt;).&amp;nbsp; That said, there is nothing to preclude a customer to write their own management pack for doing so.&amp;nbsp; In this blog post I will detail how one could do this for JBoss 5.&lt;/p&gt;
&lt;h1&gt;Introduction&lt;/h1&gt;
&lt;p&gt;&lt;br /&gt;&lt;em&gt;Please note that this is provided as an instructional demonstration of the software capabilities and this management pack is not supported by Microsoft.&amp;nbsp; And any other legal disclaimers I may have forgotten.&amp;nbsp; :)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Most anything deployed to an application server (be it Tomcat, JBoss, WebSphere, or WebLogic) is represented as a MBean. The good news is that if it is a MBean, then BeanSpy can find and monitor it!&amp;nbsp; That is the good news.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;The other news (I would not call it bad), is that you need to facilitate this.&lt;/p&gt;
&lt;h1&gt;BeanSpy Output&lt;/h1&gt;
&lt;p&gt;Before you start writing a MP, first let's find the input were going after directly from BeanSpy.&amp;nbsp; On Jboss 5, a query directly BeanSpy to list deployed EJB modules is:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://localhost:8180/BeanSpy/MBeans?JMXQuery=jboss.management.local:j2eeType=EJBModule"&gt;http://localhost:8180/BeanSpy/MBeans?JMXQuery=jboss.management.local:j2eeType=EJBModule&lt;/a&gt;,*&lt;/p&gt;
&lt;p&gt;I know this because I know this.&amp;nbsp; :)&amp;nbsp; If you don't already know what you're looking for, try a more general query and use find (i.e. Control + F on most browsers) to search for EJB to find what you're looking for - such as a specific application name.&amp;nbsp; If all else fails, save the XML and open it in a fancy text editor that does syntax highlighting and code folding.&amp;nbsp; Point being, figure out what exactly you're looking for first and the best JMX query to return that information&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This will give XML that looks like below (note the MBean class returned will vary by Application Server and version of said Application Server):&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="php"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt; &amp;lt;MBeans version="7.3.2106.0"&amp;gt;&lt;br /&gt; &amp;lt;MBean Name="org.jboss.management.j2ee.EJBModule" objectName="jboss.management.local:J2EEApplication=null,J2EEServer=Local,j2eeType=EJBModule,name=profileservice-secured.jar"&amp;gt;&lt;br /&gt; &amp;lt;Properties&amp;gt;&lt;br /&gt; &amp;lt;Property Name="jawsDeploymentDescriptor" type="java.lang.String"/&amp;gt;&lt;br /&gt; &amp;lt;Property Name="eventProvider" type="java.lang.Boolean"&amp;gt;true&amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;Property Name="javaVMs" type="[Ljava.lang.String;"&amp;gt;&lt;br /&gt; &amp;lt;Property Name="javaVMs" index="0"&amp;gt;jboss.management.local:J2EEServer=Local,j2eeType=JVM,name=Oracle Corporation 1.7.0&amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;Property Name="statisticsProvider" type="java.lang.Boolean"&amp;gt;false&amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;objectName type="java.lang.String"&amp;gt;jboss.management.local:J2EEApplication=null,J2EEServer=Local,j2eeType=EJBModule,name=profileservice-secured.jar&amp;lt;/objectName&amp;gt;&lt;br /&gt; &amp;lt;objectNameElements type="objectName"&amp;gt;&lt;br /&gt; &amp;lt;Domain&amp;gt;jboss.management.local&amp;lt;/Domain&amp;gt;&lt;br /&gt; &amp;lt;J2EEApplication&amp;gt;null&amp;lt;/J2EEApplication&amp;gt;&lt;br /&gt; &amp;lt;J2EEServer&amp;gt;Local&amp;lt;/J2EEServer&amp;gt;&lt;br /&gt; &amp;lt;j2eeType&amp;gt;EJBModule&amp;lt;/j2eeType&amp;gt;&lt;br /&gt; &amp;lt;name&amp;gt;profileservice-secured.jar&amp;lt;/name&amp;gt;&lt;br /&gt; &amp;lt;/objectNameElements&amp;gt;&lt;br /&gt; &amp;lt;Property Name="parent" type="java.lang.String"&amp;gt;jboss.management.local:j2eeType=J2EEServer,name=Local&amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;Property Name="cmpDeploymentDescriptor" type="java.lang.String"/&amp;gt;&lt;br /&gt; &amp;lt;Property Name="deploymentDescriptor" type="java.lang.String"&amp;gt;&lt;br /&gt; &amp;amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;ejb-jar&lt;br /&gt; xmlns="http://java.sun.com/xml/ns/javaee"&lt;br /&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee&lt;br /&gt; http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"&lt;br /&gt; version="3.0"&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;display-name&amp;amp;gt;Secured ManagementView&amp;amp;lt;/display-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;enterprise-beans&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;session&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;ejb-name&amp;amp;gt;SecureProfileService&amp;amp;lt;/ejb-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;ejb-class&amp;amp;gt;org.jboss.profileservice.ejb.SecureProfileServiceBean&amp;amp;lt;/ejb-class&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;session-type&amp;amp;gt;Stateless&amp;amp;lt;/session-type&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;resource-ref&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;res-ref-name&amp;amp;gt;profileService&amp;amp;lt;/res-ref-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;res-type&amp;amp;gt;org.jboss.profileservice.spi.ProfileService&amp;amp;lt;/res-type&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;mapped-name&amp;amp;gt;ProfileService&amp;amp;lt;/mapped-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target-class&amp;amp;gt;org.jboss.profileservice.ejb.SecureProfileServiceBean&amp;amp;lt;/injection-target-class&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target-name&amp;amp;gt;delegate&amp;amp;lt;/injection-target-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/injection-target&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/resource-ref&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/session&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;session&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;ejb-name&amp;amp;gt;SecureManagementView&amp;amp;lt;/ejb-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;ejb-class&amp;amp;gt;org.jboss.profileservice.ejb.SecureManagementView&amp;amp;lt;/ejb-class&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;session-type&amp;amp;gt;Stateless&amp;amp;lt;/session-type&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;resource-ref&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;res-ref-name&amp;amp;gt;profileService&amp;amp;lt;/res-ref-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;res-type&amp;amp;gt;org.jboss.profileservice.spi.ProfileService&amp;amp;lt;/res-type&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;mapped-name&amp;amp;gt;ProfileService&amp;amp;lt;/mapped-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target-class&amp;amp;gt;org.jboss.profileservice.ejb.SecureManagementView&amp;amp;lt;/injection-target-class&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target-name&amp;amp;gt;profileService&amp;amp;lt;/injection-target-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/injection-target&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/resource-ref&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/session&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;session&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;ejb-name&amp;amp;gt;SecureDeploymentManager&amp;amp;lt;/ejb-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;ejb-class&amp;amp;gt;org.jboss.profileservice.ejb.SecureDeploymentManager&amp;amp;lt;/ejb-class&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;session-type&amp;amp;gt;Stateless&amp;amp;lt;/session-type&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;resource-ref&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;res-ref-name&amp;amp;gt;profileService&amp;amp;lt;/res-ref-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;res-type&amp;amp;gt;org.jboss.profileservice.spi.ProfileService&amp;amp;lt;/res-type&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;mapped-name&amp;amp;gt;ProfileService&amp;amp;lt;/mapped-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target-class&amp;amp;gt;org.jboss.profileservice.ejb.SecureDeploymentManager&amp;amp;lt;/injection-target-class&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;injection-target-name&amp;amp;gt;profileService&amp;amp;lt;/injection-target-name&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/injection-target&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/resource-ref&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/session&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/enterprise-beans&amp;amp;gt;&lt;br /&gt; &amp;amp;lt;/ejb-jar&amp;amp;gt;&lt;br /&gt; &amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;Property Name="jbossDeploymentDescriptor" type="java.lang.String"/&amp;gt;&lt;br /&gt; &amp;lt;Property Name="stateManageable" type="java.lang.Boolean"&amp;gt;false&amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;Property Name="ejbs" type="[Ljava.lang.String;"/&amp;gt;&lt;br /&gt; &amp;lt;Property Name="server" type="java.lang.String"&amp;gt;unknown server name&amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;Property Name="EventTypes" type="[Ljava.lang.String;"&amp;gt;&lt;br /&gt; &amp;lt;Property Name="EventTypes" index="0"&amp;gt;j2ee.object.created&amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;Property Name="EventTypes" index="1"&amp;gt;j2ee.object.deleted&amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;/Property&amp;gt;&lt;br /&gt; &amp;lt;/Properties&amp;gt;&lt;br /&gt; &amp;lt;/MBean&amp;gt;&lt;br /&gt; &amp;lt;/MBeans&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Management Pack&lt;/h1&gt;
&lt;p&gt;Now that we know what we want to find, we need to write a management pack to find the EJBs.&amp;nbsp; First, we'll declare a class &lt;strong&gt;Microsoft.JEE.JBoss.5.EJB.Application.EAR&lt;/strong&gt; that extends the existing JBoss 5 EAR class:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="php"&gt; &amp;lt;ClassTypes&amp;gt;&lt;br /&gt; &amp;lt;ClassType ID="Microsoft.JEE.JBoss.5.EJB.Application.EAR" &lt;br /&gt; Abstract="false" Accessibility="Public" Hosted="true"&lt;br /&gt; Base="JBoss5!Microsoft.JEE.JBoss.5.Application.EAR" /&amp;gt;&lt;br /&gt; &amp;lt;/ClassTypes&amp;gt;&lt;br /&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, we need a discovery.&amp;nbsp; EJBs live in an application server, so we should target the monitored instance of the JEE applications servers.&amp;nbsp; Depending on the application server, you may be able to target the generic classes.&amp;nbsp; For this article, I will target a specific JBoss 5 class because I do not want this discovery to run against other versions of JBoss.&lt;/p&gt;
&lt;p&gt;The discovery needs to use the query mentioned above:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;strong&gt;jboss.management.local:j2eeType=EJBModule,*&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As listed above, the XML returned from the BeanSpy query needs to be parsed.&amp;nbsp; Depending on what you need to pull out, you could have some fun with XPaths.&amp;nbsp; Luckily, we are promised by underlying datasource that each MBean will be separated into its own XML chunk (so you probably don't need to worry about an instance &amp;amp; more than likely you'll just be parsing one MBean.&lt;/p&gt;
&lt;p&gt;Here is the full discovery:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="php"&gt; &amp;lt;Discovery ID="Microsoft.JEE.JBoss.5.EJB.Application.EAR.Discovery" &lt;br /&gt; Target="JBoss5!Microsoft.JEE.JBoss.5.Monitored.Configuration" &lt;br /&gt; Remotable="true" Enabled="true"&amp;gt;&lt;br /&gt; &amp;lt;Category&amp;gt;Discovery&amp;lt;/Category&amp;gt;&lt;br /&gt; &amp;lt;DiscoveryTypes&amp;gt;&lt;br /&gt; &amp;lt;DiscoveryClass TypeID="Microsoft.JEE.JBoss.5.EJB.Application.EAR" /&amp;gt;&lt;br /&gt; &amp;lt;DiscoveryRelationship TypeID="JEE!Microsoft.JEE.MonitoredApplicationServerHostsApplicationRelationship" /&amp;gt;&lt;br /&gt; &amp;lt;/DiscoveryTypes&amp;gt;&lt;br /&gt; &amp;lt;DataSource ID="DS" TypeID="JEE!Microsoft.JEE.Discovery.MBeans.DataSource"&amp;gt;&lt;br /&gt; &amp;lt;ApplicationServerGuid&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/ApplicationServerGuid&amp;gt;&lt;br /&gt; &amp;lt;ComputerName&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/ComputerName&amp;gt;&lt;br /&gt; &amp;lt;Protocol&amp;gt;$Target/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Protocol$&amp;lt;/Protocol&amp;gt;&lt;br /&gt; &amp;lt;Port&amp;gt;$Target/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Port$&amp;lt;/Port&amp;gt;&lt;br /&gt; &amp;lt;BaseURL /&amp;gt;&lt;br /&gt; &amp;lt;JMXQuery&amp;gt;jboss.management.local:j2eeType=EJBModule,*&amp;lt;/JMXQuery&amp;gt;&lt;br /&gt; &amp;lt;AdditionalArguments&amp;gt;&amp;amp;amp;MaxDepth=0&amp;lt;/AdditionalArguments&amp;gt;&lt;br /&gt; &amp;lt;ReturnMultiplePropertyBags&amp;gt;true&amp;lt;/ReturnMultiplePropertyBags&amp;gt;&lt;br /&gt; &amp;lt;UseAttributesInKeysOfReturnedPropertyBags&amp;gt;false&amp;lt;/UseAttributesInKeysOfReturnedPropertyBags&amp;gt;&lt;br /&gt; &amp;lt;!-- Interval currently set to four hours --&amp;gt;&lt;br /&gt; &amp;lt;IntervalSeconds&amp;gt;14400&amp;lt;/IntervalSeconds&amp;gt;&lt;br /&gt; &amp;lt;TimeoutSeconds&amp;gt;900&amp;lt;/TimeoutSeconds&amp;gt;&lt;br /&gt; &amp;lt;ClassId&amp;gt;$MPElement[Name="Microsoft.JEE.JBoss.5.EJB.Application.EAR"]$&amp;lt;/ClassId&amp;gt;&lt;br /&gt; &amp;lt;InstanceSettings&amp;gt;&lt;br /&gt; &amp;lt;Settings&amp;gt;&lt;br /&gt; &amp;lt;!-- The following properties are defined for the Application's parent classes --&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="System!System.Entity"]/DisplayName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='/MBeans/org.jboss.management.j2ee.EJBModule/objectNameElements/name']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;!-- These properties are for the JBoss Configuration--&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;!-- The following properties are defined for the Application--&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/ApplicationName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='/MBeans/org.jboss.management.j2ee.EJBModule/objectNameElements/name']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/j2eeType$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='/MBeans/org.jboss.management.j2ee.EJBModule/objectNameElements/j2eeType']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/ObjectName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='/MBeans/org.jboss.management.j2ee.EJBModule/objectName']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;/Settings&amp;gt;&lt;br /&gt; &amp;lt;/InstanceSettings&amp;gt;&lt;br /&gt; &amp;lt;/DataSource&amp;gt;&lt;br /&gt; &amp;lt;/Discovery&amp;gt;&lt;br /&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The only interesting piece in the discovery is mapping the object.&amp;nbsp; A relic of how some of the work was done, the "XPath" is slightly different from the actual XML that is sent over.&amp;nbsp; It turns out for several reasons it was necessary to slightly manage the XML returned by the discovery source.&amp;nbsp; Rather than use the short name (MBean), the name attribute of the actual class is used by the logic that creates the individual discovery data items.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="php"&gt; &amp;lt;ClassId&amp;gt;$MPElement[Name="Microsoft.JEE.JBoss.5.EJB.Application.EAR"]$&amp;lt;/ClassId&amp;gt;&lt;br /&gt; &amp;lt;InstanceSettings&amp;gt;&lt;br /&gt; &amp;lt;Settings&amp;gt;&lt;br /&gt; &amp;lt;!-- The following properties are defined for the Application's parent classes --&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="System!System.Entity"]/DisplayName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='&lt;span style="background-color: #ffff00;"&gt;/MBeans/org.jboss.management.j2ee.EJBModule/objectNameElements/name&lt;/span&gt;']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;!-- These properties are for the JBoss Configuration--&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;!-- The following properties are defined for the Application--&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/ApplicationName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='&lt;span style="background-color: #ffff00;"&gt;/MBeans/org.jboss.management.j2ee.EJBModule/objectNameElements/name&lt;/span&gt;']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/j2eeType$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='&lt;span style="background-color: #ffff00;"&gt;/MBeans/org.jboss.management.j2ee.EJBModule/objectNameElements/j2eeType&lt;/span&gt;']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/ObjectName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/Property[@Name='&lt;span style="background-color: #ffff00;"&gt;/MBeans/org.jboss.management.j2ee.EJBModule/objectName&lt;/span&gt;']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;/Settings&amp;gt;&lt;br /&gt; &amp;lt;/InstanceSettings&amp;gt;&lt;br /&gt; &lt;br /&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The trick is to make sure that the XPath matches (see above highlights).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The rest of the management pack is some rote state views and display strings - not too interesting.&amp;nbsp; Since the EJB extends the existing JBoss Application class, EJBs will appear in that state view in addition to the new EJB state view that I created in this management pack.&lt;/p&gt;
&lt;p&gt;As for monitoring, you are welcome to write your own monitors, but one blog post at a time.&amp;nbsp; :)&lt;/p&gt;
&lt;p&gt;For now, I would refer you to using the template wizard to generate some custom monitors (&lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2012/05/30/scomfaq-ch-scom-2012-jee-application-availability-monitor-template.aspx"&gt;http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2012/05/30/scomfaq-ch-scom-2012-jee-application-availability-monitor-template.aspx&lt;/a&gt;).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3548478" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-54-84-78/Microsoft.JEE.JBoss.5.EJB.xml" length="11207" type="text/xml" /><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Discovery/">Discovery</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/SCOM+2012/">SCOM 2012</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/BeanSpy/">BeanSpy</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Management+Pack/">Management Pack</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/MBean+JMX+Query/">MBean JMX Query</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/JBoss/">JBoss</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/java/">java</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/JMX+Store/">JMX Store</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Template+Wizard/">Template Wizard</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/EJB/">EJB</category></item><item><title>Extending Discovery Of Java Applications in SCOM 2012</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/24/extending-discovery-of-java-applications-in-scom-2012.aspx</link><pubDate>Thu, 24 Jan 2013 19:56:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3548183</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3548183</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/24/extending-discovery-of-java-applications-in-scom-2012.aspx#comments</comments><description>&lt;p&gt;The solution to monitoring JEE Application Servers and Applications in SCOM 2012 is a good starting point, but sometimes you may want to do more.&amp;nbsp; The good news is that the structure of theses MPs are extendable and this blog post will detail how to do that.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;For instance, let&amp;rsquo;s suppose that I am a customer with my own Contoso (see &lt;a href="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2012/03/26/sample-jee-application-contoso-order-service.aspx"&gt;http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2012/03/26/sample-jee-application-contoso-order-service.aspx&lt;/a&gt;) application that I want to uniquely identify.&amp;nbsp; There is not a way to change the default JEE discovery exclude certain applications; however, what you can do is create a discovery to create your own extended version of the existing JEE objects.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;For the example below I have written a custom discovery that targets the &lt;strong&gt;Microsoft.JEE.Application&lt;/strong&gt; objects from the &lt;strong&gt;Microsoft.JEE.Library&lt;/strong&gt; MP.&amp;nbsp; The discovery uses a simple condition detection module to filter on the name of the discovered application.&amp;nbsp;The new class can be as simple as this:&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="html"&gt;&amp;lt;ClassType &lt;br /&gt; ID="Contoso.JEE.SampleApplication" &lt;br /&gt; Abstract="false" &lt;br /&gt; Accessibility="Public" Hosted="true"&lt;br /&gt; Base="JEE!Microsoft.JEE.Application" /&amp;gt;&lt;br /&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;The filtering is done in this library module where the &lt;strong&gt;TargetApplicationName&lt;/strong&gt; is the application name that I want to find and &lt;strong&gt;ApplicationName&lt;/strong&gt; is the name as reported from the object found by the existing &lt;strong&gt;Microsoft.JEE&lt;/strong&gt; management packs.&amp;nbsp; There is a discovery that has the hardcode name of the application I want:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="html"&gt; &amp;lt;Discovery ID="Contoso.JEE.CustomOrderService.Discovery" Target="JEE!Microsoft.JEE.Application"&lt;br /&gt; Remotable="true" Enabled="true"&amp;gt;&lt;br /&gt; &amp;lt;Category&amp;gt;Discovery&amp;lt;/Category&amp;gt;&lt;br /&gt; &amp;lt;DiscoveryTypes&amp;gt;&lt;br /&gt; &amp;lt;DiscoveryClass TypeID="Contoso.JEE.SampleApplication" /&amp;gt;&lt;br /&gt; &amp;lt;/DiscoveryTypes&amp;gt;&lt;br /&gt; &amp;lt;DataSource ID="DS" TypeID="Contoso.JEE.SampleApplication.Discovery.DataSource"&amp;gt;&lt;br /&gt; &lt;span style="background-color: #ffff00;"&gt;&amp;lt;ClassId&amp;gt;$MPElement[Name="Contoso.JEE.SampleApplication"]$&amp;lt;/ClassId&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt; &amp;lt;TargetApplicationName&amp;gt;CustomOrderService&amp;lt;/TargetApplicationName&amp;gt;&lt;/span&gt;&lt;br /&gt; &amp;lt;ApplicationName&amp;gt;$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ApplicationName$&amp;lt;/ApplicationName&amp;gt;&lt;br /&gt; &amp;lt;DisplayName&amp;gt;$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ApplicationName$&amp;lt;/DisplayName&amp;gt;&lt;br /&gt; &amp;lt;ObjectName&amp;gt;$Target/Property[Type="JEE!Microsoft.JEE.Application"]/ObjectName$&amp;lt;/ObjectName&amp;gt;&lt;br /&gt; &amp;lt;PrincipalName&amp;gt;$Target/Host/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/PrincipalName&amp;gt;&lt;br /&gt; &amp;lt;Id&amp;gt;$Target/Host/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/Id&amp;gt;&lt;br /&gt; &amp;lt;j2eeType&amp;gt;$Target/Property[Type="JEE!Microsoft.JEE.Application"]/j2eeType$&amp;lt;/j2eeType&amp;gt;&lt;br /&gt; &amp;lt;IntervalSeconds&amp;gt;14400&amp;lt;/IntervalSeconds&amp;gt;&lt;br /&gt; &amp;lt;/DataSource&amp;gt;&lt;br /&gt; &amp;lt;/Discovery&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And the discovery call this module that does the dirty work of filtering.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="html"&gt; &amp;lt;DataSourceModuleType ID="Contoso.JEE.SampleApplication.Discovery.DataSource" Accessibility="Public"&amp;gt;&lt;br /&gt; &amp;lt;Configuration&amp;gt;&lt;br /&gt; &amp;lt;IncludeSchemaTypes&amp;gt;&lt;br /&gt; &amp;lt;SchemaType&amp;gt;System!System.ExpressionEvaluatorSchema&amp;lt;/SchemaType&amp;gt;&lt;br /&gt; &amp;lt;/IncludeSchemaTypes&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="ClassId" type="xsd:string" /&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="TargetApplicationName" type="xsd:string" /&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="ApplicationName" type="xsd:string" /&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="DisplayName" type="xsd:string" /&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="ObjectName" type="xsd:string" /&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="PrincipalName" type="xsd:string" /&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="Id" type="xsd:string" /&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="j2eeType" type="xsd:string" /&amp;gt;&lt;br /&gt; &amp;lt;xsd:element name="IntervalSeconds" type="xsd:integer" /&amp;gt;&lt;br /&gt; &amp;lt;/Configuration&amp;gt;&lt;br /&gt; &amp;lt;OverrideableParameters&amp;gt;&lt;br /&gt; &amp;lt;OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" /&amp;gt;&lt;br /&gt; &amp;lt;/OverrideableParameters&amp;gt;&lt;br /&gt; &amp;lt;ModuleImplementation&amp;gt;&lt;br /&gt; &amp;lt;Composite&amp;gt;&lt;br /&gt; &amp;lt;MemberModules&amp;gt;&lt;br /&gt; &amp;lt;DataSource TypeID="Contoso.SpecializedClass.Discovery.DataSource" ID="Specializer"&amp;gt;&lt;br /&gt; &amp;lt;ClassId&amp;gt;$Config/ClassId$&amp;lt;/ClassId&amp;gt;&lt;br /&gt; &amp;lt;IntervalSeconds&amp;gt;$Config/IntervalSeconds$&amp;lt;/IntervalSeconds&amp;gt;&lt;br /&gt; &amp;lt;Expression&amp;gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt; &amp;lt;RegExExpression&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt; &amp;lt;ValueExpression&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt; &amp;lt;Value&amp;gt;$Config/ApplicationName$&amp;lt;/Value&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt; &amp;lt;/ValueExpression&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt; &amp;lt;Operator&amp;gt;MatchesRegularExpression&amp;lt;/Operator&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt; &amp;lt;Pattern&amp;gt;$Config/TargetApplicationName$&amp;lt;/Pattern&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt; &amp;lt;/RegExExpression&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt; &amp;lt;/Expression&amp;gt;&lt;br /&gt; &amp;lt;InstanceSettings&amp;gt;&lt;br /&gt; &amp;lt;Settings&amp;gt;&lt;br /&gt; &amp;lt;!-- These properties are for the Application Server Instance --&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/Id$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Config/Id$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.ApplicationServer.Instance"]/HostName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Config/PrincipalName$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;!-- The following properties are defined for the Application--&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/ApplicationName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Config/ApplicationName$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/j2eeType$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Config/j2eeType$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;Setting&amp;gt;&lt;br /&gt; &amp;lt;Name&amp;gt;$MPElement[Name="JEE!Microsoft.JEE.Application"]/ObjectName$&amp;lt;/Name&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Config/ObjectName$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/Setting&amp;gt;&lt;br /&gt; &amp;lt;/Settings&amp;gt;&lt;br /&gt; &amp;lt;/InstanceSettings&amp;gt;&lt;br /&gt; &amp;lt;/DataSource&amp;gt;&lt;br /&gt; &amp;lt;/MemberModules&amp;gt;&lt;br /&gt; &amp;lt;Composition&amp;gt;&lt;br /&gt; &amp;lt;Node ID="Specializer" /&amp;gt;&lt;br /&gt; &amp;lt;/Composition&amp;gt;&lt;br /&gt; &amp;lt;/Composite&amp;gt;&lt;br /&gt; &amp;lt;/ModuleImplementation&amp;gt;&lt;br /&gt; &amp;lt;OutputType&amp;gt;System!System.Discovery.Data&amp;lt;/OutputType&amp;gt;&lt;br /&gt; &amp;lt;/DataSourceModuleType&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now that there is a discovery for my specific application, I can write rules specific to my new class.&amp;nbsp; Since this order service that I have already exposes some metrics that I want to a MBean, I&amp;rsquo;ll just write my own rule that will capture this performance data and store it in the Perf Store.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="html"&gt; &amp;lt;Rule ID="Contoso.JEE.SampleApplication.PerformanceData.AverageTransactionTime" Target="Contoso.JEE.SampleApplication"&lt;br /&gt; Enabled="true" Remotable="true"&amp;gt;&lt;br /&gt; &amp;lt;Category&amp;gt;PerformanceCollection&amp;lt;/Category&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;DataSources&amp;gt;&lt;br /&gt; &amp;lt;DataSource ID="DS" TypeID="JEE!Microsoft.JEE.Monitoring.UrlProbe.MBeans.DataSource"&amp;gt;&lt;br /&gt; &amp;lt;ComputerName&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/HostName$&amp;lt;/ComputerName&amp;gt;&lt;br /&gt; &amp;lt;Protocol&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Protocol$&amp;lt;/Protocol&amp;gt;&lt;br /&gt; &amp;lt;Port&amp;gt;$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Port$&amp;lt;/Port&amp;gt;&lt;br /&gt; &amp;lt;BaseURL /&amp;gt;&lt;br /&gt; &amp;lt;JMXQuery&amp;gt;com.contoso:Name=CustomPerformance,*&amp;lt;/JMXQuery&amp;gt;&lt;br /&gt; &amp;lt;AdditionalArguments&amp;gt;&amp;amp;amp;MaxDepth=1&amp;lt;/AdditionalArguments&amp;gt;&lt;br /&gt; &amp;lt;IntervalSeconds&amp;gt;300&amp;lt;/IntervalSeconds&amp;gt;&lt;br /&gt; &amp;lt;TimeoutSeconds&amp;gt;100&amp;lt;/TimeoutSeconds&amp;gt;&lt;br /&gt; &amp;lt;/DataSource&amp;gt;&lt;br /&gt; &amp;lt;/DataSources&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;ConditionDetection TypeID="Performance!System.Performance.DataGenericMapper" ID="PerfMapper"&amp;gt;&lt;br /&gt; &amp;lt;ObjectName&amp;gt;AverageTransactionTime&amp;lt;/ObjectName&amp;gt;&lt;br /&gt; &amp;lt;CounterName&amp;gt;AverageTransactionTime&amp;lt;/CounterName&amp;gt;&lt;br /&gt; &amp;lt;InstanceName /&amp;gt;&lt;br /&gt; &amp;lt;Value&amp;gt;$Data/MBeans/MBean[@Name='com.contoso.ws.CustomPerformance']/Properties/Property[@Name='AverageTransactionTime']$&amp;lt;/Value&amp;gt;&lt;br /&gt; &amp;lt;/ConditionDetection&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;WriteActions&amp;gt;&lt;br /&gt; &amp;lt;WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData"/&amp;gt;&lt;br /&gt; &amp;lt;WriteAction ID="WriteToDW" TypeID="SCDW!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData"/&amp;gt;&lt;br /&gt; &amp;lt;/WriteActions&amp;gt;&lt;br /&gt; &amp;lt;/Rule&amp;gt;&lt;br /&gt; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Finally, this application will appear in the view with all of the rest of the (application server specific) applications (i.e. there is not a new view created for only the Contoso applications.&amp;nbsp;Of course you could do this by simply defining a view&amp;nbsp;that targets your new class.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3548183" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-54-81-83/CustomOrderServiceMonitor.xml" length="59738" type="text/xml" /><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Discovery/">Discovery</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/BeanSpy/">BeanSpy</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Tomcat/">Tomcat</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Management+Pack/">Management Pack</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/JBoss/">JBoss</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/WebLogic/">WebLogic</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Sample/">Sample</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Contoso/">Contoso</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/java/">java</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/JMX+Store/">JMX Store</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Workaround/">Workaround</category></item><item><title>BeanSpy: WebLogic Application Server JMXQuery to list deployed applications</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/22/beanspy-weblogic-application-server.aspx</link><pubDate>Tue, 22 Jan 2013 22:24:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3547631</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3547631</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/22/beanspy-weblogic-application-server.aspx#comments</comments><description>&lt;p&gt;If you are running WebLogic, here are a few quick steps to validating the BeanSpy installation.&lt;/p&gt;
&lt;p&gt;Once you have deployed BeanSpy to a web application server, the next step is to see that it works.&amp;nbsp; While look at the /Stats or /Stats/Info is a nice cross-platform solution, sometimes you want to know what is running on your specific application server.&lt;/p&gt;
&lt;p&gt;As of this writing, the supported versions of WebLogic 10gR3 and 11gR1.&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://contoso:7001/BeanSpy/MBeans?JMXQuery=com.bea:Type=AppDeployment,*"&gt;http://contoso:7001/BeanSpy/MBeans?JMXQuery=com.bea:Type=AppDeployment,*&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note: adjust hostname and port respectively&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Finally, another quick test is to hit the previously mentioned Stats or Stats/Info pages for JVM information.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://contoso:7001/BeanSpy/Stats"&gt;http://contoso:7001/BeanSpy/Stats&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://localhost:8080/BeanSpy/Stats/Info"&gt;http://contoso:7001/BeanSpy/Stats/Info&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, repeat this process for each admin &lt;em&gt;&lt;strong&gt;AND &lt;/strong&gt;&lt;/em&gt;managed server where BeanSpy is deployed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3547631" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/SCOM+2012/">SCOM 2012</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/BeanSpy/">BeanSpy</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/WebLogic/">WebLogic</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Linux/">Linux</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Unix/">Unix</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Windows/">Windows</category></item><item><title>BeanSpy: JBoss Application Server JMXQuery to list deployed applications</title><link>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/22/beanspy-jboss-application-server-jmxquery-to-list-deployed-applications.aspx</link><pubDate>Tue, 22 Jan 2013 22:17:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3547627</guid><dc:creator>Christopher Crammond</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/random_happy_dev_thoughts/rsscomments.aspx?WeblogPostID=3547627</wfw:commentRss><comments>http://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/22/beanspy-jboss-application-server-jmxquery-to-list-deployed-applications.aspx#comments</comments><description>&lt;p&gt;IF you are running JBoss, here are a few quick steps to validating the BeanSpy installation.&lt;/p&gt;
&lt;p&gt;Once you havedeployed BeanSpy to a web application server, the next step is to see that it works.&amp;nbsp; While look at the /Stats or /Stats/Info is a nice cross-platform solution, sometimes you want to know what is running on your specific application server.&lt;/p&gt;
&lt;p&gt;As of this writing, the supported versions of JBoss Application Server are 4, 5, &amp;amp; 6.&amp;nbsp; JBoss allows users to deploy applications in both EAR and WAR formats.&amp;nbsp; The EAR files will appear as J2EEApplications, while the WAR files will appear as WebModules.&amp;nbsp; The respective queries are below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://localhost:8080/BeanSpy/MBeans/jboss.management.local:j2eeType=J2EEApplication,*"&gt;http://localhost:8080/BeanSpy/MBeans?JMXQuery=jboss.management.local:j2eeType=J2EEApplication,*&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://localhost:8080/BeanSpy/MBeans/jboss.management.local:J2EEApplication=null,j2eeType=WebModule,*"&gt;http://localhost:8080/BeanSpy/MBeans?JMXQuery=jboss.management.local:J2EEApplication=null,j2eeType=WebModule,*&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note: adjust hostname and port respectively&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Finally, another quick test is to hit the previously mentioned Stats or Stats/Info pages for JVM information.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://localhost:8080/BeanSpy/Stats"&gt;http://localhost:8080/BeanSpy/Stats&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://localhost:8080/BeanSpy/Stats/Info"&gt;http://localhost:8080/BeanSpy/Stats/Info&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3547627" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Discovery/">Discovery</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/SCOM+2012/">SCOM 2012</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/BeanSpy/">BeanSpy</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/JBoss/">JBoss</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Availability/">Availability</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Unix/">Unix</category><category domain="http://blogs.technet.com/b/random_happy_dev_thoughts/archive/tags/Windows/">Windows</category></item></channel></rss>