Sunday, 17 November 2013

twiddle for WildFly

The JMX-client twiddle-standalone has been adapted for use with JBoss AS7 / WildFly. Go get it at https://github.com/swesource/twiddle-standalone! It now supports the remoting-jmx protocol.

Thursday, 8 November 2012

New Relic Agent in JBoss AS7

New Relic is a company with a hot new cloud based performance and monitoring service.
Without having performed a deeper evaluation, I must still say that it looks quite impressive and has a clean and very nice UI.
As you sign up for their service you get to download a zip with the New Relic Agent. For a Java-environment, it contains e g some JARs, configuration files and a README.txt explaining how to run the bundled installer.
If you're running JBoss AS7 you are currently (this will certainly be amended) a bit on your own though. But don't despair (or wait in wain)! The solution is quite simple. Just follow steps below and and you're up and monitoring your apps in no time.

Note: This has successfully been tested using JBoss AS7.1.2.Final on OSX 10.8.2 with Java SE 1.6.0_37.

1. create the directory structure
$JBOSS_HOME/module/com/newrelic/agent/main
where JBOSS_HOME is the root install directory of your JBoss AS7 distribution. 

2. add a file named module.xml with the following content to the directory main from 1.
<?xml version="1.0" encoding="UTF-8">
<module xmlns="urn:jboss:module:1.0" name="com.newrelic.agent">
  <resources>
    <resource-root path="newrelic.jar"/>
    <!-- Insert resources here -->
  </resources>
</module>

3. from the downloaded zip, copy the file newrelic.jar to the directory main from 1.
This is the New Relic Agent.

4. from the downloaded zip, copy the file newrelic.yml to the directory main from 1.
This is the base configuration for the New Relic Agent.

5. add the following lines th the JBoss AS startup script (e g) $JBOSS_HOME/bin/standalone.sh

JBOSS_MODULES_SYSTEM_PKGS="$JBOSS_MODULES_SYSTEM_PKGS,com.newrelic.agent"
JAVA_OPTS="$JAVA_OPTS -javaagent:<path>/newrelic.jar"
Make sure to change the <path> to where the newrelic.jar is located - it should be in the directory in 1.


6. start JBoss AS with (in the simplest form) e g
$JBOSS_HOME/bin/standalone.sh

7. deploy you app (ear/war etc) to JBoss AS7

8. Look at https://rpm.newrelic.com/ how your app is discovered - it might take a few minutes - and then how it behaves. Configure, monitor, set alerts & notifications, etc.

Nice!

Saturday, 11 August 2012

HermesJMS setup for HornetQ

The amount of free UI-based client software for the JBoss HornetQ messaging server/service is quite limited. One of the few and perhaps the best in this area is HermesJMS.
A simple documentation and various hints (community entries, blogposts etc) around the Internet for setting up HermesJMS with HornetQ do exist, but none are (IMHO) as straightforward and complete as they could be. 
To remedy this; here is a complete (?) step-by-step instruction to setup HermesJMS with HornetQ .
This setup has been validated on...
  • HermesJMS 1.15 on OSX 10.7, OSX 10.8 and Windows 8
  • HornetQ 2.2.5.Final (standalone), 2.2.14.Final (standalone), 2.3.0.CR1 (standalone), 2.3.0.Final (standalone) and JBoss AS 6.1.0.Final on both OSX 10.7, OSX 10.8, Ubuntu and RHEL
...all using Java SE 6.

Connecting to HornetQ from HermesJMS

To view the contents of topics/queues in a HornetQ instance, a session must be setup. To view various configuration data exposed by JMX from a HornetQ instance, a context must be setup.

Setup a session

Right-click the sessions node in the tree pane and select New -> New Session...
In the now showing Preferences window, select the Providers tab
Right-click and select Add Group
Give the group a name – e g HornetQ
For the new group, right-click Library and select Add JAR(s).
Select the following JARs – one at time. After a JAR is selected also click Scan. After all JARs are selected click Apply.
(for JBoss AS 6 in $JBOSS_HOME/client)
(for HornetQ 2.2.x.Final standalone in $HORNETQ_HOME/lib)
  • hornetq-core-client.jar
  • hornetq-jms-client.jar
  • jnp-client.jar
  • netty.jar
  • jboss-logging.jar (only needed for JBoss AS 6!)
  • hornetq-commons.jar (only needed as of HornerQ 2.3.0.x!)
Select the Sessions tab in the Preferences window.
Give the Session a name in the drop-down menu– e g HornetQ-Session - and click Apply.
As Plug In, select the HornetQ plugin from the drop-down (you might need to select HornetQ from the loader drop-down first).
Right-click in the Property-Value-pane. 
Select Add property. A line is now available. 
Click on it in the  Property-column and select jmxUrl
On the same line, in the Value-column, select it by double-clicking and enter the value service:jmx:rmi:///jndi/rmi://localhost:6000/jmxconnector
Note: adjust the path (hostname and port) as needed.
For the Connection Factory, select hermes.JNDIQueueConnectionFactory from the Class-drop-down and HornetQ (earlier created in the Providers tab) from the Loader-drop-down.
Right-click in the Property-Value-pane. 
Select Add property. A line is now available. 
Enter the following Property-Value-pairs.
  • binding - ConnectionFactory
  • initialContextFactory - org.jnp.interfaces.NamingContextFactory
  • providerURL - jnp://localhost:1099
  • urlPkgPrefixes - org.jboss.naming:org.jnp.interfaces
Note: adjust path (hostname) for providerURL as needed. 
It can sometimes be cumbersome to get values to "stick" during configuration. If you encounter some error, re-visit your configurations and make sure all(!) values are properly set before moving on. If they are not – try again! Setting them one-by-one clicking Apply and Ok and saving the configuration between each usually works.

Setup a context

Right-click the contexts node in the tree pane and select New -> New Context...
Give the session a name – e g HornetQ-Context.
In the now showing JNDI InitialContext window, set the following property-valiue-pairs:
  • loader - HornetQ
  • initialContextFactory - org.jnp.interfaces.NamingContextFactory
  • providerURL - jnp://localhost:1099
  • urlPkgPrefixes org.jboss.naming:org.jnp.interfaces
That should do it. Enjoy!