Commit c6091750 authored by Dele Olajide's avatar Dele Olajide Committed by daryl herzmann

Updated jmxweb plugin to version 0.0.7 (#885)

* jmxweb plugin version 0.0.7

* jmxweb plugin - updated date
parent 50151644
......@@ -2,7 +2,7 @@
<html>
<head>
<title>JmxWeb Changelog</title>
<title>JmxWeb Changelog</title>
<style type="text/css">
BODY {
font-size : 100%;
......@@ -42,6 +42,14 @@
<h1>
</h1>
<p><b>0.0.7</b> -- September 30 2017</p>
<ul>
<li>[<a href='https://igniterealtime.org/issues/browse/OF-1326'></a>] - Fixed more issues</li>
<li>Minimum server requirement: 4.1.5</li>
<li>Fixed maven build issues</li>
</ul>
<p><b>0.0.6</b> -- May 8 2017</p>
<ul>
......
Manifest-Version: 1.0
Bnd-LastModified: 1416851303898
Build-Jdk: 1.7.0_55
Build-Timestamp: Mon, 24 Nov 2014 17:38:55 +0000
Built-By: jenkins
Bundle-ClassPath: .,WEB-INF/lib/jolokia-core-1.2.3.jar,WEB-INF/lib/json-
simple-1.1.1.jar,WEB-INF/lib/hawtio-core-1.4.37.jar,WEB-INF/lib/hawtio-
util-1.4.37.jar,WEB-INF/lib/slf4j-api-1.6.6.jar,WEB-INF/lib/hawtio-syst
em-1.4.37.jar,WEB-INF/lib/httpclient-4.3.4.jar,WEB-INF/lib/httpcore-4.3
.2.jar,WEB-INF/lib/commons-httpclient-3.1.jar,WEB-INF/lib/commons-io-2.
2.jar,WEB-INF/lib/commons-fileupload-1.3.1.jar,WEB-INF/lib/commons-code
c-1.6.jar,WEB-INF/lib/hawtio-git-1.4.37.jar,WEB-INF/lib/commons-logging
-1.0.3.jar
Bundle-Description: hawtio :: hawtio-web
Bundle-DocURL: http://www.jboss.org
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion: 2
Bundle-Name: hawtio :: hawtio-web
Bundle-SymbolicName: io.hawt.hawtio-web
Bundle-Vendor: JBoss by Red Hat
Bundle-Version: 1.4.37
Created-By: Apache Maven Bundle Plugin
Embed-Dependency: *;scope=compile|runtime;artifactId=!org.osgi.enterpris
e|org.osgi.core
Embed-Directory: WEB-INF/lib
Embed-Transitive: true
Embedded-Artifacts: WEB-INF/lib/jolokia-core-1.2.3.jar;g="org.jolokia";a
="jolokia-core";v="1.2.3",WEB-INF/lib/json-simple-1.1.1.jar;g="com.goog
lecode.json-simple";a="json-simple";v="1.1.1",WEB-INF/lib/hawtio-core-1
.4.37.jar;g="io.hawt";a="hawtio-core";v="1.4.37",WEB-INF/lib/hawtio-uti
l-1.4.37.jar;g="io.hawt";a="hawtio-util";v="1.4.37",WEB-INF/lib/slf4j-a
pi-1.6.6.jar;g="org.slf4j";a="slf4j-api";v="1.6.6",WEB-INF/lib/hawtio-s
ystem-1.4.37.jar;g="io.hawt";a="hawtio-system";v="1.4.37",WEB-INF/lib/h
ttpclient-4.3.4.jar;g="org.apache.httpcomponents";a="httpclient";v="4.3
.4",WEB-INF/lib/httpcore-4.3.2.jar;g="org.apache.httpcomponents";a="htt
pcore";v="4.3.2",WEB-INF/lib/commons-httpclient-3.1.jar;g="commons-http
client";a="commons-httpclient";v="3.1",WEB-INF/lib/commons-io-2.2.jar;g
="commons-io";a="commons-io";v="2.2",WEB-INF/lib/commons-fileupload-1.3
.1.jar;g="commons-fileupload";a="commons-fileupload";v="1.3.1",WEB-INF/
lib/commons-codec-1.6.jar;g="commons-codec";a="commons-codec";v="1.6",W
EB-INF/lib/hawtio-git-1.4.37.jar;g="io.hawt";a="hawtio-git";v="1.4.37",
WEB-INF/lib/commons-logging-1.0.3.jar;g="commons-logging";a="commons-lo
gging";v="1.0.3"
Ignore-Package: org.slf4j.impl,keypairgen,org.apache.log,org.apache.log4
j,javax.portlet,userauth,signature
Implementation-Title: hawtio-web
Implementation-URL: http://hawt.io/hawtio-web/
Implementation-Vendor: JBoss by Red Hat
Implementation-Vendor-Id: io.hawt
Implementation-Version: 1.4.37
Import-Package: io.hawt.git;resolution:=optional;version="[1.4,2)",io.ha
wt.util;resolution:=optional;version="[1.4,2)",io.hawt.util.introspect;
resolution:=optional;version="[1.4,2)",io.hawt.util.introspect.support;
resolution:=optional;version="[1.4,2)",javax.crypto,javax.crypto.interf
aces,javax.crypto.spec,javax.management,javax.management.openmbean,java
x.management.relation,javax.naming,javax.net,javax.net.ssl,javax.securi
ty.auth,javax.security.auth.callback,javax.security.auth.login,javax.se
curity.auth.spi,javax.security.auth.x500,javax.servlet,javax.servlet.ht
tp,javax.xml.datatype,javax.xml.parsers,org.apache.commons.logging;reso
lution:=optional,org.eclipse.jetty.plus.jaas.callback;resolution:=optio
nal,org.eclipse.jetty.plus.jaas.spi;resolution:=optional,org.ietf.jgss,
org.osgi.framework;version="[1.6,2)",org.osgi.util.tracker;version="[1.
4,2)",org.slf4j;resolution:=optional;version="[1.6,2)",org.w3c.dom,org.
xml.sax,org.xml.sax.helpers
Java-Vendor: Oracle Corporation
Java-Version: 1.7.0_55
Os-Arch: amd64
Os-Name: Linux
Os-Version: 2.6.32-504.1.3.el6.x86_64
Scm-Connection: scm:git:git@github.com:hawtio/hawtio.git/hawtio-web
Scm-Revision: df46f1714d4bee6d8ee0023410019a866c08eaa4
Scm-Url: git@github.com:hawtio/hawtio.git/hawtio-web
Specification-Title: hawtio-web
Specification-Vendor: JBoss by Red Hat
Specification-Version: 1.4.37
Tool: Bnd-1.50.0
Web-ContextPath: /hawtio
Webapp-Context: /hawtio
# the properties file used to override blueprint configuration properties:
#�http://aries.apache.org/modules/blueprintweb.html
#
# for hawtio configuration options see:
# https://github.com/hawtio/hawtio/blob/master/docs/Configuration.md
# lets avoid cloning or pulling the remote git repo for configuration
# on startup
hawtio.config.pullOnStartup = false
hawtio.config.cloneOnStartup = false
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2009-2011 Roland Huss
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<restrict>
<!-- List of remote hosts which are allowed to access this agent. The name can be
given as IP or FQDN. If any of the given hosts matches, access will be allowed
(respecting further restrictions, though). If <remote> ... </remote> is given
without any host no access is allowed at all (probably not what you want).
You can also specify a subnetmask behind a numeric IP adress in which case any
host within the specified subnet is allowed to access the agent. The netmask can
be given either in CIDR format (e.g "/16") or as a full netmask (e.g. "/255.255.0.0")
-->
<!--
<remote>
<host>127.0.0.1</host>
<host>localhost</host>
<host>10.0.0.0/16</host>
</remote>
-->
<!--
Access restriction based on the HTTP method with which an Jolokia request was received.
The following example allows only HTTP POST requests. If the section is missing, all
HTTP requests methods are allowed.
-->
<!--
<http>
<method>post</method>
</http>
-->
<!--
List of allowed commands.
If this sections is present, it influence the following section.
For each command type present, the principle behaviour is allow this command for all
MBeans. To remove an MBean (attribute/operation), a <deny> section has to be added.
For each command type missing, the command is disabled by default. For certain MBeans
it can be selectively by enabled by using an <allow> section below
Known types are:
* read
* write
* exec
* list
* version
* search
A missing <commands> section implies that every operation type is allowed (and can
be selectively controlled by a <deny> section)
-->
<commands>
<command>read</command>
<command>write</command>
<command>exec</command>
<command>list</command>
<command>version</command>
<command>search</command>
</commands>
<!-- For each command type missing in a given <commands> section, for certain MBeans (which
be a pattern, too) an command be alloed. Note that an <allow> entry e.g. for reading
an attribute of an certain MBean has no influence if reading is enabled globally anyway -->
<!--
<allow>
<mbean>
<name>jolokia:type=Config</name>
<operation>*</operation>
<attribute>*</attribute>
</mbean>
<mbean>
<name>java.lang:type=Threading</name>
<operation>findDeadlockedThreads</operation>
</mbean>
</allow>
-->
<!-- MBean access can be restricted by a <deny> section for commands enabled in a <commands> section
(or when the <commands> section is missing completely in which case all commands are allowed)
-->
<deny>
<mbean>
<!-- Exposes user/password of data source, so we forbid this one -->
<name>com.mchange.v2.c3p0:type=PooledDataSource,*</name>
<attribute>properties</attribute>
</mbean>
</deny>
<cors>
<!-- Allow cross origin access -->
<allow-origin>*</allow-origin>
</cors>
</restrict>
springBatchServerList=localhost\\:8080/spring-batch-admin-sample/,localhost\\:8181/
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2009-2013 Roland Huss
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>JSON JMX Agent</display-name>
<servlet>
<servlet-name>jolokia-agent</servlet-name>
<servlet-class>org.jolokia.http.AgentServlet</servlet-class>
<init-param>
<description>
Class names (comma separated) of RequestDispatcher used in addition
to the LocalRequestDispatcher
</description>
<param-name>dispatcherClasses</param-name>
<param-value>org.jolokia.jsr160.Jsr160RequestDispatcher</param-value>
</init-param>
<init-param>
<description>
Debugging state after startup. Can be changed via
the Config MBean during runtime
</description>
<param-name>debug</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<description>
Entries to keep in the history. Can be changed during
runtime via the config MBean
</description>
<param-name>historyMaxEntries</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<description>
Maximum number of entries to keed in the local
debug history if switched on. Can be change via
the config MBean during runtime.
</description>
<param-name>debugMaxEntries</param-name>
<param-value>100</param-value>
</init-param>
<init-param>
<description>
Maximum depth when traversing bean properties.
If set to 0, depth checking is disabled
</description>
<param-name>maxDepth</param-name>
<param-value>15</param-value>
</init-param>
<init-param>
<description>
Maximum size of collections returned when
serializing to JSON. When set to 0, not
collections are truncated.
</description>
<param-name>maxCollectionSize</param-name>
<param-value>1000</param-value>
</init-param>
<init-param>
<description>
Maximum number of objects which is traversed
when serializing a single response. Use this
as airbag to avoid boosting your memory and
network traffic. Nevertheless, when set to 0
not limit is used.
</description>
<param-name>maxObjects</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<description>
Options specific for certain application
server detectors. Detectors can evaluate these
options and perform a specific initialization based
on these options. The value is a JSON object with
the detector's name as key and the options as value.
E.g. '{glassfish: {bootAmx: false}}' would prevent
the booting of the AMX subsystem on a glassfish with
is done by default.
</description>
<param-name>detectorOptions</param-name>
<param-value>{}</param-value>
</init-param>
<init-param>
<description>
This option specifies in which order the key-value properties within
ObjectNames as returned by "list" or "search" are returned. By default
this is the so called 'canonical order' in which the keys are sorted
alphabetically. If this option is set to "false", then the natural
order is used, i.e. the object name as it was registered. This option
can be overridden with a query parameter of the same name.
</description>
<param-name>canonicalNaming</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>
Whether to include a stacktrace of an exception in case
of an error. By default it it set to "true" in which case
the stacktrace is always included. If set to "false", no
stacktrace is included. If the value is "runtime" a stacktrace
is only included for RuntimeExceptions. This global option
can be overridden with a query parameter.
</description>
<param-name>includeStackTrace</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>
When this parameter is set to "true", then an exception thrown
will be serialized as JSON and included in the response
under the key "error_value". By default it is "false". This global
option can be overridden by a query parameter of the same name.
</description>
<param-name>serializeException</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<description>
If discoveryEnabled is set to true, then this servlet will listen
for multicast discovery request and responds with its agent URL and
other server specific information. Instead of setting this confog variable,
discovery can be also enabled via the system property "jolokia.discoveryEnabled"
or the environment variable "JOLOKIA_DISCOVERY_ENABLED".
In addition the config parameter "discoveryAgentUrl" can be used to set the the agent's URL.
By default, auto detection (after the first request was processed by the servlet)) of the URL is used.
If the URL is set, then discovery is automatically enabled (i.e. there is
no need to set "discoveryEnabled=true"). This configuration option
is especially useful if the WAR is used in a proxy setup. Instead of setting the URL
here, it can be set also either via the system property "jolokia.discoveryAgentUrl" or the
environment variable "JOLOKIA_DISCOVERY_AGENT_URL".
</description>
<param-name>discoveryEnabled</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jolokia-agent</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!--
Example Configuration for switching on BASIC security. The role 'Jolokia'
must be mapped to real users with passwords on the Appserver side:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Jolokia</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Jolokia-Agent Access</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Jolokia</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>Jolokia</role-name>
</security-role>
-->
</web-app>
<!--
Copyright 2009-2010 Roland Huss
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Forbidden</title>
</head>
<body>
<h1>Forbidden</h1>
<h4>This is a private folder</h4>
</body>
</html>
\ No newline at end of file
......@@ -4,9 +4,9 @@
<class>com.ifsoft.jmxweb.plugin.JmxWebPlugin</class>
<name>JmxWeb Plugin</name>
<description>JmxWeb plugin is web based platform for managing and monitoring openfire via JMX.</description>
<version>0.0.6</version>
<version>0.0.7</version>
<licenseType>Apache 2.0</licenseType>
<date>05/08/2017</date>
<minServerVersion>4.2.0 Alpha</minServerVersion>
<date>09/30/2017</date>
<minServerVersion>4.1.5</minServerVersion>
<author>igniterealtime.org</author>
</plugin>
\ No newline at end of file
......@@ -8,7 +8,7 @@
</parent>
<groupId>org.igniterealtime.openfire.plugins</groupId>
<artifactId>jmxweb</artifactId>
<version>0.0.6</version>
<version>0.0.7</version>
<name>JMXWeb Plugin</name>
<description>JmxWeb plugin is web based platform for managing and monitoring openfire via JMX.</description>
......
......@@ -52,9 +52,9 @@ import org.apache.tomcat.SimpleInstanceManager;
public class JmxWebPlugin implements Plugin {
private static Logger Log = LoggerFactory.getLogger("JmxWebPlugin");
private static final String NAME = "jmxweb";
private static final String DESCRIPTION = "JmxWeb Plugin for Openfire";
private static Logger Log = LoggerFactory.getLogger("JmxWebPlugin");
private static final String NAME = "jmxweb";
private static final String DESCRIPTION = "JmxWeb Plugin for Openfire";
private static final String NAMEBASE = "com.javamonitor.openfire.plugin:";
public final static String OBJECTNAME_OPENFIRE = NAMEBASE + "type=Openfire";
......@@ -70,7 +70,7 @@ public class JmxWebPlugin implements Plugin {
private WebAppContext context2;
public void initializePlugin(PluginManager manager, File pluginDirectory) {
Log.info( "["+ NAME + "] initialize " + NAME + " plugin resources");
Log.info( "["+ NAME + "] initialize " + NAME + " plugin resources");
try {
openfire = new Openfire();
......@@ -112,56 +112,56 @@ public class JmxWebPlugin implements Plugin {
Log.debug("cannot start database pool monitor: " + e.getMessage(), e);
}
try {
try {
Log.info( "["+ NAME + "] starting jolokia");
context = new WebAppContext(null, pluginDirectory.getPath(), "/jolokia");
final List<ContainerInitializer> initializers = new ArrayList<>();
initializers.add(new ContainerInitializer(new JasperInitializer(), null));
context.setAttribute("org.eclipse.jetty.containerInitializers", initializers);
context.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager());
context.setWelcomeFiles(new String[]{"index.html"});
Log.info( "["+ NAME + "] starting hawtio");
context2 = new WebAppContext(null, pluginDirectory.getPath() + "/classes/hawtio", "/hawtio");
final List<ContainerInitializer> initializers2 = new ArrayList<>();
initializers2.add(new ContainerInitializer(new JasperInitializer(), null));
context2.setAttribute("org.eclipse.jetty.containerInitializers", initializers2);
context2.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager());
context2.setWelcomeFiles(new String[]{"index.html"});
if (JiveGlobals.getBooleanProperty("xmpp.jmx.secure", true))
{
SecurityHandler securityHandler = basicAuth("jmxweb");
if (securityHandler != null) context.setSecurityHandler(securityHandler);
SecurityHandler securityHandler2 = basicAuth("jmxweb");
if (securityHandler2 != null) context2.setSecurityHandler(securityHandler2);
}
try {
try {
Log.info( "["+ NAME + "] starting jolokia");
context = new WebAppContext(null, pluginDirectory.getPath() + "/classes", "/jolokia");
final List<ContainerInitializer> initializers = new ArrayList<>();
initializers.add(new ContainerInitializer(new JasperInitializer(), null));
context.setAttribute("org.eclipse.jetty.containerInitializers", initializers);
context.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager());
context.setWelcomeFiles(new String[]{"index.html"});
Log.info( "["+ NAME + "] starting hawtio");
context2 = new WebAppContext(null, pluginDirectory.getPath() + "/classes/hawtio", "/hawtio");
final List<ContainerInitializer> initializers2 = new ArrayList<>();
initializers2.add(new ContainerInitializer(new JasperInitializer(), null));
context2.setAttribute("org.eclipse.jetty.containerInitializers", initializers2);
context2.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager());
context2.setWelcomeFiles(new String[]{"index.html"});
if (JiveGlobals.getBooleanProperty("xmpp.jmx.secure", true))
{
SecurityHandler securityHandler = basicAuth("jmxweb");
if (securityHandler != null) context.setSecurityHandler(securityHandler);
SecurityHandler securityHandler2 = basicAuth("jmxweb");
if (securityHandler2 != null) context2.setSecurityHandler(securityHandler2);
}
HttpBindManager.getInstance().addJettyHandler( context );
HttpBindManager.getInstance().addJettyHandler( context2 );
}
catch(Exception e) {
Log.error( "An error has occurred", e );
}
}
catch (Exception e) {
Log.error("Error initializing JmxWeb Plugin", e);
}
if (JiveGlobals.getBooleanProperty("jmxweb.email.monitoring", true))
{
Log.info( "["+ NAME + "] starting email monitoring");
emailScheduler = new EmailScheduler();
emailScheduler.startMonitoring();
Log.info( "["+ NAME + "] started monitoring");
}
}
public void destroyPlugin() {
Log.info( "["+ NAME + "] destroy " + NAME + " plugin resources");
}
catch(Exception e) {
Log.error( "An error has occurred", e );
}
}
catch (Exception e) {
Log.error("Error initializing JmxWeb Plugin", e);
}
if (JiveGlobals.getBooleanProperty("jmxweb.email.monitoring", true))
{
Log.info( "["+ NAME + "] starting email monitoring");
emailScheduler = new EmailScheduler();
emailScheduler.startMonitoring();
Log.info( "["+ NAME + "] started monitoring");
}
}
public void destroyPlugin() {
Log.info( "["+ NAME + "] destroy " + NAME + " plugin resources");
if (database != null) {
database.stop();
......@@ -183,28 +183,28 @@ public class JmxWebPlugin implements Plugin {
JmxHelper.unregister(OBJECTNAME_OPENFIRE);
}
if (emailScheduler != null)
{
emailScheduler.stopMonitoring();
}
if (emailScheduler != null)
{
emailScheduler.stopMonitoring();
}
HttpBindManager.getInstance().removeJettyHandler( context );
HttpBindManager.getInstance().removeJettyHandler( context2 );
Log.info("["+ NAME + "] plugin fully destroyed.");
}
}
public String getName() {
return NAME;
}
public String getName() {
return NAME;
}
public String getDescription() {
return DESCRIPTION;
}
public String getDescription() {
return DESCRIPTION;
}
private static final SecurityHandler basicAuth(String realm) {
OpenfireLoginService l = new OpenfireLoginService();
OpenfireLoginService l = new OpenfireLoginService();
l.setName(realm);
Constraint constraint = new Constraint();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment