Red Hat Training

A Red Hat training course is available for Red Hat JBoss Operations Network

3.1.2 Release Notes

JBoss Operations Network 3.1.2

for 3.1.2 updates to JBoss Operations Network

Ella Deon Lackey

January 23, 2013


These release notes contain important information about new features, known issues, and other technical notes available at the time that JBoss Operations Network 3.1.2 was released.
JBoss Operations Network 3.1.2 is a bug fix release which addresses numerous issues from JBoss ON 3.1.

1. Notable Changes in 3.1.2

While JBoss ON 3.1.2 is primarily a bug fix release, there have been some changes in JBoss ON functionality related to those bug fixes and that address recent security updates.

1.1. New: Java 7 Support

Java 7 support is introduced in JBoss ON 3.1.2. This means that both the server and the agent can be run using the Java 7 JDK or JRE. Both Oracle Java and OpenJDK Java are supported.

1.2. Deprecated: Microsoft IIS Resource Support

Microsoft Internet Informatin Services (IIS) 6 is currently supported as a resource which can be discovered and managed by JBoss ON. However, support for this resource type is deprecated in JBoss ON 3.1.2, meaning that its use is not recommended. The IIS agent plug-in will be removed in a future release of JBoss ON.
While the IIS plug-in is deprecated in JBoss ON 3.1.2, support for the IIS plug-in will remain in effect for the support lifetime of JBoss ON 3.x.

1.3. Changed: JBoss EAP 5 Connection Available Metric Disabled by Default

The "Connection Available?" trait for connection factories and datasources shows whether the managed resource could connect to the underlying data provider successfully. This metric was previously enabled by default and listed as a summary trait for JBoss Enterprise Application Platform 5 resources.
However, with most EAP 5 configuration, the test connection would cause security errors to be recorded in the EAP 5 logs. The test attempted to authenticate to a security object which had no user or role properties file defined and security context validation checks failed.
This trait is now disabled by default to prevent spurious security object errors from being listed in the EAP 5 log. This metric can be re-enabled if required for alerting or other monitoring tasks.
This change to the "Connection Available?" trait only affects EAP 5 resources.

1.4. Changed: Content Repository Password Storage

Password obfuscation was introduced in JBoss Operations Network 3.1 for stored credentials used to access content providers, including the credentials used to access the Red Hat Customer Portal (a default repository in JBoss ON). However, there was a problem with the way that passwords were decoded when accessing the content repository. In some cases, a valid password was not properly decoded, so connecting to the patch repository or another content repository failed.
This issue was partially addressed in JBoss ON 3.1.1, and was fixed in JBoss ON 3.1.2.
Any stored credentials for an existing content repository — including the JBoss feeds on the Customer Portal — must be updated. The fix for this issue implements a new way to hash, store, and retrieve the obfuscated password. Existing passwords must be reset in order to apply the new obfuscation method.

1.5. Changed: SNMP and Response Time Binaries Are Only Available for Apache 2.2

In previous versions of JBoss ON, binaries were included for SNMP monitoring (mod_snmp) and response time monitoring (mod_rt) for Apache 1.3, 2.0, and 2.2.
Beginning with JBoss ON 3.1.2, SNMP binaries will only be included for Apache 2.2 for Red Hat Enterprise Linux and Windows platforms.

1.6. Security Fix: Updated GWT Version for Cross-Site Scripting Vulnerability

A potential cross-site scripting (XSS) vulnerability was detected in the Google Web Toolkit 2.4, which was used in the JBoss ON web UI. JBoss ON 3.1.2 upgrades to GWT 2.5.0, which redresses that security vulnerability.
This update addresses CVE-2012-5920.

2. JBoss Operations Network Prerequisites and Basic Installation

2.1. Software and Hardware Requirements

The list of supported platforms for JBoss Operations Network are listed at
Regardless of the server or database platform, there are certain minimum requirements that must be met to install the JBoss ON server and its associated database.

Table 1. Recommended Minimum Hardware

Memory 2 GB
Installation Directory Storage[a] 10 GB
Temporary Directory Storage 10 GB
[a] The server runs as a system user. Make sure that any system limits on user memory are set high enough to accommodate the JBoss ON server and all its data.

2.2. Installing JBoss Operations Network 3.1.2

The Installation Guide has more information on configuration databases for the JBoss ON server, upgrading servers, and other installation information. This is a quick summary of performing an initial installation.
  1. Set up a database named rhqadmin and a database user named rhqadmin. Make sure the database user has adequate permissions to perform operations on the JBoss ON database.
  2. Stop any currently running JBoss ON instances.
    serverRoot/jon-server-3.1.2.GA/bin/ stop
    If the new JBoss ON server will use a database that existing JBoss ON instances are also using, then all of the existing JBoss ON instances have to be stopped. Otherwise, the installer will hang when it tries to contact the database and the database is unavailable because it is in use by another JBoss ON server.
  3. Download the server packages from the Red Hat Customer Portal.
    1. Open the Downloads tab in the top menu, and click the Downloads link under the JBoss Enterprise Middleware section.
    2. In the Product field, select the JBoss Operations Network product.
    3. Set the version to 3.1.2.
    4. Click the Download link for the base distribution and save the package to the appropriate location on the local system.
  4. Unzip the server distribution to the directory where it will be executed from. For example:
    cd /opt
    This creates a jon-server-3.1.2.GA/ directory in your chosen installation root.
  5. Run the JBoss ON server:
    serverRoot/jon-server-3.1.2.GA/bin/ start
  6. Open the server UI, which initially displays the JBoss ON server installer.
  7. Clicking the Click here to continue the installation link brings you to the main installer page.
  8. Go through the installer and fill in the information. Advanced settings can be exposed in the form.
    The main installer page appears different depending on the database settings.
  9. Install any additional agent plug-ins. Plug-in packs are available for all JBoss products:
    • Enterprise Application Platform (EAP)
    • Enterprise Business Rules Management System (BRMS)
    • Data Grid (JDG)
    • Enterprise Data Services Platform (EDS-P)
    • Enterprise Portal Platform (EPP)
    • SOA Platform (SOA-P)
    To install a plug-in pack, extract the JAR files and copy them into the JBoss ON server deployment directory, plugins/:
    [root@server ~]# cd /tmp
    [root@server ~]# unzip
    [root@server ~]# cp jon-plugin-pack-agent_plugin_name/*.jar /opt/jon/jon-server-3.1.2.GA/plugins
    The server will detect and deploy the new plug-ins after a couple of minutes.

3. Fixed Bugs in JBoss Operations Network 3.1.2

These bugs have been fixed in JBoss Operations Network 3.1.2. For a complete list of all issues addressed in JBoss Operations Network 3.1.2, search Bugzilla for bugs with a target of JBoss ON 3.1.2.

Table 2. JBoss ON 3.1.2 Fixed Bugs

Bug Number Component Description
Bugzilla 811245 Agent If both an EAP 6 server and a JDG server were running on the same system, the EAP 6 child resources were detected and added as (unavailable) child resources of the JDG instance.
Bugzilla 818522 Agent It could take several minutes to be able to detect a child resource on a JBoss EAP 6 server.
Bugzilla 838153 Agent If resource plug-ins were deleted when resources of that type were in the inventory, then an agent running in the background on a system was stopped and had errors when restarting.
Bugzilla 869716 Agent If the availability metric were enabled or disabled, the change was not implemented by the agent, so the availability metric would continue to be collected (or not collected) according to its previous state. The change would only be picked up if the agent's data were purged and reloaded.
Bugzilla 876656 Agent If the parent process for an EAP instance was similar to a system service (such as an init script) or was executed as root rather than being started by the run script, then discovery of the EAP instance failed with the error java.lang.StringIndexOutOfBoundsException: String index out of range: 0.
Bugzilla 876665 Agent If there were a large number of metrics scheduled, some metrics would be delayed until the next collection interval. With a large enough number of scheduled metrics, some metrics could essentially be postponed indefinitely, without ever being collected.
Bugzilla 861237 CLI Attempting to run the ResourceManager.getLiveResourceAvailability method from the CLI failed with the exception org.hibernate.PersistentObjectException: detached entity passed to persist.
Bugzilla 864870 CLI A user who did not have the required MANAGE_DRIFT permission could still create a drift definition using the CLI.
Bugzilla 876479 CLI Attempting to change a metric collection interval through the CLI failed silently. The operation appeared to complete successfully, but the schedule was not updated.
Bugzilla 875845 Configuration Stored obfuscated passwords, such as those used to access content repositories, were improperly decrypted. This caused attempts to access content providers to fail.
Bugzilla 826736 Core Server The UI would allow resource types marked as a singleton to have multiple instances created.
Bugzilla 864259 Core Server A call-time metric can use a regular expression to limit the destinations which satisfy the condition. If the regular expression was invalid, then the entire condition cache for the agent was reloaded and then failed with the error 12:06:52,005 ERROR [AlertConditionCacheCoordinator] Error loading cache for agent[id=10001] java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 2 .**.*.
Bugzilla 797325 Database, Alerts In Oracle, the alert notification table is created with the NOLOGGING option. This means that users are required to review the alert notification configuration manually for every alert to verify that the configuration is correct.
Bugzilla 878246 High Availability, Alerts When an alert definition has multiple conditions set, the server keeps a cache of when a resource hits that condition. Only when all conditions are met is an alert issued. With high availability, some conditions — particularly for availability, but also for operation and configuration changes — were not properly propogated among all servers. This meant that the alert caches on the individual servers could be out of date, causing alert notifications to be sent improperly based on old data or not to be sent because the server was not aware that all conditions had been met.
Bugzilla 870449 Installer If the server was configured to run over SSL at the time it was installed, then it improperly attempted to start on the agent communication port of 16363 rather than the configured server standard port of 7080 or secure port of 7443.
Bugzilla 845700 Inventory A plug-in cannot be deleted if resources of the type defined by the plug-in are in the inventory. An improper query in the validation improperly matched other resources types and prevent a plug-in from being purged, even though no resources of the type defined in the plug-in were actually in the inventory.
Bugzilla 869063 Inventory An agent plug-in can be deleted from the server even if resources of its defined types are still in the inventory, but that plug-in cannot then be purged. However, there was no indication of why certain plug-ins failed to be purged, and the plug-in remained installed and active.
Bugzilla 859417 Monitoring, Plug-ins (EAP 5) The "Connection Available?" trait for connection factories and datasources shows whether JBoss ON could connect to the underlying data provider successfully. The test connection attempted to authenticate to a security object which had no user or role properties file defined and security context validation checks failed. This trait is now disabled by default.
Bugzilla 870561 Monitoring The peak and low values for a metric were taken from the (compressed) average values over a time period rather than the true maximum and minimum recorded values.
Bugzilla 871610 Plug-ins Some JMX thread leaks were fixed.
Bugzilla 687992 Plug-ins (Apache) The httpd process was not discovered if the /etc/httpd file did not exist.
Bugzilla 864255 Plug-ins (Apache) The SNMP ping time was hard-coded to a very low value (50ms), which made the attempt to ping Apache fail fairly frequently. The default ping time has been increased and the ping time itself is now a configurable setting.
Bugzilla 850841 Plug-ins (BRMS) BRMS 5.1 applications were discovered fine, but BRMS 5.2 and 5.3 applications were not discovered automatically by the BRMS plug-in. The applications had to be added manually as child resources.
Bugzilla 812749 Plug-ins (EAP 6) Bundle provisioning is only available for EAP 6 standalone servers. Standalone servers use a filesystem-based deployment directory, which is used by the bundle system. Domain resources use a different, distributed style of deployment. The domain style of content distribution is not supported for bundles.
Bugzilla 855925 Plug-ins (EAP 6) Attempting to download content from an EAP 6 resource using the retrieveBackingContent method in the CLI failed to retrieve the content. The server recorded the error java.lang.RuntimeException: Unable to retrieve package bits for resource: 14871 and package: 10241.
Bugzilla 856110 and Bugzilla 862011 Plug-ins (EAP 6), CLI After creating a deployment on an EAP 6 domain using the CLI, attempting to update the deployment failed with the exception java.lang.IllegalArgumentException: Parameters for [promote] on Resource of type [DomainDeployment] are not valid: [Required property 'server-group' was not set in Configuration[id=0].].
Bugzilla 856186 Plug-ins (EAP 6) When creating a content-backed resource through the CLI, no filename was explicitly assigned to the package when it was uploaded, but a filename was required for the content to be successfully deployed to an EAP 6 resource. The dependency on an explicity filename for content-backed resources has been removed from the EAP 6 plug-in.
Bugzilla 857189 Plug-ins (EAP 6) If the transation timed out while installing the EAP 6 agent plug-in to the server, then the plug-in could be partially deployed to the agent. This would cause agent to record errors such as The Agent most likely has a plugin named 'JBossAS7' installed that is not installed on the Server. Resource will be ignored... when any resources defined by the EAP 6 plug-in were discovered.
Bugzilla 857423 Plug-ins (EAP 6) Initiating a shut down operation a stopped EAP instance through JMX results in a (proper) failure message, while attempting to shut down a stopped EAP instance using the script shows an incorrect success message.
Bugzilla 889628 Plug-ins (EAP 6) If an EAP 6 instance was started as a Windows service, the instance could not be discovered. The agent logs recorded the exception Discovery of a JBossAS7 Host Controller Resource failed for process: pid=[1904], name=[java], ppid=[2496]. java.lang.ArrayIndexOutOfBoundsException: 2.
Bugzilla 785783 Plug-ins (EDS) The View VDB Requests did not show any results in the JBoss ON UI. This plug-in has been fixed so that it properly returns the session ID and executed SQL query for the operations on the EDS server.
Bugzilla 861434 Plug-ins (EDS) When executing an operation on an EDS resource through JBoss ON, a NoSuchMethodException was thrown because of a change in the getPropertyDefinitions() method.
Bugzilla 856374 Plug-ins (JMX) If the process command line did not include the main class name for the JMX resource, then the discovery process would fail with the error Unsupported key type: Legacy.
Bugzilla 871606 Plug-ins (Script) The script plug-in can be configured to use a regular expression to check for log output. If the output was empty for some reason, the resource was erroneously considered to be down.
Bugzilla 845277 UI The metric graphs on the dashboard wrongly display just the graph numbers in Internet Explorer, rather than the graph itself.
Bugzilla 865166 UI If a resource was only partially removed — such as the resource was uninventoried but the server was shut down before the process completed — then there was a globally uncaught exception in the Inventory pages because a resource with a null availability state could not be loaded. This prevented the affected Inventory page from loading.

4. Known Issues in JBoss Operations Network 3.1.2

This section contains a subset of the known issues at the time that JBoss Operations Network 3.1.2 was released. When possible, workarounds are provided.

4.1. Upgrade and Installation

When upgrading the server and installed JBoss plug-ins, there may be an error in the logs that one of the plug-in JAR files was corrupted:
2012-08-28 10:31:36,473 ERROR [org.rhq.enterprise.server.core.plugin.PluginDeploymentScanner] Scan failed. Cause: java.lang.Exception:File [/home/jon/jon-server-3.1.0.GA/jbossas/server/default/deploy/rhq.ear/rhq-downloads/rhq-plugins/hornetq-jopr-plugin-2.0.0.Final.jar] is not a valid jarfile -  it is either corrupted or file has not been fully written yet.
This appears to happen if there is an EAP instance in the inventory and several different JBoss plug-ins are installed, though it may occur in other situations.
That error prevents the other updated plug-ins deployed in the JBoss ON server's plugins/ directory from being picked up.
If that error occurs, simply restart the JBoss ON server again. All of the plug-ins will be successfully deployed after restarting another time.
If the installer is not bound to when setting up a server, then it does not set all of the required connection properties. Specifically, the installer does not set the java.rmi.server.hostname parameter to the real value, and it uses the default of This parameter must be set to the real IP address of the server by manually editing the file.
Automatic upgrades of agents on Windows appear to fail. Two conditions must be true for automatic upgrade of agents to work on Windows:
  • The agent must be installed and running as a Windows service.
  • No Windows Explorer window can be open to any agent subdirectory. Windows sets a lock on directories when they are open, which blocks the upgrade process.
When starting a server while agents are running, the server may log servlet errors in the logs. This is because the remoting (communications) classes are loaded early in the startup sequence, before the server is completely started. This causes some communications interruptions until the server is completely started. These errors can be ignored.
If a JBoss ON server was added to the resource inventory, the old JBoss ON server resource must be deleted from the inventory after upgrade. The old resource entry is unusable after upgrade.
Null pointer exceptions for the org.apache.catalina.connector.CoyoteAdapter service are returned when the JBoss ON 3.1.2 server is first installed. These errors are harmless and can be ignored. Installation will complete successfully, and both the server and the GUI will start and run properly.
The installer shows non-replaced {} properties.

4.2. Server

On Windows, the server can hang while shutting down. This can take several minutes to stop the server process, or the java.exe process may need to be killed manually. If the process is stopped manually, then there is the risk of a memory leak since the process did not stop cleanly.
The password mechanism in the server installer doesn't properly hash Unicode characters. The Unicode characters are translated into the HTML entities, and then the HTML characters are hashed and stored as the password.
For example, the string 你好 is treated as the string 你好 in the installer, and the second string is the one that is hashed and stored in the file.
After configuring the server, but before logging in, manually update the password in the file:
  1. Manually generate a hashed password based on the Unicode password:
    serverRoot/jon-server-3.1.2.GA/bin/ 你好
    Encoded password: 68f725778bb36d3b
  2. Replace the database password value with the new hashed password.

4.3. Agents

The agent command prompt should accept the long name of arguments with an equals sign between the argument and given value. For example:
discovery --resourceType="JBossAS Server"
However, the command fails with an equals sign and prints the help output for the agent command.
To work around this, use either the long name or short name of the command argument with a space between the argument and the given value. For example:
discovery --resourceType "JBossAS Server"
discovery -r "JBossAS Server"
Attempting to use the config import command in the agent command prompt fails with an InvalidPreferencesFormatException exception.
org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 41; Document root
element "preferences", must match DOCTYPE root "null".
The JVM can sometimes cause the agent to crash when Augeas is running.
A fatal error has been detected by the Java Runtime Environment
The agent uses Sigar libraries by default, but Sigar is not compatible on all operating systems. To avoid using Sigar, the agent can be started with the --nonative argument. However, the agent process on some systems — this has been observed on Suse 10.x — ignores the --nonative argument and attempts to start and load Sigar. Loading the Sigar libraries on an incompatible operating system causes the agent to fail to start, with this error:
A fatal error has been detected by the Java Runtime Environment...

4.4. Databases

The agent assumes that PostgreSQL uses a default password. If a different password is used, the PostgreSQL resource is shown as unavailable in the UI even if it is running.

4.5. Groups

A dynagroup definition with a short recalculation interval (less than two minutes) can cause duplicate groups to be created.
Changing the recursive setting on a group disassociates the group from any roles it was (previously) associated with.

4.6. Provisioning

Hot deployment fails if the file changes during provisioning.
If a bundle is being deployed in a hot deployment and one of the underlying bundle files, like a WAR or JAR, is changed while the bundle is being uploaded, then provisioning will fail.
The Java utilities library ( included for the bundling system does not support symbolic links. Therefore, bundle recipes and configuration files cannot use symlinks.
Symlinks may be an issue for an application server (such as EAP or EPP) which was installed initially from an RPM and then compressed to be used in a bundle. The RPMs available from Red Hat Network contain operating system-specific symlinks which would cause failures during provisioning.
If it is necessary to reference shared libraries or other files (which would normally be referenced with a symlink), then include the required libraries in an archive with the bundle and use an Ant task to extract the files when deploying the bundle. For example:
<untar src="abc.tar.gz" compression="gzip" dest="somedirectory"/>
The <rhq:system-service> Ant tag only works on Red Hat Enterprise Linux systems. Using the tag and then deploying the bundle to other operating systems causes the Ant task to fail to operate and can cause the deployment to fail.

4.7. Content and Repositories

A repository can only be used for one resource, the one it was initially defined for.
On Oracle databases, attempting to delete a package immediately after adding it to a repository fails.
Attempting to delete a repository with a space in the name throws an exception and the deletion fails with SQL errors. A SQLGrammarException is thrown in the UI:
Failed to delete packages: [I@7d7cec2f from repository: 10051 Error: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
In the server log, it shows a SQL error and the message ORA-00920:
2012-11-15 14:49:19,381 WARN  [org.hibernate.util.JDBCExceptionReporter] SQL Error: 920, SQLState: 42000
2012-11-15 14:49:19,382 ERROR [org.hibernate.util.JDBCExceptionReporter] ORA-00920: invalid relational operator
Deploying WARs from a content repository is not supported. WARs and EARs should be deployed using bundles.
Deploying an exploded archive on JBoss EAP 4 results in deploying a zipped archive, which makes the deployed application unavailable.

4.8. Remote API and the CLI

JDK 7 includes a different version of Rhino, so that native arrays implement the Collection interfaces. This is different than how the version of Rhino in JDK 6 implemented native arrays.
One of the side effects of this is that the assertEquals() method in the CLI does not properly handle native arrays (meaning, arrays created through a CLI script rather than provided by JBoss ON).
For example, this assert call works using JDK 6:
a = []
b = []

assertEquals(a, b)
However, it fails when using the CLI with JDK 7:
javax.script.ScriptException: The choice of Java constructor assertEquals matching JavaScript argument types (object,object) is ambiguous; candidate constructors are: 
    void assertEquals(java.util.Collection,java.util.Collection)
    void assertEquals(java.lang.Object[],java.lang.Object[]) (<Unknown source>#1) in <Unknown source> at line number 1
To work around this error, explicitly create a java.util array for the assertEquals() call.
a = []
b = []
assertEquals(new java.util.ArrayList(a), new java.util.ArrayList(b))
ResourceFactoryManager does not throw any exceptions when attempting to create duplicate or invalid resources in the CLI.
The JBoss ON remote API cannot be used to connect to the JBoss ON server when the client is running inside an application server. For example, the remote API cannot be run from a client inside an EAP instance; it fails with errors like the following:
Caused by: java.lang.IllegalArgumentException: interface
org.rhq.enterprise.server.auth.SubjectManagerRemote is not visible from class
at java.lang.reflect.Proxy.getProxyClass(
at java.lang.reflect.Proxy.newProxyInstance(

4.9. UI

Problems with Sessions and Multiple Tabs
If there are multiple tabs open to the JBoss ON UI and one of those sessions times out, then the other tabs will register errors. This can also occur if multiple people are logged into JBoss ON as the same user.
Searching for a resource with a backslash (\) in the name returned no results, even if the resource exists.
If a browser has an odd row height set, a narrow window width, or a large font size, then there can be problems rendering results in a list of resources. This can cause a paging exception to be returned, java.lang.IllegalArgumentException: PageList was passed an empty collection but 'totalSize' was 1.
If an operation is performed on a group with a relatively large number of resources (such as 20 or more), then the resource navigation tree on the left can freeze and become unresponsive when the operation is scheduled and the page refreshed.
Bugzilla 736732: Bookmarked UI Pages May Display the Old UI
The page names used for different pages in the JBoss ON UI for version 3.0 are different than the ones used in JBoss ON 2.4. However, because JBoss ON 3.0 retains some of the elements used in the older JSF-based UI, these pages still exist. This means that bookmarks will go to the old style pages.
For example, the Dashboard page in the old JSF UI had the URL http://localhost:7080/ In the new UI, the location is http://localhost:7080/coregui/#Dashboards.
All of the new pages have the coregui/ element in them. Remove any old bookmarks and replace them with the new GWT-based pages in the coregui/ area.
When the results for a dynamic search are long, the list is truncated but no scrollbar is presented, so it is not possible to scroll to the end of the list.

4.10. Operations

The incorrect time unit is shown in the operation detail. For example, for an interval of 60 seconds, the UI displays 60000 seconds. In actuality, it means 60000 milliseconds. This is only a problem with the display; the actual schedule sets a 60 second interval and runs on time.
Attempting to run an operation on a resource without parameters immediately after running an operation with parameters can fail with an error that the second operation did not have the required parameters set, even though there are no required parameters.

4.11. Measurements and Monitoring

A user-defined baseline value for a metric is ignored and overwritten by the server-calculated baseline.

4.12. Alerts

In some rare cases, if an alert notification fails to send, then the alert itself is not written to the alert history.
The default SNMP configuration for JBoss ON claims to use port 162 for SNMP traps. However, it actually sends SNMP trap notifications over port 161. If the port value is manually set to 162, then the notification is properly sent over port 162.
Attempting to upload a CLI script directly to a repository to use for alerting fails because it says the SHA-256 checksum for the script is not an OSGi string. Uploading a CLI script through the alert configuration UI works successfully.
Alerts with compound AND conditions can incorrectly fire when one of the conditions goes from true to false within 30 seconds of the other condition going from false to true.

4.13. Drift

Drift definitions can be created for resources which do not support drift, using the remote API to create a script.

4.14. Inventory and General Resource Issues

If a new resource is imported with an invalid configuration that prevents the resource from being started, all resources within the agent's inventory are marked as obsolete. This causes the agent to purge its entire inventory and attempt to re-sync with the inventory stored on the server. This purge and re-sync occurs for every resource with an invalid configuration. This is time-consuming and CPU-intensive on the local machine.
If a server is imported manually through a platform or parent Inventory tab, it is possible that that resource will also be detected and listed in the discovery queue. Manually importing a resource doesn't remove it from the discovery queue. It is possible, then, for the same resource to be imported twice.

4.15. Platform Resources

The inventory for a Linux platform may discover non-existent network adapters, which are added and then shown as unavailable in the inventory.

4.16. Tomcat Resources

If the type is changed on a Tomcat connector, then the original resource stays in the inventory as an unavailable resource and the new resource is never discovered. For example, if you change a JK connector to an AJP connector, the JK connector remains in the inventory but appears to be inactive, while the AJP connector is never added to the inventory.
Because both connectors connect over the same host and port, the discovery process assumes that the connectors are the same resource, so it never "rediscovers" the new resource. But since the type/connection protocol is different, it also never connects to the old connector.
To work around this, manually remove the old connector resource from the entry. The new, replacement connector is then discovered and imported automatically.
The Store Configuration operation is supposed to persiste the current or given MBean settings to the Tomcat server's server.xml file, which remain in effect until the Tomcat instance is restarted. However, the Store Configuration operation is not writing any changes to the server.xml file, so the configuration is not changed by the operation.
Manually importing a Tomcat instance through the platform resource (right-clicking the platform and selecting Inventory > Import > Tomcat) fails with authentication errors, even if proper credentials are given for the Tomcat user.
One potential problem could be if the agent and the Tomcat server are running as different system users. The agent and Tomcat server must run as the same system user for the agent to be able to manage the Tomcat server.
The JBoss ON agent does not detect the Tomcat server if it is running as a Windows service.
It is possible to edit the configuration of a Tomcat web application without ever setting a value for the configuration file name and path. The configuration file is a required parameter.
When the mod_cluster resource is imported for a Tomcat server, the mod_cluster configuration file is not set in the Inventory > Connection Settings area, leading to a connection failure. Even if the file is manually set to the Tomcat server.xml, the configuration file property is not saved and the connection error persists.
When attempting to edit the Tomcat user database by adding users or groups, the UI reports that the operation completed successfully. However, in reality, the operation failed, with this message written to the Tomcat server logs:
org.apache.catalina.users.MemoryUserDatabase save
SEVERE: User database has been configured to be read only. Changes cannot be saved
Attempting to run an operation which requires parameters, such as creating a group or a user, fails with the exception java.lang.IllegalStateException: Name [roles] specified for parameter of operation [createGroup] on MBean [Users:type=UserDatabase,database=UserDatabase] is invalid. The MBean operation does not take a parameter by that name.
If a WAR file is configured to be deployed to a non-standard location on a Tomcat application server, an invalid deployment name is added to the inventory. The unpackWARs option extracts the web app to a second, invalid directory. For example, if it should be extracted to /myapps/helloworld, the web app is extracted both there and to /myapps#helloworld.
The agent cannot discover a Tomcat instance if its Java process is running as a user other than the system user that the agent is running as.

4.17. Apache Resources

Response time metrics are only collected if SNMP is being used with the Apache server. fails with this error:
An Augeas lens is required to configure Apache servers through JBoss ON, but it is not required for monitoring and other operations. If Augeas is disabled (which may be done for performance improvements), the agent reports an error that configuration is disabled. This error message is superfluous and can be ignored.
Editing any option in the directory inside an Apache virtual host fails with this error:
2012-08-07 15:32:10,835 ERROR [ResourceContainer.invoker.nonDaemon-4] (org.rhq.plugins.apache.ApacheDirectoryComponent)- Augeas failed to save configuration
When trying to add a second entry for the Allow Override directive in an Apache directory resource, deselecting the Unset checkbox for the Param field returns a globally uncaught exception.
Apache directives are case-insensitive, but the Apache plug-in treats them as if they were case-sensitive. This makes the plug-in disregard directives with non-default case.
If the /tmp directory is configured a noexec in the fstab file, the agent throws exceptions because it cannot properly initialize the Augeas lens. In that case, the Configuration tab is unavailable for the Apache resource.
To work around this, make sure that the /tmp directory does not have noexec set as an option.
# /etc/fstab
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
noexec is one security method available to that directory to prevent unauthorized or malicious scripts from running. Disabling noexec for the directory is not ideal, but it is also not a security issue by itself because other filesystem security settings can be used.

4.18. JBoss EAP 6 Resources

For different EAP 6 child resources, the Unset? option does not work to unset the configuration property. The Unset? option should allow either the default value or an empty value to be used for a property. Rather, the previous property values are used.
This only applies to optional attributes; required attributes must have an explicitly-set value.
The different cluster operations for mod_cluster — enable, disable, stop — do not work on all cluster members. Rather, the operation runs properly on a single web context and then is never executed on the others. The problem comes because the mod_cluster plug-in requires a unique JVM route identifier for each web context, but that identifier is not properly applied.
When a new datasource is created, the Enabled setting is ignored, so that a new datasource is always created in a disabled state. The resource must be manually enabled after it is created.
When creating a datasource through the JBoss ON CLI, it is possible to create a resource with invalid configuration. Although the script reports a failure and throws a null-pointer exception, the datasource is, in fact, created and discovered by JBoss ON.
If an EAP 6 instance is installed by an RPM, then the EAP instance user belongs to a different group (by default) than the JBoss ON user. If the JBoss ON agent is not run as root, then the JBoss ON agent cannot connect to the EAP instance and, therefore, cannot discover the instance.
When content is uploaded to the server group, the content version history is successfully updated. However, when that deployment is then propagated to the managed servers within the server group, the content history is not updated, leaving the previous SHA and version in the history.
If a host controller is not named master, then when the HostControllerComponent resource is initialized by the plug-in container, the agent cannot connect to the host controller. The agent expects a name of master, always, and if the controller has a different name, the agent returns the error (rhq.modules.plugins.jbossas7.BaseServerComponent)- Failed to validate base dir for {JBossAS7}JBossAS7 Host Controller.
A restart operation can fail when using a system init script or a custom start script to restart the EAP server. The BaseServerComponent.waitUntilDown() method only checks to see if the management interface is unavailable before attempting to run the start method. However, the management interface is stopped before the server itself is stopped, so there may still be a run lock or PID file that prevents the start operation from succeeding.
A start operation incorrectly reports that it failed when it in fact succeeded, while a blocked or timed out process returns a success message. This can happen with a custom script or a system init script. The JBoss ON agent incorrectly interprets a null return (blocked or timed out) as success and a zero (0) status (success) as a failure.
The first time that a reload is run on an EAP 6 resource after the resource is imported into the inventory, an exception is thrown in the UI.
The reload operation completes successfully and subsequent reload operations do not throw an exception.
When an EAP 6 server is running in domain mode with the full-ha profile, unsetting the proxy URL to save a null value fails with the error We got a 500 with the following response body back. Setting the proxy URL to a different value (not null) is successful.
When running a group of operations in a specific order on a server group, attempting to open the operations schedule returns a null pointer exception.
When editing a network interface for a JBoss EAP 6 server, the network configuration requires either a specific IP address or a setting to use any IP address for IPv4, for IPv6, or any address. However, the UI does not enforce that an IP address selection is made, which can cause the interface to be unreachable.
Attempting to deploy a child resource such as a WAR application fails with a malformed URL exception if the EAP 6 server is listening on IPv6.
Some path elements defined in the configuration of a domain controller or standalone server are computed by the server itself. These computed paths are all prefixed with java.*, jboss.*, and user.*.
While the configuration values are viewable, they are not editable. However, the Configuration tab for the server shows both edit and delete options for the path elements. If a user attempts to change or delete the path, the path simply reverts to its previous state.
When a child JVM definition is created for a managed resource, the name of the JVM definition must be the same as the host JVM definition which it is based on. However, the JBoss ON UI creation wizard does not detect or enforce a pre-computed name, so it allows a user to enter any name.
The UI will not let users enter a driver name when manually adding a datasource, so it is not possible to deploy a module-loaded driver.
The agent properly detects an EAP 6 server running over an IPv6 address, but it incorrectly reports it as offline.

4.19. JBoss BRMS Resources

BRMS has some attributes defined for each knowledge base, but these parameters are not listed in the resource monitoring tab. This is because the knowledge base parameters are defined in a dynamic MBean, and JBoss ON does not automatically detect dynamic MBeans.
To work around this, run the Start Internal Beans operation (in JBoss ON or the JConsole), and view the knowledge base parameters in JConsole.
BRMS has some attributes defined for each knowledge session, but these parameters are not listed in the resource monitoring tab.
The list of active rules for a knowledge session, and their state and parameters, are not displayed in the resource monitoring tab.
The list of rule flows for a knowledge session, and their parameters, are not displayed in the resource monitoring tab.
Running an operation which requires parameters on a knowledge session resource throws an IllegalStateException error, stating that the operation does not take a parameter of that name.
To work around this, run the operation in JConsole.

4.20. JBoss Data Grid Resources

None of the cache statistics for EDG resources are displayed in JBoss ON. The default, memcahedCache, and namedCache resources all throw the error java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key infinispan.distributed-cache.cache-loader-stores.

4.21. SOA-P Resources

When editing a local Tx datasource in the JBoss ON UI, the UI forces the user to unset and then select the security deployment type radio button, even though the default value is (acceptably) None. Even if the None radio button is selected, the value is reset to some other value and improperly saved in the corresponding *-ds.xml file.
Attempting to deploy an ESB archive to a SOA-P resource can throw java.lang.reflect.UndeclaredThrowableException if it attempts to use the RemoteDeployer.
Attempting to deploy an ESB archive to a SOA-P resource can throw
When deploying either an ESB or WAR archive to a SOA-P resource, in some instances the archive is not successfully deployed. The deployment operation can create an empty directory with the archive name and MANIFEST.MF file, but no application.

4.22. JBoss EAP 4 and 5 Resources

Shutdown operations have a maximum wait time, which defines how long the operation can run before it times out. If two EAP 5 instances are shut down at the same time, then the max wait time setting on the second instance overrides the max wait time setting for the first instance which is shut down.
The agent fails to collect metrics for the web application context. When a sessions-relate metric is enabled, such as active sessions, the agent throws a null pointer exception with the message Failed to collect metric 'activeSessions' for {JBossAS5}Web Application Context Resource with key localhost.
A patch for this issue is available from Red Hat Global Support Services.
When editing a datasource in the JBoss ON UI, the UI forces the user to unset and then select the security deployment type radio button, even though the default value is (acceptably) None. Even if the None radio button is selected, the value is reset to some other value and improperly saved in the corresponding *-ds.xml file.
Changing an EAR or WAR deployment from exploded to archive or vice versa makes it so that the resource is always listed as unavailable.
Changing the name of a JNDI resource results in the renamed JNDI resource being listed as a new resource, while another entry with the original name remains in the inventory in an unavailable state. To resolve this, run a manual discovery scan, which resets the original entry with the new name.
If a datasource, JMS queue, or JMS topic resource is created and then deleted, a new datasource, JMS, topic, or JMS queue resource cannot be created with the same resource name. The XML file in the JBoss server's deployment directory, with that original name, is left behind after the delete operation, and that prevents any other resource from being created with that name.
JBoss ON will not use a custom binding set with a JBoss EAP 5 server if the server's configuration is changed after it is imported. The JBoss ON server persists in using the default binding set.
When creating a new datasource, JBoss ON names the resource according to its JNDI name, not the resource name entered in the creation wizard.
If EAR, WAR, or script resources are deleted outside of JBoss ON, the agent throws an exception during discovery, and the server is not informed that the resource was deleted.
Discovering a JBoss AS instance fails if the configuration directory is a URL.
The discovery process fails to determine the JNP URL if the data directory is not located at ${jboss.server.home.dir}/data.
Shutting down a JBoss AS 5 resource can fail with java.rmi.NoSuchObjectException: no such object in table.
The JBoss AS plug-in is unable to load resource configuration for JMS queues that are deployed using a SAR file.

4.23. JVM Resources

On Windows, the JBoss ON server cannot discover a JVM resource is there is a space in the JAVA_HOME path. To work around this, use the shortname (with the tilde, ~) for the path.
The discovery process attempts to discover an embedded JVM process through its JMX remoting rather than using the EMSConnection of its parent Tomcat or JBoss resource.

4.24. Performance

Attempting to update the members in a compatible group with thousands of members times out and fails with 'Failed to fetch Resource Group.'
Viewing configuration, alerts, or other data for groups with more than 1000 members can fail with the SQL exception maximum number of expressions in a list is 1000.

4.25. Plug-in Writing

If an embedded plug-in extension is defined and the parent resource type has subcategories, those subcategories cannot be changed or it causes a database deadlock.

5. Document History

Revision History
Revision 3.1.2-5.4002013-10-31Rüdiger Landmann
Rebuild with publican 4.0.0
Revision 3.1.2-5January 23, 2013Ella Deon Lackey
Initial release.

Legal Notice

Copyright © 2012 Red Hat, Inc..
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.