diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..bdb0cabc87
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,17 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Custom for Visual Studio
+*.cs diff=csharp
+
+# Standard to msysgit
+*.doc diff=astextplain
+*.DOC diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot diff=astextplain
+*.DOT diff=astextplain
+*.pdf diff=astextplain
+*.PDF diff=astextplain
+*.rtf diff=astextplain
+*.RTF diff=astextplain
diff --git a/README.md b/README.md
index b1ecc59068..59b330061e 100644
--- a/README.md
+++ b/README.md
@@ -1,46 +1,46 @@
-# PSI Probe
-
-[![Build Status](https://travis-ci.org/psi-probe/psi-probe.svg?branch=master)](https://travis-ci.org/psi-probe/psi-probe)
-[![Project Stats](https://www.openhub.net/p/psi-probe/widgets/project_thin_badge.gif)](https://www.openhub.net/p/psi-probe)
-
-## Contributions ##
-
-Please follow [GitHub Flow](https://guides.github.com/introduction/flow/), with the following additions:
-
-* **Ensure an [issue](//github.com/psi-probe/psi-probe/issues) exists** before you begin work. If not, file one.
- * You can get input from others before you begin.
- * Issues power the release changelogs, so your change will be made known to users after it's done.
-* **One PR per issue.** Include the issue number in your commit(s) and PR so that merging it will close the issue.
-* **One issue per PR.** Keep changes minimal, and keep the scope narrow.
- * Avoid making formatting changes alongside functionality changes. This is a recipe for conflicts.
- * Avoid bumping version numbers or correcting spelling errors along with your changes unless they're necessary.
- * Feel free to make these sorts of corrections in a separate PR, though!
-
-## Building from Source ##
-
-1. **Clone PSI Probe's git repository.**
-
- *Note: If you plan to contribute to PSI Probe, you should create your own fork on GitHub first and clone that. Otherwise, follow these steps to build the latest version of PSI Probe for yourself.*
-
- Execute the following command:
-
- git clone https://github.com/psi-probe/psi-probe
-
- This will create directory called `psi-probe`. Subsequent steps will refer to this as "your PSI Probe base directory."
-
-2. **Download and install Maven 3.**
-
- You may download it from the [Apache Maven website](http://maven.apache.org/download.cgi).
-
-3. **Run Maven.**
-
- Execute the following command from your PSI Probe base directory:
-
- mvn package
-
- This will create a deployable file at `web/target/probe.war`.
-
-## User Groups
-
-* [Announcements](http://groups.google.com/group/psi-probe/)
-* [Discussions](http://groups.google.com/group/psi-probe-discuss/)
+# PSI Probe
+
+[![Build Status](https://travis-ci.org/psi-probe/psi-probe.svg?branch=master)](https://travis-ci.org/psi-probe/psi-probe)
+[![Project Stats](https://www.openhub.net/p/psi-probe/widgets/project_thin_badge.gif)](https://www.openhub.net/p/psi-probe)
+
+## Contributions ##
+
+Please follow [GitHub Flow](https://guides.github.com/introduction/flow/), with the following additions:
+
+* **Ensure an [issue](//github.com/psi-probe/psi-probe/issues) exists** before you begin work. If not, file one.
+ * You can get input from others before you begin.
+ * Issues power the release changelogs, so your change will be made known to users after it's done.
+* **One PR per issue.** Include the issue number in your commit(s) and PR so that merging it will close the issue.
+* **One issue per PR.** Keep changes minimal, and keep the scope narrow.
+ * Avoid making formatting changes alongside functionality changes. This is a recipe for conflicts.
+ * Avoid bumping version numbers or correcting spelling errors along with your changes unless they're necessary.
+ * Feel free to make these sorts of corrections in a separate PR, though!
+
+## Building from Source ##
+
+1. **Clone PSI Probe's git repository.**
+
+ *Note: If you plan to contribute to PSI Probe, you should create your own fork on GitHub first and clone that. Otherwise, follow these steps to build the latest version of PSI Probe for yourself.*
+
+ Execute the following command:
+
+ git clone https://github.com/psi-probe/psi-probe
+
+ This will create directory called `psi-probe`. Subsequent steps will refer to this as "your PSI Probe base directory."
+
+2. **Download and install Maven 3.**
+
+ You may download it from the [Apache Maven website](http://maven.apache.org/download.cgi).
+
+3. **Run Maven.**
+
+ Execute the following command from your PSI Probe base directory:
+
+ mvn package
+
+ This will create a deployable file at `web/target/probe.war`.
+
+## User Groups
+
+* [Announcements](http://groups.google.com/group/psi-probe/)
+* [Discussions](http://groups.google.com/group/psi-probe-discuss/)
diff --git a/core/pom.xml b/core/pom.xml
index dfe2c40f81..e2971c5709 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -1,258 +1,258 @@
-
-
- 4.0.0
-
- com.googlecode.psiprobe
- psi-probe
- 2.4.0-SNAPSHOT
-
- core
- jar
- PSI Probe Core
-
- Core logic, data models, and controllers
-
-
- scm:git:ssh://git@github.com:psi-probe/psi-probe.git
- scm:git:ssh://git@github.com:psi-probe/psi-probe.git
- https://github.com/psi-probe/psi-probe/
-
-
- ../
-
-
-
-
- tomcat
- catalina
- 5.5.23
- provided
-
-
- tomcat
- jasper-compiler
- 5.5.23
- provided
-
-
- tomcat
- jasper-runtime
- 5.5.23
- provided
-
-
- javax.servlet
- servlet-api
-
-
-
-
- tomcat
- naming-factory
- 5.5.23
- provided
-
-
- tomcat
- naming-factory-dbcp
- 5.5.23
- provided
-
-
- tomcat
- naming-resources
- 5.5.23
- provided
-
-
-
- javax.servlet
- servlet-api
- provided
-
-
- javax.mail
- mail
-
-
- c3p0
- c3p0
- provided
-
-
- com.oracle
- ucp
- provided
-
-
- com.oracle
- ojdbc14
- provided
-
-
- commons-dbcp
- commons-dbcp
- provided
-
-
- org.apache.tomcat
- tomcat-jdbc
- provided
-
-
- com.jolbox
- bonecp
- provided
-
-
- tanukisoft
- wrapper
- provided
-
-
- org.apache.openejb
- openejb-core
- provided
-
-
-
- com.thoughtworks.xstream
- xstream
- compile
-
-
- com.uwyn
- jhighlight
- compile
-
-
- javax.servlet
- servlet-api
-
-
-
-
- commons-beanutils
- commons-beanutils
- compile
-
-
- commons-collections
- commons-collections
- compile
-
-
- commons-fileupload
- commons-fileupload
- compile
-
-
- commons-io
- commons-io
- compile
-
-
- commons-lang
- commons-lang
- compile
-
-
- commons-logging
- commons-logging
- compile
-
-
- commons-modeler
- commons-modeler
- compile
-
-
- javainetlocator
- inetaddresslocator
- compile
-
-
- javax.transaction
- jta
- compile
-
-
- org.jfree
- jfreechart
- compile
-
-
- log4j
- log4j
- runtime
-
-
- opensymphony
- quartz
- compile
-
-
- opensymphony
- sitemesh
- compile
-
-
- javax.management
- jmxri
- ${jmxri.scope}
-
-
- xpp3
- xpp3_min
- compile
-
-
- org.springframework
- spring-beans
- compile
-
-
- org.springframework
- spring-webmvc
- compile
-
-
- org.springframework
- spring-tx
- compile
-
-
- org.springframework
- spring-context
- compile
-
-
- org.springframework.security
- spring-security-core
- compile
-
-
- junit
- junit
- test
-
-
-
-
-
- true
-
-
- compile
-
-
-
- jboss
-
- provided
-
-
-
-
+
+
+ 4.0.0
+
+ com.googlecode.psiprobe
+ psi-probe
+ 2.4.0-SNAPSHOT
+
+ core
+ jar
+ PSI Probe Core
+
+ Core logic, data models, and controllers
+
+
+ scm:git:ssh://git@github.com:psi-probe/psi-probe.git
+ scm:git:ssh://git@github.com:psi-probe/psi-probe.git
+ https://github.com/psi-probe/psi-probe/
+
+
+ ../
+
+
+
+
+ tomcat
+ catalina
+ 5.5.23
+ provided
+
+
+ tomcat
+ jasper-compiler
+ 5.5.23
+ provided
+
+
+ tomcat
+ jasper-runtime
+ 5.5.23
+ provided
+
+
+ javax.servlet
+ servlet-api
+
+
+
+
+ tomcat
+ naming-factory
+ 5.5.23
+ provided
+
+
+ tomcat
+ naming-factory-dbcp
+ 5.5.23
+ provided
+
+
+ tomcat
+ naming-resources
+ 5.5.23
+ provided
+
+
+
+ javax.servlet
+ servlet-api
+ provided
+
+
+ javax.mail
+ mail
+
+
+ c3p0
+ c3p0
+ provided
+
+
+ com.oracle
+ ucp
+ provided
+
+
+ com.oracle
+ ojdbc14
+ provided
+
+
+ commons-dbcp
+ commons-dbcp
+ provided
+
+
+ org.apache.tomcat
+ tomcat-jdbc
+ provided
+
+
+ com.jolbox
+ bonecp
+ provided
+
+
+ tanukisoft
+ wrapper
+ provided
+
+
+ org.apache.openejb
+ openejb-core
+ provided
+
+
+
+ com.thoughtworks.xstream
+ xstream
+ compile
+
+
+ com.uwyn
+ jhighlight
+ compile
+
+
+ javax.servlet
+ servlet-api
+
+
+
+
+ commons-beanutils
+ commons-beanutils
+ compile
+
+
+ commons-collections
+ commons-collections
+ compile
+
+
+ commons-fileupload
+ commons-fileupload
+ compile
+
+
+ commons-io
+ commons-io
+ compile
+
+
+ commons-lang
+ commons-lang
+ compile
+
+
+ commons-logging
+ commons-logging
+ compile
+
+
+ commons-modeler
+ commons-modeler
+ compile
+
+
+ javainetlocator
+ inetaddresslocator
+ compile
+
+
+ javax.transaction
+ jta
+ compile
+
+
+ org.jfree
+ jfreechart
+ compile
+
+
+ log4j
+ log4j
+ runtime
+
+
+ opensymphony
+ quartz
+ compile
+
+
+ opensymphony
+ sitemesh
+ compile
+
+
+ javax.management
+ jmxri
+ ${jmxri.scope}
+
+
+ xpp3
+ xpp3_min
+ compile
+
+
+ org.springframework
+ spring-beans
+ compile
+
+
+ org.springframework
+ spring-webmvc
+ compile
+
+
+ org.springframework
+ spring-tx
+ compile
+
+
+ org.springframework
+ spring-context
+ compile
+
+
+ org.springframework.security
+ spring-security-core
+ compile
+
+
+ junit
+ junit
+ test
+
+
+
+
+
+ true
+
+
+ compile
+
+
+
+ jboss
+
+ provided
+
+
+
+
diff --git a/core/src/main/java/com/googlecode/psiprobe/AbstractTomcatContainer.java b/core/src/main/java/com/googlecode/psiprobe/AbstractTomcatContainer.java
index 055a623471..3292705fec 100644
--- a/core/src/main/java/com/googlecode/psiprobe/AbstractTomcatContainer.java
+++ b/core/src/main/java/com/googlecode/psiprobe/AbstractTomcatContainer.java
@@ -1,465 +1,465 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.model.jsp.Item;
-import com.googlecode.psiprobe.model.jsp.Summary;
-
-import org.apache.catalina.Container;
-import org.apache.catalina.Context;
-import org.apache.catalina.Engine;
-import org.apache.catalina.Host;
-import org.apache.catalina.core.StandardContext;
-import org.apache.commons.lang.reflect.MethodUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jasper.EmbeddedServletOptions;
-import org.apache.jasper.JasperException;
-import org.apache.jasper.JspCompilationContext;
-import org.apache.jasper.Options;
-import org.apache.jasper.compiler.JspRuntimeContext;
-import org.apache.naming.ContextBindings;
-import org.springframework.util.ClassUtils;
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.naming.NamingException;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-
-/**
- * Abstraction layer to implement some functionality, which is common between different container
- * adaptors.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public abstract class AbstractTomcatContainer implements TomcatContainer {
-
- protected Log logger = LogFactory.getLog(getClass());
-
- public boolean installContext(String contextName) throws Exception {
- contextName = formatContextName(contextName);
- String contextFilename = formatContextFilename(contextName);
- File f = new File(getConfigBase(), contextFilename + ".xml");
- installContextInternal(contextName, f);
- return findContext(contextName) != null;
- }
-
- public void remove(String contextName) throws Exception {
- contextName = formatContextName(contextName);
- Context ctx = findContext(contextName);
-
- if (ctx != null) {
-
- try {
- stop(contextName);
- } catch (Throwable e) {
- logger.info("Stopping " + contextName + " threw this exception:", e);
- // make sure we always re-throw ThreadDeath
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
-
- File appDir;
- File docBase = new File(ctx.getDocBase());
-
- if (!docBase.isAbsolute()) {
- appDir = new File(getAppBase(), ctx.getDocBase());
- } else {
- appDir = docBase;
- }
-
- logger.debug("Deleting " + appDir.getAbsolutePath());
- Utils.delete(appDir);
-
- String warFilename = formatContextFilename(contextName);
- File warFile = new File(getAppBase(), warFilename + ".war");
- logger.debug("Deleting " + warFile.getAbsolutePath());
- Utils.delete(warFile);
-
- File configFile = getConfigFile(ctx);
- if (configFile != null) {
- logger.debug("Deleting " + configFile.getAbsolutePath());
- Utils.delete(configFile);
- }
-
- removeInternal(contextName);
- }
- }
-
- /**
- * Binds a naming context to the current thread's classloader.
- *
- * @param context the catalina context
- */
- public void bindToContext(Context context) throws NamingException {
- Object token = null;
- ContextBindings.bindClassLoader(context, token, Thread.currentThread().getContextClassLoader());
- }
-
- /**
- * Unbinds a naming context from the current thread's classloader.
- *
- * @param context the catalina context
- */
- public void unbindFromContext(Context context) throws NamingException {
- Object token = null;
- ContextBindings.unbindClassLoader(context, token, Thread.currentThread()
- .getContextClassLoader());
- }
-
- public Context findContext(String name) {
- String safeName = formatContextName(name);
- if (safeName == null) {
- return null;
- }
- Context result = findContextInternal(safeName);
- if (result == null && "".equals(safeName)) {
- result = findContextInternal("/");
- }
- return result;
- }
-
- public String formatContextName(String name) {
- if (name == null) {
- return null;
- }
- String result = name.trim();
- if (!result.startsWith("/")) {
- result = "/" + result;
- }
- if ("/".equals(result) || "/ROOT".equals(result)) {
- result = "";
- }
- return result;
- }
-
- public String formatContextFilename(String contextName) {
- if (contextName == null) {
- return null;
- } else if ("".equals(contextName)) {
- return "ROOT";
- } else if (contextName.startsWith("/")) {
- return contextName.substring(1);
- } else {
- return contextName;
- }
- }
-
- public void discardWorkDir(Context context) {
- if (context instanceof StandardContext) {
- StandardContext standardContext = (StandardContext) context;
- logger.info("Discarding " + standardContext.getWorkPath());
- Utils.delete(new File(standardContext.getWorkPath(), "org"));
- } else {
- logger.error("context " + context.getName() + " is not an instance of "
- + context.getClass().getName() + ", expected StandardContext");
- }
- }
-
- public String getServletFileNameForJsp(Context context, String jspName) {
- String servletName = null;
-
- ServletConfig servletConfig = (ServletConfig) context.findChild("jsp");
- if (servletConfig != null) {
- ServletContext sctx = context.getServletContext();
- Options opt = new EmbeddedServletOptions(servletConfig, sctx);
- JspRuntimeContext jrctx = new JspRuntimeContext(sctx, opt);
- JspCompilationContext jcctx =
- createJspCompilationContext(jspName, false, opt, sctx, jrctx, null);
- servletName = jcctx.getServletJavaFileName();
- } else {
- logger.error("Context " + context.getName() + " does not have \"jsp\" servlet");
- }
- return servletName;
- }
-
- /**
- * Compiles a list of JSPs. Names of JSP files are expected to be relative to the webapp root. The
- * method updates summary with compilation details.
- *
- * @param context
- * @param summary
- * @param names
- */
- public void recompileJsps(Context context, Summary summary, List names) {
- ServletConfig servletConfig = (ServletConfig) context.findChild("jsp");
- if (servletConfig != null) {
- if (summary != null) {
- synchronized (servletConfig) {
- ServletContext sctx = context.getServletContext();
- Options opt = new EmbeddedServletOptions(servletConfig, sctx);
-
- JspRuntimeContext jrctx = new JspRuntimeContext(sctx, opt);
- try {
- /*
- * we need to pass context classloader here, so the jsps can reference /WEB-INF/classes
- * and /WEB-INF/lib. JspCompilationContext would only take URLClassLoader, so we fake it
- */
- URLClassLoader classLoader =
- new URLClassLoader(new URL[] {}, context.getLoader().getClassLoader());
- for (Iterator it = names.iterator(); it.hasNext();) {
- String name = (String) it.next();
- long time = System.currentTimeMillis();
- JspCompilationContext jcctx =
- createJspCompilationContext(name, false, opt, sctx, jrctx, classLoader);
- ClassLoader prevCl = ClassUtils.overrideThreadContextClassLoader(classLoader);
- try {
- Item item = (Item) summary.getItems().get(name);
- if (item != null) {
- try {
- org.apache.jasper.compiler.Compiler c = jcctx.createCompiler();
- c.compile();
- item.setState(Item.STATE_READY);
- item.setException(null);
- logger.info("Compiled " + name + ": OK");
- } catch (Exception e) {
- item.setState(Item.STATE_FAILED);
- item.setException(e);
- logger.info("Compiled " + name + ": FAILED", e);
- }
- item.setCompileTime(System.currentTimeMillis() - time);
- } else {
- logger.error(name + " is not on the summary list, ignored");
- }
- } finally {
- ClassUtils.overrideThreadContextClassLoader(prevCl);
- }
- }
- } finally {
- jrctx.destroy();
- }
- }
- } else {
- logger.error("summary is null for " + context.getName() + ", request ignored");
- }
- } else {
- logger.error("Context " + context.getName() + " does not have \"jsp\" servlet");
- }
- }
-
- /**
- * Lists and optionally compiles all JSPs for the given context. Compilation details are added to
- * the summary.
- *
- * @param context
- * @param summary
- * @param compile
- * @throws Exception
- */
- public void listContextJsps(Context context, Summary summary, boolean compile) throws Exception {
- ServletConfig servletConfig = (ServletConfig) context.findChild("jsp");
- if (servletConfig != null) {
- synchronized (servletConfig) {
- ServletContext sctx = context.getServletContext();
- Options opt = new EmbeddedServletOptions(servletConfig, sctx);
-
- JspRuntimeContext jrctx = new JspRuntimeContext(sctx, opt);
- try {
- if (summary.getItems() == null) {
- summary.setItems(new HashMap());
- }
-
- /*
- * mark all items as missing
- */
- for (Iterator it = summary.getItems().keySet().iterator(); it.hasNext();) {
- Item item = (Item) summary.getItems().get(it.next());
- item.setMissing(true);
- }
-
- /*
- * we need to pass context classloader here, so the jsps can reference /WEB-INF/classes
- * and /WEB-INF/lib. JspCompilationContext would only take URLClassLoader, so we fake it
- */
- compileItem("/", opt, context, jrctx, summary, new URLClassLoader(new URL[] {}, context
- .getLoader().getClassLoader()), 0, compile);
- } finally {
- jrctx.destroy();
- }
- }
-
- //
- // delete "missing" items by keeping "not missing" ones
- //
- Map hashMap = new HashMap();
- for (Iterator it = summary.getItems().keySet().iterator(); it.hasNext();) {
- Object key = it.next();
- Item item = (Item) summary.getItems().get(key);
- if (!item.isMissing()) {
- hashMap.put(key, item);
- }
- }
-
- summary.setItems(hashMap);
- } else {
- logger.error("Context " + context.getName() + " does not have \"jsp\" servlet");
- }
- }
-
- public File getConfigFile(Context ctx) {
- String configFilePath = ctx.getConfigFile();
- if (configFilePath != null) {
- return new File(configFilePath);
- } else {
- return null;
- }
- }
-
- protected String getConfigBase(Container container) {
- File configBase = new File(System.getProperty("catalina.base"), "conf");
- Container baseHost = null;
- Container baseEngine = null;
- while (container != null) {
- if (container instanceof Host) {
- baseHost = container;
- }
- if (container instanceof Engine) {
- baseEngine = container;
- }
- container = container.getParent();
- }
- if (baseEngine != null) {
- configBase = new File(configBase, baseEngine.getName());
- }
- if (baseHost != null) {
- configBase = new File(configBase, baseHost.getName());
- }
- return configBase.getAbsolutePath();
- }
-
- /**
- * Lists and optionally compiles a directory recursively.
- *
- * @param jspName name of JSP file or directory to be listed and compiled.
- * @param opt
- * @param ctx
- * @param jrctx
- * @param summary
- * @param classLoader
- * @param level
- * @param compile
- */
- protected void compileItem(String jspName, Options opt, Context ctx, JspRuntimeContext jrctx,
- Summary summary, URLClassLoader classLoader, int level, boolean compile) {
- ServletContext sctx = ctx.getServletContext();
- Set paths = sctx.getResourcePaths(jspName);
-
- if (paths != null) {
- for (Iterator it = paths.iterator(); it.hasNext();) {
- String name = (String) it.next();
- boolean isJsp = false;
-
- try {
- isJsp =
- name.endsWith(".jsp") || name.endsWith(".jspx") || opt.getJspConfig().isJspPage(name);
- } catch (JasperException e) {
- logger.info("isJspPage() thrown an error for " + name, e);
- }
-
- if (isJsp) {
- JspCompilationContext jcctx =
- createJspCompilationContext(name, false, opt, sctx, jrctx, classLoader);
- ClassLoader prevCl = ClassUtils.overrideThreadContextClassLoader(classLoader);
- try {
- Item item = (Item) summary.getItems().get(name);
-
- if (item == null) {
- item = new Item();
- item.setName(name);
- }
-
- item.setLevel(level);
- item.setCompileTime(-1);
-
- Long objects[] = this.getResourceAttributes(name, ctx);
- item.setSize(objects[0].longValue());
- item.setLastModified(objects[1].longValue());
-
- long time = System.currentTimeMillis();
- try {
- org.apache.jasper.compiler.Compiler c = jcctx.createCompiler();
- if (compile) {
- c.compile();
- item.setState(Item.STATE_READY);
- item.setException(null);
- } else {
- if (!c.isOutDated()) {
- item.setState(Item.STATE_READY);
- item.setException(null);
- } else if (item.getState() != Item.STATE_FAILED) {
- item.setState(Item.STATE_OOD);
- item.setException(null);
- }
- }
- logger.info("Compiled " + name + ": OK");
- } catch (Exception e) {
- item.setState(Item.STATE_FAILED);
- item.setException(e);
- logger.info("Compiled " + name + ": FAILED", e);
- }
- if (compile) {
- item.setCompileTime(System.currentTimeMillis() - time);
- }
- item.setMissing(false);
- summary.getItems().put(name, item);
- } finally {
- ClassUtils.overrideThreadContextClassLoader(prevCl);
- }
- } else {
- compileItem(name, opt, ctx, jrctx, summary, classLoader, level + 1, compile);
- }
- }
- } else {
- logger.debug("getResourcePaths() is null for " + jspName + ". Empty dir? Or Tomcat bug?");
- }
- }
-
- protected JspCompilationContext createJspCompilationContext(String name, boolean isErrPage,
- Options opt, ServletContext sctx, JspRuntimeContext jrctx, ClassLoader cl) {
-
- JspCompilationContext jcctx = new JspCompilationContext(name, false, opt, sctx, null, jrctx);
- if (cl != null && cl instanceof URLClassLoader) {
- try {
- jcctx.setClassLoader((URLClassLoader) cl);
- } catch (NoSuchMethodError err) {
- // JBoss Web 2.1 has a different method signature for setClassLoader().
- try {
- MethodUtils.invokeMethod(jcctx, "setClassLoader", cl);
- } catch (NoSuchMethodException ex) {
- throw new RuntimeException(ex);
- } catch (IllegalAccessException ex) {
- throw new RuntimeException(ex);
- } catch (InvocationTargetException ex) {
- throw new RuntimeException(ex);
- }
- }
- }
- return jcctx;
- }
-
- protected abstract void removeInternal(String name) throws Exception;
-
- protected abstract void installContextInternal(String contextName, File f) throws Exception;
-
- protected abstract Context findContextInternal(String contextName);
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.model.jsp.Item;
+import com.googlecode.psiprobe.model.jsp.Summary;
+
+import org.apache.catalina.Container;
+import org.apache.catalina.Context;
+import org.apache.catalina.Engine;
+import org.apache.catalina.Host;
+import org.apache.catalina.core.StandardContext;
+import org.apache.commons.lang.reflect.MethodUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jasper.EmbeddedServletOptions;
+import org.apache.jasper.JasperException;
+import org.apache.jasper.JspCompilationContext;
+import org.apache.jasper.Options;
+import org.apache.jasper.compiler.JspRuntimeContext;
+import org.apache.naming.ContextBindings;
+import org.springframework.util.ClassUtils;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.naming.NamingException;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+
+/**
+ * Abstraction layer to implement some functionality, which is common between different container
+ * adaptors.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public abstract class AbstractTomcatContainer implements TomcatContainer {
+
+ protected Log logger = LogFactory.getLog(getClass());
+
+ public boolean installContext(String contextName) throws Exception {
+ contextName = formatContextName(contextName);
+ String contextFilename = formatContextFilename(contextName);
+ File f = new File(getConfigBase(), contextFilename + ".xml");
+ installContextInternal(contextName, f);
+ return findContext(contextName) != null;
+ }
+
+ public void remove(String contextName) throws Exception {
+ contextName = formatContextName(contextName);
+ Context ctx = findContext(contextName);
+
+ if (ctx != null) {
+
+ try {
+ stop(contextName);
+ } catch (Throwable e) {
+ logger.info("Stopping " + contextName + " threw this exception:", e);
+ // make sure we always re-throw ThreadDeath
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+
+ File appDir;
+ File docBase = new File(ctx.getDocBase());
+
+ if (!docBase.isAbsolute()) {
+ appDir = new File(getAppBase(), ctx.getDocBase());
+ } else {
+ appDir = docBase;
+ }
+
+ logger.debug("Deleting " + appDir.getAbsolutePath());
+ Utils.delete(appDir);
+
+ String warFilename = formatContextFilename(contextName);
+ File warFile = new File(getAppBase(), warFilename + ".war");
+ logger.debug("Deleting " + warFile.getAbsolutePath());
+ Utils.delete(warFile);
+
+ File configFile = getConfigFile(ctx);
+ if (configFile != null) {
+ logger.debug("Deleting " + configFile.getAbsolutePath());
+ Utils.delete(configFile);
+ }
+
+ removeInternal(contextName);
+ }
+ }
+
+ /**
+ * Binds a naming context to the current thread's classloader.
+ *
+ * @param context the catalina context
+ */
+ public void bindToContext(Context context) throws NamingException {
+ Object token = null;
+ ContextBindings.bindClassLoader(context, token, Thread.currentThread().getContextClassLoader());
+ }
+
+ /**
+ * Unbinds a naming context from the current thread's classloader.
+ *
+ * @param context the catalina context
+ */
+ public void unbindFromContext(Context context) throws NamingException {
+ Object token = null;
+ ContextBindings.unbindClassLoader(context, token, Thread.currentThread()
+ .getContextClassLoader());
+ }
+
+ public Context findContext(String name) {
+ String safeName = formatContextName(name);
+ if (safeName == null) {
+ return null;
+ }
+ Context result = findContextInternal(safeName);
+ if (result == null && "".equals(safeName)) {
+ result = findContextInternal("/");
+ }
+ return result;
+ }
+
+ public String formatContextName(String name) {
+ if (name == null) {
+ return null;
+ }
+ String result = name.trim();
+ if (!result.startsWith("/")) {
+ result = "/" + result;
+ }
+ if ("/".equals(result) || "/ROOT".equals(result)) {
+ result = "";
+ }
+ return result;
+ }
+
+ public String formatContextFilename(String contextName) {
+ if (contextName == null) {
+ return null;
+ } else if ("".equals(contextName)) {
+ return "ROOT";
+ } else if (contextName.startsWith("/")) {
+ return contextName.substring(1);
+ } else {
+ return contextName;
+ }
+ }
+
+ public void discardWorkDir(Context context) {
+ if (context instanceof StandardContext) {
+ StandardContext standardContext = (StandardContext) context;
+ logger.info("Discarding " + standardContext.getWorkPath());
+ Utils.delete(new File(standardContext.getWorkPath(), "org"));
+ } else {
+ logger.error("context " + context.getName() + " is not an instance of "
+ + context.getClass().getName() + ", expected StandardContext");
+ }
+ }
+
+ public String getServletFileNameForJsp(Context context, String jspName) {
+ String servletName = null;
+
+ ServletConfig servletConfig = (ServletConfig) context.findChild("jsp");
+ if (servletConfig != null) {
+ ServletContext sctx = context.getServletContext();
+ Options opt = new EmbeddedServletOptions(servletConfig, sctx);
+ JspRuntimeContext jrctx = new JspRuntimeContext(sctx, opt);
+ JspCompilationContext jcctx =
+ createJspCompilationContext(jspName, false, opt, sctx, jrctx, null);
+ servletName = jcctx.getServletJavaFileName();
+ } else {
+ logger.error("Context " + context.getName() + " does not have \"jsp\" servlet");
+ }
+ return servletName;
+ }
+
+ /**
+ * Compiles a list of JSPs. Names of JSP files are expected to be relative to the webapp root. The
+ * method updates summary with compilation details.
+ *
+ * @param context
+ * @param summary
+ * @param names
+ */
+ public void recompileJsps(Context context, Summary summary, List names) {
+ ServletConfig servletConfig = (ServletConfig) context.findChild("jsp");
+ if (servletConfig != null) {
+ if (summary != null) {
+ synchronized (servletConfig) {
+ ServletContext sctx = context.getServletContext();
+ Options opt = new EmbeddedServletOptions(servletConfig, sctx);
+
+ JspRuntimeContext jrctx = new JspRuntimeContext(sctx, opt);
+ try {
+ /*
+ * we need to pass context classloader here, so the jsps can reference /WEB-INF/classes
+ * and /WEB-INF/lib. JspCompilationContext would only take URLClassLoader, so we fake it
+ */
+ URLClassLoader classLoader =
+ new URLClassLoader(new URL[] {}, context.getLoader().getClassLoader());
+ for (Iterator it = names.iterator(); it.hasNext();) {
+ String name = (String) it.next();
+ long time = System.currentTimeMillis();
+ JspCompilationContext jcctx =
+ createJspCompilationContext(name, false, opt, sctx, jrctx, classLoader);
+ ClassLoader prevCl = ClassUtils.overrideThreadContextClassLoader(classLoader);
+ try {
+ Item item = (Item) summary.getItems().get(name);
+ if (item != null) {
+ try {
+ org.apache.jasper.compiler.Compiler c = jcctx.createCompiler();
+ c.compile();
+ item.setState(Item.STATE_READY);
+ item.setException(null);
+ logger.info("Compiled " + name + ": OK");
+ } catch (Exception e) {
+ item.setState(Item.STATE_FAILED);
+ item.setException(e);
+ logger.info("Compiled " + name + ": FAILED", e);
+ }
+ item.setCompileTime(System.currentTimeMillis() - time);
+ } else {
+ logger.error(name + " is not on the summary list, ignored");
+ }
+ } finally {
+ ClassUtils.overrideThreadContextClassLoader(prevCl);
+ }
+ }
+ } finally {
+ jrctx.destroy();
+ }
+ }
+ } else {
+ logger.error("summary is null for " + context.getName() + ", request ignored");
+ }
+ } else {
+ logger.error("Context " + context.getName() + " does not have \"jsp\" servlet");
+ }
+ }
+
+ /**
+ * Lists and optionally compiles all JSPs for the given context. Compilation details are added to
+ * the summary.
+ *
+ * @param context
+ * @param summary
+ * @param compile
+ * @throws Exception
+ */
+ public void listContextJsps(Context context, Summary summary, boolean compile) throws Exception {
+ ServletConfig servletConfig = (ServletConfig) context.findChild("jsp");
+ if (servletConfig != null) {
+ synchronized (servletConfig) {
+ ServletContext sctx = context.getServletContext();
+ Options opt = new EmbeddedServletOptions(servletConfig, sctx);
+
+ JspRuntimeContext jrctx = new JspRuntimeContext(sctx, opt);
+ try {
+ if (summary.getItems() == null) {
+ summary.setItems(new HashMap());
+ }
+
+ /*
+ * mark all items as missing
+ */
+ for (Iterator it = summary.getItems().keySet().iterator(); it.hasNext();) {
+ Item item = (Item) summary.getItems().get(it.next());
+ item.setMissing(true);
+ }
+
+ /*
+ * we need to pass context classloader here, so the jsps can reference /WEB-INF/classes
+ * and /WEB-INF/lib. JspCompilationContext would only take URLClassLoader, so we fake it
+ */
+ compileItem("/", opt, context, jrctx, summary, new URLClassLoader(new URL[] {}, context
+ .getLoader().getClassLoader()), 0, compile);
+ } finally {
+ jrctx.destroy();
+ }
+ }
+
+ //
+ // delete "missing" items by keeping "not missing" ones
+ //
+ Map hashMap = new HashMap();
+ for (Iterator it = summary.getItems().keySet().iterator(); it.hasNext();) {
+ Object key = it.next();
+ Item item = (Item) summary.getItems().get(key);
+ if (!item.isMissing()) {
+ hashMap.put(key, item);
+ }
+ }
+
+ summary.setItems(hashMap);
+ } else {
+ logger.error("Context " + context.getName() + " does not have \"jsp\" servlet");
+ }
+ }
+
+ public File getConfigFile(Context ctx) {
+ String configFilePath = ctx.getConfigFile();
+ if (configFilePath != null) {
+ return new File(configFilePath);
+ } else {
+ return null;
+ }
+ }
+
+ protected String getConfigBase(Container container) {
+ File configBase = new File(System.getProperty("catalina.base"), "conf");
+ Container baseHost = null;
+ Container baseEngine = null;
+ while (container != null) {
+ if (container instanceof Host) {
+ baseHost = container;
+ }
+ if (container instanceof Engine) {
+ baseEngine = container;
+ }
+ container = container.getParent();
+ }
+ if (baseEngine != null) {
+ configBase = new File(configBase, baseEngine.getName());
+ }
+ if (baseHost != null) {
+ configBase = new File(configBase, baseHost.getName());
+ }
+ return configBase.getAbsolutePath();
+ }
+
+ /**
+ * Lists and optionally compiles a directory recursively.
+ *
+ * @param jspName name of JSP file or directory to be listed and compiled.
+ * @param opt
+ * @param ctx
+ * @param jrctx
+ * @param summary
+ * @param classLoader
+ * @param level
+ * @param compile
+ */
+ protected void compileItem(String jspName, Options opt, Context ctx, JspRuntimeContext jrctx,
+ Summary summary, URLClassLoader classLoader, int level, boolean compile) {
+ ServletContext sctx = ctx.getServletContext();
+ Set paths = sctx.getResourcePaths(jspName);
+
+ if (paths != null) {
+ for (Iterator it = paths.iterator(); it.hasNext();) {
+ String name = (String) it.next();
+ boolean isJsp = false;
+
+ try {
+ isJsp =
+ name.endsWith(".jsp") || name.endsWith(".jspx") || opt.getJspConfig().isJspPage(name);
+ } catch (JasperException e) {
+ logger.info("isJspPage() thrown an error for " + name, e);
+ }
+
+ if (isJsp) {
+ JspCompilationContext jcctx =
+ createJspCompilationContext(name, false, opt, sctx, jrctx, classLoader);
+ ClassLoader prevCl = ClassUtils.overrideThreadContextClassLoader(classLoader);
+ try {
+ Item item = (Item) summary.getItems().get(name);
+
+ if (item == null) {
+ item = new Item();
+ item.setName(name);
+ }
+
+ item.setLevel(level);
+ item.setCompileTime(-1);
+
+ Long objects[] = this.getResourceAttributes(name, ctx);
+ item.setSize(objects[0].longValue());
+ item.setLastModified(objects[1].longValue());
+
+ long time = System.currentTimeMillis();
+ try {
+ org.apache.jasper.compiler.Compiler c = jcctx.createCompiler();
+ if (compile) {
+ c.compile();
+ item.setState(Item.STATE_READY);
+ item.setException(null);
+ } else {
+ if (!c.isOutDated()) {
+ item.setState(Item.STATE_READY);
+ item.setException(null);
+ } else if (item.getState() != Item.STATE_FAILED) {
+ item.setState(Item.STATE_OOD);
+ item.setException(null);
+ }
+ }
+ logger.info("Compiled " + name + ": OK");
+ } catch (Exception e) {
+ item.setState(Item.STATE_FAILED);
+ item.setException(e);
+ logger.info("Compiled " + name + ": FAILED", e);
+ }
+ if (compile) {
+ item.setCompileTime(System.currentTimeMillis() - time);
+ }
+ item.setMissing(false);
+ summary.getItems().put(name, item);
+ } finally {
+ ClassUtils.overrideThreadContextClassLoader(prevCl);
+ }
+ } else {
+ compileItem(name, opt, ctx, jrctx, summary, classLoader, level + 1, compile);
+ }
+ }
+ } else {
+ logger.debug("getResourcePaths() is null for " + jspName + ". Empty dir? Or Tomcat bug?");
+ }
+ }
+
+ protected JspCompilationContext createJspCompilationContext(String name, boolean isErrPage,
+ Options opt, ServletContext sctx, JspRuntimeContext jrctx, ClassLoader cl) {
+
+ JspCompilationContext jcctx = new JspCompilationContext(name, false, opt, sctx, null, jrctx);
+ if (cl != null && cl instanceof URLClassLoader) {
+ try {
+ jcctx.setClassLoader((URLClassLoader) cl);
+ } catch (NoSuchMethodError err) {
+ // JBoss Web 2.1 has a different method signature for setClassLoader().
+ try {
+ MethodUtils.invokeMethod(jcctx, "setClassLoader", cl);
+ } catch (NoSuchMethodException ex) {
+ throw new RuntimeException(ex);
+ } catch (IllegalAccessException ex) {
+ throw new RuntimeException(ex);
+ } catch (InvocationTargetException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+ return jcctx;
+ }
+
+ protected abstract void removeInternal(String name) throws Exception;
+
+ protected abstract void installContextInternal(String contextName, File f) throws Exception;
+
+ protected abstract Context findContextInternal(String contextName);
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/ProbeServlet.java b/core/src/main/java/com/googlecode/psiprobe/ProbeServlet.java
index 4a4d8f54b8..f878ea494d 100644
--- a/core/src/main/java/com/googlecode/psiprobe/ProbeServlet.java
+++ b/core/src/main/java/com/googlecode/psiprobe/ProbeServlet.java
@@ -1,70 +1,70 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.beans.ContainerWrapperBean;
-
-import org.apache.catalina.ContainerServlet;
-import org.apache.catalina.Wrapper;
-import org.springframework.web.servlet.DispatcherServlet;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Main dispatcher servlet. Spring default dispatcher servlet had to be superceeded to handle
- * "privileged" application context features. The actual requirement is to capture passed Wrapper
- * instance into ContainerWrapperBean. Wrapper instance is our gateway to Tomcat.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ProbeServlet extends DispatcherServlet implements ContainerServlet {
-
- private Wrapper wrapper;
-
- public Wrapper getWrapper() {
- return wrapper;
- }
-
- public void setWrapper(Wrapper wrapper) {
- this.wrapper = wrapper;
- logger.info("setWrapper() called");
- }
-
- public void init(ServletConfig config) throws ServletException {
- super.init(config);
- if (wrapper != null) {
- getContainerWrapperBean().setWrapper(wrapper);
- } else {
- throw new ServletException("Wrapper is null");
- }
- }
-
- protected void doDispatch(HttpServletRequest httpServletRequest,
- HttpServletResponse httpServletResponse) throws Exception {
-
- httpServletRequest.setCharacterEncoding("UTF-8");
- super.doDispatch(httpServletRequest, httpServletResponse);
- }
-
- public void destroy() {
- getContainerWrapperBean().setWrapper(null);
- super.destroy();
- }
-
- protected ContainerWrapperBean getContainerWrapperBean() {
- return (ContainerWrapperBean) getWebApplicationContext().getBean("containerWrapper");
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.beans.ContainerWrapperBean;
+
+import org.apache.catalina.ContainerServlet;
+import org.apache.catalina.Wrapper;
+import org.springframework.web.servlet.DispatcherServlet;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Main dispatcher servlet. Spring default dispatcher servlet had to be superceeded to handle
+ * "privileged" application context features. The actual requirement is to capture passed Wrapper
+ * instance into ContainerWrapperBean. Wrapper instance is our gateway to Tomcat.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ProbeServlet extends DispatcherServlet implements ContainerServlet {
+
+ private Wrapper wrapper;
+
+ public Wrapper getWrapper() {
+ return wrapper;
+ }
+
+ public void setWrapper(Wrapper wrapper) {
+ this.wrapper = wrapper;
+ logger.info("setWrapper() called");
+ }
+
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ if (wrapper != null) {
+ getContainerWrapperBean().setWrapper(wrapper);
+ } else {
+ throw new ServletException("Wrapper is null");
+ }
+ }
+
+ protected void doDispatch(HttpServletRequest httpServletRequest,
+ HttpServletResponse httpServletResponse) throws Exception {
+
+ httpServletRequest.setCharacterEncoding("UTF-8");
+ super.doDispatch(httpServletRequest, httpServletResponse);
+ }
+
+ public void destroy() {
+ getContainerWrapperBean().setWrapper(null);
+ super.destroy();
+ }
+
+ protected ContainerWrapperBean getContainerWrapperBean() {
+ return (ContainerWrapperBean) getWebApplicationContext().getBean("containerWrapper");
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/TomcatContainer.java b/core/src/main/java/com/googlecode/psiprobe/TomcatContainer.java
index 91c74e9583..0c5245eda8 100644
--- a/core/src/main/java/com/googlecode/psiprobe/TomcatContainer.java
+++ b/core/src/main/java/com/googlecode/psiprobe/TomcatContainer.java
@@ -1,103 +1,103 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.model.jsp.Summary;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.Wrapper;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.List;
-
-/**
- * Part of Tomcat container version abstraction layer.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public interface TomcatContainer {
-
- Context findContext(String name);
-
- String formatContextName(String name);
-
- String formatContextFilename(String contextName);
-
- List findContexts();
-
- void stop(String name) throws Exception;
-
- void start(String name) throws Exception;
-
- void remove(String name) throws Exception;
-
- /**
- * Installs .war file at the given context name.
- *
- * @param name the name of the context
- * @param url pointer to .war file to be deployed
- * @throws Exception
- */
- void installWar(String name, URL url) throws Exception;
-
- /**
- * This method always returns absolute path, no matter what Tomcat is up to.
- *
- * @return absolute path to applications base (normally "webapps")
- */
- File getAppBase();
-
- File getConfigFile(Context ctx);
-
- String getConfigBase();
-
- void setWrapper(Wrapper wrapper);
-
- boolean canBoundTo(String binding);
-
- boolean installContext(String contextName) throws Exception;
-
- void listContextJsps(Context context, Summary summary, boolean compile) throws Exception;
-
- void recompileJsps(Context context, Summary summary, List names);
-
- void discardWorkDir(Context context);
-
- Object getLogger(Context context);
-
- String getHostName();
-
- String getName();
-
- String getServletFileNameForJsp(Context context, String jspName);
-
- List getApplicationFilterMaps(Context context);
-
- boolean getAvailable(Context context);
-
- public void addContextResource(Context context, List resourceList, boolean contextBound);
-
- public void addContextResourceLink(Context context, List resourceList, boolean contextBound);
-
- public List getApplicationFilters(Context context);
-
- public List getApplicationInitParams(Context context);
-
- boolean resourceExists(String name, Context context);
-
- InputStream getResourceStream(String name, Context context) throws IOException;
-
- public Long[] getResourceAttributes(String name, Context context);
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.model.jsp.Summary;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Wrapper;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * Part of Tomcat container version abstraction layer.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public interface TomcatContainer {
+
+ Context findContext(String name);
+
+ String formatContextName(String name);
+
+ String formatContextFilename(String contextName);
+
+ List findContexts();
+
+ void stop(String name) throws Exception;
+
+ void start(String name) throws Exception;
+
+ void remove(String name) throws Exception;
+
+ /**
+ * Installs .war file at the given context name.
+ *
+ * @param name the name of the context
+ * @param url pointer to .war file to be deployed
+ * @throws Exception
+ */
+ void installWar(String name, URL url) throws Exception;
+
+ /**
+ * This method always returns absolute path, no matter what Tomcat is up to.
+ *
+ * @return absolute path to applications base (normally "webapps")
+ */
+ File getAppBase();
+
+ File getConfigFile(Context ctx);
+
+ String getConfigBase();
+
+ void setWrapper(Wrapper wrapper);
+
+ boolean canBoundTo(String binding);
+
+ boolean installContext(String contextName) throws Exception;
+
+ void listContextJsps(Context context, Summary summary, boolean compile) throws Exception;
+
+ void recompileJsps(Context context, Summary summary, List names);
+
+ void discardWorkDir(Context context);
+
+ Object getLogger(Context context);
+
+ String getHostName();
+
+ String getName();
+
+ String getServletFileNameForJsp(Context context, String jspName);
+
+ List getApplicationFilterMaps(Context context);
+
+ boolean getAvailable(Context context);
+
+ public void addContextResource(Context context, List resourceList, boolean contextBound);
+
+ public void addContextResourceLink(Context context, List resourceList, boolean contextBound);
+
+ public List getApplicationFilters(Context context);
+
+ public List getApplicationInitParams(Context context);
+
+ boolean resourceExists(String name, Context context);
+
+ InputStream getResourceStream(String name, Context context) throws IOException;
+
+ public Long[] getResourceAttributes(String name, Context context);
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/UptimeListener.java b/core/src/main/java/com/googlecode/psiprobe/UptimeListener.java
index 40b89d6df4..7890e4ecc5 100644
--- a/core/src/main/java/com/googlecode/psiprobe/UptimeListener.java
+++ b/core/src/main/java/com/googlecode/psiprobe/UptimeListener.java
@@ -1,34 +1,34 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-
-/**
- * Simple listener that registers its startup time in the ServletContext object.
- *
- * @author Vlad Ilyushchenko
- * @author Adriano Machado
- * @author Mark Lewis
- */
-public class UptimeListener implements ServletContextListener {
-
- public static final String START_TIME_KEY = "UPTIME_START";
-
- public void contextInitialized(ServletContextEvent sce) {
- sce.getServletContext().setAttribute(START_TIME_KEY, new Long(System.currentTimeMillis()));
- }
-
- public void contextDestroyed(ServletContextEvent sce) {
- sce.getServletContext().removeAttribute(START_TIME_KEY);
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+/**
+ * Simple listener that registers its startup time in the ServletContext object.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Adriano Machado
+ * @author Mark Lewis
+ */
+public class UptimeListener implements ServletContextListener {
+
+ public static final String START_TIME_KEY = "UPTIME_START";
+
+ public void contextInitialized(ServletContextEvent sce) {
+ sce.getServletContext().setAttribute(START_TIME_KEY, new Long(System.currentTimeMillis()));
+ }
+
+ public void contextDestroyed(ServletContextEvent sce) {
+ sce.getServletContext().removeAttribute(START_TIME_KEY);
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/Utils.java b/core/src/main/java/com/googlecode/psiprobe/Utils.java
index 454d780da8..fe79e7703e 100644
--- a/core/src/main/java/com/googlecode/psiprobe/Utils.java
+++ b/core/src/main/java/com/googlecode/psiprobe/Utils.java
@@ -1,438 +1,438 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.tokenizer.StringTokenizer;
-import com.googlecode.psiprobe.tokenizer.Token;
-import com.googlecode.psiprobe.tokenizer.Tokenizer;
-import com.googlecode.psiprobe.tokenizer.TokenizerSymbol;
-
-import com.uwyn.jhighlight.renderer.Renderer;
-import com.uwyn.jhighlight.renderer.XhtmlRendererFactory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.modeler.Registry;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.RandomAccessFile;
-import java.io.Reader;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Misc. static helper methods.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Utils {
-
- private static Log logger = LogFactory.getLog(Utils.class.getName());
-
- public static int calcPoolUsageScore(int max, int value) {
- return max > 0 ? Math.max(0, value) * 100 / max : 0;
- }
-
- /**
- * Reads a file on disk. The method uses default file encoding (see: file.encoding system
- * property)
- *
- * @param file to be read
- * @return String representation of the file contents
- */
- public static String readFile(File file, String charsetName) throws IOException {
- String result = null;
- FileInputStream fis = new FileInputStream(file);
- try {
- result = readStream(fis, charsetName);
- } finally {
- fis.close();
- }
- return result;
- }
-
- /**
- * Reads strings from the intput stream using the given charset. This method closes the input
- * stream after it has been consumed.
- *
- * @param is
- * @param charsetName
- * @return the contents of the given input stream
- * @throws IOException
- */
- public static String readStream(InputStream is, String charsetName) throws IOException {
-
- //
- // use system's default encoding if the passed encoding is unsupported
- //
- Charset charset = Charset.forName(System.getProperty("file.encoding"));
- if (Charset.isSupported(charsetName)) {
- charset = Charset.forName(charsetName);
- }
-
- StringBuffer out = new StringBuffer();
- BufferedReader r = new BufferedReader(new InputStreamReader(is, charset), 4096);
- try {
- String b;
- while ((b = r.readLine()) != null) {
- out.append(b).append("\n");
- }
- } finally {
- r.close();
- }
-
- return out.toString();
- }
-
- public static void delete(File f) {
- if (f != null && f.exists()) {
- if (f.isDirectory()) {
- File[] files = f.listFiles();
- for (int i = 0; i < files.length; i++) {
- delete(files[i]);
- }
- }
- if (!f.delete()) {
- logger.debug("Cannot delete " + f.getAbsolutePath());
- }
- } else {
- logger.debug(f + " does not exist");
- }
- }
-
- public static int toInt(String num, int defaultValue) {
- if (num != null) {
- try {
- return Integer.parseInt(num);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- return defaultValue;
- }
-
- public static int toIntHex(String num, int defaultValue) {
- try {
- if (num != null && num.startsWith("#")) {
- num = num.substring(1);
- }
- return Integer.parseInt(num, 16);
- } catch (NumberFormatException e) {
- return defaultValue;
- }
- }
-
- public static int toInt(Integer num, int defaultValue) {
- return num == null ? defaultValue : num.intValue();
- }
-
- public static long toLong(String num, long defaultValue) {
- if (num != null) {
- try {
- return Long.parseLong(num);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- return defaultValue;
- }
-
- public static long toLong(Long num, long defaultValue) {
- return num == null ? defaultValue : num.longValue();
- }
-
- public static float toFloat(String num, float defaultValue) {
- if (num != null) {
- try {
- return Float.parseFloat(num);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- return defaultValue;
- }
-
- public static String getJSPEncoding(InputStream is) throws IOException {
-
- String encoding = null;
- String contentType = null;
-
- Tokenizer jspTokenizer = new Tokenizer();
- jspTokenizer.addSymbol("\n", true);
- jspTokenizer.addSymbol(" ", true);
- jspTokenizer.addSymbol("\t", true);
- jspTokenizer.addSymbol(new TokenizerSymbol("dir", "<%@", "%>", false, false, true, false));
-
- StringTokenizer directiveTokenizer = new StringTokenizer();
- directiveTokenizer.addSymbol("\n", true);
- directiveTokenizer.addSymbol(" ", true);
- directiveTokenizer.addSymbol("\t", true);
- directiveTokenizer.addSymbol("=");
- directiveTokenizer.addSymbol("\"", "\"", false);
- directiveTokenizer.addSymbol("'", "'", false);
-
- StringTokenizer contentTypeTokenizer = new StringTokenizer();
- contentTypeTokenizer.addSymbol(" ", true);
- contentTypeTokenizer.addSymbol(";", true);
-
-
- Reader reader = new InputStreamReader(is, "ISO-8859-1");
- try {
- jspTokenizer.setReader(reader);
- while (jspTokenizer.hasMore()) {
- Token token = jspTokenizer.nextToken();
- if ("dir".equals(token.getName())) {
- directiveTokenizer.setString(token.getInnerText());
- if (directiveTokenizer.hasMore()
- && directiveTokenizer.nextToken().getText().equals("page")) {
- while (directiveTokenizer.hasMore()) {
- Token dTk = directiveTokenizer.nextToken();
- if ("pageEncoding".equals(dTk.getText())) {
- if (directiveTokenizer.hasMore()
- && "=".equals(directiveTokenizer.nextToken().getText())) {
- if (directiveTokenizer.hasMore()) {
- encoding = directiveTokenizer.nextToken().getInnerText();
- break;
- }
- }
- } else if ("contentType".equals(dTk.getText())) {
- if (directiveTokenizer.hasMore()
- && "=".equals(directiveTokenizer.nextToken().getText())) {
- if (directiveTokenizer.hasMore()) {
- contentType = directiveTokenizer.nextToken().getInnerText();
- }
- }
- }
- }
- }
- }
- }
- } finally {
- reader.close();
- }
-
- if (encoding == null && contentType != null) {
- contentTypeTokenizer.setString(contentType);
- while (contentTypeTokenizer.hasMore()) {
- String token = contentTypeTokenizer.nextToken().getText();
- if (token.startsWith("charset=")) {
- encoding = token.substring("charset=".length());
- break;
- }
- }
- }
-
- return encoding != null ? encoding : "ISO-8859-1";
- }
-
- public static void sendFile(HttpServletRequest request, HttpServletResponse response, File file)
- throws IOException {
-
- OutputStream out = response.getOutputStream();
- RandomAccessFile raf = new RandomAccessFile(file, "r");
- try {
- long fileSize = raf.length();
- long rangeStart = 0;
- long rangeFinish = fileSize - 1;
-
- // accept attempts to resume download (if any)
- String range = request.getHeader("Range");
- if (range != null && range.startsWith("bytes=")) {
- String pureRange = range.replaceAll("bytes=", "");
- int rangeSep = pureRange.indexOf("-");
-
- try {
- rangeStart = Long.parseLong(pureRange.substring(0, rangeSep));
- if (rangeStart > fileSize || rangeStart < 0) {
- rangeStart = 0;
- }
- } catch (NumberFormatException e) {
- // ignore the exception, keep rangeStart unchanged
- }
-
- if (rangeSep < pureRange.length() - 1) {
- try {
- rangeFinish = Long.parseLong(pureRange.substring(rangeSep + 1));
- if (rangeFinish < 0 || rangeFinish >= fileSize) {
- rangeFinish = fileSize - 1;
- }
- } catch (NumberFormatException e) {
- // ignore the exception
- }
- }
- }
-
- // set some headers
- response.setContentType("application/x-download");
- response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
- response.setHeader("Accept-Ranges", "bytes");
- response.setHeader("Content-Length", Long.toString(rangeFinish - rangeStart + 1));
- response.setHeader("Content-Range", "bytes " + rangeStart + "-" + rangeFinish + "/"
- + fileSize);
-
- // seek to the requested offset
- raf.seek(rangeStart);
-
- // send the file
- byte[] buffer = new byte[4096];
-
- long len;
- int totalRead = 0;
- boolean nomore = false;
- while (true) {
- len = raf.read(buffer);
- if (len > 0 && totalRead + len > rangeFinish - rangeStart + 1) {
- // read more then required?
- // adjust the length
- len = rangeFinish - rangeStart + 1 - totalRead;
- nomore = true;
- }
-
- if (len > 0) {
- out.write(buffer, 0, (int) len);
- totalRead += len;
- if (nomore) {
- break;
- }
- } else {
- break;
- }
- }
- } finally {
- raf.close();
- }
- }
-
- public static Thread getThreadByName(String name) {
- if (name != null) {
- // get top ThreadGroup
- ThreadGroup masterGroup = Thread.currentThread().getThreadGroup();
- while (masterGroup.getParent() != null) {
- masterGroup = masterGroup.getParent();
- }
-
-
- Thread[] threads = new Thread[masterGroup.activeCount()];
- int numThreads = masterGroup.enumerate(threads);
-
- for (int i = 0; i < numThreads; i++) {
- if (threads[i] != null && name.equals(threads[i].getName())) {
- return threads[i];
- }
- }
- }
- return null;
- }
-
- public static String highlightStream(String name, InputStream input, String rendererName,
- String encoding) throws IOException {
-
- Renderer jspRenderer = XhtmlRendererFactory.getRenderer(rendererName);
- if (jspRenderer != null) {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- jspRenderer.highlight(name, input, bos, encoding, true);
-
- ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
-
- Tokenizer tokenizer = new Tokenizer(new InputStreamReader(bis, encoding));
- tokenizer.addSymbol(new TokenizerSymbol("EOL", "\n", null, false, false, true, false));
- tokenizer.addSymbol(new TokenizerSymbol("EOL", "\r\n", null, false, false, true, false));
-
- //
- // JHighlight adds HTML comment as the first line, so if
- // we number the lines we could end up with a line number and no line
- // to avoid that we just ignore the first line alltogether.
- //
- StringBuffer buffer = new StringBuffer();
- long counter = 0;
- while (tokenizer.hasMore()) {
- Token tk = tokenizer.nextToken();
- if ("EOL".equals(tk.getName())) {
- counter++;
- buffer.append(tk.getText());
- } else if (counter > 0) {
- buffer.append("");
- buffer.append("");
- buffer.append(leftPad(Long.toString(counter), 6, " "));
- buffer.append("");
- buffer.append(tk.getText());
- buffer.append("");
- }
- }
- return buffer.toString();
- }
- return null;
- }
-
- public static String leftPad(String s, int len, String fill) {
- StringBuffer sb = new StringBuffer(len);
- if (s.length() < len) {
- for (int i = s.length(); i < len; i++) {
- sb.append(fill);
- }
- }
- sb.append(s);
- return sb.toString();
- }
-
- public static List getNamesForLocale(String baseName, Locale locale) {
- List result = new ArrayList(3);
- String language = locale.getLanguage();
- String country = locale.getCountry();
- String variant = locale.getVariant();
- StringBuffer temp = new StringBuffer(baseName);
-
- if (language.length() > 0) {
- temp.append('_').append(language);
- result.add(0, temp.toString());
- }
-
- if (country.length() > 0) {
- temp.append('_').append(country);
- result.add(0, temp.toString());
- }
-
- if (variant.length() > 0) {
- temp.append('_').append(variant);
- result.add(0, temp.toString());
- }
-
- return result;
- }
-
- public static boolean isThreadingEnabled() {
- try {
- MBeanServer mBeanServer = new Registry().getMBeanServer();
- ObjectName threadingOName = new ObjectName("java.lang:type=Threading");
- Set s = mBeanServer.queryMBeans(threadingOName, null);
- return s != null && s.size() > 0;
- } catch (MalformedObjectNameException e) {
- return false;
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.tokenizer.StringTokenizer;
+import com.googlecode.psiprobe.tokenizer.Token;
+import com.googlecode.psiprobe.tokenizer.Tokenizer;
+import com.googlecode.psiprobe.tokenizer.TokenizerSymbol;
+
+import com.uwyn.jhighlight.renderer.Renderer;
+import com.uwyn.jhighlight.renderer.XhtmlRendererFactory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.modeler.Registry;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.RandomAccessFile;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Misc. static helper methods.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Utils {
+
+ private static Log logger = LogFactory.getLog(Utils.class.getName());
+
+ public static int calcPoolUsageScore(int max, int value) {
+ return max > 0 ? Math.max(0, value) * 100 / max : 0;
+ }
+
+ /**
+ * Reads a file on disk. The method uses default file encoding (see: file.encoding system
+ * property)
+ *
+ * @param file to be read
+ * @return String representation of the file contents
+ */
+ public static String readFile(File file, String charsetName) throws IOException {
+ String result = null;
+ FileInputStream fis = new FileInputStream(file);
+ try {
+ result = readStream(fis, charsetName);
+ } finally {
+ fis.close();
+ }
+ return result;
+ }
+
+ /**
+ * Reads strings from the intput stream using the given charset. This method closes the input
+ * stream after it has been consumed.
+ *
+ * @param is
+ * @param charsetName
+ * @return the contents of the given input stream
+ * @throws IOException
+ */
+ public static String readStream(InputStream is, String charsetName) throws IOException {
+
+ //
+ // use system's default encoding if the passed encoding is unsupported
+ //
+ Charset charset = Charset.forName(System.getProperty("file.encoding"));
+ if (Charset.isSupported(charsetName)) {
+ charset = Charset.forName(charsetName);
+ }
+
+ StringBuffer out = new StringBuffer();
+ BufferedReader r = new BufferedReader(new InputStreamReader(is, charset), 4096);
+ try {
+ String b;
+ while ((b = r.readLine()) != null) {
+ out.append(b).append("\n");
+ }
+ } finally {
+ r.close();
+ }
+
+ return out.toString();
+ }
+
+ public static void delete(File f) {
+ if (f != null && f.exists()) {
+ if (f.isDirectory()) {
+ File[] files = f.listFiles();
+ for (int i = 0; i < files.length; i++) {
+ delete(files[i]);
+ }
+ }
+ if (!f.delete()) {
+ logger.debug("Cannot delete " + f.getAbsolutePath());
+ }
+ } else {
+ logger.debug(f + " does not exist");
+ }
+ }
+
+ public static int toInt(String num, int defaultValue) {
+ if (num != null) {
+ try {
+ return Integer.parseInt(num);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ }
+ return defaultValue;
+ }
+
+ public static int toIntHex(String num, int defaultValue) {
+ try {
+ if (num != null && num.startsWith("#")) {
+ num = num.substring(1);
+ }
+ return Integer.parseInt(num, 16);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+
+ public static int toInt(Integer num, int defaultValue) {
+ return num == null ? defaultValue : num.intValue();
+ }
+
+ public static long toLong(String num, long defaultValue) {
+ if (num != null) {
+ try {
+ return Long.parseLong(num);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ }
+ return defaultValue;
+ }
+
+ public static long toLong(Long num, long defaultValue) {
+ return num == null ? defaultValue : num.longValue();
+ }
+
+ public static float toFloat(String num, float defaultValue) {
+ if (num != null) {
+ try {
+ return Float.parseFloat(num);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ }
+ return defaultValue;
+ }
+
+ public static String getJSPEncoding(InputStream is) throws IOException {
+
+ String encoding = null;
+ String contentType = null;
+
+ Tokenizer jspTokenizer = new Tokenizer();
+ jspTokenizer.addSymbol("\n", true);
+ jspTokenizer.addSymbol(" ", true);
+ jspTokenizer.addSymbol("\t", true);
+ jspTokenizer.addSymbol(new TokenizerSymbol("dir", "<%@", "%>", false, false, true, false));
+
+ StringTokenizer directiveTokenizer = new StringTokenizer();
+ directiveTokenizer.addSymbol("\n", true);
+ directiveTokenizer.addSymbol(" ", true);
+ directiveTokenizer.addSymbol("\t", true);
+ directiveTokenizer.addSymbol("=");
+ directiveTokenizer.addSymbol("\"", "\"", false);
+ directiveTokenizer.addSymbol("'", "'", false);
+
+ StringTokenizer contentTypeTokenizer = new StringTokenizer();
+ contentTypeTokenizer.addSymbol(" ", true);
+ contentTypeTokenizer.addSymbol(";", true);
+
+
+ Reader reader = new InputStreamReader(is, "ISO-8859-1");
+ try {
+ jspTokenizer.setReader(reader);
+ while (jspTokenizer.hasMore()) {
+ Token token = jspTokenizer.nextToken();
+ if ("dir".equals(token.getName())) {
+ directiveTokenizer.setString(token.getInnerText());
+ if (directiveTokenizer.hasMore()
+ && directiveTokenizer.nextToken().getText().equals("page")) {
+ while (directiveTokenizer.hasMore()) {
+ Token dTk = directiveTokenizer.nextToken();
+ if ("pageEncoding".equals(dTk.getText())) {
+ if (directiveTokenizer.hasMore()
+ && "=".equals(directiveTokenizer.nextToken().getText())) {
+ if (directiveTokenizer.hasMore()) {
+ encoding = directiveTokenizer.nextToken().getInnerText();
+ break;
+ }
+ }
+ } else if ("contentType".equals(dTk.getText())) {
+ if (directiveTokenizer.hasMore()
+ && "=".equals(directiveTokenizer.nextToken().getText())) {
+ if (directiveTokenizer.hasMore()) {
+ contentType = directiveTokenizer.nextToken().getInnerText();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } finally {
+ reader.close();
+ }
+
+ if (encoding == null && contentType != null) {
+ contentTypeTokenizer.setString(contentType);
+ while (contentTypeTokenizer.hasMore()) {
+ String token = contentTypeTokenizer.nextToken().getText();
+ if (token.startsWith("charset=")) {
+ encoding = token.substring("charset=".length());
+ break;
+ }
+ }
+ }
+
+ return encoding != null ? encoding : "ISO-8859-1";
+ }
+
+ public static void sendFile(HttpServletRequest request, HttpServletResponse response, File file)
+ throws IOException {
+
+ OutputStream out = response.getOutputStream();
+ RandomAccessFile raf = new RandomAccessFile(file, "r");
+ try {
+ long fileSize = raf.length();
+ long rangeStart = 0;
+ long rangeFinish = fileSize - 1;
+
+ // accept attempts to resume download (if any)
+ String range = request.getHeader("Range");
+ if (range != null && range.startsWith("bytes=")) {
+ String pureRange = range.replaceAll("bytes=", "");
+ int rangeSep = pureRange.indexOf("-");
+
+ try {
+ rangeStart = Long.parseLong(pureRange.substring(0, rangeSep));
+ if (rangeStart > fileSize || rangeStart < 0) {
+ rangeStart = 0;
+ }
+ } catch (NumberFormatException e) {
+ // ignore the exception, keep rangeStart unchanged
+ }
+
+ if (rangeSep < pureRange.length() - 1) {
+ try {
+ rangeFinish = Long.parseLong(pureRange.substring(rangeSep + 1));
+ if (rangeFinish < 0 || rangeFinish >= fileSize) {
+ rangeFinish = fileSize - 1;
+ }
+ } catch (NumberFormatException e) {
+ // ignore the exception
+ }
+ }
+ }
+
+ // set some headers
+ response.setContentType("application/x-download");
+ response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
+ response.setHeader("Accept-Ranges", "bytes");
+ response.setHeader("Content-Length", Long.toString(rangeFinish - rangeStart + 1));
+ response.setHeader("Content-Range", "bytes " + rangeStart + "-" + rangeFinish + "/"
+ + fileSize);
+
+ // seek to the requested offset
+ raf.seek(rangeStart);
+
+ // send the file
+ byte[] buffer = new byte[4096];
+
+ long len;
+ int totalRead = 0;
+ boolean nomore = false;
+ while (true) {
+ len = raf.read(buffer);
+ if (len > 0 && totalRead + len > rangeFinish - rangeStart + 1) {
+ // read more then required?
+ // adjust the length
+ len = rangeFinish - rangeStart + 1 - totalRead;
+ nomore = true;
+ }
+
+ if (len > 0) {
+ out.write(buffer, 0, (int) len);
+ totalRead += len;
+ if (nomore) {
+ break;
+ }
+ } else {
+ break;
+ }
+ }
+ } finally {
+ raf.close();
+ }
+ }
+
+ public static Thread getThreadByName(String name) {
+ if (name != null) {
+ // get top ThreadGroup
+ ThreadGroup masterGroup = Thread.currentThread().getThreadGroup();
+ while (masterGroup.getParent() != null) {
+ masterGroup = masterGroup.getParent();
+ }
+
+
+ Thread[] threads = new Thread[masterGroup.activeCount()];
+ int numThreads = masterGroup.enumerate(threads);
+
+ for (int i = 0; i < numThreads; i++) {
+ if (threads[i] != null && name.equals(threads[i].getName())) {
+ return threads[i];
+ }
+ }
+ }
+ return null;
+ }
+
+ public static String highlightStream(String name, InputStream input, String rendererName,
+ String encoding) throws IOException {
+
+ Renderer jspRenderer = XhtmlRendererFactory.getRenderer(rendererName);
+ if (jspRenderer != null) {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ jspRenderer.highlight(name, input, bos, encoding, true);
+
+ ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+
+ Tokenizer tokenizer = new Tokenizer(new InputStreamReader(bis, encoding));
+ tokenizer.addSymbol(new TokenizerSymbol("EOL", "\n", null, false, false, true, false));
+ tokenizer.addSymbol(new TokenizerSymbol("EOL", "\r\n", null, false, false, true, false));
+
+ //
+ // JHighlight adds HTML comment as the first line, so if
+ // we number the lines we could end up with a line number and no line
+ // to avoid that we just ignore the first line alltogether.
+ //
+ StringBuffer buffer = new StringBuffer();
+ long counter = 0;
+ while (tokenizer.hasMore()) {
+ Token tk = tokenizer.nextToken();
+ if ("EOL".equals(tk.getName())) {
+ counter++;
+ buffer.append(tk.getText());
+ } else if (counter > 0) {
+ buffer.append("");
+ buffer.append("");
+ buffer.append(leftPad(Long.toString(counter), 6, " "));
+ buffer.append("");
+ buffer.append(tk.getText());
+ buffer.append("");
+ }
+ }
+ return buffer.toString();
+ }
+ return null;
+ }
+
+ public static String leftPad(String s, int len, String fill) {
+ StringBuffer sb = new StringBuffer(len);
+ if (s.length() < len) {
+ for (int i = s.length(); i < len; i++) {
+ sb.append(fill);
+ }
+ }
+ sb.append(s);
+ return sb.toString();
+ }
+
+ public static List getNamesForLocale(String baseName, Locale locale) {
+ List result = new ArrayList(3);
+ String language = locale.getLanguage();
+ String country = locale.getCountry();
+ String variant = locale.getVariant();
+ StringBuffer temp = new StringBuffer(baseName);
+
+ if (language.length() > 0) {
+ temp.append('_').append(language);
+ result.add(0, temp.toString());
+ }
+
+ if (country.length() > 0) {
+ temp.append('_').append(country);
+ result.add(0, temp.toString());
+ }
+
+ if (variant.length() > 0) {
+ temp.append('_').append(variant);
+ result.add(0, temp.toString());
+ }
+
+ return result;
+ }
+
+ public static boolean isThreadingEnabled() {
+ try {
+ MBeanServer mBeanServer = new Registry().getMBeanServer();
+ ObjectName threadingOName = new ObjectName("java.lang:type=Threading");
+ Set s = mBeanServer.queryMBeans(threadingOName, null);
+ return s != null && s.size() > 0;
+ } catch (MalformedObjectNameException e) {
+ return false;
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/BoneCPDatasourceAccessor.java b/core/src/main/java/com/googlecode/psiprobe/beans/BoneCPDatasourceAccessor.java
index 52716a8725..0f4a994ee7 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/BoneCPDatasourceAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/BoneCPDatasourceAccessor.java
@@ -1,63 +1,63 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-import com.jolbox.bonecp.BoneCP;
-import com.jolbox.bonecp.BoneCPDataSource;
-
-import java.lang.reflect.Field;
-
-/**
- *
- * @author akhawatrah
- * @author Mark Lewis
- */
-public class BoneCPDatasourceAccessor implements DatasourceAccessor {
-
- public DataSourceInfo getInfo(final Object resource) throws Exception {
- DataSourceInfo dataSourceInfo = null;
- if (canMap(resource)) {
- final BoneCPDataSource source = (BoneCPDataSource) resource;
- BoneCP pool;
- try {
- pool = source.getPool();
- } catch (NoSuchMethodError ex) {
- // This is an older version of BoneCP (pre-0.8.0)
- final Field poolField = BoneCPDataSource.class.getDeclaredField("pool");
- poolField.setAccessible(true);
- pool = (BoneCP) poolField.get(source);
- }
-
- dataSourceInfo = new DataSourceInfo();
- dataSourceInfo.setBusyConnections(source.getTotalLeased());
- dataSourceInfo.setEstablishedConnections(pool.getTotalCreatedConnections());
- dataSourceInfo.setMaxConnections(source.getPartitionCount()
- * source.getMaxConnectionsPerPartition());
- dataSourceInfo.setJdbcURL(source.getJdbcUrl());
- dataSourceInfo.setUsername(source.getUsername());
- dataSourceInfo.setResettable(false);
- dataSourceInfo.setType("bonecp");
- }
- return dataSourceInfo;
- }
-
- public boolean reset(final Object resource) throws Exception {
- return false;
- }
-
- public boolean canMap(final Object resource) {
- return "com.jolbox.bonecp.BoneCPDataSource".equals(resource.getClass().getName())
- && resource instanceof BoneCPDataSource;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+import com.jolbox.bonecp.BoneCP;
+import com.jolbox.bonecp.BoneCPDataSource;
+
+import java.lang.reflect.Field;
+
+/**
+ *
+ * @author akhawatrah
+ * @author Mark Lewis
+ */
+public class BoneCPDatasourceAccessor implements DatasourceAccessor {
+
+ public DataSourceInfo getInfo(final Object resource) throws Exception {
+ DataSourceInfo dataSourceInfo = null;
+ if (canMap(resource)) {
+ final BoneCPDataSource source = (BoneCPDataSource) resource;
+ BoneCP pool;
+ try {
+ pool = source.getPool();
+ } catch (NoSuchMethodError ex) {
+ // This is an older version of BoneCP (pre-0.8.0)
+ final Field poolField = BoneCPDataSource.class.getDeclaredField("pool");
+ poolField.setAccessible(true);
+ pool = (BoneCP) poolField.get(source);
+ }
+
+ dataSourceInfo = new DataSourceInfo();
+ dataSourceInfo.setBusyConnections(source.getTotalLeased());
+ dataSourceInfo.setEstablishedConnections(pool.getTotalCreatedConnections());
+ dataSourceInfo.setMaxConnections(source.getPartitionCount()
+ * source.getMaxConnectionsPerPartition());
+ dataSourceInfo.setJdbcURL(source.getJdbcUrl());
+ dataSourceInfo.setUsername(source.getUsername());
+ dataSourceInfo.setResettable(false);
+ dataSourceInfo.setType("bonecp");
+ }
+ return dataSourceInfo;
+ }
+
+ public boolean reset(final Object resource) throws Exception {
+ return false;
+ }
+
+ public boolean canMap(final Object resource) {
+ return "com.jolbox.bonecp.BoneCPDataSource".equals(resource.getClass().getName())
+ && resource instanceof BoneCPDataSource;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/C3P0DatasourceAccessor.java b/core/src/main/java/com/googlecode/psiprobe/beans/C3P0DatasourceAccessor.java
index 349d137491..3d416a8d9b 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/C3P0DatasourceAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/C3P0DatasourceAccessor.java
@@ -1,54 +1,54 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-import com.mchange.v2.c3p0.ComboPooledDataSource;
-
-/**
- * Abstraction layer for c3p0. Maps c3p0 datasource properties on our generic DataSourceInfo bean.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class C3P0DatasourceAccessor implements DatasourceAccessor {
-
- public DataSourceInfo getInfo(Object resource) throws Exception {
- DataSourceInfo dataSourceInfo = null;
- if (canMap(resource)) {
- ComboPooledDataSource source = (ComboPooledDataSource) resource;
-
- dataSourceInfo = new DataSourceInfo();
- dataSourceInfo.setBusyConnections(source.getNumBusyConnections());
- dataSourceInfo.setEstablishedConnections(source.getNumConnections());
- dataSourceInfo.setMaxConnections(source.getMaxPoolSize());
- dataSourceInfo.setJdbcURL(source.getJdbcUrl());
- dataSourceInfo.setUsername(source.getUser());
- dataSourceInfo.setResettable(true);
- dataSourceInfo.setType("c3p0");
- }
- return dataSourceInfo;
- }
-
- public boolean reset(Object resource) throws Exception {
- if (canMap(resource)) {
- ((ComboPooledDataSource) resource).hardReset();
- return true;
- }
- return false;
- }
-
- public boolean canMap(Object resource) {
- return "com.mchange.v2.c3p0.ComboPooledDataSource".equals(resource.getClass().getName())
- && resource instanceof ComboPooledDataSource;
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+import com.mchange.v2.c3p0.ComboPooledDataSource;
+
+/**
+ * Abstraction layer for c3p0. Maps c3p0 datasource properties on our generic DataSourceInfo bean.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class C3P0DatasourceAccessor implements DatasourceAccessor {
+
+ public DataSourceInfo getInfo(Object resource) throws Exception {
+ DataSourceInfo dataSourceInfo = null;
+ if (canMap(resource)) {
+ ComboPooledDataSource source = (ComboPooledDataSource) resource;
+
+ dataSourceInfo = new DataSourceInfo();
+ dataSourceInfo.setBusyConnections(source.getNumBusyConnections());
+ dataSourceInfo.setEstablishedConnections(source.getNumConnections());
+ dataSourceInfo.setMaxConnections(source.getMaxPoolSize());
+ dataSourceInfo.setJdbcURL(source.getJdbcUrl());
+ dataSourceInfo.setUsername(source.getUser());
+ dataSourceInfo.setResettable(true);
+ dataSourceInfo.setType("c3p0");
+ }
+ return dataSourceInfo;
+ }
+
+ public boolean reset(Object resource) throws Exception {
+ if (canMap(resource)) {
+ ((ComboPooledDataSource) resource).hardReset();
+ return true;
+ }
+ return false;
+ }
+
+ public boolean canMap(Object resource) {
+ return "com.mchange.v2.c3p0.ComboPooledDataSource".equals(resource.getClass().getName())
+ && resource instanceof ComboPooledDataSource;
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/ClusterWrapperBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/ClusterWrapperBean.java
index 82e89b9fd1..2844270722 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/ClusterWrapperBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/ClusterWrapperBean.java
@@ -1,176 +1,176 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.jmx.AsyncClusterSender;
-import com.googlecode.psiprobe.model.jmx.Cluster;
-import com.googlecode.psiprobe.model.jmx.ClusterSender;
-import com.googlecode.psiprobe.model.jmx.PooledClusterSender;
-import com.googlecode.psiprobe.model.jmx.SyncClusterSender;
-import com.googlecode.psiprobe.tools.JmxTools;
-
-import org.apache.commons.modeler.Registry;
-
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ClusterWrapperBean {
-
- public Cluster getCluster(String serverName, String hostName, boolean loadMembers)
- throws Exception {
-
- Cluster cluster = null;
-
- MBeanServer mBeanServer = new Registry().getMBeanServer();
- ObjectName membershipOName =
- new ObjectName(serverName + ":type=ClusterMembership,host=" + hostName);
- ObjectName receiverOName =
- new ObjectName(serverName + ":type=ClusterReceiver,host=" + hostName);
- ObjectName senderOName = new ObjectName(serverName + ":type=ClusterSender,host=" + hostName);
-
- /*
- * should be just one set, this is just to find out if this instance is cluster-enabled and the
- * cluster supports JMX
- */
- Set clusters = mBeanServer.queryMBeans(new ObjectName("*:type=Cluster,host=" + hostName), null);
- Set membership = mBeanServer.queryMBeans(membershipOName, null);
- if (clusters != null && clusters.size() > 0 && membership != null && membership.size() > 0) {
- ObjectName clusterOName = ((ObjectInstance) clusters.iterator().next()).getObjectName();
- cluster = new Cluster();
-
- cluster.setName(JmxTools.getStringAttr(mBeanServer, clusterOName, "clusterName"));
- cluster.setInfo(JmxTools.getStringAttr(mBeanServer, clusterOName, "info"));
- cluster.setManagerClassName(JmxTools.getStringAttr(mBeanServer, clusterOName,
- "managerClassName"));
-
- cluster.setMcastAddress(JmxTools.getStringAttr(mBeanServer, membershipOName, "mcastAddr"));
- cluster.setMcastBindAddress(JmxTools.getStringAttr(mBeanServer, membershipOName,
- "mcastBindAddress"));
- cluster.setMcastClusterDomain(JmxTools.getStringAttr(mBeanServer, membershipOName,
- "mcastClusterDomain"));
- cluster.setMcastDropTime(JmxTools.getLongAttr(mBeanServer, membershipOName, "mcastDropTime"));
- cluster.setMcastFrequency(JmxTools
- .getLongAttr(mBeanServer, membershipOName, "mcastFrequency"));
- cluster.setMcastPort(JmxTools.getIntAttr(mBeanServer, membershipOName, "mcastPort"));
- cluster
- .setMcastSoTimeout(JmxTools.getIntAttr(mBeanServer, membershipOName, "mcastSoTimeout"));
- cluster.setMcastTTL(JmxTools.getIntAttr(mBeanServer, membershipOName, "mcastTTL"));
-
- cluster.setTcpListenAddress(JmxTools.getStringAttr(mBeanServer, receiverOName,
- "tcpListenAddress"));
- cluster.setTcpListenPort(JmxTools.getIntAttr(mBeanServer, receiverOName, "tcpListenPort"));
- cluster.setNrOfMsgsReceived(JmxTools.getLongAttr(mBeanServer, receiverOName,
- "nrOfMsgsReceived"));
- cluster.setTotalReceivedBytes(JmxTools.getLongAttr(mBeanServer, receiverOName,
- "totalReceivedBytes"));
- // cluster.setTcpSelectorTimeout(
- // JmxTools.getLongAttr(mBeanServer, receiverOName, "tcpSelectorTimeout"));
- // cluster.setTcpThreadCount(
- // JmxTools.getIntAttr(mBeanServer, receiverOName, "tcpThreadCount"));
-
- cluster.setSenderAckTimeout(JmxTools.getLongAttr(mBeanServer, senderOName, "ackTimeout"));
- cluster.setSenderAutoConnect(((Boolean) mBeanServer.getAttribute(senderOName, "autoConnect"))
- .booleanValue());
- cluster.setSenderFailureCounter(JmxTools.getLongAttr(mBeanServer, senderOName,
- "failureCounter"));
- cluster.setSenderNrOfRequests(JmxTools.getLongAttr(mBeanServer, senderOName, "nrOfRequests"));
- cluster.setSenderReplicationMode(JmxTools.getStringAttr(mBeanServer, senderOName,
- "replicationMode"));
- cluster.setSenderTotalBytes(JmxTools.getLongAttr(mBeanServer, senderOName, "totalBytes"));
-
- if (loadMembers) {
- ObjectName senders[] =
- (ObjectName[]) mBeanServer.getAttribute(senderOName, "senderObjectNames");
- for (int i = 0; i < senders.length; i++) {
-
- ClusterSender sender;
-
- if ("pooled".equals(cluster.getSenderReplicationMode())) {
- sender = new PooledClusterSender();
- } else if ("synchronous".equals(cluster.getSenderReplicationMode())) {
- sender = new SyncClusterSender();
- } else if ("asynchronous".equals(cluster.getSenderReplicationMode())
- || "fastasyncqueue".equals(cluster.getSenderReplicationMode())) {
- sender = new AsyncClusterSender();
- } else {
- sender = new ClusterSender();
- }
- ObjectName localSenderOName = senders[i];
-
- sender.setAddress(JmxTools.getStringAttr(mBeanServer, localSenderOName, "address"));
- sender.setPort(JmxTools.getIntAttr(mBeanServer, localSenderOName, "port"));
-
- sender.setAvgMessageSize(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "avgMessageSize", -1));
- sender.setAvgProcessingTime(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "avgProcessingTime", -1));
-
- sender.setConnectCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "connectCounter"));
- sender.setDisconnectCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "disconnectCounter"));
- sender.setConnected(((Boolean) mBeanServer.getAttribute(localSenderOName, "connected"))
- .booleanValue());
- sender.setKeepAliveTimeout(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "keepAliveTimeout"));
- sender.setNrOfRequests(JmxTools
- .getLongAttr(mBeanServer, localSenderOName, "nrOfRequests"));
- sender.setTotalBytes(JmxTools.getLongAttr(mBeanServer, localSenderOName, "totalBytes"));
- sender.setResend(((Boolean) mBeanServer.getAttribute(localSenderOName, "resend"))
- .booleanValue());
- sender.setSuspect(((Boolean) mBeanServer.getAttribute(localSenderOName, "suspect"))
- .booleanValue());
-
- if (sender instanceof PooledClusterSender) {
- ((PooledClusterSender) sender).setMaxPoolSocketLimit(JmxTools.getIntAttr(mBeanServer,
- localSenderOName, "maxPoolSocketLimit"));
- }
-
- if (sender instanceof SyncClusterSender) {
- SyncClusterSender syncSender = (SyncClusterSender) sender;
- syncSender.setDataFailureCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "dataFailureCounter"));
- syncSender.setDataResendCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "dataResendCounter"));
- syncSender.setSocketOpenCounter(JmxTools.getIntAttr(mBeanServer, localSenderOName,
- "socketOpenCounter"));
- syncSender.setSocketCloseCounter(JmxTools.getIntAttr(mBeanServer, localSenderOName,
- "socketCloseCounter"));
- syncSender.setSocketOpenFailureCounter(JmxTools.getIntAttr(mBeanServer,
- localSenderOName, "socketOpenFailureCounter"));
- }
-
- if (sender instanceof AsyncClusterSender) {
- AsyncClusterSender asyncSender = (AsyncClusterSender) sender;
- asyncSender.setInQueueCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "inQueueCounter"));
- asyncSender.setOutQueueCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "outQueueCounter"));
- asyncSender.setQueueSize(JmxTools
- .getIntAttr(mBeanServer, localSenderOName, "queueSize"));
- asyncSender.setQueuedNrOfBytes(JmxTools.getLongAttr(mBeanServer, localSenderOName,
- "queuedNrOfBytes"));
- }
- cluster.getMembers().add(sender);
- }
- }
- }
- return cluster;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.jmx.AsyncClusterSender;
+import com.googlecode.psiprobe.model.jmx.Cluster;
+import com.googlecode.psiprobe.model.jmx.ClusterSender;
+import com.googlecode.psiprobe.model.jmx.PooledClusterSender;
+import com.googlecode.psiprobe.model.jmx.SyncClusterSender;
+import com.googlecode.psiprobe.tools.JmxTools;
+
+import org.apache.commons.modeler.Registry;
+
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ClusterWrapperBean {
+
+ public Cluster getCluster(String serverName, String hostName, boolean loadMembers)
+ throws Exception {
+
+ Cluster cluster = null;
+
+ MBeanServer mBeanServer = new Registry().getMBeanServer();
+ ObjectName membershipOName =
+ new ObjectName(serverName + ":type=ClusterMembership,host=" + hostName);
+ ObjectName receiverOName =
+ new ObjectName(serverName + ":type=ClusterReceiver,host=" + hostName);
+ ObjectName senderOName = new ObjectName(serverName + ":type=ClusterSender,host=" + hostName);
+
+ /*
+ * should be just one set, this is just to find out if this instance is cluster-enabled and the
+ * cluster supports JMX
+ */
+ Set clusters = mBeanServer.queryMBeans(new ObjectName("*:type=Cluster,host=" + hostName), null);
+ Set membership = mBeanServer.queryMBeans(membershipOName, null);
+ if (clusters != null && clusters.size() > 0 && membership != null && membership.size() > 0) {
+ ObjectName clusterOName = ((ObjectInstance) clusters.iterator().next()).getObjectName();
+ cluster = new Cluster();
+
+ cluster.setName(JmxTools.getStringAttr(mBeanServer, clusterOName, "clusterName"));
+ cluster.setInfo(JmxTools.getStringAttr(mBeanServer, clusterOName, "info"));
+ cluster.setManagerClassName(JmxTools.getStringAttr(mBeanServer, clusterOName,
+ "managerClassName"));
+
+ cluster.setMcastAddress(JmxTools.getStringAttr(mBeanServer, membershipOName, "mcastAddr"));
+ cluster.setMcastBindAddress(JmxTools.getStringAttr(mBeanServer, membershipOName,
+ "mcastBindAddress"));
+ cluster.setMcastClusterDomain(JmxTools.getStringAttr(mBeanServer, membershipOName,
+ "mcastClusterDomain"));
+ cluster.setMcastDropTime(JmxTools.getLongAttr(mBeanServer, membershipOName, "mcastDropTime"));
+ cluster.setMcastFrequency(JmxTools
+ .getLongAttr(mBeanServer, membershipOName, "mcastFrequency"));
+ cluster.setMcastPort(JmxTools.getIntAttr(mBeanServer, membershipOName, "mcastPort"));
+ cluster
+ .setMcastSoTimeout(JmxTools.getIntAttr(mBeanServer, membershipOName, "mcastSoTimeout"));
+ cluster.setMcastTTL(JmxTools.getIntAttr(mBeanServer, membershipOName, "mcastTTL"));
+
+ cluster.setTcpListenAddress(JmxTools.getStringAttr(mBeanServer, receiverOName,
+ "tcpListenAddress"));
+ cluster.setTcpListenPort(JmxTools.getIntAttr(mBeanServer, receiverOName, "tcpListenPort"));
+ cluster.setNrOfMsgsReceived(JmxTools.getLongAttr(mBeanServer, receiverOName,
+ "nrOfMsgsReceived"));
+ cluster.setTotalReceivedBytes(JmxTools.getLongAttr(mBeanServer, receiverOName,
+ "totalReceivedBytes"));
+ // cluster.setTcpSelectorTimeout(
+ // JmxTools.getLongAttr(mBeanServer, receiverOName, "tcpSelectorTimeout"));
+ // cluster.setTcpThreadCount(
+ // JmxTools.getIntAttr(mBeanServer, receiverOName, "tcpThreadCount"));
+
+ cluster.setSenderAckTimeout(JmxTools.getLongAttr(mBeanServer, senderOName, "ackTimeout"));
+ cluster.setSenderAutoConnect(((Boolean) mBeanServer.getAttribute(senderOName, "autoConnect"))
+ .booleanValue());
+ cluster.setSenderFailureCounter(JmxTools.getLongAttr(mBeanServer, senderOName,
+ "failureCounter"));
+ cluster.setSenderNrOfRequests(JmxTools.getLongAttr(mBeanServer, senderOName, "nrOfRequests"));
+ cluster.setSenderReplicationMode(JmxTools.getStringAttr(mBeanServer, senderOName,
+ "replicationMode"));
+ cluster.setSenderTotalBytes(JmxTools.getLongAttr(mBeanServer, senderOName, "totalBytes"));
+
+ if (loadMembers) {
+ ObjectName senders[] =
+ (ObjectName[]) mBeanServer.getAttribute(senderOName, "senderObjectNames");
+ for (int i = 0; i < senders.length; i++) {
+
+ ClusterSender sender;
+
+ if ("pooled".equals(cluster.getSenderReplicationMode())) {
+ sender = new PooledClusterSender();
+ } else if ("synchronous".equals(cluster.getSenderReplicationMode())) {
+ sender = new SyncClusterSender();
+ } else if ("asynchronous".equals(cluster.getSenderReplicationMode())
+ || "fastasyncqueue".equals(cluster.getSenderReplicationMode())) {
+ sender = new AsyncClusterSender();
+ } else {
+ sender = new ClusterSender();
+ }
+ ObjectName localSenderOName = senders[i];
+
+ sender.setAddress(JmxTools.getStringAttr(mBeanServer, localSenderOName, "address"));
+ sender.setPort(JmxTools.getIntAttr(mBeanServer, localSenderOName, "port"));
+
+ sender.setAvgMessageSize(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "avgMessageSize", -1));
+ sender.setAvgProcessingTime(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "avgProcessingTime", -1));
+
+ sender.setConnectCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "connectCounter"));
+ sender.setDisconnectCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "disconnectCounter"));
+ sender.setConnected(((Boolean) mBeanServer.getAttribute(localSenderOName, "connected"))
+ .booleanValue());
+ sender.setKeepAliveTimeout(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "keepAliveTimeout"));
+ sender.setNrOfRequests(JmxTools
+ .getLongAttr(mBeanServer, localSenderOName, "nrOfRequests"));
+ sender.setTotalBytes(JmxTools.getLongAttr(mBeanServer, localSenderOName, "totalBytes"));
+ sender.setResend(((Boolean) mBeanServer.getAttribute(localSenderOName, "resend"))
+ .booleanValue());
+ sender.setSuspect(((Boolean) mBeanServer.getAttribute(localSenderOName, "suspect"))
+ .booleanValue());
+
+ if (sender instanceof PooledClusterSender) {
+ ((PooledClusterSender) sender).setMaxPoolSocketLimit(JmxTools.getIntAttr(mBeanServer,
+ localSenderOName, "maxPoolSocketLimit"));
+ }
+
+ if (sender instanceof SyncClusterSender) {
+ SyncClusterSender syncSender = (SyncClusterSender) sender;
+ syncSender.setDataFailureCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "dataFailureCounter"));
+ syncSender.setDataResendCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "dataResendCounter"));
+ syncSender.setSocketOpenCounter(JmxTools.getIntAttr(mBeanServer, localSenderOName,
+ "socketOpenCounter"));
+ syncSender.setSocketCloseCounter(JmxTools.getIntAttr(mBeanServer, localSenderOName,
+ "socketCloseCounter"));
+ syncSender.setSocketOpenFailureCounter(JmxTools.getIntAttr(mBeanServer,
+ localSenderOName, "socketOpenFailureCounter"));
+ }
+
+ if (sender instanceof AsyncClusterSender) {
+ AsyncClusterSender asyncSender = (AsyncClusterSender) sender;
+ asyncSender.setInQueueCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "inQueueCounter"));
+ asyncSender.setOutQueueCounter(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "outQueueCounter"));
+ asyncSender.setQueueSize(JmxTools
+ .getIntAttr(mBeanServer, localSenderOName, "queueSize"));
+ asyncSender.setQueuedNrOfBytes(JmxTools.getLongAttr(mBeanServer, localSenderOName,
+ "queuedNrOfBytes"));
+ }
+ cluster.getMembers().add(sender);
+ }
+ }
+ }
+ return cluster;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/ContainerListenerBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/ContainerListenerBean.java
index 3531993452..11a02c62ef 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/ContainerListenerBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/ContainerListenerBean.java
@@ -1,325 +1,325 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.Connector;
-import com.googlecode.psiprobe.model.RequestProcessor;
-import com.googlecode.psiprobe.model.ThreadPool;
-import com.googlecode.psiprobe.model.jmx.ThreadPoolObjectName;
-import com.googlecode.psiprobe.tools.JmxTools;
-
-import net.sf.javainetlocator.InetAddressLocator;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerNotification;
-import javax.management.Notification;
-import javax.management.NotificationListener;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-import javax.management.RuntimeOperationsException;
-
-/**
- * This class interfaces Tomcat JMX functionality to read connection status. The class essentially
- * provides and maintains the list of connection ThreadPools.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ContainerListenerBean implements NotificationListener {
-
- private Log logger = LogFactory.getLog(getClass());
- private List poolNames = null;
- private List executorNames = null;
-
- /**
- * Used to obtain required {@link MBeanServer} instance.
- */
- private ContainerWrapperBean containerWrapper;
-
- public ContainerWrapperBean getContainerWrapper() {
- return containerWrapper;
- }
-
- public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
- this.containerWrapper = containerWrapper;
- }
-
- private boolean isInitialized() {
- return poolNames != null && poolNames.size() > 0;
- }
-
- /**
- * Finds ThreadPoolObjectName by its string name.
- *
- * @param name - pool name
- *
- * @return null if the input name is null or ThreadPoolObjectName is not found
- */
- private ThreadPoolObjectName findPool(String name) {
- if (name != null && isInitialized()) {
- for (Iterator it = poolNames.iterator(); it.hasNext();) {
- ThreadPoolObjectName threadPoolObjectName = (ThreadPoolObjectName) it.next();
- if (name.equals(threadPoolObjectName.getThreadPoolName().getKeyProperty("name"))) {
- return threadPoolObjectName;
- }
- }
- }
- return null;
- }
-
- /**
- * Handles creation and deletion of new "worker" threads.
- */
- public synchronized void handleNotification(Notification notification, Object object) {
- if (notification instanceof MBeanServerNotification) {
- ObjectName objectName = ((MBeanServerNotification) notification).getMBeanName();
-
- if (notification.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION)) {
-
- if ("RequestProcessor".equals(objectName.getKeyProperty("type"))) {
- ThreadPoolObjectName threadPoolObjectName = findPool(objectName.getKeyProperty("worker"));
- if (threadPoolObjectName != null) {
- threadPoolObjectName.getRequestProcessorNames().add(objectName);
- }
- }
-
- } else if (notification.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) {
-
- if ("RequestProcessor".equals(objectName.getKeyProperty("type"))) {
- ThreadPoolObjectName threadPoolObjectName = findPool(objectName.getKeyProperty("worker"));
- if (threadPoolObjectName != null) {
- threadPoolObjectName.getRequestProcessorNames().remove(objectName);
- }
- }
- }
- }
- }
-
- /**
- * Load ObjectNames for the relevant MBeans so they can be queried at a later stage without
- * searching MBean server over and over again.
- *
- * @throws Exception - this method does not handle any of the exceptions that may be thrown when
- * querying MBean server.
- */
- private synchronized void initialize() throws Exception {
-
- MBeanServer server = getContainerWrapper().getResourceResolver().getMBeanServer();
- String serverName = getContainerWrapper().getTomcatContainer().getName();
- Set threadPools = server.queryMBeans(new ObjectName(serverName + ":type=ThreadPool,*"), null);
- poolNames = new ArrayList(threadPools.size());
- for (Iterator it = threadPools.iterator(); it.hasNext();) {
-
- ThreadPoolObjectName threadPoolObjectName = new ThreadPoolObjectName();
- ObjectName threadPoolName = ((ObjectInstance) it.next()).getObjectName();
-
- String name = threadPoolName.getKeyProperty("name");
-
- threadPoolObjectName.setThreadPoolName(threadPoolName);
- ObjectName grpName =
- server.getObjectInstance(
- new ObjectName(threadPoolName.getDomain() + ":type=GlobalRequestProcessor,name="
- + name)).getObjectName();
- threadPoolObjectName.setGlobalRequestProcessorName(grpName);
-
- /*
- * unfortunately exact workers could not be found at the time of testing so we filter out the
- * relevant workers within the loop
- */
- Set workers =
- server.queryMBeans(
- new ObjectName(threadPoolName.getDomain() + ":type=RequestProcessor,*"), null);
-
- for (Iterator wrkIt = workers.iterator(); wrkIt.hasNext();) {
- ObjectName wrkName = ((ObjectInstance) wrkIt.next()).getObjectName();
- if (name.equals(wrkName.getKeyProperty("worker"))) {
- threadPoolObjectName.getRequestProcessorNames().add(wrkName);
- }
- }
-
- poolNames.add(threadPoolObjectName);
- }
-
- Set executors = server.queryMBeans(new ObjectName(serverName + ":type=Executor,*"), null);
- executorNames = new ArrayList(executors.size());
- for (Iterator it = executors.iterator(); it.hasNext();) {
- ObjectName executorName = ((ObjectInstance) it.next()).getObjectName();
- executorNames.add(executorName);
- }
-
- // Register with MBean server
- server.addNotificationListener(new ObjectName("JMImplementation:type=MBeanServerDelegate"),
- this, null, null);
-
- }
-
- public synchronized List getThreadPools() throws Exception {
-
- if (!isInitialized()) {
- initialize();
- }
-
- List threadPools = new ArrayList(poolNames.size());
-
- MBeanServer server = getContainerWrapper().getResourceResolver().getMBeanServer();
-
- for (Iterator it = executorNames.iterator(); it.hasNext();) {
- ObjectName executorName = (ObjectName) it.next();
-
- ThreadPool threadPool = new ThreadPool();
- threadPool.setName(executorName.getKeyProperty("name"));
- threadPool.setMaxThreads(JmxTools.getIntAttr(server, executorName, "maxThreads"));
- threadPool.setMaxSpareThreads(JmxTools.getIntAttr(server, executorName, "largestPoolSize"));
- threadPool.setMinSpareThreads(JmxTools.getIntAttr(server, executorName, "minSpareThreads"));
- threadPool.setCurrentThreadsBusy(JmxTools.getIntAttr(server, executorName, "activeCount"));
- threadPool.setCurrentThreadCount(JmxTools.getIntAttr(server, executorName, "poolSize"));
-
- threadPools.add(threadPool);
- }
-
- for (Iterator it = poolNames.iterator(); it.hasNext();) {
-
- ThreadPoolObjectName threadPoolObjectName = (ThreadPoolObjectName) it.next();
- try {
- ObjectName poolName = threadPoolObjectName.getThreadPoolName();
-
- ThreadPool threadPool = new ThreadPool();
- threadPool.setName(poolName.getKeyProperty("name"));
- threadPool.setMaxThreads(JmxTools.getIntAttr(server, poolName, "maxThreads"));
-
- if (JmxTools.hasAttribute(server, poolName, "maxSpareThreads")) {
- threadPool.setMaxSpareThreads(JmxTools.getIntAttr(server, poolName, "maxSpareThreads"));
- threadPool.setMinSpareThreads(JmxTools.getIntAttr(server, poolName, "minSpareThreads"));
- }
-
- threadPool.setCurrentThreadsBusy(JmxTools
- .getIntAttr(server, poolName, "currentThreadsBusy"));
- threadPool.setCurrentThreadCount(JmxTools
- .getIntAttr(server, poolName, "currentThreadCount"));
-
- /*
- * Tomcat 6.0.21+ will return -1 for maxThreads if the connector uses an executor for its
- * threads. In this case, don't add its ThreadPool to the results.
- */
- if (threadPool.getMaxThreads() > -1) {
- threadPools.add(threadPool);
- }
- } catch (InstanceNotFoundException e) {
- logger.error("Failed to query entire thread pool " + threadPoolObjectName);
- logger.debug(" Stack trace:", e);
- }
- }
- return threadPools;
- }
-
- public synchronized List getConnectors(boolean includeRequestProcessors) throws Exception {
- boolean workerThreadNameSupported = true;
-
- if (!isInitialized()) {
- initialize();
- }
-
- List connectors = new ArrayList(poolNames.size());
-
- MBeanServer server = getContainerWrapper().getResourceResolver().getMBeanServer();
-
- for (Iterator it = poolNames.iterator(); it.hasNext();) {
-
- ThreadPoolObjectName threadPoolObjectName = (ThreadPoolObjectName) it.next();
- boolean remoteAddrAvailable = true;
- try {
- ObjectName poolName = threadPoolObjectName.getThreadPoolName();
-
- Connector connector = new Connector();
- connector.setName(poolName.getKeyProperty("name"));
-
- ObjectName grpName = threadPoolObjectName.getGlobalRequestProcessorName();
-
- connector.setMaxTime(JmxTools.getLongAttr(server, grpName, "maxTime"));
- connector.setProcessingTime(JmxTools.getLongAttr(server, grpName, "processingTime"));
- connector.setBytesReceived(JmxTools.getLongAttr(server, grpName, "bytesReceived"));
- connector.setBytesSent(JmxTools.getLongAttr(server, grpName, "bytesSent"));
- connector.setRequestCount(JmxTools.getIntAttr(server, grpName, "requestCount"));
- connector.setErrorCount(JmxTools.getIntAttr(server, grpName, "errorCount"));
-
- if (includeRequestProcessors) {
- for (Iterator wrkIt = threadPoolObjectName.getRequestProcessorNames().iterator(); wrkIt
- .hasNext();) {
- ObjectName wrkName = (ObjectName) wrkIt.next();
-
- try {
- RequestProcessor rp = new RequestProcessor();
- rp.setName(wrkName.getKeyProperty("name"));
- rp.setStage(JmxTools.getIntAttr(server, wrkName, "stage"));
- rp.setProcessingTime(JmxTools.getLongAttr(server, wrkName, "requestProcessingTime"));
- rp.setBytesSent(JmxTools.getLongAttr(server, wrkName, "requestBytesSent"));
- rp.setBytesReceived(JmxTools.getLongAttr(server, wrkName, "requestBytesReceived"));
- try {
- String remoteAddr = JmxTools.getStringAttr(server, wrkName, "remoteAddr");
- rp.setRemoteAddr(remoteAddr);
- rp.setRemoteAddrLocale(InetAddressLocator.getLocale(InetAddress.getByName(
- remoteAddr).getAddress()));
- } catch (RuntimeOperationsException ex) {
- /*
- * if it's not available for this request processor, then it's not available for any
- * request processor in this thread pool
- */
- remoteAddrAvailable = false;
- }
- rp.setVirtualHost(JmxTools.getStringAttr(server, wrkName, "virtualHost"));
- rp.setMethod(JmxTools.getStringAttr(server, wrkName, "method"));
- rp.setCurrentUri(JmxTools.getStringAttr(server, wrkName, "currentUri"));
- rp.setCurrentQueryString(JmxTools
- .getStringAttr(server, wrkName, "currentQueryString"));
- rp.setProtocol(JmxTools.getStringAttr(server, wrkName, "protocol"));
-
- // Relies on https://issues.apache.org/bugzilla/show_bug.cgi?id=41128
- if (workerThreadNameSupported
- && JmxTools.hasAttribute(server, wrkName, "workerThreadName")) {
-
- rp.setWorkerThreadName(JmxTools.getStringAttr(server, wrkName, "workerThreadName"));
- rp.setWorkerThreadNameSupported(true);
- } else {
- /*
- * attribute should consistently either exist or be missing across all the workers
- * so it does not make sense to check attribute existence if we have found once that
- * it is not supported
- */
- rp.setWorkerThreadNameSupported(false);
- workerThreadNameSupported = false;
- }
- connector.addRequestProcessor(rp);
- } catch (InstanceNotFoundException e) {
- logger.info("Failed to query RequestProcessor " + wrkName);
- logger.debug(" Stack trace:", e);
- }
- }
- }
-
- connectors.add(connector);
- } catch (InstanceNotFoundException e) {
- logger.error("Failed to query entire thread pool " + threadPoolObjectName);
- logger.debug(" Stack trace:", e);
- }
- }
- return connectors;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.Connector;
+import com.googlecode.psiprobe.model.RequestProcessor;
+import com.googlecode.psiprobe.model.ThreadPool;
+import com.googlecode.psiprobe.model.jmx.ThreadPoolObjectName;
+import com.googlecode.psiprobe.tools.JmxTools;
+
+import net.sf.javainetlocator.InetAddressLocator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerNotification;
+import javax.management.Notification;
+import javax.management.NotificationListener;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import javax.management.RuntimeOperationsException;
+
+/**
+ * This class interfaces Tomcat JMX functionality to read connection status. The class essentially
+ * provides and maintains the list of connection ThreadPools.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ContainerListenerBean implements NotificationListener {
+
+ private Log logger = LogFactory.getLog(getClass());
+ private List poolNames = null;
+ private List executorNames = null;
+
+ /**
+ * Used to obtain required {@link MBeanServer} instance.
+ */
+ private ContainerWrapperBean containerWrapper;
+
+ public ContainerWrapperBean getContainerWrapper() {
+ return containerWrapper;
+ }
+
+ public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
+ this.containerWrapper = containerWrapper;
+ }
+
+ private boolean isInitialized() {
+ return poolNames != null && poolNames.size() > 0;
+ }
+
+ /**
+ * Finds ThreadPoolObjectName by its string name.
+ *
+ * @param name - pool name
+ *
+ * @return null if the input name is null or ThreadPoolObjectName is not found
+ */
+ private ThreadPoolObjectName findPool(String name) {
+ if (name != null && isInitialized()) {
+ for (Iterator it = poolNames.iterator(); it.hasNext();) {
+ ThreadPoolObjectName threadPoolObjectName = (ThreadPoolObjectName) it.next();
+ if (name.equals(threadPoolObjectName.getThreadPoolName().getKeyProperty("name"))) {
+ return threadPoolObjectName;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Handles creation and deletion of new "worker" threads.
+ */
+ public synchronized void handleNotification(Notification notification, Object object) {
+ if (notification instanceof MBeanServerNotification) {
+ ObjectName objectName = ((MBeanServerNotification) notification).getMBeanName();
+
+ if (notification.getType().equals(MBeanServerNotification.REGISTRATION_NOTIFICATION)) {
+
+ if ("RequestProcessor".equals(objectName.getKeyProperty("type"))) {
+ ThreadPoolObjectName threadPoolObjectName = findPool(objectName.getKeyProperty("worker"));
+ if (threadPoolObjectName != null) {
+ threadPoolObjectName.getRequestProcessorNames().add(objectName);
+ }
+ }
+
+ } else if (notification.getType().equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) {
+
+ if ("RequestProcessor".equals(objectName.getKeyProperty("type"))) {
+ ThreadPoolObjectName threadPoolObjectName = findPool(objectName.getKeyProperty("worker"));
+ if (threadPoolObjectName != null) {
+ threadPoolObjectName.getRequestProcessorNames().remove(objectName);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Load ObjectNames for the relevant MBeans so they can be queried at a later stage without
+ * searching MBean server over and over again.
+ *
+ * @throws Exception - this method does not handle any of the exceptions that may be thrown when
+ * querying MBean server.
+ */
+ private synchronized void initialize() throws Exception {
+
+ MBeanServer server = getContainerWrapper().getResourceResolver().getMBeanServer();
+ String serverName = getContainerWrapper().getTomcatContainer().getName();
+ Set threadPools = server.queryMBeans(new ObjectName(serverName + ":type=ThreadPool,*"), null);
+ poolNames = new ArrayList(threadPools.size());
+ for (Iterator it = threadPools.iterator(); it.hasNext();) {
+
+ ThreadPoolObjectName threadPoolObjectName = new ThreadPoolObjectName();
+ ObjectName threadPoolName = ((ObjectInstance) it.next()).getObjectName();
+
+ String name = threadPoolName.getKeyProperty("name");
+
+ threadPoolObjectName.setThreadPoolName(threadPoolName);
+ ObjectName grpName =
+ server.getObjectInstance(
+ new ObjectName(threadPoolName.getDomain() + ":type=GlobalRequestProcessor,name="
+ + name)).getObjectName();
+ threadPoolObjectName.setGlobalRequestProcessorName(grpName);
+
+ /*
+ * unfortunately exact workers could not be found at the time of testing so we filter out the
+ * relevant workers within the loop
+ */
+ Set workers =
+ server.queryMBeans(
+ new ObjectName(threadPoolName.getDomain() + ":type=RequestProcessor,*"), null);
+
+ for (Iterator wrkIt = workers.iterator(); wrkIt.hasNext();) {
+ ObjectName wrkName = ((ObjectInstance) wrkIt.next()).getObjectName();
+ if (name.equals(wrkName.getKeyProperty("worker"))) {
+ threadPoolObjectName.getRequestProcessorNames().add(wrkName);
+ }
+ }
+
+ poolNames.add(threadPoolObjectName);
+ }
+
+ Set executors = server.queryMBeans(new ObjectName(serverName + ":type=Executor,*"), null);
+ executorNames = new ArrayList(executors.size());
+ for (Iterator it = executors.iterator(); it.hasNext();) {
+ ObjectName executorName = ((ObjectInstance) it.next()).getObjectName();
+ executorNames.add(executorName);
+ }
+
+ // Register with MBean server
+ server.addNotificationListener(new ObjectName("JMImplementation:type=MBeanServerDelegate"),
+ this, null, null);
+
+ }
+
+ public synchronized List getThreadPools() throws Exception {
+
+ if (!isInitialized()) {
+ initialize();
+ }
+
+ List threadPools = new ArrayList(poolNames.size());
+
+ MBeanServer server = getContainerWrapper().getResourceResolver().getMBeanServer();
+
+ for (Iterator it = executorNames.iterator(); it.hasNext();) {
+ ObjectName executorName = (ObjectName) it.next();
+
+ ThreadPool threadPool = new ThreadPool();
+ threadPool.setName(executorName.getKeyProperty("name"));
+ threadPool.setMaxThreads(JmxTools.getIntAttr(server, executorName, "maxThreads"));
+ threadPool.setMaxSpareThreads(JmxTools.getIntAttr(server, executorName, "largestPoolSize"));
+ threadPool.setMinSpareThreads(JmxTools.getIntAttr(server, executorName, "minSpareThreads"));
+ threadPool.setCurrentThreadsBusy(JmxTools.getIntAttr(server, executorName, "activeCount"));
+ threadPool.setCurrentThreadCount(JmxTools.getIntAttr(server, executorName, "poolSize"));
+
+ threadPools.add(threadPool);
+ }
+
+ for (Iterator it = poolNames.iterator(); it.hasNext();) {
+
+ ThreadPoolObjectName threadPoolObjectName = (ThreadPoolObjectName) it.next();
+ try {
+ ObjectName poolName = threadPoolObjectName.getThreadPoolName();
+
+ ThreadPool threadPool = new ThreadPool();
+ threadPool.setName(poolName.getKeyProperty("name"));
+ threadPool.setMaxThreads(JmxTools.getIntAttr(server, poolName, "maxThreads"));
+
+ if (JmxTools.hasAttribute(server, poolName, "maxSpareThreads")) {
+ threadPool.setMaxSpareThreads(JmxTools.getIntAttr(server, poolName, "maxSpareThreads"));
+ threadPool.setMinSpareThreads(JmxTools.getIntAttr(server, poolName, "minSpareThreads"));
+ }
+
+ threadPool.setCurrentThreadsBusy(JmxTools
+ .getIntAttr(server, poolName, "currentThreadsBusy"));
+ threadPool.setCurrentThreadCount(JmxTools
+ .getIntAttr(server, poolName, "currentThreadCount"));
+
+ /*
+ * Tomcat 6.0.21+ will return -1 for maxThreads if the connector uses an executor for its
+ * threads. In this case, don't add its ThreadPool to the results.
+ */
+ if (threadPool.getMaxThreads() > -1) {
+ threadPools.add(threadPool);
+ }
+ } catch (InstanceNotFoundException e) {
+ logger.error("Failed to query entire thread pool " + threadPoolObjectName);
+ logger.debug(" Stack trace:", e);
+ }
+ }
+ return threadPools;
+ }
+
+ public synchronized List getConnectors(boolean includeRequestProcessors) throws Exception {
+ boolean workerThreadNameSupported = true;
+
+ if (!isInitialized()) {
+ initialize();
+ }
+
+ List connectors = new ArrayList(poolNames.size());
+
+ MBeanServer server = getContainerWrapper().getResourceResolver().getMBeanServer();
+
+ for (Iterator it = poolNames.iterator(); it.hasNext();) {
+
+ ThreadPoolObjectName threadPoolObjectName = (ThreadPoolObjectName) it.next();
+ boolean remoteAddrAvailable = true;
+ try {
+ ObjectName poolName = threadPoolObjectName.getThreadPoolName();
+
+ Connector connector = new Connector();
+ connector.setName(poolName.getKeyProperty("name"));
+
+ ObjectName grpName = threadPoolObjectName.getGlobalRequestProcessorName();
+
+ connector.setMaxTime(JmxTools.getLongAttr(server, grpName, "maxTime"));
+ connector.setProcessingTime(JmxTools.getLongAttr(server, grpName, "processingTime"));
+ connector.setBytesReceived(JmxTools.getLongAttr(server, grpName, "bytesReceived"));
+ connector.setBytesSent(JmxTools.getLongAttr(server, grpName, "bytesSent"));
+ connector.setRequestCount(JmxTools.getIntAttr(server, grpName, "requestCount"));
+ connector.setErrorCount(JmxTools.getIntAttr(server, grpName, "errorCount"));
+
+ if (includeRequestProcessors) {
+ for (Iterator wrkIt = threadPoolObjectName.getRequestProcessorNames().iterator(); wrkIt
+ .hasNext();) {
+ ObjectName wrkName = (ObjectName) wrkIt.next();
+
+ try {
+ RequestProcessor rp = new RequestProcessor();
+ rp.setName(wrkName.getKeyProperty("name"));
+ rp.setStage(JmxTools.getIntAttr(server, wrkName, "stage"));
+ rp.setProcessingTime(JmxTools.getLongAttr(server, wrkName, "requestProcessingTime"));
+ rp.setBytesSent(JmxTools.getLongAttr(server, wrkName, "requestBytesSent"));
+ rp.setBytesReceived(JmxTools.getLongAttr(server, wrkName, "requestBytesReceived"));
+ try {
+ String remoteAddr = JmxTools.getStringAttr(server, wrkName, "remoteAddr");
+ rp.setRemoteAddr(remoteAddr);
+ rp.setRemoteAddrLocale(InetAddressLocator.getLocale(InetAddress.getByName(
+ remoteAddr).getAddress()));
+ } catch (RuntimeOperationsException ex) {
+ /*
+ * if it's not available for this request processor, then it's not available for any
+ * request processor in this thread pool
+ */
+ remoteAddrAvailable = false;
+ }
+ rp.setVirtualHost(JmxTools.getStringAttr(server, wrkName, "virtualHost"));
+ rp.setMethod(JmxTools.getStringAttr(server, wrkName, "method"));
+ rp.setCurrentUri(JmxTools.getStringAttr(server, wrkName, "currentUri"));
+ rp.setCurrentQueryString(JmxTools
+ .getStringAttr(server, wrkName, "currentQueryString"));
+ rp.setProtocol(JmxTools.getStringAttr(server, wrkName, "protocol"));
+
+ // Relies on https://issues.apache.org/bugzilla/show_bug.cgi?id=41128
+ if (workerThreadNameSupported
+ && JmxTools.hasAttribute(server, wrkName, "workerThreadName")) {
+
+ rp.setWorkerThreadName(JmxTools.getStringAttr(server, wrkName, "workerThreadName"));
+ rp.setWorkerThreadNameSupported(true);
+ } else {
+ /*
+ * attribute should consistently either exist or be missing across all the workers
+ * so it does not make sense to check attribute existence if we have found once that
+ * it is not supported
+ */
+ rp.setWorkerThreadNameSupported(false);
+ workerThreadNameSupported = false;
+ }
+ connector.addRequestProcessor(rp);
+ } catch (InstanceNotFoundException e) {
+ logger.info("Failed to query RequestProcessor " + wrkName);
+ logger.debug(" Stack trace:", e);
+ }
+ }
+ }
+
+ connectors.add(connector);
+ } catch (InstanceNotFoundException e) {
+ logger.error("Failed to query entire thread pool " + threadPoolObjectName);
+ logger.debug(" Stack trace:", e);
+ }
+ }
+ return connectors;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/ContainerWrapperBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/ContainerWrapperBean.java
index 65913dc786..32093be02f 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/ContainerWrapperBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/ContainerWrapperBean.java
@@ -1,201 +1,201 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.TomcatContainer;
-import com.googlecode.psiprobe.model.ApplicationResource;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.Wrapper;
-import org.apache.catalina.util.ServerInfo;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class wires support for Tomcat "privileged" context functionality into Spring. If
- * application context is privileged Tomcat would always call servlet.setWrapper method on each
- * request. ContainerWrapperBean wires the passed wrapper to the relevant Tomcat container adaptor
- * class, which in turn helps the Probe to interpret the wrapper. Container adaptors are required
- * because internal wrapper structure is quite different between Tomcat 5.5.x and Tomcat 5.0.x
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ContainerWrapperBean {
-
- private Log logger = LogFactory.getLog(getClass());
-
- private TomcatContainer tomcatContainer = null;
- private final Object lock = new Object();
-
- /**
- * List of class names to adapt particular Tomcat implementation to TomcatContainer interface
- */
- private List adaptorClasses;
-
- private ResourceResolver resourceResolver;
-
- private boolean forceFirstAdaptor = false;
-
- private Map resourceResolvers;
-
- public boolean isForceFirstAdaptor() {
- return forceFirstAdaptor;
- }
-
- public void setForceFirstAdaptor(boolean forceFirstAdaptor) {
- this.forceFirstAdaptor = forceFirstAdaptor;
- }
-
- public void setWrapper(Wrapper wrapper) {
- if (tomcatContainer == null) {
-
- synchronized (lock) {
-
- if (tomcatContainer == null) {
-
- String serverInfo = ServerInfo.getServerInfo();
- logger.info("Server info: " + serverInfo);
- for (int i = 0; i < adaptorClasses.size(); i++) {
- String className = (String) adaptorClasses.get(i);
- try {
- Object o = Class.forName(className).newInstance();
- logger.debug("Testing container adaptor: " + className);
- if (o instanceof TomcatContainer) {
- if (forceFirstAdaptor || ((TomcatContainer) o).canBoundTo(serverInfo)) {
- logger.info("Using " + className);
- tomcatContainer = (TomcatContainer) o;
- tomcatContainer.setWrapper(wrapper);
- break;
- } else {
- logger.debug("Cannot bind " + className + " to " + serverInfo);
- }
- } else {
- logger.error(className + " does not implement " + TomcatContainer.class.getName());
- }
- } catch (Throwable e) {
- if (logger.isDebugEnabled()) {
- logger.debug("Failed to load " + className, e);
- } else {
- logger.info("Failed to load " + className);
- }
- //
- // make sure we always re-throw ThreadDeath
- //
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
- }
-
- if (tomcatContainer == null) {
- logger.fatal("No suitable container adaptor found!");
- }
- }
- }
- }
-
- try {
- if (tomcatContainer != null && wrapper == null) {
- logger.info("Unregistering container adaptor");
- tomcatContainer.setWrapper(null);
- }
- } catch (Throwable e) {
- logger.error("Could not unregister container adaptor", e);
- //
- // make sure we always re-throw ThreadDeath
- //
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
- }
-
- public TomcatContainer getTomcatContainer() {
- return tomcatContainer;
- }
-
- public List getAdaptorClasses() {
- return adaptorClasses;
- }
-
- public void setAdaptorClasses(List adaptorClasses) {
- this.adaptorClasses = adaptorClasses;
- }
-
- public ResourceResolver getResourceResolver() {
- if (resourceResolver == null) {
- if (System.getProperty("jboss.server.name") != null) {
- resourceResolver = (ResourceResolver) resourceResolvers.get("jboss");
- logger.info("Using JBOSS resource resolver");
- } else {
- resourceResolver = (ResourceResolver) resourceResolvers.get("default");
- logger.info("Using DEFAULT resource resolver");
- }
- }
- return resourceResolver;
- }
-
- public Map getResourceResolvers() {
- return resourceResolvers;
- }
-
- public void setResourceResolvers(Map resourceResolvers) {
- this.resourceResolvers = resourceResolvers;
- }
-
- public List getDataSources() throws Exception {
- List resources = new ArrayList();
- resources.addAll(getPrivateDataSources());
- resources.addAll(getGlobalDataSources());
- return resources;
- }
-
- public List getPrivateDataSources() throws Exception {
- List resources = new ArrayList();
- if (tomcatContainer != null && getResourceResolver().supportsPrivateResources()) {
- List apps = getTomcatContainer().findContexts();
-
- for (int i = 0; i < apps.size(); i++) {
- List appResources =
- getResourceResolver().getApplicationResources((Context) apps.get(i), this);
- // add only those resources that have data source info
- filterDataSources(appResources, resources);
- }
- }
- return resources;
- }
-
- public List getGlobalDataSources() throws Exception {
- List resources = new ArrayList();
- if (getResourceResolver().supportsGlobalResources()) {
- List globalResources = getResourceResolver().getApplicationResources();
- // add only those resources that have data source info
- filterDataSources(globalResources, resources);
- }
- return resources;
- }
-
- protected void filterDataSources(List resources, List dataSources) {
- for (Iterator it = resources.iterator(); it.hasNext();) {
- ApplicationResource res = (ApplicationResource) it.next();
- if (res.getDataSourceInfo() != null) {
- dataSources.add(res);
- }
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.TomcatContainer;
+import com.googlecode.psiprobe.model.ApplicationResource;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Wrapper;
+import org.apache.catalina.util.ServerInfo;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This class wires support for Tomcat "privileged" context functionality into Spring. If
+ * application context is privileged Tomcat would always call servlet.setWrapper method on each
+ * request. ContainerWrapperBean wires the passed wrapper to the relevant Tomcat container adaptor
+ * class, which in turn helps the Probe to interpret the wrapper. Container adaptors are required
+ * because internal wrapper structure is quite different between Tomcat 5.5.x and Tomcat 5.0.x
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ContainerWrapperBean {
+
+ private Log logger = LogFactory.getLog(getClass());
+
+ private TomcatContainer tomcatContainer = null;
+ private final Object lock = new Object();
+
+ /**
+ * List of class names to adapt particular Tomcat implementation to TomcatContainer interface
+ */
+ private List adaptorClasses;
+
+ private ResourceResolver resourceResolver;
+
+ private boolean forceFirstAdaptor = false;
+
+ private Map resourceResolvers;
+
+ public boolean isForceFirstAdaptor() {
+ return forceFirstAdaptor;
+ }
+
+ public void setForceFirstAdaptor(boolean forceFirstAdaptor) {
+ this.forceFirstAdaptor = forceFirstAdaptor;
+ }
+
+ public void setWrapper(Wrapper wrapper) {
+ if (tomcatContainer == null) {
+
+ synchronized (lock) {
+
+ if (tomcatContainer == null) {
+
+ String serverInfo = ServerInfo.getServerInfo();
+ logger.info("Server info: " + serverInfo);
+ for (int i = 0; i < adaptorClasses.size(); i++) {
+ String className = (String) adaptorClasses.get(i);
+ try {
+ Object o = Class.forName(className).newInstance();
+ logger.debug("Testing container adaptor: " + className);
+ if (o instanceof TomcatContainer) {
+ if (forceFirstAdaptor || ((TomcatContainer) o).canBoundTo(serverInfo)) {
+ logger.info("Using " + className);
+ tomcatContainer = (TomcatContainer) o;
+ tomcatContainer.setWrapper(wrapper);
+ break;
+ } else {
+ logger.debug("Cannot bind " + className + " to " + serverInfo);
+ }
+ } else {
+ logger.error(className + " does not implement " + TomcatContainer.class.getName());
+ }
+ } catch (Throwable e) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Failed to load " + className, e);
+ } else {
+ logger.info("Failed to load " + className);
+ }
+ //
+ // make sure we always re-throw ThreadDeath
+ //
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+ }
+
+ if (tomcatContainer == null) {
+ logger.fatal("No suitable container adaptor found!");
+ }
+ }
+ }
+ }
+
+ try {
+ if (tomcatContainer != null && wrapper == null) {
+ logger.info("Unregistering container adaptor");
+ tomcatContainer.setWrapper(null);
+ }
+ } catch (Throwable e) {
+ logger.error("Could not unregister container adaptor", e);
+ //
+ // make sure we always re-throw ThreadDeath
+ //
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+ }
+
+ public TomcatContainer getTomcatContainer() {
+ return tomcatContainer;
+ }
+
+ public List getAdaptorClasses() {
+ return adaptorClasses;
+ }
+
+ public void setAdaptorClasses(List adaptorClasses) {
+ this.adaptorClasses = adaptorClasses;
+ }
+
+ public ResourceResolver getResourceResolver() {
+ if (resourceResolver == null) {
+ if (System.getProperty("jboss.server.name") != null) {
+ resourceResolver = (ResourceResolver) resourceResolvers.get("jboss");
+ logger.info("Using JBOSS resource resolver");
+ } else {
+ resourceResolver = (ResourceResolver) resourceResolvers.get("default");
+ logger.info("Using DEFAULT resource resolver");
+ }
+ }
+ return resourceResolver;
+ }
+
+ public Map getResourceResolvers() {
+ return resourceResolvers;
+ }
+
+ public void setResourceResolvers(Map resourceResolvers) {
+ this.resourceResolvers = resourceResolvers;
+ }
+
+ public List getDataSources() throws Exception {
+ List resources = new ArrayList();
+ resources.addAll(getPrivateDataSources());
+ resources.addAll(getGlobalDataSources());
+ return resources;
+ }
+
+ public List getPrivateDataSources() throws Exception {
+ List resources = new ArrayList();
+ if (tomcatContainer != null && getResourceResolver().supportsPrivateResources()) {
+ List apps = getTomcatContainer().findContexts();
+
+ for (int i = 0; i < apps.size(); i++) {
+ List appResources =
+ getResourceResolver().getApplicationResources((Context) apps.get(i), this);
+ // add only those resources that have data source info
+ filterDataSources(appResources, resources);
+ }
+ }
+ return resources;
+ }
+
+ public List getGlobalDataSources() throws Exception {
+ List resources = new ArrayList();
+ if (getResourceResolver().supportsGlobalResources()) {
+ List globalResources = getResourceResolver().getApplicationResources();
+ // add only those resources that have data source info
+ filterDataSources(globalResources, resources);
+ }
+ return resources;
+ }
+
+ protected void filterDataSources(List resources, List dataSources) {
+ for (Iterator it = resources.iterator(); it.hasNext();) {
+ ApplicationResource res = (ApplicationResource) it.next();
+ if (res.getDataSourceInfo() != null) {
+ dataSources.add(res);
+ }
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/DatasourceAccessor.java b/core/src/main/java/com/googlecode/psiprobe/beans/DatasourceAccessor.java
index e177986919..6a2f845db2 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/DatasourceAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/DatasourceAccessor.java
@@ -1,27 +1,27 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-/**
- * Part of datasource type abstraction layer. Allows to extent Probe functionality to any kind of
- * datasources.
- *
- * @author Vlad Ilyushchenko
- */
-public interface DatasourceAccessor {
- DataSourceInfo getInfo(Object resource) throws Exception;
-
- boolean reset(Object resource) throws Exception;
-
- boolean canMap(Object resource);
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+/**
+ * Part of datasource type abstraction layer. Allows to extent Probe functionality to any kind of
+ * datasources.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public interface DatasourceAccessor {
+ DataSourceInfo getInfo(Object resource) throws Exception;
+
+ boolean reset(Object resource) throws Exception;
+
+ boolean canMap(Object resource);
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/DbcpDatasourceAccessor.java b/core/src/main/java/com/googlecode/psiprobe/beans/DbcpDatasourceAccessor.java
index f749c8b577..a9e224ae93 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/DbcpDatasourceAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/DbcpDatasourceAccessor.java
@@ -1,48 +1,48 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-import org.apache.commons.dbcp.BasicDataSource;
-
-/**
- * DBCP datasource abstraction layer.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class DbcpDatasourceAccessor implements DatasourceAccessor {
- public DataSourceInfo getInfo(Object resource) throws Exception {
- DataSourceInfo dataSourceInfo = null;
- if (canMap(resource)) {
- BasicDataSource source = (BasicDataSource) resource;
- dataSourceInfo = new DataSourceInfo();
- dataSourceInfo.setBusyConnections(source.getNumActive());
- dataSourceInfo.setEstablishedConnections(source.getNumIdle() + source.getNumActive());
- dataSourceInfo.setMaxConnections(source.getMaxActive());
- dataSourceInfo.setJdbcURL(source.getUrl());
- dataSourceInfo.setUsername(source.getUsername());
- dataSourceInfo.setResettable(false);
- dataSourceInfo.setType("commons-dbcp");
- }
- return dataSourceInfo;
- }
-
- public boolean reset(Object resource) throws Exception {
- return false;
- }
-
- public boolean canMap(Object resource) {
- return "org.apache.commons.dbcp.BasicDataSource".equals(resource.getClass().getName())
- && resource instanceof BasicDataSource;
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+import org.apache.commons.dbcp.BasicDataSource;
+
+/**
+ * DBCP datasource abstraction layer.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class DbcpDatasourceAccessor implements DatasourceAccessor {
+ public DataSourceInfo getInfo(Object resource) throws Exception {
+ DataSourceInfo dataSourceInfo = null;
+ if (canMap(resource)) {
+ BasicDataSource source = (BasicDataSource) resource;
+ dataSourceInfo = new DataSourceInfo();
+ dataSourceInfo.setBusyConnections(source.getNumActive());
+ dataSourceInfo.setEstablishedConnections(source.getNumIdle() + source.getNumActive());
+ dataSourceInfo.setMaxConnections(source.getMaxActive());
+ dataSourceInfo.setJdbcURL(source.getUrl());
+ dataSourceInfo.setUsername(source.getUsername());
+ dataSourceInfo.setResettable(false);
+ dataSourceInfo.setType("commons-dbcp");
+ }
+ return dataSourceInfo;
+ }
+
+ public boolean reset(Object resource) throws Exception {
+ return false;
+ }
+
+ public boolean canMap(Object resource) {
+ return "org.apache.commons.dbcp.BasicDataSource".equals(resource.getClass().getName())
+ && resource instanceof BasicDataSource;
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/JBossResourceResolverBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/JBossResourceResolverBean.java
index 51955e42c3..99ca79a082 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/JBossResourceResolverBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/JBossResourceResolverBean.java
@@ -1,178 +1,178 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.ApplicationResource;
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-import org.apache.catalina.Context;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.naming.NamingException;
-import javax.sql.DataSource;
-
-/**
- * An Adaptor to convert information retrieved from JBoss JMX beans into internal resource model.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class JBossResourceResolverBean implements ResourceResolver {
-
- protected Log logger = LogFactory.getLog(getClass());
-
- public MBeanServer getMBeanServer() {
- for (Iterator it = MBeanServerFactory.findMBeanServer(null).iterator(); it.hasNext();) {
- MBeanServer server = (MBeanServer) it.next();
- if ("jboss".equals(server.getDefaultDomain())
- || "DefaultDomain".equals(server.getDefaultDomain())) {
- return server;
- }
- }
- return null;
- }
-
- public boolean supportsPrivateResources() {
- return false;
- }
-
- public boolean supportsGlobalResources() {
- return true;
- }
-
- public boolean supportsDataSourceLookup() {
- return false;
- }
-
- public List getApplicationResources() throws NamingException {
-
- List resources = new ArrayList();
-
- MBeanServer server = getMBeanServer();
- if (server != null) {
- try {
- Set dsNames =
- server.queryNames(new ObjectName("jboss.jca:service=ManagedConnectionPool,*"), null);
- for (Iterator it = dsNames.iterator(); it.hasNext();) {
- ObjectName managedConnectionPoolOName = (ObjectName) it.next();
-
- ApplicationResource resource = new ApplicationResource();
- resource.setName(managedConnectionPoolOName.getKeyProperty("name"));
- resource.setType("jboss");
- String criteria = (String) server.getAttribute(managedConnectionPoolOName, "Criteria");
- if ("ByApplication".equals(criteria)) {
- resource.setAuth("Application");
- } else if ("ByContainerAndApplication".equals(criteria)) {
- resource.setAuth("Both");
- } else {
- resource.setAuth("Container");
- }
- DataSourceInfo dsInfo = new DataSourceInfo();
- dsInfo.setMaxConnections(((Integer) server.getAttribute(managedConnectionPoolOName,
- "MaxSize")).intValue());
- dsInfo.setEstablishedConnections(((Integer) server.getAttribute(
- managedConnectionPoolOName, "ConnectionCount")).intValue());
- dsInfo.setBusyConnections(((Long) server.getAttribute(managedConnectionPoolOName,
- "InUseConnectionCount")).intValue());
-
-
- ObjectName connectionFactoryOName =
- new ObjectName("jboss.jca:service=ManagedConnectionFactory,name="
- + resource.getName());
- Element elm =
- (Element) server.getAttribute(connectionFactoryOName,
- "ManagedConnectionFactoryProperties");
-
- if (elm != null) {
- NodeList nl = elm.getChildNodes();
- for (int i = 0; i < nl.getLength(); i++) {
- Node n = nl.item(i);
- Node na = n.getAttributes().getNamedItem("name");
- if (na != null) {
- if ("ConnectionURL".equals(na.getNodeValue())) {
- dsInfo.setJdbcURL(n.getFirstChild().getNodeValue());
- }
-
- if ("UserName".equals(na.getNodeValue())) {
- dsInfo.setUsername(n.getFirstChild().getNodeValue());
- }
-
- // JMS datasource
- if ("JmsProviderAdapterJNDI".equals(na.getNodeValue())) {
- dsInfo.setJdbcURL(n.getFirstChild().getNodeValue());
- resource.setType("jms");
- }
- }
- }
- }
-
- dsInfo.setResettable(true);
-
- resource.setDataSourceInfo(dsInfo);
- resources.add(resource);
- }
- } catch (Exception e) {
- logger.fatal("There was an error querying JBoss JMX server:", e);
- }
- }
- return resources;
- }
-
- public List getApplicationResources(Context context) throws NamingException {
- return new ArrayList();
- }
-
- public boolean resetResource(Context context, String resourceName,
- ContainerWrapperBean containerWrapper) throws NamingException {
- try {
- ObjectName poolOName =
- new ObjectName("jboss.jca:service=ManagedConnectionPool,name=" + resourceName);
- MBeanServer server = getMBeanServer();
- if (server != null) {
- try {
- server.invoke(poolOName, "stop", null, null);
- server.invoke(poolOName, "start", null, null);
- return true;
- } catch (Exception e) {
- logger.error("Could not reset resource \"" + resourceName + "\"", e);
- }
- }
- return false;
- } catch (MalformedObjectNameException e) {
- throw new NamingException("Resource name: \"" + resourceName
- + "\" makes a malformed ObjectName");
- }
- }
-
- public DataSource lookupDataSource(Context context, String resourceName,
- ContainerWrapperBean containerWrapper) throws NamingException {
- throw new UnsupportedOperationException(
- "This feature has not been implemented for JBoss server yet.");
- }
-
- public List getApplicationResources(Context context, ContainerWrapperBean containerWrapper)
- throws NamingException {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.ApplicationResource;
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+import org.apache.catalina.Context;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/**
+ * An Adaptor to convert information retrieved from JBoss JMX beans into internal resource model.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class JBossResourceResolverBean implements ResourceResolver {
+
+ protected Log logger = LogFactory.getLog(getClass());
+
+ public MBeanServer getMBeanServer() {
+ for (Iterator it = MBeanServerFactory.findMBeanServer(null).iterator(); it.hasNext();) {
+ MBeanServer server = (MBeanServer) it.next();
+ if ("jboss".equals(server.getDefaultDomain())
+ || "DefaultDomain".equals(server.getDefaultDomain())) {
+ return server;
+ }
+ }
+ return null;
+ }
+
+ public boolean supportsPrivateResources() {
+ return false;
+ }
+
+ public boolean supportsGlobalResources() {
+ return true;
+ }
+
+ public boolean supportsDataSourceLookup() {
+ return false;
+ }
+
+ public List getApplicationResources() throws NamingException {
+
+ List resources = new ArrayList();
+
+ MBeanServer server = getMBeanServer();
+ if (server != null) {
+ try {
+ Set dsNames =
+ server.queryNames(new ObjectName("jboss.jca:service=ManagedConnectionPool,*"), null);
+ for (Iterator it = dsNames.iterator(); it.hasNext();) {
+ ObjectName managedConnectionPoolOName = (ObjectName) it.next();
+
+ ApplicationResource resource = new ApplicationResource();
+ resource.setName(managedConnectionPoolOName.getKeyProperty("name"));
+ resource.setType("jboss");
+ String criteria = (String) server.getAttribute(managedConnectionPoolOName, "Criteria");
+ if ("ByApplication".equals(criteria)) {
+ resource.setAuth("Application");
+ } else if ("ByContainerAndApplication".equals(criteria)) {
+ resource.setAuth("Both");
+ } else {
+ resource.setAuth("Container");
+ }
+ DataSourceInfo dsInfo = new DataSourceInfo();
+ dsInfo.setMaxConnections(((Integer) server.getAttribute(managedConnectionPoolOName,
+ "MaxSize")).intValue());
+ dsInfo.setEstablishedConnections(((Integer) server.getAttribute(
+ managedConnectionPoolOName, "ConnectionCount")).intValue());
+ dsInfo.setBusyConnections(((Long) server.getAttribute(managedConnectionPoolOName,
+ "InUseConnectionCount")).intValue());
+
+
+ ObjectName connectionFactoryOName =
+ new ObjectName("jboss.jca:service=ManagedConnectionFactory,name="
+ + resource.getName());
+ Element elm =
+ (Element) server.getAttribute(connectionFactoryOName,
+ "ManagedConnectionFactoryProperties");
+
+ if (elm != null) {
+ NodeList nl = elm.getChildNodes();
+ for (int i = 0; i < nl.getLength(); i++) {
+ Node n = nl.item(i);
+ Node na = n.getAttributes().getNamedItem("name");
+ if (na != null) {
+ if ("ConnectionURL".equals(na.getNodeValue())) {
+ dsInfo.setJdbcURL(n.getFirstChild().getNodeValue());
+ }
+
+ if ("UserName".equals(na.getNodeValue())) {
+ dsInfo.setUsername(n.getFirstChild().getNodeValue());
+ }
+
+ // JMS datasource
+ if ("JmsProviderAdapterJNDI".equals(na.getNodeValue())) {
+ dsInfo.setJdbcURL(n.getFirstChild().getNodeValue());
+ resource.setType("jms");
+ }
+ }
+ }
+ }
+
+ dsInfo.setResettable(true);
+
+ resource.setDataSourceInfo(dsInfo);
+ resources.add(resource);
+ }
+ } catch (Exception e) {
+ logger.fatal("There was an error querying JBoss JMX server:", e);
+ }
+ }
+ return resources;
+ }
+
+ public List getApplicationResources(Context context) throws NamingException {
+ return new ArrayList();
+ }
+
+ public boolean resetResource(Context context, String resourceName,
+ ContainerWrapperBean containerWrapper) throws NamingException {
+ try {
+ ObjectName poolOName =
+ new ObjectName("jboss.jca:service=ManagedConnectionPool,name=" + resourceName);
+ MBeanServer server = getMBeanServer();
+ if (server != null) {
+ try {
+ server.invoke(poolOName, "stop", null, null);
+ server.invoke(poolOName, "start", null, null);
+ return true;
+ } catch (Exception e) {
+ logger.error("Could not reset resource \"" + resourceName + "\"", e);
+ }
+ }
+ return false;
+ } catch (MalformedObjectNameException e) {
+ throw new NamingException("Resource name: \"" + resourceName
+ + "\" makes a malformed ObjectName");
+ }
+ }
+
+ public DataSource lookupDataSource(Context context, String resourceName,
+ ContainerWrapperBean containerWrapper) throws NamingException {
+ throw new UnsupportedOperationException(
+ "This feature has not been implemented for JBoss server yet.");
+ }
+
+ public List getApplicationResources(Context context, ContainerWrapperBean containerWrapper)
+ throws NamingException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/JvmMemoryInfoAccessorBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/JvmMemoryInfoAccessorBean.java
index 689527b0ca..165ca409b7 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/JvmMemoryInfoAccessorBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/JvmMemoryInfoAccessorBean.java
@@ -1,93 +1,93 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.jmx.MemoryPool;
-import com.googlecode.psiprobe.tools.JmxTools;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.modeler.Registry;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-import javax.management.openmbean.CompositeDataSupport;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class JvmMemoryInfoAccessorBean {
-
- private Log logger = LogFactory.getLog(this.getClass());
-
- public List getPools() throws Exception {
-
- List memoryPools = new LinkedList();
- MBeanServer mBeanServer = new Registry().getMBeanServer();
- Set memoryOPools = mBeanServer.queryMBeans(new ObjectName("java.lang:type=MemoryPool,*"), null);
-
- // totals
- long totalInit = 0;
- long totalMax = 0;
- long totalUsed = 0;
- long totalCommitted = 0;
-
- for (Iterator it = memoryOPools.iterator(); it.hasNext();) {
- ObjectInstance oi = (ObjectInstance) it.next();
- ObjectName oName = oi.getObjectName();
- MemoryPool memoryPool = new MemoryPool();
- memoryPool.setName(JmxTools.getStringAttr(mBeanServer, oName, "Name"));
- memoryPool.setType(JmxTools.getStringAttr(mBeanServer, oName, "Type"));
-
- CompositeDataSupport cd = (CompositeDataSupport) mBeanServer.getAttribute(oName, "Usage");
- /*
- * It seems that "Usage" attribute of one of the pools may turn into null intermittently. We
- * better have a dip in the graph then an NPE though.
- */
- if (cd != null) {
- memoryPool.setMax(JmxTools.getLongAttr(cd, "max"));
- memoryPool.setUsed(JmxTools.getLongAttr(cd, "used"));
- memoryPool.setInit(JmxTools.getLongAttr(cd, "init"));
- memoryPool.setCommitted(JmxTools.getLongAttr(cd, "committed"));
- } else {
- logger.error("Oops, JVM problem? " + oName.toString() + " \"Usage\" attribute is NULL!");
- }
-
- totalInit += memoryPool.getInit();
- totalMax += memoryPool.getMax();
- totalUsed += memoryPool.getUsed();
- totalCommitted += memoryPool.getCommitted();
-
- memoryPools.add(memoryPool);
- }
-
- if (!memoryPools.isEmpty()) {
- MemoryPool pool = new MemoryPool();
- pool.setName("Total");
- pool.setType("TOTAL");
- pool.setInit(totalInit);
- pool.setUsed(totalUsed);
- pool.setMax(totalMax);
- pool.setCommitted(totalCommitted);
- memoryPools.add(pool);
- }
-
- return memoryPools;
-
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.jmx.MemoryPool;
+import com.googlecode.psiprobe.tools.JmxTools;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.modeler.Registry;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import javax.management.openmbean.CompositeDataSupport;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class JvmMemoryInfoAccessorBean {
+
+ private Log logger = LogFactory.getLog(this.getClass());
+
+ public List getPools() throws Exception {
+
+ List memoryPools = new LinkedList();
+ MBeanServer mBeanServer = new Registry().getMBeanServer();
+ Set memoryOPools = mBeanServer.queryMBeans(new ObjectName("java.lang:type=MemoryPool,*"), null);
+
+ // totals
+ long totalInit = 0;
+ long totalMax = 0;
+ long totalUsed = 0;
+ long totalCommitted = 0;
+
+ for (Iterator it = memoryOPools.iterator(); it.hasNext();) {
+ ObjectInstance oi = (ObjectInstance) it.next();
+ ObjectName oName = oi.getObjectName();
+ MemoryPool memoryPool = new MemoryPool();
+ memoryPool.setName(JmxTools.getStringAttr(mBeanServer, oName, "Name"));
+ memoryPool.setType(JmxTools.getStringAttr(mBeanServer, oName, "Type"));
+
+ CompositeDataSupport cd = (CompositeDataSupport) mBeanServer.getAttribute(oName, "Usage");
+ /*
+ * It seems that "Usage" attribute of one of the pools may turn into null intermittently. We
+ * better have a dip in the graph then an NPE though.
+ */
+ if (cd != null) {
+ memoryPool.setMax(JmxTools.getLongAttr(cd, "max"));
+ memoryPool.setUsed(JmxTools.getLongAttr(cd, "used"));
+ memoryPool.setInit(JmxTools.getLongAttr(cd, "init"));
+ memoryPool.setCommitted(JmxTools.getLongAttr(cd, "committed"));
+ } else {
+ logger.error("Oops, JVM problem? " + oName.toString() + " \"Usage\" attribute is NULL!");
+ }
+
+ totalInit += memoryPool.getInit();
+ totalMax += memoryPool.getMax();
+ totalUsed += memoryPool.getUsed();
+ totalCommitted += memoryPool.getCommitted();
+
+ memoryPools.add(memoryPool);
+ }
+
+ if (!memoryPools.isEmpty()) {
+ MemoryPool pool = new MemoryPool();
+ pool.setName("Total");
+ pool.setType("TOTAL");
+ pool.setInit(totalInit);
+ pool.setUsed(totalUsed);
+ pool.setMax(totalMax);
+ pool.setCommitted(totalCommitted);
+ memoryPools.add(pool);
+ }
+
+ return memoryPools;
+
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/OracleDatasourceAccessor.java b/core/src/main/java/com/googlecode/psiprobe/beans/OracleDatasourceAccessor.java
index 4c8fb1b88c..11afddb69f 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/OracleDatasourceAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/OracleDatasourceAccessor.java
@@ -1,82 +1,82 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-import oracle.jdbc.pool.OracleConnectionCacheManager;
-import oracle.jdbc.pool.OracleDataSource;
-
-import java.util.Properties;
-
-/**
- * Accesses oracle.jdbc.pool.OracleDataSource.
- *
- * Oracle connection pool is quite different from any other available for Tomcat. Datasources are
- * run by static OracleConnectionCacheManager, whereby application context scope datasource would
- * have a named entry in OracleConnectionCacheManager.
- *
- * Datasources do not have information about pool as such, therefore this accessor has to do quite
- * tedious job of verifying whether the datasource has a record in the cache manager or not. The
- * pool information is subsequently retrieved from the relevant cache manager entry.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class OracleDatasourceAccessor implements DatasourceAccessor {
-
- public DataSourceInfo getInfo(Object resource) throws Exception {
- DataSourceInfo dataSourceInfo = null;
-
- if (canMap(resource)) {
- OracleDataSource source = (OracleDataSource) resource;
- OracleConnectionCacheManager occm =
- OracleConnectionCacheManager.getConnectionCacheManagerInstance();
- Properties cacheProperties = source.getConnectionCacheProperties();
- String cacheName = source.getConnectionCacheName();
- cacheName = cacheName != null && occm.existsCache(cacheName) ? cacheName : null;
-
- if (cacheProperties != null) {
-
- dataSourceInfo = new DataSourceInfo();
- if (cacheName != null) {
- dataSourceInfo.setBusyConnections(occm.getNumberOfActiveConnections(cacheName));
- dataSourceInfo.setEstablishedConnections(occm.getNumberOfAvailableConnections(cacheName)
- + dataSourceInfo.getBusyConnections());
- } else {
- dataSourceInfo.setBusyConnections(0);
- dataSourceInfo.setEstablishedConnections(0);
- }
-
- dataSourceInfo.setMaxConnections(Utils.toInt(cacheProperties.getProperty("MaxLimit"), -1));
- dataSourceInfo.setJdbcURL(source.getURL());
- dataSourceInfo.setUsername(source.getUser());
- dataSourceInfo.setResettable(true);
- dataSourceInfo.setType("oracle-jdbc");
- }
- }
- return dataSourceInfo;
- }
-
- public boolean reset(Object resource) throws Exception {
- if (canMap(resource)) {
- ((OracleDataSource) resource).close();
- return true;
- }
- return false;
- }
-
- public boolean canMap(Object resource) {
- return "oracle.jdbc.pool.OracleDataSource".equals(resource.getClass().getName())
- && resource instanceof OracleDataSource;
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+import oracle.jdbc.pool.OracleConnectionCacheManager;
+import oracle.jdbc.pool.OracleDataSource;
+
+import java.util.Properties;
+
+/**
+ * Accesses oracle.jdbc.pool.OracleDataSource.
+ *
+ * Oracle connection pool is quite different from any other available for Tomcat. Datasources are
+ * run by static OracleConnectionCacheManager, whereby application context scope datasource would
+ * have a named entry in OracleConnectionCacheManager.
+ *
+ * Datasources do not have information about pool as such, therefore this accessor has to do quite
+ * tedious job of verifying whether the datasource has a record in the cache manager or not. The
+ * pool information is subsequently retrieved from the relevant cache manager entry.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class OracleDatasourceAccessor implements DatasourceAccessor {
+
+ public DataSourceInfo getInfo(Object resource) throws Exception {
+ DataSourceInfo dataSourceInfo = null;
+
+ if (canMap(resource)) {
+ OracleDataSource source = (OracleDataSource) resource;
+ OracleConnectionCacheManager occm =
+ OracleConnectionCacheManager.getConnectionCacheManagerInstance();
+ Properties cacheProperties = source.getConnectionCacheProperties();
+ String cacheName = source.getConnectionCacheName();
+ cacheName = cacheName != null && occm.existsCache(cacheName) ? cacheName : null;
+
+ if (cacheProperties != null) {
+
+ dataSourceInfo = new DataSourceInfo();
+ if (cacheName != null) {
+ dataSourceInfo.setBusyConnections(occm.getNumberOfActiveConnections(cacheName));
+ dataSourceInfo.setEstablishedConnections(occm.getNumberOfAvailableConnections(cacheName)
+ + dataSourceInfo.getBusyConnections());
+ } else {
+ dataSourceInfo.setBusyConnections(0);
+ dataSourceInfo.setEstablishedConnections(0);
+ }
+
+ dataSourceInfo.setMaxConnections(Utils.toInt(cacheProperties.getProperty("MaxLimit"), -1));
+ dataSourceInfo.setJdbcURL(source.getURL());
+ dataSourceInfo.setUsername(source.getUser());
+ dataSourceInfo.setResettable(true);
+ dataSourceInfo.setType("oracle-jdbc");
+ }
+ }
+ return dataSourceInfo;
+ }
+
+ public boolean reset(Object resource) throws Exception {
+ if (canMap(resource)) {
+ ((OracleDataSource) resource).close();
+ return true;
+ }
+ return false;
+ }
+
+ public boolean canMap(Object resource) {
+ return "oracle.jdbc.pool.OracleDataSource".equals(resource.getClass().getName())
+ && resource instanceof OracleDataSource;
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/OracleUcpDatasourceAssessor.java b/core/src/main/java/com/googlecode/psiprobe/beans/OracleUcpDatasourceAssessor.java
index 172b67a06f..2aa7b1d95a 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/OracleUcpDatasourceAssessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/OracleUcpDatasourceAssessor.java
@@ -1,53 +1,53 @@
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-import oracle.ucp.jdbc.JDBCConnectionPoolStatistics;
-import oracle.ucp.jdbc.PoolDataSource;
-
-/**
- * Accesses an Oracle Universal Connection Pool (UCP) resource.
- *
- * @author polaris.keith
- * @author Mark Lewis
- */
-public class OracleUcpDatasourceAssessor implements DatasourceAccessor {
-
- public DataSourceInfo getInfo(Object resource) throws Exception {
- DataSourceInfo dataSourceInfo = null;
- if (canMap(resource)) {
- PoolDataSource source = (PoolDataSource) resource;
- JDBCConnectionPoolStatistics stats = source.getStatistics();
-
- dataSourceInfo = new DataSourceInfo();
- /*
- * If the pool starts with 0 instances, the JDBCConnectionPoolStatistics will be null. The
- * JDBCConnectionPoolStatistics only initializes when there is at least one connection
- * instance created.
- */
- if (stats != null) {
- dataSourceInfo.setBusyConnections(stats.getBorrowedConnectionsCount());
- dataSourceInfo.setEstablishedConnections(stats.getTotalConnectionsCount());
- } else {
- dataSourceInfo.setBusyConnections(0);
- dataSourceInfo.setEstablishedConnections(0);
- }
- dataSourceInfo.setMaxConnections(source.getMaxPoolSize());
- dataSourceInfo.setJdbcURL(source.getURL());
- dataSourceInfo.setUsername(source.getUser());
- dataSourceInfo.setResettable(false);
- dataSourceInfo.setType("oracle-ucp");
- }
- return dataSourceInfo;
- }
-
- public boolean reset(Object resource) throws Exception {
- return false;
- }
-
- public boolean canMap(Object resource) {
- return ("oracle.ucp.jdbc.PoolDataSourceImpl".equals(resource.getClass().getName()) || "oracle.ucp.jdbc.PoolXADataSourceImpl"
- .equals(resource.getClass().getName())) && resource instanceof PoolDataSource;
- }
-
-}
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+import oracle.ucp.jdbc.JDBCConnectionPoolStatistics;
+import oracle.ucp.jdbc.PoolDataSource;
+
+/**
+ * Accesses an Oracle Universal Connection Pool (UCP) resource.
+ *
+ * @author polaris.keith
+ * @author Mark Lewis
+ */
+public class OracleUcpDatasourceAssessor implements DatasourceAccessor {
+
+ public DataSourceInfo getInfo(Object resource) throws Exception {
+ DataSourceInfo dataSourceInfo = null;
+ if (canMap(resource)) {
+ PoolDataSource source = (PoolDataSource) resource;
+ JDBCConnectionPoolStatistics stats = source.getStatistics();
+
+ dataSourceInfo = new DataSourceInfo();
+ /*
+ * If the pool starts with 0 instances, the JDBCConnectionPoolStatistics will be null. The
+ * JDBCConnectionPoolStatistics only initializes when there is at least one connection
+ * instance created.
+ */
+ if (stats != null) {
+ dataSourceInfo.setBusyConnections(stats.getBorrowedConnectionsCount());
+ dataSourceInfo.setEstablishedConnections(stats.getTotalConnectionsCount());
+ } else {
+ dataSourceInfo.setBusyConnections(0);
+ dataSourceInfo.setEstablishedConnections(0);
+ }
+ dataSourceInfo.setMaxConnections(source.getMaxPoolSize());
+ dataSourceInfo.setJdbcURL(source.getURL());
+ dataSourceInfo.setUsername(source.getUser());
+ dataSourceInfo.setResettable(false);
+ dataSourceInfo.setType("oracle-ucp");
+ }
+ return dataSourceInfo;
+ }
+
+ public boolean reset(Object resource) throws Exception {
+ return false;
+ }
+
+ public boolean canMap(Object resource) {
+ return ("oracle.ucp.jdbc.PoolDataSourceImpl".equals(resource.getClass().getName()) || "oracle.ucp.jdbc.PoolXADataSourceImpl"
+ .equals(resource.getClass().getName())) && resource instanceof PoolDataSource;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/ResourceResolver.java b/core/src/main/java/com/googlecode/psiprobe/beans/ResourceResolver.java
index db886e45a9..46fbbdc4ac 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/ResourceResolver.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/ResourceResolver.java
@@ -1,81 +1,81 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import org.apache.catalina.Context;
-
-import java.util.List;
-
-import javax.management.MBeanServer;
-import javax.naming.NamingException;
-import javax.sql.DataSource;
-
-/**
- * Interface of beans that retrieve information about "resources" of application server. Typically
- * those resources would be datasources.
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public interface ResourceResolver {
-
- /**
- * Standalone Tomcat supports declaration of application-local resources. In that case it makes
- * sense to associate display of resource/datasource information with the owner application. JBoss
- * on other hand can only declate "global" resources, which alters the way resource information is
- * displayed (and accessed).
- *
- * @return true if datasources can be associated with applications, otherwise false.
- *
- * @see #getApplicationResources(org.apache.catalina.Context)
- */
- boolean supportsPrivateResources();
-
- /**
- * Most servlet containers support global resources, but for those that do not, this returns
- * false.
- *
- * @return true if the servlet container supports global resources, otherwise false.
- *
- * @see #getApplicationResources()
- */
- boolean supportsGlobalResources();
-
- /**
- * Indicates whether this servlet container exposes datasources via JNDI.
- *
- * @return true if the servlet container supports datasource lookup
- *
- * @see #lookupDataSource(org.apache.catalina.Context, java.lang.String,
- * com.googlecode.psiprobe.beans.ContainerWrapperBean)
- */
- boolean supportsDataSourceLookup();
-
- List getApplicationResources() throws NamingException;
-
- List getApplicationResources(Context context, ContainerWrapperBean containerWrapper)
- throws NamingException;
-
- boolean resetResource(Context context, String resourceName, ContainerWrapperBean containerWrapper)
- throws NamingException;
-
- DataSource lookupDataSource(Context context, String resourceName,
- ContainerWrapperBean containerWrapper) throws NamingException;
-
- /**
- * Method that gets {@link MBeanServer} instance that is "default" for the current environment. It
- * is preferably to use this method to locate the "default" {@link MBeanServer} implementation.
- *
- * @return "default" {@link MBeanServer} instance for the current environment
- */
- MBeanServer getMBeanServer();
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import org.apache.catalina.Context;
+
+import java.util.List;
+
+import javax.management.MBeanServer;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/**
+ * Interface of beans that retrieve information about "resources" of application server. Typically
+ * those resources would be datasources.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public interface ResourceResolver {
+
+ /**
+ * Standalone Tomcat supports declaration of application-local resources. In that case it makes
+ * sense to associate display of resource/datasource information with the owner application. JBoss
+ * on other hand can only declate "global" resources, which alters the way resource information is
+ * displayed (and accessed).
+ *
+ * @return true if datasources can be associated with applications, otherwise false.
+ *
+ * @see #getApplicationResources(org.apache.catalina.Context)
+ */
+ boolean supportsPrivateResources();
+
+ /**
+ * Most servlet containers support global resources, but for those that do not, this returns
+ * false.
+ *
+ * @return true if the servlet container supports global resources, otherwise false.
+ *
+ * @see #getApplicationResources()
+ */
+ boolean supportsGlobalResources();
+
+ /**
+ * Indicates whether this servlet container exposes datasources via JNDI.
+ *
+ * @return true if the servlet container supports datasource lookup
+ *
+ * @see #lookupDataSource(org.apache.catalina.Context, java.lang.String,
+ * com.googlecode.psiprobe.beans.ContainerWrapperBean)
+ */
+ boolean supportsDataSourceLookup();
+
+ List getApplicationResources() throws NamingException;
+
+ List getApplicationResources(Context context, ContainerWrapperBean containerWrapper)
+ throws NamingException;
+
+ boolean resetResource(Context context, String resourceName, ContainerWrapperBean containerWrapper)
+ throws NamingException;
+
+ DataSource lookupDataSource(Context context, String resourceName,
+ ContainerWrapperBean containerWrapper) throws NamingException;
+
+ /**
+ * Method that gets {@link MBeanServer} instance that is "default" for the current environment. It
+ * is preferably to use this method to locate the "default" {@link MBeanServer} implementation.
+ *
+ * @return "default" {@link MBeanServer} instance for the current environment
+ */
+ MBeanServer getMBeanServer();
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/ResourceResolverBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/ResourceResolverBean.java
index 2022d863ca..832e199bff 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/ResourceResolverBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/ResourceResolverBean.java
@@ -1,311 +1,311 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.AbstractTomcatContainer;
-import com.googlecode.psiprobe.model.ApplicationResource;
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.Server;
-import org.apache.catalina.core.StandardServer;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.modeler.Registry;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.sql.DataSource;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- * @author Mark Lewis
- * @author Henry Caballero
- */
-public class ResourceResolverBean implements ResourceResolver {
-
- private Log logger = LogFactory.getLog(getClass());
-
- /**
- * The default resource prefix for JNDI objects in the global scope: java:
.
- */
- public static final String DEFAULT_GLOBAL_RESOURCE_PREFIX = "";
-
- /**
- * The default resource prefix for objects in a private application scope:
- * java:comp/env/
.
- */
- public static final String DEFAULT_RESOURCE_PREFIX = DEFAULT_GLOBAL_RESOURCE_PREFIX
- + "java:comp/env/";
-
- private List datasourceMappers;
-
- public List getApplicationResources() throws NamingException {
- logger.info("Reading GLOBAL resources");
- List resources = new ArrayList();
-
- MBeanServer server = getMBeanServer();
- if (server != null) {
- try {
- Set dsNames =
- server.queryNames(new ObjectName("Catalina:type=Resource,resourcetype=Global,*"), null);
- for (Iterator it = dsNames.iterator(); it.hasNext();) {
- ObjectName objectName = (ObjectName) it.next();
- ApplicationResource resource = new ApplicationResource();
-
- logger.info("reading resource: " + objectName);
- resource.setName(getStringAttribute(server, objectName, "name"));
- resource.setType(getStringAttribute(server, objectName, "type"));
- resource.setScope(getStringAttribute(server, objectName, "scope"));
- resource.setAuth(getStringAttribute(server, objectName, "auth"));
- resource.setDescription(getStringAttribute(server, objectName, "description"));
-
- lookupResource(resource, true, true);
-
- resources.add(resource);
- }
- } catch (Exception e) {
- logger.error("There was an error querying JMX server:", e);
- }
- }
- return resources;
- }
-
- public synchronized List getApplicationResources(Context context,
- ContainerWrapperBean containerWrapper) throws NamingException {
-
- List resourceList = new ArrayList();
-
- boolean contextAvailable = containerWrapper.getTomcatContainer().getAvailable(context);
- if (contextAvailable) {
-
- logger.info("Reading CONTEXT " + context.getName());
-
- boolean contextBound = false;
-
- try {
- ((AbstractTomcatContainer) containerWrapper.getTomcatContainer()).bindToContext(context);
- contextBound = true;
- } catch (NamingException e) {
- logger.error("Cannot bind to context. useNaming=false ?");
- logger.debug(" Stack trace:", e);
- }
-
- try {
- containerWrapper.getTomcatContainer().addContextResource(context, resourceList,
- contextBound);
-
- containerWrapper.getTomcatContainer().addContextResourceLink(context, resourceList,
- contextBound);
- for (int i = 0; i < resourceList.size(); i++) {
- lookupResource((ApplicationResource) resourceList.get(i), contextBound, false);
- }
-
- } finally {
- if (contextBound) {
- ((AbstractTomcatContainer) containerWrapper.getTomcatContainer())
- .unbindFromContext(context);
- }
- }
- }
-
- return resourceList;
- }
-
-
-
- public void lookupResource(ApplicationResource resource, boolean contextBound, boolean global) {
- DataSourceInfo dataSourceInfo = null;
- if (contextBound) {
- try {
- javax.naming.Context ctx = !global ? new InitialContext() : getGlobalNamingContext();
- String jndiName = resolveJndiName(resource.getName(), global);
- Object o = ctx.lookup(jndiName);
- resource.setLookedUp(true);
- for (Iterator it = datasourceMappers.iterator(); it.hasNext();) {
- DatasourceAccessor accessor = (DatasourceAccessor) it.next();
- dataSourceInfo = accessor.getInfo(o);
- if (dataSourceInfo != null) {
- break;
- }
- }
-
- } catch (Throwable e) {
- resource.setLookedUp(false);
- dataSourceInfo = null;
- logger.error("Failed to lookup: " + resource.getName(), e);
- //
- // make sure we always re-throw ThreadDeath
- //
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
- } else {
- resource.setLookedUp(false);
- }
-
- /*
- * Tomcat 5.0.x DBCP datasources would have URL set to null if they incorrectly configured so we
- * need to deal with this little feature
- */
- if (dataSourceInfo != null && dataSourceInfo.getJdbcURL() == null) {
- resource.setLookedUp(false);
- }
-
- if (resource.isLookedUp() && dataSourceInfo != null) {
- resource.setDataSourceInfo(dataSourceInfo);
- }
- }
-
- public synchronized boolean resetResource(final Context context, String resourceName,
- ContainerWrapperBean containerWrapper) throws NamingException {
-
- if (context != null) {
- ((AbstractTomcatContainer) containerWrapper.getTomcatContainer()).bindToContext(context);
- }
- try {
- javax.naming.Context ctx =
- (context != null) ? new InitialContext() : getGlobalNamingContext();
- String jndiName = resolveJndiName(resourceName, (context == null));
- Object o = ctx.lookup(jndiName);
- try {
- for (Iterator it = datasourceMappers.iterator(); it.hasNext();) {
- DatasourceAccessor accessor = (DatasourceAccessor) it.next();
- if (accessor.reset(o)) {
- return true;
- }
- }
- return false;
- } catch (Throwable e) {
- //
- // make sure we always re-throw ThreadDeath
- //
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- return false;
- }
- } finally {
- if (context != null) {
- ((AbstractTomcatContainer) containerWrapper.getTomcatContainer())
- .unbindFromContext(context);
- }
- }
- }
-
- public synchronized DataSource lookupDataSource(final Context context, String resourceName,
- ContainerWrapperBean containerWrapper) throws NamingException {
-
- if (context != null) {
- ((AbstractTomcatContainer) containerWrapper.getTomcatContainer()).bindToContext(context);
- }
- try {
- javax.naming.Context ctx =
- (context != null) ? new InitialContext() : getGlobalNamingContext();
- String jndiName = resolveJndiName(resourceName, (context == null));
- Object o = ctx.lookup(jndiName);
-
- if (o instanceof DataSource) {
- return (DataSource) o;
- } else {
- return null;
- }
- } finally {
- if (context != null) {
- ((AbstractTomcatContainer) containerWrapper.getTomcatContainer())
- .unbindFromContext(context);
- }
- }
- }
-
- public List getDatasourceMappers() {
- return datasourceMappers;
- }
-
- public void setDatasourceMappers(List datasourceMappers) {
- this.datasourceMappers = datasourceMappers;
- }
-
- public boolean supportsPrivateResources() {
- return true;
- }
-
- public boolean supportsGlobalResources() {
- return true;
- }
-
- public boolean supportsDataSourceLookup() {
- return true;
- }
-
- public MBeanServer getMBeanServer() {
- return new Registry().getMBeanServer();
- }
-
- /**
- * Resolves a JNDI resource name by prepending the scope-appropriate prefix.
- *
- * @param global whether to use the global prefix
- * @param name the JNDI name of the resource
- *
- * @return the JNDI resource name with the prefix appended
- *
- * @see #DEFAULT_GLOBAL_RESOURCE_PREFIX
- * @see #DEFAULT_RESOURCE_PREFIX
- */
- protected static String resolveJndiName(String name, boolean global) {
- return (global ? DEFAULT_GLOBAL_RESOURCE_PREFIX : DEFAULT_RESOURCE_PREFIX) + name;
- }
-
- private String getStringAttribute(MBeanServer server, ObjectName objectName, String attributeName) {
- try {
- return (String) server.getAttribute(objectName, attributeName);
- } catch (Exception e) {
- logger.error("Error getting attribute '" + attributeName + "' from '" + objectName + "'", e);
- return null;
- }
- }
-
- /**
- * Returns the Server's global naming context
- *
- * @return the global JNDI context
- */
- protected javax.naming.Context getGlobalNamingContext() {
-
- javax.naming.Context globalContext = null;
- MBeanServer mBeanServer = getMBeanServer();
- if (mBeanServer != null) {
- try {
- ObjectName name = new ObjectName("Catalina:type=Server");
- Server server = (Server) mBeanServer.getAttribute(name, "managedResource");
- // getGlobalNamingContext() was added to Server interface in Tomcat 7.0.11
- if (server instanceof StandardServer) {
- globalContext = ((StandardServer) server).getGlobalNamingContext();
- }
- } catch (Exception e) {
- logger.error("There was an error getting globalContext through JMX server:", e);
- }
- }
-
- return globalContext;
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.AbstractTomcatContainer;
+import com.googlecode.psiprobe.model.ApplicationResource;
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Server;
+import org.apache.catalina.core.StandardServer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.modeler.Registry;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ * @author Henry Caballero
+ */
+public class ResourceResolverBean implements ResourceResolver {
+
+ private Log logger = LogFactory.getLog(getClass());
+
+ /**
+ * The default resource prefix for JNDI objects in the global scope: java:
.
+ */
+ public static final String DEFAULT_GLOBAL_RESOURCE_PREFIX = "";
+
+ /**
+ * The default resource prefix for objects in a private application scope:
+ * java:comp/env/
.
+ */
+ public static final String DEFAULT_RESOURCE_PREFIX = DEFAULT_GLOBAL_RESOURCE_PREFIX
+ + "java:comp/env/";
+
+ private List datasourceMappers;
+
+ public List getApplicationResources() throws NamingException {
+ logger.info("Reading GLOBAL resources");
+ List resources = new ArrayList();
+
+ MBeanServer server = getMBeanServer();
+ if (server != null) {
+ try {
+ Set dsNames =
+ server.queryNames(new ObjectName("Catalina:type=Resource,resourcetype=Global,*"), null);
+ for (Iterator it = dsNames.iterator(); it.hasNext();) {
+ ObjectName objectName = (ObjectName) it.next();
+ ApplicationResource resource = new ApplicationResource();
+
+ logger.info("reading resource: " + objectName);
+ resource.setName(getStringAttribute(server, objectName, "name"));
+ resource.setType(getStringAttribute(server, objectName, "type"));
+ resource.setScope(getStringAttribute(server, objectName, "scope"));
+ resource.setAuth(getStringAttribute(server, objectName, "auth"));
+ resource.setDescription(getStringAttribute(server, objectName, "description"));
+
+ lookupResource(resource, true, true);
+
+ resources.add(resource);
+ }
+ } catch (Exception e) {
+ logger.error("There was an error querying JMX server:", e);
+ }
+ }
+ return resources;
+ }
+
+ public synchronized List getApplicationResources(Context context,
+ ContainerWrapperBean containerWrapper) throws NamingException {
+
+ List resourceList = new ArrayList();
+
+ boolean contextAvailable = containerWrapper.getTomcatContainer().getAvailable(context);
+ if (contextAvailable) {
+
+ logger.info("Reading CONTEXT " + context.getName());
+
+ boolean contextBound = false;
+
+ try {
+ ((AbstractTomcatContainer) containerWrapper.getTomcatContainer()).bindToContext(context);
+ contextBound = true;
+ } catch (NamingException e) {
+ logger.error("Cannot bind to context. useNaming=false ?");
+ logger.debug(" Stack trace:", e);
+ }
+
+ try {
+ containerWrapper.getTomcatContainer().addContextResource(context, resourceList,
+ contextBound);
+
+ containerWrapper.getTomcatContainer().addContextResourceLink(context, resourceList,
+ contextBound);
+ for (int i = 0; i < resourceList.size(); i++) {
+ lookupResource((ApplicationResource) resourceList.get(i), contextBound, false);
+ }
+
+ } finally {
+ if (contextBound) {
+ ((AbstractTomcatContainer) containerWrapper.getTomcatContainer())
+ .unbindFromContext(context);
+ }
+ }
+ }
+
+ return resourceList;
+ }
+
+
+
+ public void lookupResource(ApplicationResource resource, boolean contextBound, boolean global) {
+ DataSourceInfo dataSourceInfo = null;
+ if (contextBound) {
+ try {
+ javax.naming.Context ctx = !global ? new InitialContext() : getGlobalNamingContext();
+ String jndiName = resolveJndiName(resource.getName(), global);
+ Object o = ctx.lookup(jndiName);
+ resource.setLookedUp(true);
+ for (Iterator it = datasourceMappers.iterator(); it.hasNext();) {
+ DatasourceAccessor accessor = (DatasourceAccessor) it.next();
+ dataSourceInfo = accessor.getInfo(o);
+ if (dataSourceInfo != null) {
+ break;
+ }
+ }
+
+ } catch (Throwable e) {
+ resource.setLookedUp(false);
+ dataSourceInfo = null;
+ logger.error("Failed to lookup: " + resource.getName(), e);
+ //
+ // make sure we always re-throw ThreadDeath
+ //
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+ } else {
+ resource.setLookedUp(false);
+ }
+
+ /*
+ * Tomcat 5.0.x DBCP datasources would have URL set to null if they incorrectly configured so we
+ * need to deal with this little feature
+ */
+ if (dataSourceInfo != null && dataSourceInfo.getJdbcURL() == null) {
+ resource.setLookedUp(false);
+ }
+
+ if (resource.isLookedUp() && dataSourceInfo != null) {
+ resource.setDataSourceInfo(dataSourceInfo);
+ }
+ }
+
+ public synchronized boolean resetResource(final Context context, String resourceName,
+ ContainerWrapperBean containerWrapper) throws NamingException {
+
+ if (context != null) {
+ ((AbstractTomcatContainer) containerWrapper.getTomcatContainer()).bindToContext(context);
+ }
+ try {
+ javax.naming.Context ctx =
+ (context != null) ? new InitialContext() : getGlobalNamingContext();
+ String jndiName = resolveJndiName(resourceName, (context == null));
+ Object o = ctx.lookup(jndiName);
+ try {
+ for (Iterator it = datasourceMappers.iterator(); it.hasNext();) {
+ DatasourceAccessor accessor = (DatasourceAccessor) it.next();
+ if (accessor.reset(o)) {
+ return true;
+ }
+ }
+ return false;
+ } catch (Throwable e) {
+ //
+ // make sure we always re-throw ThreadDeath
+ //
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ return false;
+ }
+ } finally {
+ if (context != null) {
+ ((AbstractTomcatContainer) containerWrapper.getTomcatContainer())
+ .unbindFromContext(context);
+ }
+ }
+ }
+
+ public synchronized DataSource lookupDataSource(final Context context, String resourceName,
+ ContainerWrapperBean containerWrapper) throws NamingException {
+
+ if (context != null) {
+ ((AbstractTomcatContainer) containerWrapper.getTomcatContainer()).bindToContext(context);
+ }
+ try {
+ javax.naming.Context ctx =
+ (context != null) ? new InitialContext() : getGlobalNamingContext();
+ String jndiName = resolveJndiName(resourceName, (context == null));
+ Object o = ctx.lookup(jndiName);
+
+ if (o instanceof DataSource) {
+ return (DataSource) o;
+ } else {
+ return null;
+ }
+ } finally {
+ if (context != null) {
+ ((AbstractTomcatContainer) containerWrapper.getTomcatContainer())
+ .unbindFromContext(context);
+ }
+ }
+ }
+
+ public List getDatasourceMappers() {
+ return datasourceMappers;
+ }
+
+ public void setDatasourceMappers(List datasourceMappers) {
+ this.datasourceMappers = datasourceMappers;
+ }
+
+ public boolean supportsPrivateResources() {
+ return true;
+ }
+
+ public boolean supportsGlobalResources() {
+ return true;
+ }
+
+ public boolean supportsDataSourceLookup() {
+ return true;
+ }
+
+ public MBeanServer getMBeanServer() {
+ return new Registry().getMBeanServer();
+ }
+
+ /**
+ * Resolves a JNDI resource name by prepending the scope-appropriate prefix.
+ *
+ * @param global whether to use the global prefix
+ * @param name the JNDI name of the resource
+ *
+ * @return the JNDI resource name with the prefix appended
+ *
+ * @see #DEFAULT_GLOBAL_RESOURCE_PREFIX
+ * @see #DEFAULT_RESOURCE_PREFIX
+ */
+ protected static String resolveJndiName(String name, boolean global) {
+ return (global ? DEFAULT_GLOBAL_RESOURCE_PREFIX : DEFAULT_RESOURCE_PREFIX) + name;
+ }
+
+ private String getStringAttribute(MBeanServer server, ObjectName objectName, String attributeName) {
+ try {
+ return (String) server.getAttribute(objectName, attributeName);
+ } catch (Exception e) {
+ logger.error("Error getting attribute '" + attributeName + "' from '" + objectName + "'", e);
+ return null;
+ }
+ }
+
+ /**
+ * Returns the Server's global naming context
+ *
+ * @return the global JNDI context
+ */
+ protected javax.naming.Context getGlobalNamingContext() {
+
+ javax.naming.Context globalContext = null;
+ MBeanServer mBeanServer = getMBeanServer();
+ if (mBeanServer != null) {
+ try {
+ ObjectName name = new ObjectName("Catalina:type=Server");
+ Server server = (Server) mBeanServer.getAttribute(name, "managedResource");
+ // getGlobalNamingContext() was added to Server interface in Tomcat 7.0.11
+ if (server instanceof StandardServer) {
+ globalContext = ((StandardServer) server).getGlobalNamingContext();
+ }
+ } catch (Exception e) {
+ logger.error("There was an error getting globalContext through JMX server:", e);
+ }
+ }
+
+ return globalContext;
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/RuntimeInfoAccessorBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/RuntimeInfoAccessorBean.java
index becd7d705c..a4774c0cf8 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/RuntimeInfoAccessorBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/RuntimeInfoAccessorBean.java
@@ -1,75 +1,75 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.jmx.RuntimeInformation;
-import com.googlecode.psiprobe.tools.JmxTools;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.modeler.Registry;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class RuntimeInfoAccessorBean {
-
- private Log logger = LogFactory.getLog(RuntimeInfoAccessorBean.class);
-
- public RuntimeInformation getRuntimeInformation() throws Exception {
- MBeanServer mBeanServer = new Registry().getMBeanServer();
- RuntimeInformation ri = new RuntimeInformation();
-
- try {
- ObjectName runtimeOName = new ObjectName("java.lang:type=Runtime");
- ri.setStartTime(JmxTools.getLongAttr(mBeanServer, runtimeOName, "StartTime"));
- ri.setUptime(JmxTools.getLongAttr(mBeanServer, runtimeOName, "Uptime"));
- ri.setVmVendor(JmxTools.getStringAttr(mBeanServer, runtimeOName, "VmVendor"));
-
- ObjectName osOName = new ObjectName("java.lang:type=OperatingSystem");
- ri.setOsName(JmxTools.getStringAttr(mBeanServer, osOName, "Name"));
- ri.setOsVersion(JmxTools.getStringAttr(mBeanServer, osOName, "Version"));
-
- if (!ri.getVmVendor().startsWith("IBM Corporation")) {
- ri.setTotalPhysicalMemorySize(JmxTools.getLongAttr(mBeanServer, osOName,
- "TotalPhysicalMemorySize"));
- ri.setCommittedVirtualMemorySize(JmxTools.getLongAttr(mBeanServer, osOName,
- "CommittedVirtualMemorySize"));
- ri.setFreePhysicalMemorySize(JmxTools.getLongAttr(mBeanServer, osOName,
- "FreePhysicalMemorySize"));
- ri.setFreeSwapSpaceSize(JmxTools.getLongAttr(mBeanServer, osOName, "FreeSwapSpaceSize"));
- ri.setTotalSwapSpaceSize(JmxTools.getLongAttr(mBeanServer, osOName, "TotalSwapSpaceSize"));
- ri.setProcessCpuTime(JmxTools.getLongAttr(mBeanServer, osOName, "ProcessCpuTime"));
- ri.setAvailableProcessors(Runtime.getRuntime().availableProcessors());
- } else {
- ri.setTotalPhysicalMemorySize(JmxTools.getLongAttr(mBeanServer, osOName,
- "TotalPhysicalMemory"));
- }
-
- if (JmxTools.hasAttribute(mBeanServer, osOName, "OpenFileDescriptorCount")
- && JmxTools.hasAttribute(mBeanServer, osOName, "MaxFileDescriptorCount")) {
-
- ri.setOpenFDCount(JmxTools.getLongAttr(mBeanServer, osOName, "OpenFileDescriptorCount"));
- ri.setMaxFDCount(JmxTools.getLongAttr(mBeanServer, osOName, "MaxFileDescriptorCount"));
- }
-
- return ri;
- } catch (Exception e) {
- logger.debug("OS information is unavailable");
- return null;
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.jmx.RuntimeInformation;
+import com.googlecode.psiprobe.tools.JmxTools;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.modeler.Registry;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class RuntimeInfoAccessorBean {
+
+ private Log logger = LogFactory.getLog(RuntimeInfoAccessorBean.class);
+
+ public RuntimeInformation getRuntimeInformation() throws Exception {
+ MBeanServer mBeanServer = new Registry().getMBeanServer();
+ RuntimeInformation ri = new RuntimeInformation();
+
+ try {
+ ObjectName runtimeOName = new ObjectName("java.lang:type=Runtime");
+ ri.setStartTime(JmxTools.getLongAttr(mBeanServer, runtimeOName, "StartTime"));
+ ri.setUptime(JmxTools.getLongAttr(mBeanServer, runtimeOName, "Uptime"));
+ ri.setVmVendor(JmxTools.getStringAttr(mBeanServer, runtimeOName, "VmVendor"));
+
+ ObjectName osOName = new ObjectName("java.lang:type=OperatingSystem");
+ ri.setOsName(JmxTools.getStringAttr(mBeanServer, osOName, "Name"));
+ ri.setOsVersion(JmxTools.getStringAttr(mBeanServer, osOName, "Version"));
+
+ if (!ri.getVmVendor().startsWith("IBM Corporation")) {
+ ri.setTotalPhysicalMemorySize(JmxTools.getLongAttr(mBeanServer, osOName,
+ "TotalPhysicalMemorySize"));
+ ri.setCommittedVirtualMemorySize(JmxTools.getLongAttr(mBeanServer, osOName,
+ "CommittedVirtualMemorySize"));
+ ri.setFreePhysicalMemorySize(JmxTools.getLongAttr(mBeanServer, osOName,
+ "FreePhysicalMemorySize"));
+ ri.setFreeSwapSpaceSize(JmxTools.getLongAttr(mBeanServer, osOName, "FreeSwapSpaceSize"));
+ ri.setTotalSwapSpaceSize(JmxTools.getLongAttr(mBeanServer, osOName, "TotalSwapSpaceSize"));
+ ri.setProcessCpuTime(JmxTools.getLongAttr(mBeanServer, osOName, "ProcessCpuTime"));
+ ri.setAvailableProcessors(Runtime.getRuntime().availableProcessors());
+ } else {
+ ri.setTotalPhysicalMemorySize(JmxTools.getLongAttr(mBeanServer, osOName,
+ "TotalPhysicalMemory"));
+ }
+
+ if (JmxTools.hasAttribute(mBeanServer, osOName, "OpenFileDescriptorCount")
+ && JmxTools.hasAttribute(mBeanServer, osOName, "MaxFileDescriptorCount")) {
+
+ ri.setOpenFDCount(JmxTools.getLongAttr(mBeanServer, osOName, "OpenFileDescriptorCount"));
+ ri.setMaxFDCount(JmxTools.getLongAttr(mBeanServer, osOName, "MaxFileDescriptorCount"));
+ }
+
+ return ri;
+ } catch (Exception e) {
+ logger.debug("OS information is unavailable");
+ return null;
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/AbstractStatsCollectorBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/AbstractStatsCollectorBean.java
index 7acc235788..f2cb8927a5 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/AbstractStatsCollectorBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/AbstractStatsCollectorBean.java
@@ -1,174 +1,174 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.collectors;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.beans.stats.listeners.StatsCollectionEvent;
-import com.googlecode.psiprobe.beans.stats.listeners.StatsCollectionListener;
-import com.googlecode.psiprobe.model.stats.StatsCollection;
-
-import org.jfree.data.xy.XYDataItem;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public abstract class AbstractStatsCollectorBean {
-
- private StatsCollection statsCollection;
- private int maxSeries = 240;
- private List listeners;
- private Map previousData = new TreeMap();
-
- public StatsCollection getStatsCollection() {
- return statsCollection;
- }
-
- public void setStatsCollection(StatsCollection statsCollection) {
- this.statsCollection = statsCollection;
- }
-
- public int getMaxSeries() {
- return maxSeries;
- }
-
- public void setMaxSeries(int maxSeries) {
- this.maxSeries = maxSeries;
- }
-
- public List getListeners() {
- return listeners;
- }
-
- public void setListeners(List listeners) {
- this.listeners = listeners;
- }
-
- public abstract void collect() throws Exception;
-
- protected long buildDeltaStats(String name, long value) throws InterruptedException {
- return buildDeltaStats(name, value, System.currentTimeMillis());
- }
-
- protected long buildDeltaStats(String name, long value, long time) throws InterruptedException {
- long delta = 0;
- if (statsCollection != null) {
- long previousValue = Utils.toLong((Long) previousData.get(name), 0);
- delta = value - previousValue;
- delta = delta > 0 ? delta : 0;
- buildAbsoluteStats(name, delta, time);
- previousData.put(name, new Long(value));
- }
- return delta;
- }
-
- protected void buildAbsoluteStats(String name, long value) throws InterruptedException {
- buildAbsoluteStats(name, value, System.currentTimeMillis());
- }
-
-
- protected void buildAbsoluteStats(String name, long value, long time) throws InterruptedException {
- List stats = statsCollection.getStats(name);
- if (stats == null) {
- stats = statsCollection.newStats(name, maxSeries);
- } else {
- XYDataItem data = new XYDataItem(time, value);
- statsCollection.lockForUpdate();
- try {
- stats.add(data);
- houseKeepStats(stats);
- } finally {
- statsCollection.releaseLock();
- }
- if (listeners != null) {
- StatsCollectionEvent event = new StatsCollectionEvent(name, data);
- for (Iterator it = listeners.iterator(); it.hasNext();) {
- Object o = it.next();
- if (o instanceof StatsCollectionListener) {
- StatsCollectionListener listener = (StatsCollectionListener) o;
- if (listener.isEnabled()) {
- listener.statsCollected(event);
- }
- }
- }
- }
- }
- }
-
- private class Entry {
- long time;
- long value;
- }
-
- /**
- * If there is a value indicating the accumulated amount of time spent on something it is possible
- * to build a series of values representing the percentage of time spent on doing something. For
- * example:
- *
- *
- * at point T1 the system has spent A milliseconds performing tasks at point T2 the system has
- * spent B milliseconds performing tasks
- *
- *
- *
- * so between in a timeframe T2-T1 the system spent B-A milliseconds being busy. Thus (B - A)/(T2
- * - T1) * 100 is the percentage of all time the system spent being busy.
- *
- *
- * @param name
- * @param value time in milliseconds
- * @param time
- * @throws InterruptedException
- */
- protected void buildTimePercentageStats(String name, long value, long time)
- throws InterruptedException {
-
- Entry entry = (Entry) previousData.get(name);
- if (entry == null) {
- entry = new Entry();
- entry.value = value;
- entry.time = time;
- previousData.put(name, entry);
- } else {
- double valueDelta = value - entry.value;
- double timeDelta = time - entry.time;
- double statValue = valueDelta * 100 / timeDelta;
- statsCollection.lockForUpdate();
- try {
- List stats = statsCollection.getStats(name);
- if (stats == null) {
- stats = statsCollection.newStats(name, maxSeries);
- }
- stats.add(stats.size(), new XYDataItem(time, statValue));
- houseKeepStats(stats);
- } finally {
- statsCollection.releaseLock();
- }
- }
- }
-
- protected void resetStats(String name) {
- statsCollection.resetStats(name);
- }
-
- private void houseKeepStats(List stats) {
- while (stats.size() > maxSeries) {
- stats.remove(0);
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.collectors;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.beans.stats.listeners.StatsCollectionEvent;
+import com.googlecode.psiprobe.beans.stats.listeners.StatsCollectionListener;
+import com.googlecode.psiprobe.model.stats.StatsCollection;
+
+import org.jfree.data.xy.XYDataItem;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public abstract class AbstractStatsCollectorBean {
+
+ private StatsCollection statsCollection;
+ private int maxSeries = 240;
+ private List listeners;
+ private Map previousData = new TreeMap();
+
+ public StatsCollection getStatsCollection() {
+ return statsCollection;
+ }
+
+ public void setStatsCollection(StatsCollection statsCollection) {
+ this.statsCollection = statsCollection;
+ }
+
+ public int getMaxSeries() {
+ return maxSeries;
+ }
+
+ public void setMaxSeries(int maxSeries) {
+ this.maxSeries = maxSeries;
+ }
+
+ public List getListeners() {
+ return listeners;
+ }
+
+ public void setListeners(List listeners) {
+ this.listeners = listeners;
+ }
+
+ public abstract void collect() throws Exception;
+
+ protected long buildDeltaStats(String name, long value) throws InterruptedException {
+ return buildDeltaStats(name, value, System.currentTimeMillis());
+ }
+
+ protected long buildDeltaStats(String name, long value, long time) throws InterruptedException {
+ long delta = 0;
+ if (statsCollection != null) {
+ long previousValue = Utils.toLong((Long) previousData.get(name), 0);
+ delta = value - previousValue;
+ delta = delta > 0 ? delta : 0;
+ buildAbsoluteStats(name, delta, time);
+ previousData.put(name, new Long(value));
+ }
+ return delta;
+ }
+
+ protected void buildAbsoluteStats(String name, long value) throws InterruptedException {
+ buildAbsoluteStats(name, value, System.currentTimeMillis());
+ }
+
+
+ protected void buildAbsoluteStats(String name, long value, long time) throws InterruptedException {
+ List stats = statsCollection.getStats(name);
+ if (stats == null) {
+ stats = statsCollection.newStats(name, maxSeries);
+ } else {
+ XYDataItem data = new XYDataItem(time, value);
+ statsCollection.lockForUpdate();
+ try {
+ stats.add(data);
+ houseKeepStats(stats);
+ } finally {
+ statsCollection.releaseLock();
+ }
+ if (listeners != null) {
+ StatsCollectionEvent event = new StatsCollectionEvent(name, data);
+ for (Iterator it = listeners.iterator(); it.hasNext();) {
+ Object o = it.next();
+ if (o instanceof StatsCollectionListener) {
+ StatsCollectionListener listener = (StatsCollectionListener) o;
+ if (listener.isEnabled()) {
+ listener.statsCollected(event);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private class Entry {
+ long time;
+ long value;
+ }
+
+ /**
+ * If there is a value indicating the accumulated amount of time spent on something it is possible
+ * to build a series of values representing the percentage of time spent on doing something. For
+ * example:
+ *
+ *
+ * at point T1 the system has spent A milliseconds performing tasks at point T2 the system has
+ * spent B milliseconds performing tasks
+ *
+ *
+ *
+ * so between in a timeframe T2-T1 the system spent B-A milliseconds being busy. Thus (B - A)/(T2
+ * - T1) * 100 is the percentage of all time the system spent being busy.
+ *
+ *
+ * @param name
+ * @param value time in milliseconds
+ * @param time
+ * @throws InterruptedException
+ */
+ protected void buildTimePercentageStats(String name, long value, long time)
+ throws InterruptedException {
+
+ Entry entry = (Entry) previousData.get(name);
+ if (entry == null) {
+ entry = new Entry();
+ entry.value = value;
+ entry.time = time;
+ previousData.put(name, entry);
+ } else {
+ double valueDelta = value - entry.value;
+ double timeDelta = time - entry.time;
+ double statValue = valueDelta * 100 / timeDelta;
+ statsCollection.lockForUpdate();
+ try {
+ List stats = statsCollection.getStats(name);
+ if (stats == null) {
+ stats = statsCollection.newStats(name, maxSeries);
+ }
+ stats.add(stats.size(), new XYDataItem(time, statValue));
+ houseKeepStats(stats);
+ } finally {
+ statsCollection.releaseLock();
+ }
+ }
+ }
+
+ protected void resetStats(String name) {
+ statsCollection.resetStats(name);
+ }
+
+ private void houseKeepStats(List stats) {
+ while (stats.size() > maxSeries) {
+ stats.remove(0);
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/AppStatsCollectorBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/AppStatsCollectorBean.java
index 9c9bd4f7c8..3dba23059a 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/AppStatsCollectorBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/AppStatsCollectorBean.java
@@ -1,159 +1,159 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.collectors;
-
-import com.googlecode.psiprobe.TomcatContainer;
-import com.googlecode.psiprobe.beans.ContainerWrapperBean;
-import com.googlecode.psiprobe.model.Application;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-
-import org.apache.catalina.Context;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.web.context.ServletContextAware;
-
-import java.util.Iterator;
-import java.util.List;
-
-import javax.servlet.ServletContext;
-
-/**
- * Collects application statistics
- *
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public class AppStatsCollectorBean extends AbstractStatsCollectorBean implements
- ServletContextAware {
-
- private Log logger = LogFactory.getLog(AppStatsCollectorBean.class);
-
- private ContainerWrapperBean containerWrapper;
- private ServletContext servletContext;
- private boolean selfIgnored;
-
- public ContainerWrapperBean getContainerWrapper() {
- return containerWrapper;
- }
-
- public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
- this.containerWrapper = containerWrapper;
- }
-
- public boolean isSelfIgnored() {
- return selfIgnored;
- }
-
- public void setSelfIgnored(boolean selfIgnored) {
- this.selfIgnored = selfIgnored;
- }
-
- protected ServletContext getServletContext() {
- return servletContext;
- }
-
- public void setServletContext(ServletContext servletContext) {
- this.servletContext = servletContext;
- }
-
- public void collect() throws Exception {
-
- long currentTime = System.currentTimeMillis();
-
- if (containerWrapper == null) {
- logger.error("Cannot collect application stats. Container wrapper is not set.");
- } else {
- TomcatContainer tomcatContainer = getContainerWrapper().getTomcatContainer();
-
- // check if the containerWtapper has been initialized
- if (tomcatContainer != null) {
- long totalReqDelta = 0;
- long totalErrDelta = 0;
- long totalAvgProcTime = 0;
- int participatingAppCount = 0;
-
- List contexts = tomcatContainer.findContexts();
- for (Iterator i = contexts.iterator(); i.hasNext();) {
- Context ctx = (Context) i.next();
-
- if (ctx != null && ctx.getName() != null) {
- Application app = new Application();
- ApplicationUtils.collectApplicationServletStats(ctx, app);
-
- String appName = "".equals(ctx.getName()) ? "/" : ctx.getName();
-
- long reqDelta =
- buildDeltaStats("app.requests." + appName, app.getRequestCount(), currentTime);
- long errDelta = buildDeltaStats("app.errors." + appName, app.getErrorCount());
- long procTimeDelta =
- buildDeltaStats("app.proc_time." + appName, app.getProcessingTime(), currentTime);
-
- long avgProcTime = reqDelta == 0 ? 0 : procTimeDelta / reqDelta;
- buildAbsoluteStats("app.avg_proc_time." + appName, avgProcTime, currentTime);
-
- /*
- * make sure applications that did not serve any requests do not participate in average
- * response time equasion thus diluting the value
- */
- if (reqDelta > 0) {
- if (!excludeFromTotal(ctx)) {
- totalReqDelta += reqDelta;
- totalErrDelta += errDelta;
- totalAvgProcTime += avgProcTime;
- participatingAppCount++;
- }
- }
- }
- }
- // build totals for all applications
- buildAbsoluteStats("total.requests", totalReqDelta, currentTime);
- buildAbsoluteStats("total.errors", totalErrDelta, currentTime);
- buildAbsoluteStats("total.avg_proc_time", participatingAppCount == 0 ? 0 : totalAvgProcTime
- / participatingAppCount, currentTime);
- }
- logger.debug("app stats collected in " + (System.currentTimeMillis() - currentTime) + "ms.");
- }
- }
-
- private boolean excludeFromTotal(Context ctx) {
- return isSelfIgnored() && getServletContext().equals(ctx.getServletContext());
- }
-
- public void reset() {
- if (containerWrapper == null) {
- logger.error("Cannot reset application stats. Container wrapper is not set.");
- } else {
- TomcatContainer tomcatContainer = getContainerWrapper().getTomcatContainer();
- if (tomcatContainer != null) {
- List contexts = tomcatContainer.findContexts();
- for (Iterator i = contexts.iterator(); i.hasNext();) {
- Context ctx = (Context) i.next();
-
- if (ctx != null && ctx.getName() != null) {
- String appName = "".equals(ctx.getName()) ? "/" : ctx.getName();
- reset(appName);
- }
- }
- }
- }
- resetStats("total.requests");
- resetStats("total.errors");
- resetStats("total.avg_proc_time");
- }
-
- public void reset(String appName) {
- resetStats("app.requests." + appName);
- resetStats("app.proc_time." + appName);
- resetStats("app.errors." + appName);
- resetStats("app.avg_proc_time." + appName);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.collectors;
+
+import com.googlecode.psiprobe.TomcatContainer;
+import com.googlecode.psiprobe.beans.ContainerWrapperBean;
+import com.googlecode.psiprobe.model.Application;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+
+import org.apache.catalina.Context;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.web.context.ServletContextAware;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.ServletContext;
+
+/**
+ * Collects application statistics
+ *
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public class AppStatsCollectorBean extends AbstractStatsCollectorBean implements
+ ServletContextAware {
+
+ private Log logger = LogFactory.getLog(AppStatsCollectorBean.class);
+
+ private ContainerWrapperBean containerWrapper;
+ private ServletContext servletContext;
+ private boolean selfIgnored;
+
+ public ContainerWrapperBean getContainerWrapper() {
+ return containerWrapper;
+ }
+
+ public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
+ this.containerWrapper = containerWrapper;
+ }
+
+ public boolean isSelfIgnored() {
+ return selfIgnored;
+ }
+
+ public void setSelfIgnored(boolean selfIgnored) {
+ this.selfIgnored = selfIgnored;
+ }
+
+ protected ServletContext getServletContext() {
+ return servletContext;
+ }
+
+ public void setServletContext(ServletContext servletContext) {
+ this.servletContext = servletContext;
+ }
+
+ public void collect() throws Exception {
+
+ long currentTime = System.currentTimeMillis();
+
+ if (containerWrapper == null) {
+ logger.error("Cannot collect application stats. Container wrapper is not set.");
+ } else {
+ TomcatContainer tomcatContainer = getContainerWrapper().getTomcatContainer();
+
+ // check if the containerWtapper has been initialized
+ if (tomcatContainer != null) {
+ long totalReqDelta = 0;
+ long totalErrDelta = 0;
+ long totalAvgProcTime = 0;
+ int participatingAppCount = 0;
+
+ List contexts = tomcatContainer.findContexts();
+ for (Iterator i = contexts.iterator(); i.hasNext();) {
+ Context ctx = (Context) i.next();
+
+ if (ctx != null && ctx.getName() != null) {
+ Application app = new Application();
+ ApplicationUtils.collectApplicationServletStats(ctx, app);
+
+ String appName = "".equals(ctx.getName()) ? "/" : ctx.getName();
+
+ long reqDelta =
+ buildDeltaStats("app.requests." + appName, app.getRequestCount(), currentTime);
+ long errDelta = buildDeltaStats("app.errors." + appName, app.getErrorCount());
+ long procTimeDelta =
+ buildDeltaStats("app.proc_time." + appName, app.getProcessingTime(), currentTime);
+
+ long avgProcTime = reqDelta == 0 ? 0 : procTimeDelta / reqDelta;
+ buildAbsoluteStats("app.avg_proc_time." + appName, avgProcTime, currentTime);
+
+ /*
+ * make sure applications that did not serve any requests do not participate in average
+ * response time equasion thus diluting the value
+ */
+ if (reqDelta > 0) {
+ if (!excludeFromTotal(ctx)) {
+ totalReqDelta += reqDelta;
+ totalErrDelta += errDelta;
+ totalAvgProcTime += avgProcTime;
+ participatingAppCount++;
+ }
+ }
+ }
+ }
+ // build totals for all applications
+ buildAbsoluteStats("total.requests", totalReqDelta, currentTime);
+ buildAbsoluteStats("total.errors", totalErrDelta, currentTime);
+ buildAbsoluteStats("total.avg_proc_time", participatingAppCount == 0 ? 0 : totalAvgProcTime
+ / participatingAppCount, currentTime);
+ }
+ logger.debug("app stats collected in " + (System.currentTimeMillis() - currentTime) + "ms.");
+ }
+ }
+
+ private boolean excludeFromTotal(Context ctx) {
+ return isSelfIgnored() && getServletContext().equals(ctx.getServletContext());
+ }
+
+ public void reset() {
+ if (containerWrapper == null) {
+ logger.error("Cannot reset application stats. Container wrapper is not set.");
+ } else {
+ TomcatContainer tomcatContainer = getContainerWrapper().getTomcatContainer();
+ if (tomcatContainer != null) {
+ List contexts = tomcatContainer.findContexts();
+ for (Iterator i = contexts.iterator(); i.hasNext();) {
+ Context ctx = (Context) i.next();
+
+ if (ctx != null && ctx.getName() != null) {
+ String appName = "".equals(ctx.getName()) ? "/" : ctx.getName();
+ reset(appName);
+ }
+ }
+ }
+ }
+ resetStats("total.requests");
+ resetStats("total.errors");
+ resetStats("total.avg_proc_time");
+ }
+
+ public void reset(String appName) {
+ resetStats("app.requests." + appName);
+ resetStats("app.proc_time." + appName);
+ resetStats("app.errors." + appName);
+ resetStats("app.avg_proc_time." + appName);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/ClusterStatsCollectorBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/ClusterStatsCollectorBean.java
index 3ac3fafe4b..2c7ba12200 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/ClusterStatsCollectorBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/ClusterStatsCollectorBean.java
@@ -1,57 +1,57 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.collectors;
-
-import com.googlecode.psiprobe.TomcatContainer;
-import com.googlecode.psiprobe.beans.ClusterWrapperBean;
-import com.googlecode.psiprobe.beans.ContainerWrapperBean;
-import com.googlecode.psiprobe.model.jmx.Cluster;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ClusterStatsCollectorBean extends AbstractStatsCollectorBean {
- private ContainerWrapperBean containerWrapper;
- private ClusterWrapperBean clusterWrapper;
-
- public ContainerWrapperBean getContainerWrapper() {
- return containerWrapper;
- }
-
- public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
- this.containerWrapper = containerWrapper;
- }
-
- public ClusterWrapperBean getClusterWrapper() {
- return clusterWrapper;
- }
-
- public void setClusterWrapper(ClusterWrapperBean clusterWrapper) {
- this.clusterWrapper = clusterWrapper;
- }
-
- public void collect() throws Exception {
- // Job can be called before the servlet finished intialisation. Make sure
- // we dont get an NPE.
- TomcatContainer container = containerWrapper.getTomcatContainer();
- if (container != null) {
- Cluster cluster =
- clusterWrapper.getCluster(container.getName(), container.getHostName(), false);
- if (cluster != null) {
- buildDeltaStats("cluster.received", cluster.getTotalReceivedBytes());
- buildDeltaStats("cluster.sent", cluster.getSenderTotalBytes());
- buildDeltaStats("cluster.req.received", cluster.getNrOfMsgsReceived());
- buildDeltaStats("cluster.req.sent", cluster.getSenderNrOfRequests());
- }
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.collectors;
+
+import com.googlecode.psiprobe.TomcatContainer;
+import com.googlecode.psiprobe.beans.ClusterWrapperBean;
+import com.googlecode.psiprobe.beans.ContainerWrapperBean;
+import com.googlecode.psiprobe.model.jmx.Cluster;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ClusterStatsCollectorBean extends AbstractStatsCollectorBean {
+ private ContainerWrapperBean containerWrapper;
+ private ClusterWrapperBean clusterWrapper;
+
+ public ContainerWrapperBean getContainerWrapper() {
+ return containerWrapper;
+ }
+
+ public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
+ this.containerWrapper = containerWrapper;
+ }
+
+ public ClusterWrapperBean getClusterWrapper() {
+ return clusterWrapper;
+ }
+
+ public void setClusterWrapper(ClusterWrapperBean clusterWrapper) {
+ this.clusterWrapper = clusterWrapper;
+ }
+
+ public void collect() throws Exception {
+ // Job can be called before the servlet finished intialisation. Make sure
+ // we dont get an NPE.
+ TomcatContainer container = containerWrapper.getTomcatContainer();
+ if (container != null) {
+ Cluster cluster =
+ clusterWrapper.getCluster(container.getName(), container.getHostName(), false);
+ if (cluster != null) {
+ buildDeltaStats("cluster.received", cluster.getTotalReceivedBytes());
+ buildDeltaStats("cluster.sent", cluster.getSenderTotalBytes());
+ buildDeltaStats("cluster.req.received", cluster.getNrOfMsgsReceived());
+ buildDeltaStats("cluster.req.sent", cluster.getSenderNrOfRequests());
+ }
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/ConnectorStatsCollectorBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/ConnectorStatsCollectorBean.java
index f274365009..36ed47b0a0 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/ConnectorStatsCollectorBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/ConnectorStatsCollectorBean.java
@@ -1,66 +1,66 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.collectors;
-
-import com.googlecode.psiprobe.beans.ContainerListenerBean;
-import com.googlecode.psiprobe.model.Connector;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ConnectorStatsCollectorBean extends AbstractStatsCollectorBean {
-
- private ContainerListenerBean listenerBean;
-
- public ContainerListenerBean getListenerBean() {
- return listenerBean;
- }
-
- public void setListenerBean(ContainerListenerBean listenerBean) {
- this.listenerBean = listenerBean;
- }
-
- public void collect() throws Exception {
- List connectors = listenerBean.getConnectors(false);
- for (Iterator it = connectors.iterator(); it.hasNext();) {
- Connector connector = (Connector) it.next();
- String statName = "stat.connector." + connector.getName();
- buildDeltaStats(statName + ".requests", connector.getRequestCount());
- buildDeltaStats(statName + ".errors", connector.getErrorCount());
- buildDeltaStats(statName + ".sent", connector.getBytesSent());
- buildDeltaStats(statName + ".received", connector.getBytesReceived());
- buildDeltaStats(statName + ".proc_time", connector.getProcessingTime());
- }
- }
-
- public void reset() throws Exception {
- List connectors = listenerBean.getConnectors(false);
- for (Iterator it = connectors.iterator(); it.hasNext();) {
- Connector connector = (Connector) it.next();
- reset(connector.getName());
- }
- }
-
- public void reset(String connectorName) {
- String statName = "stat.connector." + connectorName;
- resetStats(statName + ".requests");
- resetStats(statName + ".errors");
- resetStats(statName + ".sent");
- resetStats(statName + ".received");
- resetStats(statName + ".proc_time");
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.collectors;
+
+import com.googlecode.psiprobe.beans.ContainerListenerBean;
+import com.googlecode.psiprobe.model.Connector;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ConnectorStatsCollectorBean extends AbstractStatsCollectorBean {
+
+ private ContainerListenerBean listenerBean;
+
+ public ContainerListenerBean getListenerBean() {
+ return listenerBean;
+ }
+
+ public void setListenerBean(ContainerListenerBean listenerBean) {
+ this.listenerBean = listenerBean;
+ }
+
+ public void collect() throws Exception {
+ List connectors = listenerBean.getConnectors(false);
+ for (Iterator it = connectors.iterator(); it.hasNext();) {
+ Connector connector = (Connector) it.next();
+ String statName = "stat.connector." + connector.getName();
+ buildDeltaStats(statName + ".requests", connector.getRequestCount());
+ buildDeltaStats(statName + ".errors", connector.getErrorCount());
+ buildDeltaStats(statName + ".sent", connector.getBytesSent());
+ buildDeltaStats(statName + ".received", connector.getBytesReceived());
+ buildDeltaStats(statName + ".proc_time", connector.getProcessingTime());
+ }
+ }
+
+ public void reset() throws Exception {
+ List connectors = listenerBean.getConnectors(false);
+ for (Iterator it = connectors.iterator(); it.hasNext();) {
+ Connector connector = (Connector) it.next();
+ reset(connector.getName());
+ }
+ }
+
+ public void reset(String connectorName) {
+ String statName = "stat.connector." + connectorName;
+ resetStats(statName + ".requests");
+ resetStats(statName + ".errors");
+ resetStats(statName + ".sent");
+ resetStats(statName + ".received");
+ resetStats(statName + ".proc_time");
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/JvmMemoryStatsCollectorBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/JvmMemoryStatsCollectorBean.java
index 432b2fcff1..4499462efe 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/JvmMemoryStatsCollectorBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/JvmMemoryStatsCollectorBean.java
@@ -1,42 +1,42 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.collectors;
-
-import com.googlecode.psiprobe.beans.JvmMemoryInfoAccessorBean;
-import com.googlecode.psiprobe.model.jmx.MemoryPool;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class JvmMemoryStatsCollectorBean extends AbstractStatsCollectorBean {
- private JvmMemoryInfoAccessorBean jvmMemoryInfoAccessor;
-
- public JvmMemoryInfoAccessorBean getJvmMemoryInfoAccessor() {
- return jvmMemoryInfoAccessor;
- }
-
- public void setJvmMemoryInfoAccessor(JvmMemoryInfoAccessorBean jvmMemoryInfoAccessor) {
- this.jvmMemoryInfoAccessor = jvmMemoryInfoAccessor;
- }
-
- public void collect() throws Exception {
- List pools = jvmMemoryInfoAccessor.getPools();
- long time = System.currentTimeMillis();
- for (Iterator it = pools.iterator(); it.hasNext();) {
- MemoryPool pool = (MemoryPool) it.next();
- buildAbsoluteStats("memory.pool." + pool.getName(), pool.getUsed(), time);
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.collectors;
+
+import com.googlecode.psiprobe.beans.JvmMemoryInfoAccessorBean;
+import com.googlecode.psiprobe.model.jmx.MemoryPool;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class JvmMemoryStatsCollectorBean extends AbstractStatsCollectorBean {
+ private JvmMemoryInfoAccessorBean jvmMemoryInfoAccessor;
+
+ public JvmMemoryInfoAccessorBean getJvmMemoryInfoAccessor() {
+ return jvmMemoryInfoAccessor;
+ }
+
+ public void setJvmMemoryInfoAccessor(JvmMemoryInfoAccessorBean jvmMemoryInfoAccessor) {
+ this.jvmMemoryInfoAccessor = jvmMemoryInfoAccessor;
+ }
+
+ public void collect() throws Exception {
+ List pools = jvmMemoryInfoAccessor.getPools();
+ long time = System.currentTimeMillis();
+ for (Iterator it = pools.iterator(); it.hasNext();) {
+ MemoryPool pool = (MemoryPool) it.next();
+ buildAbsoluteStats("memory.pool." + pool.getName(), pool.getUsed(), time);
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/RuntimeStatsCollectorBean.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/RuntimeStatsCollectorBean.java
index 21144a9eb1..8afae62194 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/RuntimeStatsCollectorBean.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/collectors/RuntimeStatsCollectorBean.java
@@ -1,50 +1,50 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.collectors;
-
-import com.googlecode.psiprobe.beans.RuntimeInfoAccessorBean;
-import com.googlecode.psiprobe.model.jmx.RuntimeInformation;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class RuntimeStatsCollectorBean extends AbstractStatsCollectorBean {
- private RuntimeInfoAccessorBean runtimeInfoAccessorBean;
-
- public RuntimeInfoAccessorBean getRuntimeInfoAccessorBean() {
- return runtimeInfoAccessorBean;
- }
-
- public void setRuntimeInfoAccessorBean(RuntimeInfoAccessorBean runtimeInfoAccessorBean) {
- this.runtimeInfoAccessorBean = runtimeInfoAccessorBean;
- }
-
- public void collect() throws Exception {
- RuntimeInformation ri = runtimeInfoAccessorBean.getRuntimeInformation();
- if (ri != null) {
- long time = System.currentTimeMillis();
- buildAbsoluteStats("os.memory.committed", ri.getCommittedVirtualMemorySize() / 1024, time);
- buildAbsoluteStats("os.memory.physical",
- (ri.getTotalPhysicalMemorySize() - ri.getFreePhysicalMemorySize()) / 1024, time);
- buildAbsoluteStats("os.memory.swap",
- (ri.getTotalSwapSpaceSize() - ri.getFreeSwapSpaceSize()) / 1024, time);
-
- buildAbsoluteStats("os.fd.open", ri.getOpenFDCount(), time);
- buildAbsoluteStats("os.fd.max", ri.getMaxFDCount(), time);
- // convert from nanoseconds so times use the same units
- long processCpuTimeMs = ri.getProcessCpuTime() / 1000000;
- // divide by the number of processors to reflect shared load (<= 100%)
- buildTimePercentageStats("os.cpu", processCpuTimeMs / ri.getAvailableProcessors(), time);
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.collectors;
+
+import com.googlecode.psiprobe.beans.RuntimeInfoAccessorBean;
+import com.googlecode.psiprobe.model.jmx.RuntimeInformation;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class RuntimeStatsCollectorBean extends AbstractStatsCollectorBean {
+ private RuntimeInfoAccessorBean runtimeInfoAccessorBean;
+
+ public RuntimeInfoAccessorBean getRuntimeInfoAccessorBean() {
+ return runtimeInfoAccessorBean;
+ }
+
+ public void setRuntimeInfoAccessorBean(RuntimeInfoAccessorBean runtimeInfoAccessorBean) {
+ this.runtimeInfoAccessorBean = runtimeInfoAccessorBean;
+ }
+
+ public void collect() throws Exception {
+ RuntimeInformation ri = runtimeInfoAccessorBean.getRuntimeInformation();
+ if (ri != null) {
+ long time = System.currentTimeMillis();
+ buildAbsoluteStats("os.memory.committed", ri.getCommittedVirtualMemorySize() / 1024, time);
+ buildAbsoluteStats("os.memory.physical",
+ (ri.getTotalPhysicalMemorySize() - ri.getFreePhysicalMemorySize()) / 1024, time);
+ buildAbsoluteStats("os.memory.swap",
+ (ri.getTotalSwapSpaceSize() - ri.getFreeSwapSpaceSize()) / 1024, time);
+
+ buildAbsoluteStats("os.fd.open", ri.getOpenFDCount(), time);
+ buildAbsoluteStats("os.fd.max", ri.getMaxFDCount(), time);
+ // convert from nanoseconds so times use the same units
+ long processCpuTimeMs = ri.getProcessCpuTime() / 1000000;
+ // divide by the number of processors to reflect shared load (<= 100%)
+ buildTimePercentageStats("os.cpu", processCpuTimeMs / ri.getAvailableProcessors(), time);
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/AbstractSeriesProvider.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/AbstractSeriesProvider.java
index ca98e9b208..05466c50e1 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/AbstractSeriesProvider.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/AbstractSeriesProvider.java
@@ -1,40 +1,40 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.providers;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jfree.data.xy.XYDataItem;
-import org.jfree.data.xy.XYSeries;
-
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- */
-public abstract class AbstractSeriesProvider implements SeriesProvider {
-
- protected Log logger = LogFactory.getLog(getClass());
-
- protected XYSeries toSeries(String legend, List stats) {
- XYSeries xySeries = new XYSeries(legend, true, false);
- synchronized (stats) {
- for (int i = 0; i < stats.size(); i++) {
- XYDataItem item = (XYDataItem) stats.get(i);
- xySeries.addOrUpdate(item.getX(), item.getY());
- }
- }
- return xySeries;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.providers;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jfree.data.xy.XYDataItem;
+import org.jfree.data.xy.XYSeries;
+
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ */
+public abstract class AbstractSeriesProvider implements SeriesProvider {
+
+ protected Log logger = LogFactory.getLog(getClass());
+
+ protected XYSeries toSeries(String legend, List stats) {
+ XYSeries xySeries = new XYSeries(legend, true, false);
+ synchronized (stats) {
+ for (int i = 0; i < stats.size(); i++) {
+ XYDataItem item = (XYDataItem) stats.get(i);
+ xySeries.addOrUpdate(item.getX(), item.getY());
+ }
+ }
+ return xySeries;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/ConnectorSeriesProvider.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/ConnectorSeriesProvider.java
index 8e9695b2d6..d3db07b626 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/ConnectorSeriesProvider.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/ConnectorSeriesProvider.java
@@ -1,47 +1,47 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.providers;
-
-import com.googlecode.psiprobe.model.stats.StatsCollection;
-
-import org.jfree.data.xy.DefaultTableXYDataset;
-import org.springframework.web.bind.ServletRequestUtils;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ConnectorSeriesProvider extends AbstractSeriesProvider {
-
- public void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
- HttpServletRequest request) {
-
- // get Connector name from the request
- String connectorName = ServletRequestUtils.getStringParameter(request, "cn", null);
-
- // type of statistic to be displayed
- String statType = ServletRequestUtils.getStringParameter(request, "st", null);
-
- // Series legend
- String series1Legend = ServletRequestUtils.getStringParameter(request, "sl", "");
-
- if (connectorName != null && statType != null) {
- List l = statsCollection.getStats("stat.connector." + connectorName + "." + statType);
- if (l != null) {
- dataset.addSeries(toSeries(series1Legend, l));
- }
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.providers;
+
+import com.googlecode.psiprobe.model.stats.StatsCollection;
+
+import org.jfree.data.xy.DefaultTableXYDataset;
+import org.springframework.web.bind.ServletRequestUtils;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ConnectorSeriesProvider extends AbstractSeriesProvider {
+
+ public void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
+ HttpServletRequest request) {
+
+ // get Connector name from the request
+ String connectorName = ServletRequestUtils.getStringParameter(request, "cn", null);
+
+ // type of statistic to be displayed
+ String statType = ServletRequestUtils.getStringParameter(request, "st", null);
+
+ // Series legend
+ String series1Legend = ServletRequestUtils.getStringParameter(request, "sl", "");
+
+ if (connectorName != null && statType != null) {
+ List l = statsCollection.getStats("stat.connector." + connectorName + "." + statType);
+ if (l != null) {
+ dataset.addSeries(toSeries(series1Legend, l));
+ }
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/MultipleSeriesProvider.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/MultipleSeriesProvider.java
index 205b091eb6..a4827f59c3 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/MultipleSeriesProvider.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/MultipleSeriesProvider.java
@@ -1,160 +1,160 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.providers;
-
-import com.googlecode.psiprobe.model.stats.StatsCollection;
-
-import org.jfree.data.xy.DefaultTableXYDataset;
-import org.jfree.data.xy.XYDataItem;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Retrieves stats series with names that start with the statNamePrefix. Either all matching series
- * or only "top" N ones can be retrieved. Determines top series by comparing max moving avg values.
- * Derrives legend entries from series names by removing the statNamePrefix. Ignores series param
- * (sp) and legend (s...l) request parameters.
- *
- * @author Andy Shapoval
- */
-public class MultipleSeriesProvider extends AbstractSeriesProvider {
- private String statNamePrefix;
- private int top = 0;
- private int movingAvgFrame = 0;
-
- public String getStatNamePrefix() {
- return statNamePrefix;
- }
-
- /**
- * @param statNamePrefix - only series with names that start with statNamePrefix are retrieved.
- */
- public void setStatNamePrefix(String statNamePrefix) {
- this.statNamePrefix = statNamePrefix;
- }
-
- public int getTop() {
- return top;
- }
-
- /**
- * @param top - the number of top series to retrieve. If this value is greater than 0, only this
- * many series with the greatest max moving avg values are retrieved.
- */
- public void setTop(int top) {
- this.top = top;
- }
-
- public int getMovingAvgFrame() {
- return movingAvgFrame;
- }
-
- /**
- * @param movingAvgFrame - if this value is greater than 0, a moving avg value is calculated for
- * every series using every Nth value, where N % movingAvgFrame == 0. Top series are
- * identified based on a max moving avg value of each series. If the movingAvgFrame equals
- * to 0, top series are determined based on a simple avg of all series values.
- */
- public void setMovingAvgFrame(int movingAvgFrame) {
- this.movingAvgFrame = movingAvgFrame;
- }
-
- public void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
- HttpServletRequest request) {
-
- Map statMap = statsCollection.getStatsByPrefix(statNamePrefix);
- boolean useTop = getTop() > 0 && getTop() < statMap.size();
- List seriesList = new ArrayList();
-
- for (Iterator i = statMap.entrySet().iterator(); i.hasNext();) {
- Series ser = new Series((Map.Entry) i.next());
- if (useTop) {
- ser.calculateAvg();
- }
- seriesList.add(ser);
- }
-
- if (useTop) {
- // sorting stats by the avg value to identify the top series
- Collections.sort(seriesList, new Comparator() {
- public int compare(Object o1, Object o2) {
- Series s1 = (Series) o1;
- Series s2 = (Series) o2;
- return s1.avg == s2.avg ? s1.key.compareTo(s2.key) : (s1.avg > s2.avg ? -1 : 1);
- }
- });
-
- // keeping only the top series in the list
- for (ListIterator i = seriesList.listIterator(getTop()); i.hasNext();) {
- i.next();
- i.remove();
- }
- }
-
- // sorting the remaining series by name
- Collections.sort(seriesList, new Comparator() {
- public int compare(Object o1, Object o2) {
- return (((Series) o1).key).compareTo(((Series) o2).key);
- }
- });
-
- for (Iterator i = seriesList.iterator(); i.hasNext();) {
- Series ser = (Series) i.next();
- dataset.addSeries(toSeries(ser.key, ser.stats));
- }
- }
-
- // a helper class that holds series and calculates an avg value
- private class Series {
- final String key;
- final List stats;
- double avg = 0;
-
- Series(Map.Entry en) {
- key = ((String) en.getKey()).substring(statNamePrefix.length());
- stats = (List) en.getValue();
- }
-
- // calculating an avg value that is used for identifying the top series
- void calculateAvg() {
- long sum = 0;
- int count = 1;
-
- synchronized (stats) {
- boolean useMovingAvg = getMovingAvgFrame() > 0 && getMovingAvgFrame() < stats.size();
-
- for (Iterator i = stats.iterator(); i.hasNext();) {
- XYDataItem xy = (XYDataItem) i.next();
- sum += xy.getY().longValue();
-
- if ((useMovingAvg && count % getMovingAvgFrame() == 0) || !i.hasNext()) {
- double a = (double) sum / count;
- if (a > avg) {
- avg = a;
- }
- sum = 0;
- count = 1;
- } else {
- count++;
- }
- }
- }
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.providers;
+
+import com.googlecode.psiprobe.model.stats.StatsCollection;
+
+import org.jfree.data.xy.DefaultTableXYDataset;
+import org.jfree.data.xy.XYDataItem;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Retrieves stats series with names that start with the statNamePrefix. Either all matching series
+ * or only "top" N ones can be retrieved. Determines top series by comparing max moving avg values.
+ * Derrives legend entries from series names by removing the statNamePrefix. Ignores series param
+ * (sp) and legend (s...l) request parameters.
+ *
+ * @author Andy Shapoval
+ */
+public class MultipleSeriesProvider extends AbstractSeriesProvider {
+ private String statNamePrefix;
+ private int top = 0;
+ private int movingAvgFrame = 0;
+
+ public String getStatNamePrefix() {
+ return statNamePrefix;
+ }
+
+ /**
+ * @param statNamePrefix - only series with names that start with statNamePrefix are retrieved.
+ */
+ public void setStatNamePrefix(String statNamePrefix) {
+ this.statNamePrefix = statNamePrefix;
+ }
+
+ public int getTop() {
+ return top;
+ }
+
+ /**
+ * @param top - the number of top series to retrieve. If this value is greater than 0, only this
+ * many series with the greatest max moving avg values are retrieved.
+ */
+ public void setTop(int top) {
+ this.top = top;
+ }
+
+ public int getMovingAvgFrame() {
+ return movingAvgFrame;
+ }
+
+ /**
+ * @param movingAvgFrame - if this value is greater than 0, a moving avg value is calculated for
+ * every series using every Nth value, where N % movingAvgFrame == 0. Top series are
+ * identified based on a max moving avg value of each series. If the movingAvgFrame equals
+ * to 0, top series are determined based on a simple avg of all series values.
+ */
+ public void setMovingAvgFrame(int movingAvgFrame) {
+ this.movingAvgFrame = movingAvgFrame;
+ }
+
+ public void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
+ HttpServletRequest request) {
+
+ Map statMap = statsCollection.getStatsByPrefix(statNamePrefix);
+ boolean useTop = getTop() > 0 && getTop() < statMap.size();
+ List seriesList = new ArrayList();
+
+ for (Iterator i = statMap.entrySet().iterator(); i.hasNext();) {
+ Series ser = new Series((Map.Entry) i.next());
+ if (useTop) {
+ ser.calculateAvg();
+ }
+ seriesList.add(ser);
+ }
+
+ if (useTop) {
+ // sorting stats by the avg value to identify the top series
+ Collections.sort(seriesList, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Series s1 = (Series) o1;
+ Series s2 = (Series) o2;
+ return s1.avg == s2.avg ? s1.key.compareTo(s2.key) : (s1.avg > s2.avg ? -1 : 1);
+ }
+ });
+
+ // keeping only the top series in the list
+ for (ListIterator i = seriesList.listIterator(getTop()); i.hasNext();) {
+ i.next();
+ i.remove();
+ }
+ }
+
+ // sorting the remaining series by name
+ Collections.sort(seriesList, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ return (((Series) o1).key).compareTo(((Series) o2).key);
+ }
+ });
+
+ for (Iterator i = seriesList.iterator(); i.hasNext();) {
+ Series ser = (Series) i.next();
+ dataset.addSeries(toSeries(ser.key, ser.stats));
+ }
+ }
+
+ // a helper class that holds series and calculates an avg value
+ private class Series {
+ final String key;
+ final List stats;
+ double avg = 0;
+
+ Series(Map.Entry en) {
+ key = ((String) en.getKey()).substring(statNamePrefix.length());
+ stats = (List) en.getValue();
+ }
+
+ // calculating an avg value that is used for identifying the top series
+ void calculateAvg() {
+ long sum = 0;
+ int count = 1;
+
+ synchronized (stats) {
+ boolean useMovingAvg = getMovingAvgFrame() > 0 && getMovingAvgFrame() < stats.size();
+
+ for (Iterator i = stats.iterator(); i.hasNext();) {
+ XYDataItem xy = (XYDataItem) i.next();
+ sum += xy.getY().longValue();
+
+ if ((useMovingAvg && count % getMovingAvgFrame() == 0) || !i.hasNext()) {
+ double a = (double) sum / count;
+ if (a > avg) {
+ avg = a;
+ }
+ sum = 0;
+ count = 1;
+ } else {
+ count++;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/SeriesProvider.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/SeriesProvider.java
index 72ac2894cc..6d04e35e30 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/SeriesProvider.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/SeriesProvider.java
@@ -1,28 +1,28 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.providers;
-
-import com.googlecode.psiprobe.model.stats.StatsCollection;
-
-import org.jfree.data.xy.DefaultTableXYDataset;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Classes implementing this interface can be wired up with RenderChartController to provide Series
- * data based on StatsCollection instance.
- *
- * @author Vlad Ilyushchenko
- */
-public interface SeriesProvider {
- void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
- HttpServletRequest request);
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.providers;
+
+import com.googlecode.psiprobe.model.stats.StatsCollection;
+
+import org.jfree.data.xy.DefaultTableXYDataset;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Classes implementing this interface can be wired up with RenderChartController to provide Series
+ * data based on StatsCollection instance.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public interface SeriesProvider {
+ void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
+ HttpServletRequest request);
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/StandardSeriesProvider.java b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/StandardSeriesProvider.java
index b8cedc3ea8..eaca25bfa3 100644
--- a/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/StandardSeriesProvider.java
+++ b/core/src/main/java/com/googlecode/psiprobe/beans/stats/providers/StandardSeriesProvider.java
@@ -1,56 +1,56 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans.stats.providers;
-
-import com.googlecode.psiprobe.model.stats.StatsCollection;
-
-import org.jfree.data.xy.DefaultTableXYDataset;
-import org.springframework.web.bind.ServletRequestUtils;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class StandardSeriesProvider extends AbstractSeriesProvider {
-
- private List statNames = new ArrayList(2);
-
- public List getStatNames() {
- return statNames;
- }
-
- public void setStatNames(List statNames) {
- this.statNames = statNames;
- }
-
- public void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
- HttpServletRequest request) {
-
- String seriesParam = ServletRequestUtils.getStringParameter(request, "sp", null);
- for (int i = 0; i < statNames.size(); i++) {
- String statName = (String) statNames.get(i);
- if (seriesParam != null) {
- statName = MessageFormat.format(statName, new Object[] {seriesParam});
- }
- List l = statsCollection.getStats(statName);
- if (l != null) {
- dataset.addSeries(toSeries(
- ServletRequestUtils.getStringParameter(request, "s" + (i + 1) + "l", "series" + i), l));
- }
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans.stats.providers;
+
+import com.googlecode.psiprobe.model.stats.StatsCollection;
+
+import org.jfree.data.xy.DefaultTableXYDataset;
+import org.springframework.web.bind.ServletRequestUtils;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class StandardSeriesProvider extends AbstractSeriesProvider {
+
+ private List statNames = new ArrayList(2);
+
+ public List getStatNames() {
+ return statNames;
+ }
+
+ public void setStatNames(List statNames) {
+ this.statNames = statNames;
+ }
+
+ public void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
+ HttpServletRequest request) {
+
+ String seriesParam = ServletRequestUtils.getStringParameter(request, "sp", null);
+ for (int i = 0; i < statNames.size(); i++) {
+ String statName = (String) statNames.get(i);
+ if (seriesParam != null) {
+ statName = MessageFormat.format(statName, new Object[] {seriesParam});
+ }
+ List l = statsCollection.getStats(statName);
+ if (l != null) {
+ dataset.addSeries(toSeries(
+ ServletRequestUtils.getStringParameter(request, "s" + (i + 1) + "l", "series" + i), l));
+ }
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/BeanToXmlController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/BeanToXmlController.java
index 25cf922be9..223d3fa52f 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/BeanToXmlController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/BeanToXmlController.java
@@ -1,57 +1,57 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import com.googlecode.psiprobe.model.TransportableModel;
-
-import com.thoughtworks.xstream.XStream;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.AbstractController;
-import org.springframework.web.servlet.mvc.Controller;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class BeanToXmlController extends AbstractController {
-
- private String xmlMarker = ".oxml";
-
- public String getXmlMarker() {
- return xmlMarker;
- }
-
- public void setXmlMarker(String xmlMarker) {
- this.xmlMarker = xmlMarker;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- String path = request.getServletPath();
- String internalPath = path.replaceAll(xmlMarker, "");
-
- Controller controller = (Controller) getApplicationContext().getBean(internalPath);
- if (controller != null) {
- ModelAndView modelAndView = controller.handleRequest(request, response);
- if (modelAndView.getModel() != null) {
- TransportableModel tm = new TransportableModel();
- tm.putAll(modelAndView.getModel());
- XStream x = new XStream();
- x.toXML(tm, response.getWriter());
- }
- }
- return null;
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import com.googlecode.psiprobe.model.TransportableModel;
+
+import com.thoughtworks.xstream.XStream;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.AbstractController;
+import org.springframework.web.servlet.mvc.Controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class BeanToXmlController extends AbstractController {
+
+ private String xmlMarker = ".oxml";
+
+ public String getXmlMarker() {
+ return xmlMarker;
+ }
+
+ public void setXmlMarker(String xmlMarker) {
+ this.xmlMarker = xmlMarker;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ String path = request.getServletPath();
+ String internalPath = path.replaceAll(xmlMarker, "");
+
+ Controller controller = (Controller) getApplicationContext().getBean(internalPath);
+ if (controller != null) {
+ ModelAndView modelAndView = controller.handleRequest(request, response);
+ if (modelAndView.getModel() != null) {
+ TransportableModel tm = new TransportableModel();
+ tm.putAll(modelAndView.getModel());
+ XStream x = new XStream();
+ x.toXML(tm, response.getWriter());
+ }
+ }
+ return null;
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/ContextHandlerController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/ContextHandlerController.java
index 8f939350b2..d775de0ad5 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/ContextHandlerController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/ContextHandlerController.java
@@ -1,58 +1,58 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Base class for all controllers requiring "webapp" request parameter.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public abstract class ContextHandlerController extends TomcatContainerController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- String contextName = ServletRequestUtils.getStringParameter(request, "webapp", null);
- Context context = null;
- if (contextName != null) {
- contextName = getContainerWrapper().getTomcatContainer().formatContextName(contextName);
- context = getContainerWrapper().getTomcatContainer().findContext(contextName);
- }
-
- if (context != null || isContextOptional()) {
- return handleContext(contextName, context, request, response);
- } else {
- if (contextName != null) {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.contextDoesntExist",
- new Object[] {contextName}));
- }
-
- return new ModelAndView("errors/paramerror");
- }
- }
-
- protected boolean isContextOptional() {
- return false;
- }
-
- protected abstract ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception;
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Base class for all controllers requiring "webapp" request parameter.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public abstract class ContextHandlerController extends TomcatContainerController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ String contextName = ServletRequestUtils.getStringParameter(request, "webapp", null);
+ Context context = null;
+ if (contextName != null) {
+ contextName = getContainerWrapper().getTomcatContainer().formatContextName(contextName);
+ context = getContainerWrapper().getTomcatContainer().findContext(contextName);
+ }
+
+ if (context != null || isContextOptional()) {
+ return handleContext(contextName, context, request, response);
+ } else {
+ if (contextName != null) {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.contextDoesntExist",
+ new Object[] {contextName}));
+ }
+
+ return new ModelAndView("errors/paramerror");
+ }
+ }
+
+ protected boolean isContextOptional() {
+ return false;
+ }
+
+ protected abstract ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception;
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/DecoratorController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/DecoratorController.java
index ae409d1a84..f037ef441f 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/DecoratorController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/DecoratorController.java
@@ -1,96 +1,96 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import com.googlecode.psiprobe.UptimeListener;
-import com.googlecode.psiprobe.Utils;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Properties;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class DecoratorController extends ParameterizableViewController {
-
- private String messagesBasename;
-
- public String getMessagesBasename() {
- return messagesBasename;
- }
-
- public void setMessagesBasename(String messagesBasename) {
- this.messagesBasename = messagesBasename;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- try {
- request.setAttribute("hostname", InetAddress.getLocalHost().getHostName());
- } catch (UnknownHostException e) {
- request.setAttribute("hostname", "unknown");
- }
-
- Properties version = (Properties) getApplicationContext().getBean("version");
- request.setAttribute("version", version.getProperty("probe.version"));
-
- Object uptimeStart = getServletContext().getAttribute(UptimeListener.START_TIME_KEY);
- if (uptimeStart != null && uptimeStart instanceof Long) {
- long l = ((Long) uptimeStart).longValue();
- long uptime = System.currentTimeMillis() - l;
- long uptime_days = uptime / (1000 * 60 * 60 * 24);
-
- uptime = uptime % (1000 * 60 * 60 * 24);
- long uptime_hours = uptime / (1000 * 60 * 60);
-
- uptime = uptime % (1000 * 60 * 60);
- long uptime_mins = uptime / (1000 * 60);
-
- request.setAttribute("uptime_days", new Long(uptime_days));
- request.setAttribute("uptime_hours", new Long(uptime_hours));
- request.setAttribute("uptime_mins", new Long(uptime_mins));
- }
-
- //
- // Work out the language of the interface by matching resource files that we have
- // to the request locale.
- //
- List fileNames = getMessageFileNamesForLocale(request.getLocale());
- String lang = "en";
- for (Iterator it = fileNames.iterator(); it.hasNext();) {
- String f = (String) it.next();
- if (getServletContext().getResource(f + ".properties") != null) {
- lang = f.substring(messagesBasename.length() + 1);
- break;
- }
- }
-
- request.setAttribute("lang", lang);
-
- return super.handleRequestInternal(request, response);
- }
-
- private List getMessageFileNamesForLocale(Locale locale) {
- return Utils.getNamesForLocale(messagesBasename, locale);
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import com.googlecode.psiprobe.UptimeListener;
+import com.googlecode.psiprobe.Utils;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class DecoratorController extends ParameterizableViewController {
+
+ private String messagesBasename;
+
+ public String getMessagesBasename() {
+ return messagesBasename;
+ }
+
+ public void setMessagesBasename(String messagesBasename) {
+ this.messagesBasename = messagesBasename;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ try {
+ request.setAttribute("hostname", InetAddress.getLocalHost().getHostName());
+ } catch (UnknownHostException e) {
+ request.setAttribute("hostname", "unknown");
+ }
+
+ Properties version = (Properties) getApplicationContext().getBean("version");
+ request.setAttribute("version", version.getProperty("probe.version"));
+
+ Object uptimeStart = getServletContext().getAttribute(UptimeListener.START_TIME_KEY);
+ if (uptimeStart != null && uptimeStart instanceof Long) {
+ long l = ((Long) uptimeStart).longValue();
+ long uptime = System.currentTimeMillis() - l;
+ long uptime_days = uptime / (1000 * 60 * 60 * 24);
+
+ uptime = uptime % (1000 * 60 * 60 * 24);
+ long uptime_hours = uptime / (1000 * 60 * 60);
+
+ uptime = uptime % (1000 * 60 * 60);
+ long uptime_mins = uptime / (1000 * 60);
+
+ request.setAttribute("uptime_days", new Long(uptime_days));
+ request.setAttribute("uptime_hours", new Long(uptime_hours));
+ request.setAttribute("uptime_mins", new Long(uptime_mins));
+ }
+
+ //
+ // Work out the language of the interface by matching resource files that we have
+ // to the request locale.
+ //
+ List fileNames = getMessageFileNamesForLocale(request.getLocale());
+ String lang = "en";
+ for (Iterator it = fileNames.iterator(); it.hasNext();) {
+ String f = (String) it.next();
+ if (getServletContext().getResource(f + ".properties") != null) {
+ lang = f.substring(messagesBasename.length() + 1);
+ break;
+ }
+ }
+
+ request.setAttribute("lang", lang);
+
+ return super.handleRequestInternal(request, response);
+ }
+
+ private List getMessageFileNamesForLocale(Locale locale) {
+ return Utils.getNamesForLocale(messagesBasename, locale);
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/ErrorHandlerController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/ErrorHandlerController.java
index 8535e2b3cd..7b537e3132 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/ErrorHandlerController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/ErrorHandlerController.java
@@ -1,64 +1,64 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.AbstractController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * The ErrorHandlerController will show two different views depending on whether the failed request
- * was AJAX or not.
- *
- * @author Vlad Ilyushchenko.
- */
-public class ErrorHandlerController extends AbstractController {
- private String viewName;
- private String ajaxViewName;
- private String ajaxExtension = ".ajax";
-
- public String getViewName() {
- return viewName;
- }
-
- public void setViewName(String viewName) {
- this.viewName = viewName;
- }
-
- public String getAjaxViewName() {
- return ajaxViewName;
- }
-
- public void setAjaxViewName(String ajaxViewName) {
- this.ajaxViewName = ajaxViewName;
- }
-
- public String getAjaxExtension() {
- return ajaxExtension;
- }
-
- public void setAjaxExtension(String ajaxExtension) {
- this.ajaxExtension = ajaxExtension;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- String originalURI = (String) request.getAttribute("javax.servlet.error.request_uri");
- if (originalURI != null && originalURI.endsWith(ajaxExtension)) {
- return new ModelAndView(ajaxViewName);
- } else {
- return new ModelAndView(viewName);
- }
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.AbstractController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * The ErrorHandlerController will show two different views depending on whether the failed request
+ * was AJAX or not.
+ *
+ * @author Vlad Ilyushchenko.
+ */
+public class ErrorHandlerController extends AbstractController {
+ private String viewName;
+ private String ajaxViewName;
+ private String ajaxExtension = ".ajax";
+
+ public String getViewName() {
+ return viewName;
+ }
+
+ public void setViewName(String viewName) {
+ this.viewName = viewName;
+ }
+
+ public String getAjaxViewName() {
+ return ajaxViewName;
+ }
+
+ public void setAjaxViewName(String ajaxViewName) {
+ this.ajaxViewName = ajaxViewName;
+ }
+
+ public String getAjaxExtension() {
+ return ajaxExtension;
+ }
+
+ public void setAjaxExtension(String ajaxExtension) {
+ this.ajaxExtension = ajaxExtension;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ String originalURI = (String) request.getAttribute("javax.servlet.error.request_uri");
+ if (originalURI != null && originalURI.endsWith(ajaxExtension)) {
+ return new ModelAndView(ajaxViewName);
+ } else {
+ return new ModelAndView(viewName);
+ }
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/RememberVisibilityController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/RememberVisibilityController.java
index 204d706703..8bb555ca8a 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/RememberVisibilityController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/RememberVisibilityController.java
@@ -1,49 +1,49 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import com.googlecode.psiprobe.jsp.Functions;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.AbstractController;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class RememberVisibilityController extends AbstractController {
-
- private final SimpleDateFormat sdf = new SimpleDateFormat("E, d-MMM-yyyy HH:mm:ss zz");
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- String cookieName = ServletRequestUtils.getStringParameter(request, "cn");
- String state = ServletRequestUtils.getStringParameter(request, "state");
- if (cookieName != null && state != null) {
- cookieName = Functions.safeCookieName(cookieName);
- // expire the cookis at the current date + 10years (roughly, nevermind leap years)
- response.addHeader(
- "Set-Cookie",
- cookieName + "=" + state + "; Expires="
- + sdf.format(new Date(System.currentTimeMillis() + 315360000000L)));
- }
- return null;
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import com.googlecode.psiprobe.jsp.Functions;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.AbstractController;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class RememberVisibilityController extends AbstractController {
+
+ private final SimpleDateFormat sdf = new SimpleDateFormat("E, d-MMM-yyyy HH:mm:ss zz");
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ String cookieName = ServletRequestUtils.getStringParameter(request, "cn");
+ String state = ServletRequestUtils.getStringParameter(request, "state");
+ if (cookieName != null && state != null) {
+ cookieName = Functions.safeCookieName(cookieName);
+ // expire the cookis at the current date + 10years (roughly, nevermind leap years)
+ response.addHeader(
+ "Set-Cookie",
+ cookieName + "=" + state + "; Expires="
+ + sdf.format(new Date(System.currentTimeMillis() + 315360000000L)));
+ }
+ return null;
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/RenderChartController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/RenderChartController.java
index 2d3496b0a0..6b061d578b 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/RenderChartController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/RenderChartController.java
@@ -1,182 +1,182 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.beans.stats.providers.SeriesProvider;
-import com.googlecode.psiprobe.model.stats.StatsCollection;
-
-import org.jfree.chart.ChartFactory;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.DateAxis;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.xy.XYAreaRenderer;
-import org.jfree.chart.renderer.xy.XYLine3DRenderer;
-import org.jfree.data.xy.DefaultTableXYDataset;
-import org.jfree.ui.RectangleInsets;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.AbstractController;
-
-import java.awt.BasicStroke;
-import java.awt.Color;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Plots data from "statsCollection" bean. The data is converted to XYSeries using SeriesProvider,
- * name of which would be passed as a request parameter. The servlet can only plot up to 9 series.
- * It is customizable using these request parameters:
- *
- * - s1c, s2c, ... s9c - Series #i main color
- * - s1o, s2o, ... s9o - Series #i outline color
- * - bc - Chart background color
- * - gc - Chart grid lines color
- * - xl - X axis label
- * - yl - Y axis label
- * - xz - image width
- * - yx - image height
- * - l - show legend (boolean: true|false)
- * - p - name of series provider bean
- *
- * @author Vlad Ilyushchenko
- */
-public class RenderChartController extends AbstractController {
-
- private StatsCollection statsCollection;
-
- public StatsCollection getStatsCollection() {
- return statsCollection;
- }
-
- public void setStatsCollection(StatsCollection statsCollection) {
- this.statsCollection = statsCollection;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- final int SERIES_NUM = 9; // the max number of series
-
- // get Series Color from the request
- int[] seriesColor = new int[SERIES_NUM];
- seriesColor[0] = Utils.toIntHex(request.getParameter("s1c"), 0x9bd2fb);
- seriesColor[1] = Utils.toIntHex(request.getParameter("s2c"), 0xFF0606);
- for (int i = 2; i < SERIES_NUM; i++) {
- seriesColor[i] = Utils.toIntHex(request.getParameter("s" + (i + 1) + "c"), -1);
- }
-
- // get Series Outline Color from the request
- int[] seriesOutlineColor = new int[SERIES_NUM];
- seriesOutlineColor[0] = Utils.toIntHex(request.getParameter("s1o"), 0x0665aa);
- seriesOutlineColor[1] = Utils.toIntHex(request.getParameter("s2o"), 0x9d0000);
- for (int i = 2; i < SERIES_NUM; i++) {
- seriesOutlineColor[i] = Utils.toIntHex(request.getParameter("s" + (i + 1) + "o"), -1);
- }
-
- // background color
- int backgroundColor = Utils.toIntHex(request.getParameter("bc"), 0xFFFFFF);
-
- // grid color
- int gridColor = Utils.toIntHex(request.getParameter("gc"), 0);
-
- // X axis title
- String xLabel = ServletRequestUtils.getStringParameter(request, "xl", "");
-
- // Y axis title
- String yLabel = ServletRequestUtils.getStringParameter(request, "yl", "");
-
- // image width
- int width = ServletRequestUtils.getIntParameter(request, "xz", 800);
-
- // image height
- int height = ServletRequestUtils.getIntParameter(request, "yz", 400);
-
- // show legend?
- boolean showLegend = ServletRequestUtils.getBooleanParameter(request, "l", true);
-
- // Series provider
- String provider = ServletRequestUtils.getStringParameter(request, "p", null);
-
- // Chart type
- String chartType = ServletRequestUtils.getStringParameter(request, "ct", "area");
-
-
- DefaultTableXYDataset ds = new DefaultTableXYDataset();
-
- if (provider != null) {
- Object o = getApplicationContext().getBean(provider);
- if (o instanceof SeriesProvider) {
- ((SeriesProvider) o).populate(ds, statsCollection, request);
- } else {
- logger.error("SeriesProvider \"" + provider + "\" does not implement "
- + SeriesProvider.class);
- }
-
- }
-
- // Build series data from the give statistic
- JFreeChart chart = null;
- if ("area".equals(chartType)) {
- chart =
- ChartFactory.createXYAreaChart("", xLabel, yLabel, ds, PlotOrientation.VERTICAL,
- showLegend, false, false);
-
- ((XYAreaRenderer) chart.getXYPlot().getRenderer()).setOutline(true);
-
- } else if ("stacked".equals(chartType)) {
- chart =
- ChartFactory.createStackedXYAreaChart("", xLabel, yLabel, ds, PlotOrientation.VERTICAL,
- showLegend, false, false);
-
- } else if ("line".equals(chartType)) {
- chart =
- ChartFactory.createXYLineChart("", xLabel, yLabel, ds, PlotOrientation.VERTICAL,
- showLegend, false, false);
-
- final XYLine3DRenderer renderer = new XYLine3DRenderer();
- renderer.setDrawOutlines(true);
- renderer.setLinesVisible(true);
- renderer.setShapesVisible(true);
- renderer.setStroke(new BasicStroke(2));
- renderer.setXOffset(1);
- renderer.setYOffset(1);
- chart.getXYPlot().setRenderer(renderer);
- }
-
- if (chart != null) {
- chart.setAntiAlias(true);
- chart.setBackgroundPaint(new Color(backgroundColor));
- for (int i = 0; i < SERIES_NUM; i++) {
- if (seriesColor[i] >= 0) {
- chart.getXYPlot().getRenderer().setSeriesPaint(i, new Color(seriesColor[i]));
- }
- if (seriesOutlineColor[i] >= 0) {
- chart.getXYPlot().getRenderer()
- .setSeriesOutlinePaint(i, new Color(seriesOutlineColor[i]));
- }
- }
- chart.getXYPlot().setDomainGridlinePaint(new Color(gridColor));
- chart.getXYPlot().setRangeGridlinePaint(new Color(gridColor));
- chart.getXYPlot().setDomainAxis(0, new DateAxis());
- chart.getXYPlot().setDomainAxis(1, new DateAxis());
- chart.getXYPlot().setInsets(new RectangleInsets(-15, 0, 0, 10));
-
- response.setHeader("Content-type", "image/png");
- response.getOutputStream().write(
- ChartUtilities.encodeAsPNG(chart.createBufferedImage(width, height)));
- }
-
- return null;
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.beans.stats.providers.SeriesProvider;
+import com.googlecode.psiprobe.model.stats.StatsCollection;
+
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.DateAxis;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.xy.XYAreaRenderer;
+import org.jfree.chart.renderer.xy.XYLine3DRenderer;
+import org.jfree.data.xy.DefaultTableXYDataset;
+import org.jfree.ui.RectangleInsets;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.AbstractController;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Plots data from "statsCollection" bean. The data is converted to XYSeries using SeriesProvider,
+ * name of which would be passed as a request parameter. The servlet can only plot up to 9 series.
+ * It is customizable using these request parameters:
+ *
+ * - s1c, s2c, ... s9c - Series #i main color
+ * - s1o, s2o, ... s9o - Series #i outline color
+ * - bc - Chart background color
+ * - gc - Chart grid lines color
+ * - xl - X axis label
+ * - yl - Y axis label
+ * - xz - image width
+ * - yx - image height
+ * - l - show legend (boolean: true|false)
+ * - p - name of series provider bean
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class RenderChartController extends AbstractController {
+
+ private StatsCollection statsCollection;
+
+ public StatsCollection getStatsCollection() {
+ return statsCollection;
+ }
+
+ public void setStatsCollection(StatsCollection statsCollection) {
+ this.statsCollection = statsCollection;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ final int SERIES_NUM = 9; // the max number of series
+
+ // get Series Color from the request
+ int[] seriesColor = new int[SERIES_NUM];
+ seriesColor[0] = Utils.toIntHex(request.getParameter("s1c"), 0x9bd2fb);
+ seriesColor[1] = Utils.toIntHex(request.getParameter("s2c"), 0xFF0606);
+ for (int i = 2; i < SERIES_NUM; i++) {
+ seriesColor[i] = Utils.toIntHex(request.getParameter("s" + (i + 1) + "c"), -1);
+ }
+
+ // get Series Outline Color from the request
+ int[] seriesOutlineColor = new int[SERIES_NUM];
+ seriesOutlineColor[0] = Utils.toIntHex(request.getParameter("s1o"), 0x0665aa);
+ seriesOutlineColor[1] = Utils.toIntHex(request.getParameter("s2o"), 0x9d0000);
+ for (int i = 2; i < SERIES_NUM; i++) {
+ seriesOutlineColor[i] = Utils.toIntHex(request.getParameter("s" + (i + 1) + "o"), -1);
+ }
+
+ // background color
+ int backgroundColor = Utils.toIntHex(request.getParameter("bc"), 0xFFFFFF);
+
+ // grid color
+ int gridColor = Utils.toIntHex(request.getParameter("gc"), 0);
+
+ // X axis title
+ String xLabel = ServletRequestUtils.getStringParameter(request, "xl", "");
+
+ // Y axis title
+ String yLabel = ServletRequestUtils.getStringParameter(request, "yl", "");
+
+ // image width
+ int width = ServletRequestUtils.getIntParameter(request, "xz", 800);
+
+ // image height
+ int height = ServletRequestUtils.getIntParameter(request, "yz", 400);
+
+ // show legend?
+ boolean showLegend = ServletRequestUtils.getBooleanParameter(request, "l", true);
+
+ // Series provider
+ String provider = ServletRequestUtils.getStringParameter(request, "p", null);
+
+ // Chart type
+ String chartType = ServletRequestUtils.getStringParameter(request, "ct", "area");
+
+
+ DefaultTableXYDataset ds = new DefaultTableXYDataset();
+
+ if (provider != null) {
+ Object o = getApplicationContext().getBean(provider);
+ if (o instanceof SeriesProvider) {
+ ((SeriesProvider) o).populate(ds, statsCollection, request);
+ } else {
+ logger.error("SeriesProvider \"" + provider + "\" does not implement "
+ + SeriesProvider.class);
+ }
+
+ }
+
+ // Build series data from the give statistic
+ JFreeChart chart = null;
+ if ("area".equals(chartType)) {
+ chart =
+ ChartFactory.createXYAreaChart("", xLabel, yLabel, ds, PlotOrientation.VERTICAL,
+ showLegend, false, false);
+
+ ((XYAreaRenderer) chart.getXYPlot().getRenderer()).setOutline(true);
+
+ } else if ("stacked".equals(chartType)) {
+ chart =
+ ChartFactory.createStackedXYAreaChart("", xLabel, yLabel, ds, PlotOrientation.VERTICAL,
+ showLegend, false, false);
+
+ } else if ("line".equals(chartType)) {
+ chart =
+ ChartFactory.createXYLineChart("", xLabel, yLabel, ds, PlotOrientation.VERTICAL,
+ showLegend, false, false);
+
+ final XYLine3DRenderer renderer = new XYLine3DRenderer();
+ renderer.setDrawOutlines(true);
+ renderer.setLinesVisible(true);
+ renderer.setShapesVisible(true);
+ renderer.setStroke(new BasicStroke(2));
+ renderer.setXOffset(1);
+ renderer.setYOffset(1);
+ chart.getXYPlot().setRenderer(renderer);
+ }
+
+ if (chart != null) {
+ chart.setAntiAlias(true);
+ chart.setBackgroundPaint(new Color(backgroundColor));
+ for (int i = 0; i < SERIES_NUM; i++) {
+ if (seriesColor[i] >= 0) {
+ chart.getXYPlot().getRenderer().setSeriesPaint(i, new Color(seriesColor[i]));
+ }
+ if (seriesOutlineColor[i] >= 0) {
+ chart.getXYPlot().getRenderer()
+ .setSeriesOutlinePaint(i, new Color(seriesOutlineColor[i]));
+ }
+ }
+ chart.getXYPlot().setDomainGridlinePaint(new Color(gridColor));
+ chart.getXYPlot().setRangeGridlinePaint(new Color(gridColor));
+ chart.getXYPlot().setDomainAxis(0, new DateAxis());
+ chart.getXYPlot().setDomainAxis(1, new DateAxis());
+ chart.getXYPlot().setInsets(new RectangleInsets(-15, 0, 0, 10));
+
+ response.setHeader("Content-type", "image/png");
+ response.getOutputStream().write(
+ ChartUtilities.encodeAsPNG(chart.createBufferedImage(width, height)));
+ }
+
+ return null;
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/TomcatAvailabilityController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/TomcatAvailabilityController.java
index c5e67192f4..e5eebae36e 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/TomcatAvailabilityController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/TomcatAvailabilityController.java
@@ -1,172 +1,172 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import com.googlecode.psiprobe.beans.ContainerListenerBean;
-import com.googlecode.psiprobe.model.ApplicationResource;
-import com.googlecode.psiprobe.model.DataSourceInfo;
-import com.googlecode.psiprobe.model.TomcatTestReport;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * "Quick check" controller.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class TomcatAvailabilityController extends TomcatContainerController {
-
- private ContainerListenerBean containerListenerBean;
-
- public ContainerListenerBean getContainerListenerBean() {
- return containerListenerBean;
- }
-
- public void setContainerListenerBean(ContainerListenerBean containerListenerBean) {
- this.containerListenerBean = containerListenerBean;
- }
-
- public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
- throws Exception {
-
- long start = System.currentTimeMillis();
- TomcatTestReport tomcatTestReport = new TomcatTestReport();
-
- // check datasource status
- tomcatTestReport.setDatasourceUsageScore(0);
-
- boolean allContextsAvailable = true;
- if (getContainerWrapper().getResourceResolver().supportsPrivateResources()) {
- for (Iterator it = getContainerWrapper().getTomcatContainer().findContexts().iterator(); it
- .hasNext();) {
-
- // make sure we skip ROOT application
- Context appContext = (Context) it.next();
-
- allContextsAvailable =
- allContextsAvailable
- && getContainerWrapper().getTomcatContainer().getAvailable(appContext);
-
- List applicationResources =
- getContainerWrapper().getResourceResolver().getApplicationResources(appContext,
- getContainerWrapper());
-
- for (Iterator it2 = applicationResources.iterator(); it2.hasNext();) {
-
- ApplicationResource appResource = (ApplicationResource) it2.next();
-
- DataSourceInfo dsi = appResource.getDataSourceInfo();
- if (dsi != null && dsi.getBusyScore() > tomcatTestReport.getDatasourceUsageScore()) {
- tomcatTestReport.setContextName(appContext.getName());
- tomcatTestReport.setDatasourceUsageScore(dsi.getBusyScore());
- tomcatTestReport.setDataSourceName(appResource.getName());
- }
- }
- }
-
- tomcatTestReport
- .setWebappAvailabilityTest(allContextsAvailable ? TomcatTestReport.TEST_PASSED
- : TomcatTestReport.TEST_FAILED);
-
- } else {
- List l = getContainerWrapper().getResourceResolver().getApplicationResources();
- for (int i = 0; i < l.size(); i++) {
- ApplicationResource resource = (ApplicationResource) l.get(i);
- DataSourceInfo dsi = resource.getDataSourceInfo();
- if (dsi != null && dsi.getBusyScore() > tomcatTestReport.getDatasourceUsageScore()) {
- tomcatTestReport.setDatasourceUsageScore(dsi.getBusyScore());
- tomcatTestReport.setDataSourceName(resource.getName());
- }
- }
- }
- tomcatTestReport.setDatasourceTest(TomcatTestReport.TEST_PASSED);
-
- // try to allocate some memory
- String word = "hello";
- int count = tomcatTestReport.getDefaultMemorySize() / word.length();
-
- try {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- for (; count > 0; count--) {
- bos.write(word.getBytes());
- }
- tomcatTestReport.setMemoryTest(TomcatTestReport.TEST_PASSED);
- } catch (Throwable e) {
- tomcatTestReport.setMemoryTest(TomcatTestReport.TEST_FAILED);
-
- // make sure we always re-throw ThreadDeath
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
-
- // try to open some files
- File tmpDir = new File(System.getProperty("java.io.tmpdir"));
- int fileCount = tomcatTestReport.getDefaultFileCount();
- List files = new ArrayList();
- List fileStreams = new ArrayList();
-
- try {
- for (; fileCount > 0; fileCount--) {
- File file = new File(tmpDir, "tctest_" + fileCount);
- FileOutputStream fos = new FileOutputStream(file);
- files.add(file);
- fileStreams.add(fos);
- fos.write("this is a test".getBytes());
- }
- tomcatTestReport.setFileTest(TomcatTestReport.TEST_PASSED);
- } catch (IOException e) {
- tomcatTestReport.setFileTest(TomcatTestReport.TEST_FAILED);
- } finally {
- for (int i = 0; i < fileStreams.size(); i++) {
- try {
- ((FileOutputStream) fileStreams.get(i)).close();
- } catch (IOException e) {
- }
- }
-
- for (int i = 0; i < files.size(); i++) {
- ((File) files.get(i)).delete();
- }
- }
-
- tomcatTestReport.setTestDuration(System.currentTimeMillis() - start);
-
- long maxServiceTime = 0;
-
- // check the maximum execution time
- /*
- * List pools = containerListenerBean.getThreadPools(); for (int iPool = 0; iPool <
- * pools.size(); iPool++) { ThreadPool threadPool = (ThreadPool) pools.get(iPool); List threads
- * = threadPool.getRequestProcessors(); for (int iThread = 0; iThread < threads.size();
- * iThread++) { RequestProcessor rp = (RequestProcessor) threads.get(iThread); if (rp.getStage()
- * == 3) { // // the request processor is in SERVICE state // maxServiceTime =
- * Math.max(maxServiceTime, rp.getProcessingTime()); } } }
- */
-
- tomcatTestReport.setMaxServiceTime(maxServiceTime);
-
- return new ModelAndView(getViewName(), "testReport", tomcatTestReport);
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import com.googlecode.psiprobe.beans.ContainerListenerBean;
+import com.googlecode.psiprobe.model.ApplicationResource;
+import com.googlecode.psiprobe.model.DataSourceInfo;
+import com.googlecode.psiprobe.model.TomcatTestReport;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * "Quick check" controller.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class TomcatAvailabilityController extends TomcatContainerController {
+
+ private ContainerListenerBean containerListenerBean;
+
+ public ContainerListenerBean getContainerListenerBean() {
+ return containerListenerBean;
+ }
+
+ public void setContainerListenerBean(ContainerListenerBean containerListenerBean) {
+ this.containerListenerBean = containerListenerBean;
+ }
+
+ public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
+ throws Exception {
+
+ long start = System.currentTimeMillis();
+ TomcatTestReport tomcatTestReport = new TomcatTestReport();
+
+ // check datasource status
+ tomcatTestReport.setDatasourceUsageScore(0);
+
+ boolean allContextsAvailable = true;
+ if (getContainerWrapper().getResourceResolver().supportsPrivateResources()) {
+ for (Iterator it = getContainerWrapper().getTomcatContainer().findContexts().iterator(); it
+ .hasNext();) {
+
+ // make sure we skip ROOT application
+ Context appContext = (Context) it.next();
+
+ allContextsAvailable =
+ allContextsAvailable
+ && getContainerWrapper().getTomcatContainer().getAvailable(appContext);
+
+ List applicationResources =
+ getContainerWrapper().getResourceResolver().getApplicationResources(appContext,
+ getContainerWrapper());
+
+ for (Iterator it2 = applicationResources.iterator(); it2.hasNext();) {
+
+ ApplicationResource appResource = (ApplicationResource) it2.next();
+
+ DataSourceInfo dsi = appResource.getDataSourceInfo();
+ if (dsi != null && dsi.getBusyScore() > tomcatTestReport.getDatasourceUsageScore()) {
+ tomcatTestReport.setContextName(appContext.getName());
+ tomcatTestReport.setDatasourceUsageScore(dsi.getBusyScore());
+ tomcatTestReport.setDataSourceName(appResource.getName());
+ }
+ }
+ }
+
+ tomcatTestReport
+ .setWebappAvailabilityTest(allContextsAvailable ? TomcatTestReport.TEST_PASSED
+ : TomcatTestReport.TEST_FAILED);
+
+ } else {
+ List l = getContainerWrapper().getResourceResolver().getApplicationResources();
+ for (int i = 0; i < l.size(); i++) {
+ ApplicationResource resource = (ApplicationResource) l.get(i);
+ DataSourceInfo dsi = resource.getDataSourceInfo();
+ if (dsi != null && dsi.getBusyScore() > tomcatTestReport.getDatasourceUsageScore()) {
+ tomcatTestReport.setDatasourceUsageScore(dsi.getBusyScore());
+ tomcatTestReport.setDataSourceName(resource.getName());
+ }
+ }
+ }
+ tomcatTestReport.setDatasourceTest(TomcatTestReport.TEST_PASSED);
+
+ // try to allocate some memory
+ String word = "hello";
+ int count = tomcatTestReport.getDefaultMemorySize() / word.length();
+
+ try {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ for (; count > 0; count--) {
+ bos.write(word.getBytes());
+ }
+ tomcatTestReport.setMemoryTest(TomcatTestReport.TEST_PASSED);
+ } catch (Throwable e) {
+ tomcatTestReport.setMemoryTest(TomcatTestReport.TEST_FAILED);
+
+ // make sure we always re-throw ThreadDeath
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+
+ // try to open some files
+ File tmpDir = new File(System.getProperty("java.io.tmpdir"));
+ int fileCount = tomcatTestReport.getDefaultFileCount();
+ List files = new ArrayList();
+ List fileStreams = new ArrayList();
+
+ try {
+ for (; fileCount > 0; fileCount--) {
+ File file = new File(tmpDir, "tctest_" + fileCount);
+ FileOutputStream fos = new FileOutputStream(file);
+ files.add(file);
+ fileStreams.add(fos);
+ fos.write("this is a test".getBytes());
+ }
+ tomcatTestReport.setFileTest(TomcatTestReport.TEST_PASSED);
+ } catch (IOException e) {
+ tomcatTestReport.setFileTest(TomcatTestReport.TEST_FAILED);
+ } finally {
+ for (int i = 0; i < fileStreams.size(); i++) {
+ try {
+ ((FileOutputStream) fileStreams.get(i)).close();
+ } catch (IOException e) {
+ }
+ }
+
+ for (int i = 0; i < files.size(); i++) {
+ ((File) files.get(i)).delete();
+ }
+ }
+
+ tomcatTestReport.setTestDuration(System.currentTimeMillis() - start);
+
+ long maxServiceTime = 0;
+
+ // check the maximum execution time
+ /*
+ * List pools = containerListenerBean.getThreadPools(); for (int iPool = 0; iPool <
+ * pools.size(); iPool++) { ThreadPool threadPool = (ThreadPool) pools.get(iPool); List threads
+ * = threadPool.getRequestProcessors(); for (int iThread = 0; iThread < threads.size();
+ * iThread++) { RequestProcessor rp = (RequestProcessor) threads.get(iThread); if (rp.getStage()
+ * == 3) { // // the request processor is in SERVICE state // maxServiceTime =
+ * Math.max(maxServiceTime, rp.getProcessingTime()); } } }
+ */
+
+ tomcatTestReport.setMaxServiceTime(maxServiceTime);
+
+ return new ModelAndView(getViewName(), "testReport", tomcatTestReport);
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/TomcatContainerController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/TomcatContainerController.java
index e5b1313910..da480129a6 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/TomcatContainerController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/TomcatContainerController.java
@@ -1,42 +1,42 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import com.googlecode.psiprobe.beans.ContainerWrapperBean;
-
-import org.springframework.web.servlet.mvc.AbstractController;
-
-/**
- * Base class for controllers requiring access to ContainerWrapperBean.
- *
- * @author Vlad Ilyushchenko
- */
-public abstract class TomcatContainerController extends AbstractController {
-
- private ContainerWrapperBean containerWrapper;
- private String viewName;
-
- public ContainerWrapperBean getContainerWrapper() {
- return containerWrapper;
- }
-
- public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
- this.containerWrapper = containerWrapper;
- }
-
- public String getViewName() {
- return viewName;
- }
-
- public void setViewName(String viewName) {
- this.viewName = viewName;
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import com.googlecode.psiprobe.beans.ContainerWrapperBean;
+
+import org.springframework.web.servlet.mvc.AbstractController;
+
+/**
+ * Base class for controllers requiring access to ContainerWrapperBean.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public abstract class TomcatContainerController extends AbstractController {
+
+ private ContainerWrapperBean containerWrapper;
+ private String viewName;
+
+ public ContainerWrapperBean getContainerWrapper() {
+ return containerWrapper;
+ }
+
+ public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
+ this.containerWrapper = containerWrapper;
+ }
+
+ public String getViewName() {
+ return viewName;
+ }
+
+ public void setViewName(String viewName) {
+ this.viewName = viewName;
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/WhoisController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/WhoisController.java
index 438986c833..80bb36d6d4 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/WhoisController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/WhoisController.java
@@ -1,109 +1,109 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers;
-
-import com.googlecode.psiprobe.tools.Whois;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class WhoisController extends ParameterizableViewController {
-
- private long lookupTimeout = 5;
- private String defaultServer = "whois.arin.net";
- private int defaultPort = 43;
-
- public long getLookupTimeout() {
- return lookupTimeout;
- }
-
- public void setLookupTimeout(long lookupTimeout) {
- this.lookupTimeout = lookupTimeout;
- }
-
- public String getDefaultServer() {
- return defaultServer;
- }
-
- public void setDefaultServer(String defaultServer) {
- this.defaultServer = defaultServer;
- }
-
- public int getDefaultPort() {
- return defaultPort;
- }
-
- public void setDefaultPort(int defaultPort) {
- this.defaultPort = defaultPort;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- List lines = null;
- boolean timeout = false;
- String reverseName = null;
-
- String theIP = ServletRequestUtils.getStringParameter(request, "ip", null);
-
- Whois.Response wh = null;
- try {
- wh = Whois.lookup(getDefaultServer(), getDefaultPort(), theIP, getLookupTimeout());
- } catch (IOException e) {
- timeout = true;
- }
-
- if (wh != null) {
- lines = new ArrayList(50);
- BufferedReader br =
- new BufferedReader(new InputStreamReader(new ByteArrayInputStream(wh.getSummary()
- .getBytes())));
- try {
- String line;
- while ((line = br.readLine()) != null) {
- lines.add(line);
- }
- } finally {
- br.close();
- }
- }
-
- if (theIP != null) {
- try {
- reverseName = InetAddress.getByName(theIP).getCanonicalHostName();
- } catch (UnknownHostException e) {
- logger.error("could not run a DNS query on " + theIP);
- }
- }
- return new ModelAndView(getViewName(), "result", lines)
- .addObject("timeout", Boolean.valueOf(timeout))
- .addObject("whoisServer",
- wh != null ? wh.getServer() + ":" + wh.getPort() : defaultServer + ":" + defaultPort)
- .addObject("domainName", reverseName);
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers;
+
+import com.googlecode.psiprobe.tools.Whois;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class WhoisController extends ParameterizableViewController {
+
+ private long lookupTimeout = 5;
+ private String defaultServer = "whois.arin.net";
+ private int defaultPort = 43;
+
+ public long getLookupTimeout() {
+ return lookupTimeout;
+ }
+
+ public void setLookupTimeout(long lookupTimeout) {
+ this.lookupTimeout = lookupTimeout;
+ }
+
+ public String getDefaultServer() {
+ return defaultServer;
+ }
+
+ public void setDefaultServer(String defaultServer) {
+ this.defaultServer = defaultServer;
+ }
+
+ public int getDefaultPort() {
+ return defaultPort;
+ }
+
+ public void setDefaultPort(int defaultPort) {
+ this.defaultPort = defaultPort;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ List lines = null;
+ boolean timeout = false;
+ String reverseName = null;
+
+ String theIP = ServletRequestUtils.getStringParameter(request, "ip", null);
+
+ Whois.Response wh = null;
+ try {
+ wh = Whois.lookup(getDefaultServer(), getDefaultPort(), theIP, getLookupTimeout());
+ } catch (IOException e) {
+ timeout = true;
+ }
+
+ if (wh != null) {
+ lines = new ArrayList(50);
+ BufferedReader br =
+ new BufferedReader(new InputStreamReader(new ByteArrayInputStream(wh.getSummary()
+ .getBytes())));
+ try {
+ String line;
+ while ((line = br.readLine()) != null) {
+ lines.add(line);
+ }
+ } finally {
+ br.close();
+ }
+ }
+
+ if (theIP != null) {
+ try {
+ reverseName = InetAddress.getByName(theIP).getCanonicalHostName();
+ } catch (UnknownHostException e) {
+ logger.error("could not run a DNS query on " + theIP);
+ }
+ }
+ return new ModelAndView(getViewName(), "result", lines)
+ .addObject("timeout", Boolean.valueOf(timeout))
+ .addObject("whoisServer",
+ wh != null ? wh.getServer() + ":" + wh.getPort() : defaultServer + ":" + defaultPort)
+ .addObject("domainName", reverseName);
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/AjaxReloadContextController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/AjaxReloadContextController.java
index 4082d36055..bf98b0587e 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/AjaxReloadContextController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/AjaxReloadContextController.java
@@ -1,49 +1,49 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Reloads application context.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class AjaxReloadContextController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- if (!request.getContextPath().equals(contextName) && context != null) {
- try {
- logger.info(request.getRemoteAddr() + " requested RELOAD of " + contextName);
- context.reload();
- } catch (Throwable e) {
- logger.error(e);
-
- // make sure we always re-throw ThreadDeath
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
- }
- return new ModelAndView(getViewName(), "available", Boolean.valueOf(context != null
- && getContainerWrapper().getTomcatContainer().getAvailable(context)));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Reloads application context.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class AjaxReloadContextController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ if (!request.getContextPath().equals(contextName) && context != null) {
+ try {
+ logger.info(request.getRemoteAddr() + " requested RELOAD of " + contextName);
+ context.reload();
+ } catch (Throwable e) {
+ logger.error(e);
+
+ // make sure we always re-throw ThreadDeath
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+ }
+ return new ModelAndView(getViewName(), "available", Boolean.valueOf(context != null
+ && getContainerWrapper().getTomcatContainer().getAvailable(context)));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/AjaxToggleContextController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/AjaxToggleContextController.java
index 945f910a24..a331ada327 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/AjaxToggleContextController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/AjaxToggleContextController.java
@@ -1,54 +1,54 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Stops a web application.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class AjaxToggleContextController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- if (!request.getContextPath().equals(contextName) && context != null) {
- try {
- if (context.getAvailable()) {
- logger.info(request.getRemoteAddr() + " requested STOP of " + contextName);
- getContainerWrapper().getTomcatContainer().stop(contextName);
- } else {
- logger.info(request.getRemoteAddr() + " requested START of " + contextName);
- getContainerWrapper().getTomcatContainer().start(contextName);
- }
- } catch (Throwable e) {
- logger.error(e);
-
- // make sure we always re-throw ThreadDeath
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
- }
- return new ModelAndView(getViewName(), "available", Boolean.valueOf(context != null
- && getContainerWrapper().getTomcatContainer().getAvailable(context)));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Stops a web application.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class AjaxToggleContextController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ if (!request.getContextPath().equals(contextName) && context != null) {
+ try {
+ if (context.getAvailable()) {
+ logger.info(request.getRemoteAddr() + " requested STOP of " + contextName);
+ getContainerWrapper().getTomcatContainer().stop(contextName);
+ } else {
+ logger.info(request.getRemoteAddr() + " requested START of " + contextName);
+ getContainerWrapper().getTomcatContainer().start(contextName);
+ }
+ } catch (Throwable e) {
+ logger.error(e);
+
+ // make sure we always re-throw ThreadDeath
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+ }
+ return new ModelAndView(getViewName(), "available", Boolean.valueOf(context != null
+ && getContainerWrapper().getTomcatContainer().getAvailable(context)));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/DownloadXMLConfController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/DownloadXMLConfController.java
index e0db8a90b6..154632c559 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/DownloadXMLConfController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/DownloadXMLConfController.java
@@ -1,81 +1,81 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.File;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Downloads a deployment descriptor (web.xml) or a context descriptor (context.xml) of a web
- * application
- *
- * @author Andy Shapoval
- */
-public class DownloadXMLConfController extends ContextHandlerController {
-
- public static final String TARGET_WEB_XML = "web.xml";
- public static final String TARGET_CONTEXT_XML = "context.xml";
-
- /**
- * Type of a configuration file to be downloaded
- */
- private String downloadTarget;
-
- public String getDownloadTarget() {
- return downloadTarget;
- }
-
- public void setDownloadTarget(String downloadTarget) {
- this.downloadTarget = downloadTarget;
- }
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- if (downloadTarget == null) {
- throw new RuntimeException("Download target is not set for " + getClass().getName());
- }
-
- String xmlPath;
-
- if (TARGET_WEB_XML.equals(downloadTarget)) {
- ServletContext sctx = context.getServletContext();
- xmlPath = sctx.getRealPath("/WEB-INF/web.xml");
- } else if (TARGET_CONTEXT_XML.equals(downloadTarget)) {
- xmlPath = context.getConfigFile();
- } else {
- throw new RuntimeException("Unknown download target " + getDownloadTarget());
- }
-
- if (xmlPath != null) {
- File xmlFile = new File(xmlPath);
- if (xmlFile.exists()) {
- Utils.sendFile(request, response, xmlFile);
- } else {
- logger.debug("File " + xmlPath + " of " + contextName + " application does not exists.");
- }
- } else {
- logger.debug("Cannot determine path to " + getDownloadTarget() + " file of " + contextName
- + " application.");
- }
- return null;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.File;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Downloads a deployment descriptor (web.xml) or a context descriptor (context.xml) of a web
+ * application
+ *
+ * @author Andy Shapoval
+ */
+public class DownloadXMLConfController extends ContextHandlerController {
+
+ public static final String TARGET_WEB_XML = "web.xml";
+ public static final String TARGET_CONTEXT_XML = "context.xml";
+
+ /**
+ * Type of a configuration file to be downloaded
+ */
+ private String downloadTarget;
+
+ public String getDownloadTarget() {
+ return downloadTarget;
+ }
+
+ public void setDownloadTarget(String downloadTarget) {
+ this.downloadTarget = downloadTarget;
+ }
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ if (downloadTarget == null) {
+ throw new RuntimeException("Download target is not set for " + getClass().getName());
+ }
+
+ String xmlPath;
+
+ if (TARGET_WEB_XML.equals(downloadTarget)) {
+ ServletContext sctx = context.getServletContext();
+ xmlPath = sctx.getRealPath("/WEB-INF/web.xml");
+ } else if (TARGET_CONTEXT_XML.equals(downloadTarget)) {
+ xmlPath = context.getConfigFile();
+ } else {
+ throw new RuntimeException("Unknown download target " + getDownloadTarget());
+ }
+
+ if (xmlPath != null) {
+ File xmlFile = new File(xmlPath);
+ if (xmlFile.exists()) {
+ Utils.sendFile(request, response, xmlFile);
+ } else {
+ logger.debug("File " + xmlPath + " of " + contextName + " application does not exists.");
+ }
+ } else {
+ logger.debug("Cannot determine path to " + getDownloadTarget() + " file of " + contextName
+ + " application.");
+ }
+ return null;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/GetApplicationController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/GetApplicationController.java
index 19d06c7d0e..f897877a03 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/GetApplicationController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/GetApplicationController.java
@@ -1,91 +1,91 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.model.Application;
-import com.googlecode.psiprobe.model.stats.StatsCollection;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-import com.googlecode.psiprobe.tools.SecurityUtils;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Retrieves Application model object populated with application information.
- *
- * @author Andy Shapoval
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class GetApplicationController extends ContextHandlerController {
-
- /**
- * denotes whether extended application information and statistics should be collected
- */
- private boolean extendedInfo = false;
- private StatsCollection statsCollection;
- private long collectionPeriod;
-
- public boolean isExtendedInfo() {
- return extendedInfo;
- }
-
- public void setExtendedInfo(boolean extendedInfo) {
- this.extendedInfo = extendedInfo;
- }
-
- public StatsCollection getStatsCollection() {
- return statsCollection;
- }
-
- public void setStatsCollection(StatsCollection statsCollection) {
- this.statsCollection = statsCollection;
- }
-
- public long getCollectionPeriod() {
- return collectionPeriod;
- }
-
- public void setCollectionPeriod(long collectionPeriod) {
- this.collectionPeriod = collectionPeriod;
- }
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- boolean calcSize =
- ServletRequestUtils.getBooleanParameter(request, "size", false)
- && SecurityUtils.hasAttributeValueRole(getServletContext(), request);
-
- Application app =
- ApplicationUtils.getApplication(context, isExtendedInfo() ? getContainerWrapper()
- .getResourceResolver() : null, calcSize, getContainerWrapper());
-
- if (isExtendedInfo() && getStatsCollection() != null) {
- String avgStatisticName = "app.avg_proc_time." + app.getName();
- app.setAvgTime(getStatsCollection().getLastValueForStat(avgStatisticName));
- }
-
- return new ModelAndView(getViewName())
- .addObject("app", app)
- .addObject(
- "no_resources",
- Boolean
- .valueOf(!getContainerWrapper().getResourceResolver().supportsPrivateResources()))
- .addObject("collectionPeriod", new Long(getCollectionPeriod()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.model.Application;
+import com.googlecode.psiprobe.model.stats.StatsCollection;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+import com.googlecode.psiprobe.tools.SecurityUtils;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Retrieves Application model object populated with application information.
+ *
+ * @author Andy Shapoval
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class GetApplicationController extends ContextHandlerController {
+
+ /**
+ * denotes whether extended application information and statistics should be collected
+ */
+ private boolean extendedInfo = false;
+ private StatsCollection statsCollection;
+ private long collectionPeriod;
+
+ public boolean isExtendedInfo() {
+ return extendedInfo;
+ }
+
+ public void setExtendedInfo(boolean extendedInfo) {
+ this.extendedInfo = extendedInfo;
+ }
+
+ public StatsCollection getStatsCollection() {
+ return statsCollection;
+ }
+
+ public void setStatsCollection(StatsCollection statsCollection) {
+ this.statsCollection = statsCollection;
+ }
+
+ public long getCollectionPeriod() {
+ return collectionPeriod;
+ }
+
+ public void setCollectionPeriod(long collectionPeriod) {
+ this.collectionPeriod = collectionPeriod;
+ }
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ boolean calcSize =
+ ServletRequestUtils.getBooleanParameter(request, "size", false)
+ && SecurityUtils.hasAttributeValueRole(getServletContext(), request);
+
+ Application app =
+ ApplicationUtils.getApplication(context, isExtendedInfo() ? getContainerWrapper()
+ .getResourceResolver() : null, calcSize, getContainerWrapper());
+
+ if (isExtendedInfo() && getStatsCollection() != null) {
+ String avgStatisticName = "app.avg_proc_time." + app.getName();
+ app.setAvgTime(getStatsCollection().getLastValueForStat(avgStatisticName));
+ }
+
+ return new ModelAndView(getViewName())
+ .addObject("app", app)
+ .addObject(
+ "no_resources",
+ Boolean
+ .valueOf(!getContainerWrapper().getResourceResolver().supportsPrivateResources()))
+ .addObject("collectionPeriod", new Long(getCollectionPeriod()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListAppAttributesController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListAppAttributesController.java
index dbf5e4d208..74eabde89d 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListAppAttributesController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListAppAttributesController.java
@@ -1,44 +1,44 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-import com.googlecode.psiprobe.tools.SecurityUtils;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Retrieves a list of servlet context attributes for a web application.
- *
- * @author Andy Shapoval
- */
-public class ListAppAttributesController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- List appAttrs = ApplicationUtils.getApplicationAttributes(context);
- ModelAndView mv = new ModelAndView(getViewName(), "appAttributes", appAttrs);
-
- if (SecurityUtils.hasAttributeValueRole(getServletContext(), request)) {
- mv.addObject("displayValues", Boolean.TRUE);
- }
- return mv;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+import com.googlecode.psiprobe.tools.SecurityUtils;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Retrieves a list of servlet context attributes for a web application.
+ *
+ * @author Andy Shapoval
+ */
+public class ListAppAttributesController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ List appAttrs = ApplicationUtils.getApplicationAttributes(context);
+ ModelAndView mv = new ModelAndView(getViewName(), "appAttributes", appAttrs);
+
+ if (SecurityUtils.hasAttributeValueRole(getServletContext(), request)) {
+ mv.addObject("displayValues", Boolean.TRUE);
+ }
+ return mv;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListAppInitParamsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListAppInitParamsController.java
index 14d28fffbe..4add1f3588 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListAppInitParamsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListAppInitParamsController.java
@@ -1,42 +1,42 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-import com.googlecode.psiprobe.tools.SecurityUtils;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Retrieves a list of context initialization parameters for a web application.
- *
- * @author Andy Shapoval
- */
-public class ListAppInitParamsController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- ModelAndView mv =
- new ModelAndView(getViewName(), "appInitParams", ApplicationUtils.getApplicationInitParams(
- context, getContainerWrapper()));
- if (SecurityUtils.hasAttributeValueRole(getServletContext(), request)) {
- mv.addObject("allowedToViewValues", Boolean.TRUE);
- }
- return mv;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+import com.googlecode.psiprobe.tools.SecurityUtils;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Retrieves a list of context initialization parameters for a web application.
+ *
+ * @author Andy Shapoval
+ */
+public class ListAppInitParamsController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ ModelAndView mv =
+ new ModelAndView(getViewName(), "appInitParams", ApplicationUtils.getApplicationInitParams(
+ context, getContainerWrapper()));
+ if (SecurityUtils.hasAttributeValueRole(getServletContext(), request)) {
+ mv.addObject("allowedToViewValues", Boolean.TRUE);
+ }
+ return mv;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListApplicationResourcesController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListApplicationResourcesController.java
index 7b0e5a79f5..d5b598b64b 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListApplicationResourcesController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListApplicationResourcesController.java
@@ -1,35 +1,35 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Creates a list of resources for a particular web application.
- *
- * @author Vlad Ilyushchenko
- */
-public class ListApplicationResourcesController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- return new ModelAndView(getViewName(), "resources", getContainerWrapper().getResourceResolver()
- .getApplicationResources(context, getContainerWrapper()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Creates a list of resources for a particular web application.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ListApplicationResourcesController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ return new ModelAndView(getViewName(), "resources", getContainerWrapper().getResourceResolver()
+ .getApplicationResources(context, getContainerWrapper()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListWebappsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListWebappsController.java
index 6a5ecfbb62..fab4bc32d1 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListWebappsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ListWebappsController.java
@@ -1,67 +1,67 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-import com.googlecode.psiprobe.tools.SecurityUtils;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Creates the list of web application installed in the same "host" as the Probe.
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public class ListWebappsController extends TomcatContainerController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- boolean calcSize =
- ServletRequestUtils.getBooleanParameter(request, "size", false)
- && SecurityUtils.hasAttributeValueRole(getServletContext(), request);
-
- List apps;
- try {
- apps = getContainerWrapper().getTomcatContainer().findContexts();
- } catch (NullPointerException ex) {
- throw new IllegalStateException("No container found for your server: "
- + getServletContext().getServerInfo(), ex);
- }
- List applications = new ArrayList(apps.size());
- boolean showResources = getContainerWrapper().getResourceResolver().supportsPrivateResources();
- for (int i = 0; i < apps.size(); i++) {
- Context appContext = (Context) apps.get(i);
-
- // check if this is not the ROOT webapp
- if (appContext.getName() != null) {
- applications.add(ApplicationUtils.getApplication(appContext, getContainerWrapper()
- .getResourceResolver(), calcSize, getContainerWrapper()));
- }
- }
- if (!applications.isEmpty() && !showResources) {
- request.setAttribute("no_resources", Boolean.TRUE);
- }
- return new ModelAndView(getViewName(), "apps", applications);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+import com.googlecode.psiprobe.tools.SecurityUtils;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Creates the list of web application installed in the same "host" as the Probe.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public class ListWebappsController extends TomcatContainerController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ boolean calcSize =
+ ServletRequestUtils.getBooleanParameter(request, "size", false)
+ && SecurityUtils.hasAttributeValueRole(getServletContext(), request);
+
+ List apps;
+ try {
+ apps = getContainerWrapper().getTomcatContainer().findContexts();
+ } catch (NullPointerException ex) {
+ throw new IllegalStateException("No container found for your server: "
+ + getServletContext().getServerInfo(), ex);
+ }
+ List applications = new ArrayList(apps.size());
+ boolean showResources = getContainerWrapper().getResourceResolver().supportsPrivateResources();
+ for (int i = 0; i < apps.size(); i++) {
+ Context appContext = (Context) apps.get(i);
+
+ // check if this is not the ROOT webapp
+ if (appContext.getName() != null) {
+ applications.add(ApplicationUtils.getApplication(appContext, getContainerWrapper()
+ .getResourceResolver(), calcSize, getContainerWrapper()));
+ }
+ }
+ if (!applications.isEmpty() && !showResources) {
+ request.setAttribute("no_resources", Boolean.TRUE);
+ }
+ return new ModelAndView(getViewName(), "apps", applications);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/NoSelfContextHandlerController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/NoSelfContextHandlerController.java
index 402b429946..13f23062d4 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/NoSelfContextHandlerController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/NoSelfContextHandlerController.java
@@ -1,62 +1,62 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.InternalResourceView;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Base class preventing "destructive" actions to be executed on the Probe's context.
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- */
-public abstract class NoSelfContextHandlerController extends ContextHandlerController {
-
- private boolean passQueryString = false;
-
- public boolean isPassQueryString() {
- return passQueryString;
- }
-
- public void setPassQueryString(boolean passQueryString) {
- this.passQueryString = passQueryString;
- }
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- try {
- if (request.getContextPath().equals(contextName)) {
- throw new IllegalStateException(getMessageSourceAccessor().getMessage(
- "probe.src.contextAction.cannotActOnSelf"));
- }
-
- executeAction(contextName);
- } catch (Exception e) {
- request.setAttribute("errorMessage", e.getMessage());
- logger.error(e);
- return new ModelAndView(new InternalResourceView(getViewName()));
- }
- return new ModelAndView(new RedirectView(request.getContextPath() + getViewName()
- + (isPassQueryString() ? "?" + request.getQueryString() : "")));
- }
-
- protected abstract void executeAction(String contextName) throws Exception;
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.InternalResourceView;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Base class preventing "destructive" actions to be executed on the Probe's context.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ */
+public abstract class NoSelfContextHandlerController extends ContextHandlerController {
+
+ private boolean passQueryString = false;
+
+ public boolean isPassQueryString() {
+ return passQueryString;
+ }
+
+ public void setPassQueryString(boolean passQueryString) {
+ this.passQueryString = passQueryString;
+ }
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ try {
+ if (request.getContextPath().equals(contextName)) {
+ throw new IllegalStateException(getMessageSourceAccessor().getMessage(
+ "probe.src.contextAction.cannotActOnSelf"));
+ }
+
+ executeAction(contextName);
+ } catch (Exception e) {
+ request.setAttribute("errorMessage", e.getMessage());
+ logger.error(e);
+ return new ModelAndView(new InternalResourceView(getViewName()));
+ }
+ return new ModelAndView(new RedirectView(request.getContextPath() + getViewName()
+ + (isPassQueryString() ? "?" + request.getQueryString() : "")));
+ }
+
+ protected abstract void executeAction(String contextName) throws Exception;
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ReloadContextController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ReloadContextController.java
index 27f1094942..e3da7abdbb 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ReloadContextController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ReloadContextController.java
@@ -1,29 +1,29 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import org.apache.catalina.Context;
-
-/**
- * Reloads application context.
- *
- * @author Vlad Ilyushchenko
- */
-public class ReloadContextController extends NoSelfContextHandlerController {
-
- protected void executeAction(String contextName) throws Exception {
- Context context = getContainerWrapper().getTomcatContainer().findContext(contextName);
- if (context != null) {
- context.reload();
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import org.apache.catalina.Context;
+
+/**
+ * Reloads application context.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ReloadContextController extends NoSelfContextHandlerController {
+
+ protected void executeAction(String contextName) throws Exception {
+ Context context = getContainerWrapper().getTomcatContainer().findContext(contextName);
+ if (context != null) {
+ context.reload();
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/RemoveApplicationAttributeController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/RemoveApplicationAttributeController.java
index 4a6139af61..03169ce4a9 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/RemoveApplicationAttributeController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/RemoveApplicationAttributeController.java
@@ -1,38 +1,38 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class RemoveApplicationAttributeController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String attrName = ServletRequestUtils.getStringParameter(request, "attr");
- context.getServletContext().removeAttribute(attrName);
-
- return new ModelAndView(new RedirectView(request.getContextPath() + getViewName() + "?"
- + request.getQueryString()));
- }
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class RemoveApplicationAttributeController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String attrName = ServletRequestUtils.getStringParameter(request, "attr");
+ context.getServletContext().removeAttribute(attrName);
+
+ return new ModelAndView(new RedirectView(request.getContextPath() + getViewName() + "?"
+ + request.getQueryString()));
+ }
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/StartContextController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/StartContextController.java
index 5abd67b7c6..0c5c25fc41 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/StartContextController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/StartContextController.java
@@ -1,24 +1,24 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-/**
- * Starts a web application.
- *
- * @author Vlad Ilyushchenko
- */
-public class StartContextController extends NoSelfContextHandlerController {
-
- protected void executeAction(String contextName) throws Exception {
- getContainerWrapper().getTomcatContainer().start(contextName);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+/**
+ * Starts a web application.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class StartContextController extends NoSelfContextHandlerController {
+
+ protected void executeAction(String contextName) throws Exception {
+ getContainerWrapper().getTomcatContainer().start(contextName);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/StopContextController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/StopContextController.java
index 74261273c0..ffc5ce2ade 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/StopContextController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/StopContextController.java
@@ -1,24 +1,24 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-/**
- * Stops a web application.
- *
- * @author Vlad Ilyushchenko
- */
-public class StopContextController extends NoSelfContextHandlerController {
-
- protected void executeAction(String contextName) throws Exception {
- getContainerWrapper().getTomcatContainer().stop(contextName);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+/**
+ * Stops a web application.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class StopContextController extends NoSelfContextHandlerController {
+
+ protected void executeAction(String contextName) throws Exception {
+ getContainerWrapper().getTomcatContainer().stop(contextName);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ViewXMLConfController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ViewXMLConfController.java
index 93110151f7..abbe80394c 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ViewXMLConfController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/apps/ViewXMLConfController.java
@@ -1,119 +1,119 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.apps;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.File;
-import java.io.FileInputStream;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Displays a deployment descriptor (web.xml) or a context descriptor (context.xml) of a web
- * application
- *
- * @author Andy Shapoval
- * @author Vlad Ilyushchenko
- */
-public class ViewXMLConfController extends ContextHandlerController {
-
- public static final String TARGET_WEB_XML = "web.xml";
- public static final String TARGET_CONTEXT_XML = "context.xml";
-
- /**
- * Type of a file to be displayed
- */
- private String displayTarget;
-
- /**
- * Url that will be used in the view to download the file
- */
- private String downloadUrl;
-
- public String getDisplayTarget() {
- return displayTarget;
- }
-
- public void setDisplayTarget(String displayTarget) {
- this.displayTarget = displayTarget;
- }
-
- public String getDownloadUrl() {
- return downloadUrl;
- }
-
- public void setDownloadUrl(String downloadUrl) {
- this.downloadUrl = downloadUrl;
- }
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- if (displayTarget == null) {
- throw new RuntimeException("Display target is not set for " + getClass().getName());
- }
-
- String xmlPath;
- File xmlFile = null;
- ModelAndView mv = new ModelAndView(getViewName());
-
- if (TARGET_WEB_XML.equals(displayTarget)) {
- ServletContext sctx = context.getServletContext();
- xmlPath = sctx.getRealPath("/WEB-INF/web.xml");
- xmlFile = new File(xmlPath);
- mv.addObject("fileDesc",
- getMessageSourceAccessor().getMessage("probe.src.app.viewxmlconf.webxml.desc"));
- } else if (TARGET_CONTEXT_XML.equals(displayTarget)) {
- xmlFile = getContainerWrapper().getTomcatContainer().getConfigFile(context);
- if (xmlFile != null) {
- xmlPath = xmlFile.getPath();
- } else {
- xmlPath = null;
- }
- mv.addObject("fileDesc",
- getMessageSourceAccessor().getMessage("probe.src.app.viewxmlconf.contextxml.desc"));
- } else {
- throw new RuntimeException("Unknown display target " + getDisplayTarget());
- }
-
- mv.addObject("displayTarget", displayTarget);
- mv.addObject("downloadUrl", downloadUrl);
-
- if (xmlFile != null) {
- mv.addObject("fileName", xmlFile.getName());
- if (xmlFile.exists()) {
- FileInputStream fis = new FileInputStream(xmlFile);
- try {
- String encoding = System.getProperty("file.encoding");
- mv.addObject("content", Utils.highlightStream("web.xml", fis, "xml",
- encoding == null ? "ISO-8859-1" : encoding));
- } finally {
- fis.close();
- }
- } else {
- logger.debug("File " + xmlPath + " of " + contextName + " application does not exists.");
- }
- } else {
- logger.debug("Cannot determine path to " + getDisplayTarget() + " file of " + contextName
- + " application.");
- }
-
- return mv;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.apps;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Displays a deployment descriptor (web.xml) or a context descriptor (context.xml) of a web
+ * application
+ *
+ * @author Andy Shapoval
+ * @author Vlad Ilyushchenko
+ */
+public class ViewXMLConfController extends ContextHandlerController {
+
+ public static final String TARGET_WEB_XML = "web.xml";
+ public static final String TARGET_CONTEXT_XML = "context.xml";
+
+ /**
+ * Type of a file to be displayed
+ */
+ private String displayTarget;
+
+ /**
+ * Url that will be used in the view to download the file
+ */
+ private String downloadUrl;
+
+ public String getDisplayTarget() {
+ return displayTarget;
+ }
+
+ public void setDisplayTarget(String displayTarget) {
+ this.displayTarget = displayTarget;
+ }
+
+ public String getDownloadUrl() {
+ return downloadUrl;
+ }
+
+ public void setDownloadUrl(String downloadUrl) {
+ this.downloadUrl = downloadUrl;
+ }
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ if (displayTarget == null) {
+ throw new RuntimeException("Display target is not set for " + getClass().getName());
+ }
+
+ String xmlPath;
+ File xmlFile = null;
+ ModelAndView mv = new ModelAndView(getViewName());
+
+ if (TARGET_WEB_XML.equals(displayTarget)) {
+ ServletContext sctx = context.getServletContext();
+ xmlPath = sctx.getRealPath("/WEB-INF/web.xml");
+ xmlFile = new File(xmlPath);
+ mv.addObject("fileDesc",
+ getMessageSourceAccessor().getMessage("probe.src.app.viewxmlconf.webxml.desc"));
+ } else if (TARGET_CONTEXT_XML.equals(displayTarget)) {
+ xmlFile = getContainerWrapper().getTomcatContainer().getConfigFile(context);
+ if (xmlFile != null) {
+ xmlPath = xmlFile.getPath();
+ } else {
+ xmlPath = null;
+ }
+ mv.addObject("fileDesc",
+ getMessageSourceAccessor().getMessage("probe.src.app.viewxmlconf.contextxml.desc"));
+ } else {
+ throw new RuntimeException("Unknown display target " + getDisplayTarget());
+ }
+
+ mv.addObject("displayTarget", displayTarget);
+ mv.addObject("downloadUrl", downloadUrl);
+
+ if (xmlFile != null) {
+ mv.addObject("fileName", xmlFile.getName());
+ if (xmlFile.exists()) {
+ FileInputStream fis = new FileInputStream(xmlFile);
+ try {
+ String encoding = System.getProperty("file.encoding");
+ mv.addObject("content", Utils.highlightStream("web.xml", fis, "xml",
+ encoding == null ? "ISO-8859-1" : encoding));
+ } finally {
+ fis.close();
+ }
+ } else {
+ logger.debug("File " + xmlPath + " of " + contextName + " application does not exists.");
+ }
+ } else {
+ logger.debug("Cannot determine path to " + getDisplayTarget() + " file of " + contextName
+ + " application.");
+ }
+
+ return mv;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/cluster/ClusterStatsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/cluster/ClusterStatsController.java
index 2e7e3e10f6..796ae05bce 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/cluster/ClusterStatsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/cluster/ClusterStatsController.java
@@ -1,69 +1,69 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.cluster;
-
-import com.googlecode.psiprobe.TomcatContainer;
-import com.googlecode.psiprobe.beans.ClusterWrapperBean;
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-import com.googlecode.psiprobe.model.jmx.Cluster;
-
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ClusterStatsController extends TomcatContainerController {
-
- private ClusterWrapperBean clusterWrapper;
- private boolean loadMembers = true;
- private long collectionPeriod;
-
- public ClusterWrapperBean getClusterWrapper() {
- return clusterWrapper;
- }
-
- public void setClusterWrapper(ClusterWrapperBean clusterWrapper) {
- this.clusterWrapper = clusterWrapper;
- }
-
- public boolean isLoadMembers() {
- return loadMembers;
- }
-
- public void setLoadMembers(boolean loadMembers) {
- this.loadMembers = loadMembers;
- }
-
- public long getCollectionPeriod() {
- return collectionPeriod;
- }
-
- public void setCollectionPeriod(long collectionPeriod) {
- this.collectionPeriod = collectionPeriod;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- TomcatContainer container = getContainerWrapper().getTomcatContainer();
- Cluster cluster =
- getClusterWrapper().getCluster(container.getName(), container.getHostName(),
- isLoadMembers());
- return new ModelAndView(getViewName()).addObject("cluster", cluster).addObject(
- "collectionPeriod", new Long(getCollectionPeriod()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.cluster;
+
+import com.googlecode.psiprobe.TomcatContainer;
+import com.googlecode.psiprobe.beans.ClusterWrapperBean;
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+import com.googlecode.psiprobe.model.jmx.Cluster;
+
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ClusterStatsController extends TomcatContainerController {
+
+ private ClusterWrapperBean clusterWrapper;
+ private boolean loadMembers = true;
+ private long collectionPeriod;
+
+ public ClusterWrapperBean getClusterWrapper() {
+ return clusterWrapper;
+ }
+
+ public void setClusterWrapper(ClusterWrapperBean clusterWrapper) {
+ this.clusterWrapper = clusterWrapper;
+ }
+
+ public boolean isLoadMembers() {
+ return loadMembers;
+ }
+
+ public void setLoadMembers(boolean loadMembers) {
+ this.loadMembers = loadMembers;
+ }
+
+ public long getCollectionPeriod() {
+ return collectionPeriod;
+ }
+
+ public void setCollectionPeriod(long collectionPeriod) {
+ this.collectionPeriod = collectionPeriod;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ TomcatContainer container = getContainerWrapper().getTomcatContainer();
+ Cluster cluster =
+ getClusterWrapper().getCluster(container.getName(), container.getHostName(),
+ isLoadMembers());
+ return new ModelAndView(getViewName()).addObject("cluster", cluster).addObject(
+ "collectionPeriod", new Long(getCollectionPeriod()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/GetConnectorController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/GetConnectorController.java
index bf703e48f0..868bd7b53c 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/GetConnectorController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/GetConnectorController.java
@@ -1,61 +1,61 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.connectors;
-
-import com.googlecode.psiprobe.beans.ContainerListenerBean;
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-import com.googlecode.psiprobe.model.Connector;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class GetConnectorController extends TomcatContainerController {
-
- private ContainerListenerBean containerListenerBean;
-
- public ContainerListenerBean getContainerListenerBean() {
- return containerListenerBean;
- }
-
- public void setContainerListenerBean(ContainerListenerBean containerListenerBean) {
- this.containerListenerBean = containerListenerBean;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- String connectorName = ServletRequestUtils.getStringParameter(request, "cn", null);
- Connector connector = null;
-
- if (connectorName != null) {
- List connectors = containerListenerBean.getConnectors(false);
- for (int i = 0; i < connectors.size(); i++) {
- Connector p = (Connector) connectors.get(i);
- if (connectorName.equals(p.getName())) {
- connector = p;
- break;
- }
- }
- }
-
- return new ModelAndView(getViewName(), "connector", connector);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.connectors;
+
+import com.googlecode.psiprobe.beans.ContainerListenerBean;
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+import com.googlecode.psiprobe.model.Connector;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class GetConnectorController extends TomcatContainerController {
+
+ private ContainerListenerBean containerListenerBean;
+
+ public ContainerListenerBean getContainerListenerBean() {
+ return containerListenerBean;
+ }
+
+ public void setContainerListenerBean(ContainerListenerBean containerListenerBean) {
+ this.containerListenerBean = containerListenerBean;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+ String connectorName = ServletRequestUtils.getStringParameter(request, "cn", null);
+ Connector connector = null;
+
+ if (connectorName != null) {
+ List connectors = containerListenerBean.getConnectors(false);
+ for (int i = 0; i < connectors.size(); i++) {
+ Connector p = (Connector) connectors.get(i);
+ if (connectorName.equals(p.getName())) {
+ connector = p;
+ break;
+ }
+ }
+ }
+
+ return new ModelAndView(getViewName(), "connector", connector);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/ListConnectorsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/ListConnectorsController.java
index ee3e41a6f4..856bb4c796 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/ListConnectorsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/ListConnectorsController.java
@@ -1,77 +1,77 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.connectors;
-
-import com.googlecode.psiprobe.beans.ContainerListenerBean;
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-import com.googlecode.psiprobe.model.Connector;
-import com.googlecode.psiprobe.model.RequestProcessor;
-
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ListConnectorsController extends TomcatContainerController {
-
- private ContainerListenerBean containerListenerBean;
- private boolean includeRequestProcessors;
- private long collectionPeriod;
-
- public ContainerListenerBean getContainerListenerBean() {
- return containerListenerBean;
- }
-
- public void setContainerListenerBean(ContainerListenerBean containerListenerBean) {
- this.containerListenerBean = containerListenerBean;
- }
-
- public long getCollectionPeriod() {
- return collectionPeriod;
- }
-
- public void setCollectionPeriod(long collectionPeriod) {
- this.collectionPeriod = collectionPeriod;
- }
-
- public boolean isIncludeRequestProcessors() {
- return includeRequestProcessors;
- }
-
- public void setIncludeRequestProcessors(boolean includeRequestProcessors) {
- this.includeRequestProcessors = includeRequestProcessors;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- boolean workerThreadNameSupported = false;
- List connectors = containerListenerBean.getConnectors(includeRequestProcessors);
-
- if (connectors.size() > 0 && ((Connector) connectors.get(0)).getRequestProcessors().size() > 0) {
- workerThreadNameSupported =
- ((RequestProcessor) ((Connector) connectors.get(0)).getRequestProcessors().get(0))
- .isWorkerThreadNameSupported();
- }
-
- return new ModelAndView(getViewName()).addObject("connectors", connectors)
- .addObject("workerThreadNameSupported", Boolean.valueOf(workerThreadNameSupported))
- .addObject("collectionPeriod", new Long(getCollectionPeriod()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.connectors;
+
+import com.googlecode.psiprobe.beans.ContainerListenerBean;
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+import com.googlecode.psiprobe.model.Connector;
+import com.googlecode.psiprobe.model.RequestProcessor;
+
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ListConnectorsController extends TomcatContainerController {
+
+ private ContainerListenerBean containerListenerBean;
+ private boolean includeRequestProcessors;
+ private long collectionPeriod;
+
+ public ContainerListenerBean getContainerListenerBean() {
+ return containerListenerBean;
+ }
+
+ public void setContainerListenerBean(ContainerListenerBean containerListenerBean) {
+ this.containerListenerBean = containerListenerBean;
+ }
+
+ public long getCollectionPeriod() {
+ return collectionPeriod;
+ }
+
+ public void setCollectionPeriod(long collectionPeriod) {
+ this.collectionPeriod = collectionPeriod;
+ }
+
+ public boolean isIncludeRequestProcessors() {
+ return includeRequestProcessors;
+ }
+
+ public void setIncludeRequestProcessors(boolean includeRequestProcessors) {
+ this.includeRequestProcessors = includeRequestProcessors;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ boolean workerThreadNameSupported = false;
+ List connectors = containerListenerBean.getConnectors(includeRequestProcessors);
+
+ if (connectors.size() > 0 && ((Connector) connectors.get(0)).getRequestProcessors().size() > 0) {
+ workerThreadNameSupported =
+ ((RequestProcessor) ((Connector) connectors.get(0)).getRequestProcessors().get(0))
+ .isWorkerThreadNameSupported();
+ }
+
+ return new ModelAndView(getViewName()).addObject("connectors", connectors)
+ .addObject("workerThreadNameSupported", Boolean.valueOf(workerThreadNameSupported))
+ .addObject("collectionPeriod", new Long(getCollectionPeriod()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/ZoomChartController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/ZoomChartController.java
index 42021d2fb8..b997cd32a0 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/ZoomChartController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/connectors/ZoomChartController.java
@@ -1,42 +1,42 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.connectors;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Mark Lewis
- */
-public class ZoomChartController extends ParameterizableViewController {
-
- private long collectionPeriod;
-
- public long getCollectionPeriod() {
- return collectionPeriod;
- }
-
- public void setCollectionPeriod(long collectionPeriod) {
- this.collectionPeriod = collectionPeriod;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- return super.handleRequestInternal(request, response).addObject("collectionPeriod",
- new Long(getCollectionPeriod()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.connectors;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Mark Lewis
+ */
+public class ZoomChartController extends ParameterizableViewController {
+
+ private long collectionPeriod;
+
+ public long getCollectionPeriod() {
+ return collectionPeriod;
+ }
+
+ public void setCollectionPeriod(long collectionPeriod) {
+ this.collectionPeriod = collectionPeriod;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ return super.handleRequestInternal(request, response).addObject("collectionPeriod",
+ new Long(getCollectionPeriod()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ListAllJdbcResourceGroups.java b/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ListAllJdbcResourceGroups.java
index 48f40fdd40..1dfbe4b93f 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ListAllJdbcResourceGroups.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ListAllJdbcResourceGroups.java
@@ -1,90 +1,90 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.datasources;
-
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-import com.googlecode.psiprobe.model.ApplicationResource;
-import com.googlecode.psiprobe.model.DataSourceInfo;
-import com.googlecode.psiprobe.model.DataSourceInfoGroup;
-
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Produces a list of all datasources configured within the container grouped by JDBC URL.
- *
- * @author Andy Shapoval
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ListAllJdbcResourceGroups extends TomcatContainerController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- List dataSourceGroups = new ArrayList();
- List dataSources = new ArrayList();
-
- List privateResources = getContainerWrapper().getPrivateDataSources();
- List globalResources = getContainerWrapper().getGlobalDataSources();
-
- // filter out anything that is not a datasource
- // and use only those datasources that are properly configured
- // as aggregated totals would not make any sense otherwise
- filterValidDataSources(privateResources, dataSources);
- filterValidDataSources(globalResources, dataSources);
-
- // sort datasources by JDBC URL
- Collections.sort(dataSources, new Comparator() {
- public int compare(Object o1, Object o2) {
- String jdbcURL1 = ((DataSourceInfo) o1).getJdbcURL();
- String jdbcURL2 = ((DataSourceInfo) o2).getJdbcURL();
-
- // here we rely on the the filter not to add any datasources with a null jdbcUrl to the list
-
- return jdbcURL1.compareToIgnoreCase(jdbcURL2);
- }
- });
-
- // group datasources by JDBC URL and calculate aggregated totals
- DataSourceInfoGroup dsGroup = null;
- for (Iterator i = dataSources.iterator(); i.hasNext();) {
- DataSourceInfo ds = (DataSourceInfo) i.next();
-
- if (dsGroup == null || !dsGroup.getJdbcURL().equalsIgnoreCase(ds.getJdbcURL())) {
- dsGroup = new DataSourceInfoGroup(ds);
- dataSourceGroups.add(dsGroup);
- } else {
- dsGroup.addDataSourceInfo(ds);
- }
- }
-
- return new ModelAndView(getViewName(), "dataSourceGroups", dataSourceGroups);
- }
-
- protected void filterValidDataSources(List resources, List dataSources) {
- for (Iterator i = resources.iterator(); i.hasNext();) {
- ApplicationResource res = (ApplicationResource) i.next();
- if (res.isLookedUp() && res.getDataSourceInfo() != null
- && res.getDataSourceInfo().getJdbcURL() != null) {
- dataSources.add(res.getDataSourceInfo());
- }
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.datasources;
+
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+import com.googlecode.psiprobe.model.ApplicationResource;
+import com.googlecode.psiprobe.model.DataSourceInfo;
+import com.googlecode.psiprobe.model.DataSourceInfoGroup;
+
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Produces a list of all datasources configured within the container grouped by JDBC URL.
+ *
+ * @author Andy Shapoval
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ListAllJdbcResourceGroups extends TomcatContainerController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+ List dataSourceGroups = new ArrayList();
+ List dataSources = new ArrayList();
+
+ List privateResources = getContainerWrapper().getPrivateDataSources();
+ List globalResources = getContainerWrapper().getGlobalDataSources();
+
+ // filter out anything that is not a datasource
+ // and use only those datasources that are properly configured
+ // as aggregated totals would not make any sense otherwise
+ filterValidDataSources(privateResources, dataSources);
+ filterValidDataSources(globalResources, dataSources);
+
+ // sort datasources by JDBC URL
+ Collections.sort(dataSources, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ String jdbcURL1 = ((DataSourceInfo) o1).getJdbcURL();
+ String jdbcURL2 = ((DataSourceInfo) o2).getJdbcURL();
+
+ // here we rely on the the filter not to add any datasources with a null jdbcUrl to the list
+
+ return jdbcURL1.compareToIgnoreCase(jdbcURL2);
+ }
+ });
+
+ // group datasources by JDBC URL and calculate aggregated totals
+ DataSourceInfoGroup dsGroup = null;
+ for (Iterator i = dataSources.iterator(); i.hasNext();) {
+ DataSourceInfo ds = (DataSourceInfo) i.next();
+
+ if (dsGroup == null || !dsGroup.getJdbcURL().equalsIgnoreCase(ds.getJdbcURL())) {
+ dsGroup = new DataSourceInfoGroup(ds);
+ dataSourceGroups.add(dsGroup);
+ } else {
+ dsGroup.addDataSourceInfo(ds);
+ }
+ }
+
+ return new ModelAndView(getViewName(), "dataSourceGroups", dataSourceGroups);
+ }
+
+ protected void filterValidDataSources(List resources, List dataSources) {
+ for (Iterator i = resources.iterator(); i.hasNext();) {
+ ApplicationResource res = (ApplicationResource) i.next();
+ if (res.isLookedUp() && res.getDataSourceInfo() != null
+ && res.getDataSourceInfo().getJdbcURL() != null) {
+ dataSources.add(res.getDataSourceInfo());
+ }
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ListAllJdbcResourcesController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ListAllJdbcResourcesController.java
index b907c873de..9f5050d27a 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ListAllJdbcResourcesController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ListAllJdbcResourcesController.java
@@ -1,48 +1,48 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.datasources;
-
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Creates a list of all configured datasources for all web applications within the container.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ListAllJdbcResourcesController extends TomcatContainerController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse httpServletResponse) throws Exception {
-
- boolean supportsGlobal = getContainerWrapper().getResourceResolver().supportsGlobalResources();
- boolean supportsPrivate =
- getContainerWrapper().getResourceResolver().supportsPrivateResources();
- boolean supportsDSLookup =
- getContainerWrapper().getResourceResolver().supportsDataSourceLookup();
- List privateResources = getContainerWrapper().getPrivateDataSources();
- List globalResources = getContainerWrapper().getGlobalDataSources();
- return new ModelAndView(getViewName())
- .addObject("supportsGlobal", Boolean.valueOf(supportsGlobal))
- .addObject("supportsPrivate", Boolean.valueOf(supportsPrivate))
- .addObject("supportsDSLookup", Boolean.valueOf(supportsDSLookup))
- .addObject("privateResources", privateResources)
- .addObject("globalResources", globalResources);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.datasources;
+
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Creates a list of all configured datasources for all web applications within the container.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ListAllJdbcResourcesController extends TomcatContainerController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse httpServletResponse) throws Exception {
+
+ boolean supportsGlobal = getContainerWrapper().getResourceResolver().supportsGlobalResources();
+ boolean supportsPrivate =
+ getContainerWrapper().getResourceResolver().supportsPrivateResources();
+ boolean supportsDSLookup =
+ getContainerWrapper().getResourceResolver().supportsDataSourceLookup();
+ List privateResources = getContainerWrapper().getPrivateDataSources();
+ List globalResources = getContainerWrapper().getGlobalDataSources();
+ return new ModelAndView(getViewName())
+ .addObject("supportsGlobal", Boolean.valueOf(supportsGlobal))
+ .addObject("supportsPrivate", Boolean.valueOf(supportsPrivate))
+ .addObject("supportsDSLookup", Boolean.valueOf(supportsDSLookup))
+ .addObject("privateResources", privateResources)
+ .addObject("globalResources", globalResources);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ResetDataSourceController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ResetDataSourceController.java
index 97122042bc..a15a9e0f10 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ResetDataSourceController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/datasources/ResetDataSourceController.java
@@ -1,80 +1,80 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.datasources;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.naming.NamingException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Resets datasource if the datasource supports it.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ResetDataSourceController extends ContextHandlerController {
-
- private String replacePattern;
-
- public String getReplacePattern() {
- return replacePattern;
- }
-
- public void setReplacePattern(String replacePattern) {
- this.replacePattern = replacePattern;
- }
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String resourceName = ServletRequestUtils.getStringParameter(request, "resource", null);
- String referer = request.getHeader("Referer");
- String redirectURL;
- if (referer != null) {
- redirectURL = referer.replaceAll(replacePattern, "");
- } else {
- redirectURL = request.getContextPath() + getViewName();
- }
-
- if (resourceName != null && resourceName.length() > 0) {
- boolean reset = false;
- try {
- reset =
- getContainerWrapper().getResourceResolver().resetResource(context, resourceName,
- getContainerWrapper());
- } catch (NamingException e) {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.reset.datasource.notfound",
- new Object[] {resourceName}));
- }
- if (!reset) {
- request.setAttribute("errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.reset.datasource.c3p0"));
- }
-
- }
- logger.debug("Redirected to " + redirectURL);
- return new ModelAndView(new RedirectView(redirectURL));
- }
-
- protected boolean isContextOptional() {
- return !getContainerWrapper().getResourceResolver().supportsPrivateResources();
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.datasources;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.naming.NamingException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Resets datasource if the datasource supports it.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ResetDataSourceController extends ContextHandlerController {
+
+ private String replacePattern;
+
+ public String getReplacePattern() {
+ return replacePattern;
+ }
+
+ public void setReplacePattern(String replacePattern) {
+ this.replacePattern = replacePattern;
+ }
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String resourceName = ServletRequestUtils.getStringParameter(request, "resource", null);
+ String referer = request.getHeader("Referer");
+ String redirectURL;
+ if (referer != null) {
+ redirectURL = referer.replaceAll(replacePattern, "");
+ } else {
+ redirectURL = request.getContextPath() + getViewName();
+ }
+
+ if (resourceName != null && resourceName.length() > 0) {
+ boolean reset = false;
+ try {
+ reset =
+ getContainerWrapper().getResourceResolver().resetResource(context, resourceName,
+ getContainerWrapper());
+ } catch (NamingException e) {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.reset.datasource.notfound",
+ new Object[] {resourceName}));
+ }
+ if (!reset) {
+ request.setAttribute("errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.reset.datasource.c3p0"));
+ }
+
+ }
+ logger.debug("Redirected to " + redirectURL);
+ return new ModelAndView(new RedirectView(redirectURL));
+ }
+
+ protected boolean isContextOptional() {
+ return !getContainerWrapper().getResourceResolver().supportsPrivateResources();
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/DeployContextController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/DeployContextController.java
index 81f3d056b8..8632ef1560 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/DeployContextController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/DeployContextController.java
@@ -1,55 +1,55 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.deploy;
-
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.InternalResourceView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Forces Tomcat to install a pre-configured context name.
- *
- * @author Vlad Ilyushchenko
- */
-public class DeployContextController extends TomcatContainerController {
-
- public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
- throws Exception {
-
- String contextName = ServletRequestUtils.getStringParameter(request, "context", null);
-
- if (contextName != null) {
- try {
- if (getContainerWrapper().getTomcatContainer().installContext(contextName)) {
- request.setAttribute(
- "successMessage",
- getMessageSourceAccessor().getMessage("probe.src.deploy.context.success",
- new Object[] {contextName}));
- } else {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.deploy.context.failure",
- new Object[] {contextName}));
- }
- } catch (Exception e) {
- request.setAttribute("errorMessage", e.getMessage());
- }
- }
-
- return new ModelAndView(new InternalResourceView(getViewName()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.deploy;
+
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.InternalResourceView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Forces Tomcat to install a pre-configured context name.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class DeployContextController extends TomcatContainerController {
+
+ public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
+ throws Exception {
+
+ String contextName = ServletRequestUtils.getStringParameter(request, "context", null);
+
+ if (contextName != null) {
+ try {
+ if (getContainerWrapper().getTomcatContainer().installContext(contextName)) {
+ request.setAttribute(
+ "successMessage",
+ getMessageSourceAccessor().getMessage("probe.src.deploy.context.success",
+ new Object[] {contextName}));
+ } else {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.deploy.context.failure",
+ new Object[] {contextName}));
+ }
+ } catch (Exception e) {
+ request.setAttribute("errorMessage", e.getMessage());
+ }
+ }
+
+ return new ModelAndView(new InternalResourceView(getViewName()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/UndeployContextController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/UndeployContextController.java
index e68b797bad..2b30f861e7 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/UndeployContextController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/UndeployContextController.java
@@ -1,62 +1,62 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.deploy;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.InternalResourceView;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Undeploys a web application.
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- */
-public class UndeployContextController extends ContextHandlerController {
-
- private String failureViewName = null;
-
- public String getFailureViewName() {
- return failureViewName;
- }
-
- public void setFailureViewName(String failureViewName) {
- this.failureViewName = failureViewName;
- }
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
- try {
- if (request.getContextPath().equals(contextName)) {
- throw new IllegalStateException(getMessageSourceAccessor().getMessage(
- "probe.src.contextAction.cannotActOnSelf"));
- }
-
- getContainerWrapper().getTomcatContainer().remove(contextName);
-
- } catch (Exception e) {
- request.setAttribute("errorMessage", e.getMessage());
- logger.error(e);
- return new ModelAndView(new InternalResourceView(getFailureViewName() == null ? getViewName()
- : getFailureViewName()));
- }
- return new ModelAndView(new RedirectView(request.getContextPath() + getViewName()));
- }
-
- protected void executeAction(String contextName) throws Exception {}
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.deploy;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.InternalResourceView;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Undeploys a web application.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ */
+public class UndeployContextController extends ContextHandlerController {
+
+ private String failureViewName = null;
+
+ public String getFailureViewName() {
+ return failureViewName;
+ }
+
+ public void setFailureViewName(String failureViewName) {
+ this.failureViewName = failureViewName;
+ }
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+ try {
+ if (request.getContextPath().equals(contextName)) {
+ throw new IllegalStateException(getMessageSourceAccessor().getMessage(
+ "probe.src.contextAction.cannotActOnSelf"));
+ }
+
+ getContainerWrapper().getTomcatContainer().remove(contextName);
+
+ } catch (Exception e) {
+ request.setAttribute("errorMessage", e.getMessage());
+ logger.error(e);
+ return new ModelAndView(new InternalResourceView(getFailureViewName() == null ? getViewName()
+ : getFailureViewName()));
+ }
+ return new ModelAndView(new RedirectView(request.getContextPath() + getViewName()));
+ }
+
+ protected void executeAction(String contextName) throws Exception {}
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/UploadWarController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/UploadWarController.java
index 1b8a4677b9..738db6b0a8 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/UploadWarController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/deploy/UploadWarController.java
@@ -1,178 +1,178 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.deploy;
-
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-import com.googlecode.psiprobe.controllers.jsp.DisplayJspController;
-import com.googlecode.psiprobe.model.jsp.Summary;
-
-import org.apache.catalina.Context;
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.FileUpload;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.commons.fileupload.servlet.ServletRequestContext;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.InternalResourceView;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Iterator;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Uploads and installs web application from a .WAR.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class UploadWarController extends TomcatContainerController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- if (FileUpload.isMultipartContent(new ServletRequestContext(request))) {
-
- File tmpWar = null;
- String contextName = null;
- boolean update = false;
- boolean compile = false;
- boolean discard = false;
-
- // parse multipart request and extract the file
- FileItemFactory factory =
- new DiskFileItemFactory(1048000, new File(System.getProperty("java.io.tmpdir")));
- ServletFileUpload upload = new ServletFileUpload(factory);
- upload.setSizeMax(-1);
- upload.setHeaderEncoding("UTF8");
- try {
- for (Iterator it = upload.parseRequest(request).iterator(); it.hasNext();) {
- FileItem fi = (FileItem) it.next();
- if (!fi.isFormField()) {
- if (fi.getName() != null && fi.getName().length() > 0) {
- tmpWar =
- new File(System.getProperty("java.io.tmpdir"),
- FilenameUtils.getName(fi.getName()));
- fi.write(tmpWar);
- }
- } else if ("context".equals(fi.getFieldName())) {
- contextName = fi.getString();
- } else if ("update".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
- update = true;
- } else if ("compile".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
- compile = true;
- } else if ("discard".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
- discard = true;
- }
- }
- } catch (Exception e) {
- logger.fatal("Could not process file upload", e);
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.deploy.war.uploadfailure",
- new Object[] {e.getMessage()}));
- if (tmpWar != null && tmpWar.exists()) {
- tmpWar.delete();
- }
- tmpWar = null;
- }
-
- String errMsg = null;
-
- if (tmpWar != null) {
- try {
- if (tmpWar.getName().endsWith(".war")) {
-
- if (contextName == null || contextName.length() == 0) {
- String warFileName = tmpWar.getName().replaceAll("\\.war$", "");
- contextName = "/" + warFileName;
- }
-
- contextName = getContainerWrapper().getTomcatContainer().formatContextName(contextName);
-
- /*
- * pass the name of the newly deployed context to the presentation layer using this name
- * the presentation layer can render a url to view compilation details
- */
- String visibleContextName = "".equals(contextName) ? "/" : contextName;
- request.setAttribute("contextName", visibleContextName);
-
- if (update
- && getContainerWrapper().getTomcatContainer().findContext(contextName) != null) {
-
- logger.debug("updating " + contextName + ": removing the old copy");
- getContainerWrapper().getTomcatContainer().remove(contextName);
- }
-
- if (getContainerWrapper().getTomcatContainer().findContext(contextName) == null) {
- // move the .war to tomcat application base dir
- String destWarFilename =
- getContainerWrapper().getTomcatContainer().formatContextFilename(contextName);
- File destWar =
- new File(getContainerWrapper().getTomcatContainer().getAppBase(), destWarFilename
- + ".war");
-
- FileUtils.moveFile(tmpWar, destWar);
-
- // let Tomcat know that the file is there
- getContainerWrapper().getTomcatContainer().installWar(contextName,
- new URL("jar:" + destWar.toURI().toURL().toString() + "!/"));
-
- Context ctx = getContainerWrapper().getTomcatContainer().findContext(contextName);
- if (ctx == null) {
- errMsg =
- getMessageSourceAccessor().getMessage("probe.src.deploy.war.notinstalled",
- new Object[] {visibleContextName});
- } else {
- request.setAttribute("success", Boolean.TRUE);
- if (discard) {
- getContainerWrapper().getTomcatContainer().discardWorkDir(ctx);
- }
- if (compile) {
- Summary summary = new Summary();
- summary.setName(ctx.getName());
- getContainerWrapper().getTomcatContainer().listContextJsps(ctx, summary, true);
- request.getSession(true).setAttribute(DisplayJspController.SUMMARY_ATTRIBUTE,
- summary);
- request.setAttribute("compileSuccess", Boolean.TRUE);
- }
- }
-
- } else {
- errMsg =
- getMessageSourceAccessor().getMessage("probe.src.deploy.war.alreadyExists",
- new Object[] {visibleContextName});
- }
- } else {
- errMsg = getMessageSourceAccessor().getMessage("probe.src.deploy.war.notWar.failure");
- }
- } catch (Exception e) {
- errMsg =
- getMessageSourceAccessor().getMessage("probe.src.deploy.war.failure",
- new Object[] {e.getMessage()});
- logger.error("Tomcat throw an exception when trying to deploy", e);
- } finally {
- if (errMsg != null) {
- request.setAttribute("errorMessage", errMsg);
- }
- tmpWar.delete();
- }
- }
- }
- return new ModelAndView(new InternalResourceView(getViewName()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.deploy;
+
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+import com.googlecode.psiprobe.controllers.jsp.DisplayJspController;
+import com.googlecode.psiprobe.model.jsp.Summary;
+
+import org.apache.catalina.Context;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.FileUpload;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.apache.commons.fileupload.servlet.ServletRequestContext;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.InternalResourceView;
+
+import java.io.File;
+import java.net.URL;
+import java.util.Iterator;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Uploads and installs web application from a .WAR.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class UploadWarController extends TomcatContainerController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ if (FileUpload.isMultipartContent(new ServletRequestContext(request))) {
+
+ File tmpWar = null;
+ String contextName = null;
+ boolean update = false;
+ boolean compile = false;
+ boolean discard = false;
+
+ // parse multipart request and extract the file
+ FileItemFactory factory =
+ new DiskFileItemFactory(1048000, new File(System.getProperty("java.io.tmpdir")));
+ ServletFileUpload upload = new ServletFileUpload(factory);
+ upload.setSizeMax(-1);
+ upload.setHeaderEncoding("UTF8");
+ try {
+ for (Iterator it = upload.parseRequest(request).iterator(); it.hasNext();) {
+ FileItem fi = (FileItem) it.next();
+ if (!fi.isFormField()) {
+ if (fi.getName() != null && fi.getName().length() > 0) {
+ tmpWar =
+ new File(System.getProperty("java.io.tmpdir"),
+ FilenameUtils.getName(fi.getName()));
+ fi.write(tmpWar);
+ }
+ } else if ("context".equals(fi.getFieldName())) {
+ contextName = fi.getString();
+ } else if ("update".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
+ update = true;
+ } else if ("compile".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
+ compile = true;
+ } else if ("discard".equals(fi.getFieldName()) && "yes".equals(fi.getString())) {
+ discard = true;
+ }
+ }
+ } catch (Exception e) {
+ logger.fatal("Could not process file upload", e);
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.deploy.war.uploadfailure",
+ new Object[] {e.getMessage()}));
+ if (tmpWar != null && tmpWar.exists()) {
+ tmpWar.delete();
+ }
+ tmpWar = null;
+ }
+
+ String errMsg = null;
+
+ if (tmpWar != null) {
+ try {
+ if (tmpWar.getName().endsWith(".war")) {
+
+ if (contextName == null || contextName.length() == 0) {
+ String warFileName = tmpWar.getName().replaceAll("\\.war$", "");
+ contextName = "/" + warFileName;
+ }
+
+ contextName = getContainerWrapper().getTomcatContainer().formatContextName(contextName);
+
+ /*
+ * pass the name of the newly deployed context to the presentation layer using this name
+ * the presentation layer can render a url to view compilation details
+ */
+ String visibleContextName = "".equals(contextName) ? "/" : contextName;
+ request.setAttribute("contextName", visibleContextName);
+
+ if (update
+ && getContainerWrapper().getTomcatContainer().findContext(contextName) != null) {
+
+ logger.debug("updating " + contextName + ": removing the old copy");
+ getContainerWrapper().getTomcatContainer().remove(contextName);
+ }
+
+ if (getContainerWrapper().getTomcatContainer().findContext(contextName) == null) {
+ // move the .war to tomcat application base dir
+ String destWarFilename =
+ getContainerWrapper().getTomcatContainer().formatContextFilename(contextName);
+ File destWar =
+ new File(getContainerWrapper().getTomcatContainer().getAppBase(), destWarFilename
+ + ".war");
+
+ FileUtils.moveFile(tmpWar, destWar);
+
+ // let Tomcat know that the file is there
+ getContainerWrapper().getTomcatContainer().installWar(contextName,
+ new URL("jar:" + destWar.toURI().toURL().toString() + "!/"));
+
+ Context ctx = getContainerWrapper().getTomcatContainer().findContext(contextName);
+ if (ctx == null) {
+ errMsg =
+ getMessageSourceAccessor().getMessage("probe.src.deploy.war.notinstalled",
+ new Object[] {visibleContextName});
+ } else {
+ request.setAttribute("success", Boolean.TRUE);
+ if (discard) {
+ getContainerWrapper().getTomcatContainer().discardWorkDir(ctx);
+ }
+ if (compile) {
+ Summary summary = new Summary();
+ summary.setName(ctx.getName());
+ getContainerWrapper().getTomcatContainer().listContextJsps(ctx, summary, true);
+ request.getSession(true).setAttribute(DisplayJspController.SUMMARY_ATTRIBUTE,
+ summary);
+ request.setAttribute("compileSuccess", Boolean.TRUE);
+ }
+ }
+
+ } else {
+ errMsg =
+ getMessageSourceAccessor().getMessage("probe.src.deploy.war.alreadyExists",
+ new Object[] {visibleContextName});
+ }
+ } else {
+ errMsg = getMessageSourceAccessor().getMessage("probe.src.deploy.war.notWar.failure");
+ }
+ } catch (Exception e) {
+ errMsg =
+ getMessageSourceAccessor().getMessage("probe.src.deploy.war.failure",
+ new Object[] {e.getMessage()});
+ logger.error("Tomcat throw an exception when trying to deploy", e);
+ } finally {
+ if (errMsg != null) {
+ request.setAttribute("errorMessage", errMsg);
+ }
+ tmpWar.delete();
+ }
+ }
+ }
+ return new ModelAndView(new InternalResourceView(getViewName()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/filters/ListAppFilterMapsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/filters/ListAppFilterMapsController.java
index b7b71061a0..b8d989ad74 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/filters/ListAppFilterMapsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/filters/ListAppFilterMapsController.java
@@ -1,39 +1,39 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.filters;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Retrieves a list of web application filter mappings.
- *
- * @author Andy Shapoval
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ListAppFilterMapsController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- List filterMaps = getContainerWrapper().getTomcatContainer().getApplicationFilterMaps(context);
- return new ModelAndView(getViewName(), "filterMaps", filterMaps);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.filters;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Retrieves a list of web application filter mappings.
+ *
+ * @author Andy Shapoval
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ListAppFilterMapsController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ List filterMaps = getContainerWrapper().getTomcatContainer().getApplicationFilterMaps(context);
+ return new ModelAndView(getViewName(), "filterMaps", filterMaps);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/filters/ListAppFiltersController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/filters/ListAppFiltersController.java
index b817c7226d..84c143420e 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/filters/ListAppFiltersController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/filters/ListAppFiltersController.java
@@ -1,38 +1,38 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.filters;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Retrieves a list of filter mappings or filter definitions of a web application.
- *
- * @author Andy Shapoval
- */
-public class ListAppFiltersController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- List appFilters = ApplicationUtils.getApplicationFilters(context, getContainerWrapper());
- return new ModelAndView(getViewName(), "appFilters", appFilters);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.filters;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Retrieves a list of filter mappings or filter definitions of a web application.
+ *
+ * @author Andy Shapoval
+ */
+public class ListAppFiltersController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ List appFilters = ApplicationUtils.getApplicationFilters(context, getContainerWrapper());
+ return new ModelAndView(getViewName(), "appFilters", appFilters);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DiscardCompiledJspController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DiscardCompiledJspController.java
index ef3fceeb1f..7b14fbf1e4 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DiscardCompiledJspController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DiscardCompiledJspController.java
@@ -1,36 +1,36 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.jsp;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class DiscardCompiledJspController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- getContainerWrapper().getTomcatContainer().discardWorkDir(context);
- return new ModelAndView(new RedirectView(request.getContextPath() + getViewName() + "?"
- + request.getQueryString()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.jsp;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class DiscardCompiledJspController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ getContainerWrapper().getTomcatContainer().discardWorkDir(context);
+ return new ModelAndView(new RedirectView(request.getContextPath() + getViewName() + "?"
+ + request.getQueryString()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DisplayJspController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DisplayJspController.java
index ece550bfcf..2ecb4896e8 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DisplayJspController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DisplayJspController.java
@@ -1,55 +1,55 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.jsp;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.model.jsp.Summary;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class DisplayJspController extends ContextHandlerController {
-
- public static final String SUMMARY_ATTRIBUTE = "jsp.summary";
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
- boolean compile = ServletRequestUtils.getBooleanParameter(request, "compile", false);
-
- HttpSession session = request.getSession(true);
- Summary summary = (Summary) session.getAttribute(SUMMARY_ATTRIBUTE);
- if (summary == null || !contextName.equals(summary.getName())) {
- summary = new Summary();
- summary.setName(contextName);
- }
- getContainerWrapper().getTomcatContainer().listContextJsps(context, summary, compile);
-
- session.setAttribute(SUMMARY_ATTRIBUTE, summary);
-
- if (compile) {
- return new ModelAndView(new RedirectView(request.getRequestURI() + "?webapp="
- + (contextName.length() == 0 ? "/" : contextName)));
- } else {
- return new ModelAndView(getViewName(), "summary", summary);
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.jsp;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.model.jsp.Summary;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class DisplayJspController extends ContextHandlerController {
+
+ public static final String SUMMARY_ATTRIBUTE = "jsp.summary";
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+ boolean compile = ServletRequestUtils.getBooleanParameter(request, "compile", false);
+
+ HttpSession session = request.getSession(true);
+ Summary summary = (Summary) session.getAttribute(SUMMARY_ATTRIBUTE);
+ if (summary == null || !contextName.equals(summary.getName())) {
+ summary = new Summary();
+ summary.setName(contextName);
+ }
+ getContainerWrapper().getTomcatContainer().listContextJsps(context, summary, compile);
+
+ session.setAttribute(SUMMARY_ATTRIBUTE, summary);
+
+ if (compile) {
+ return new ModelAndView(new RedirectView(request.getRequestURI() + "?webapp="
+ + (contextName.length() == 0 ? "/" : contextName)));
+ } else {
+ return new ModelAndView(getViewName(), "summary", summary);
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DownloadServletController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DownloadServletController.java
index 17552e8609..3f1a1f7e02 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DownloadServletController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/DownloadServletController.java
@@ -1,49 +1,49 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.jsp;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.File;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class DownloadServletController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String jspName = ServletRequestUtils.getStringParameter(request, "source", null);
-
- if (jspName != null) {
- String servletName =
- getContainerWrapper().getTomcatContainer().getServletFileNameForJsp(context, jspName);
- if (servletName != null) {
- File servletFile = new File(servletName);
- if (servletFile.exists()) {
- Utils.sendFile(request, response, servletFile);
- }
- }
- }
- return null;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.jsp;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.File;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class DownloadServletController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String jspName = ServletRequestUtils.getStringParameter(request, "source", null);
+
+ if (jspName != null) {
+ String servletName =
+ getContainerWrapper().getTomcatContainer().getServletFileNameForJsp(context, jspName);
+ if (servletName != null) {
+ File servletFile = new File(servletName);
+ if (servletFile.exists()) {
+ Utils.sendFile(request, response, servletFile);
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/RecompileJspController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/RecompileJspController.java
index e4f2aae8b1..720ddb2a9d 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/RecompileJspController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/RecompileJspController.java
@@ -1,69 +1,69 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.jsp;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.model.jsp.Summary;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.RedirectView;
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class RecompileJspController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- HttpSession session = request.getSession();
- Summary summary =
- session != null ? (Summary) session.getAttribute(DisplayJspController.SUMMARY_ATTRIBUTE)
- : null;
-
- if (request.getMethod().equalsIgnoreCase("post") && summary != null) {
- List names = new ArrayList();
- for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
- String name = (String) e.nextElement();
- if ("on".equals(request.getParameter(name))) {
- names.add(name);
- }
- }
- getContainerWrapper().getTomcatContainer().recompileJsps(context, summary, names);
- session.setAttribute(DisplayJspController.SUMMARY_ATTRIBUTE, summary);
- } else if (summary != null && contextName.equals(summary.getName())) {
- String name = ServletRequestUtils.getStringParameter(request, "source", null);
- if (name != null) {
- List names = new ArrayList();
- names.add(name);
- getContainerWrapper().getTomcatContainer().recompileJsps(context, summary, names);
- session.setAttribute(DisplayJspController.SUMMARY_ATTRIBUTE, summary);
- } else {
- logger.error("source is not passed, nothing to do");
- }
- }
- return new ModelAndView(new RedirectView(request.getContextPath()
- + ServletRequestUtils.getStringParameter(request, "view", getViewName()) + "?"
- + request.getQueryString()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.jsp;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.model.jsp.Summary;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.RedirectView;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class RecompileJspController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ HttpSession session = request.getSession();
+ Summary summary =
+ session != null ? (Summary) session.getAttribute(DisplayJspController.SUMMARY_ATTRIBUTE)
+ : null;
+
+ if (request.getMethod().equalsIgnoreCase("post") && summary != null) {
+ List names = new ArrayList();
+ for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
+ String name = (String) e.nextElement();
+ if ("on".equals(request.getParameter(name))) {
+ names.add(name);
+ }
+ }
+ getContainerWrapper().getTomcatContainer().recompileJsps(context, summary, names);
+ session.setAttribute(DisplayJspController.SUMMARY_ATTRIBUTE, summary);
+ } else if (summary != null && contextName.equals(summary.getName())) {
+ String name = ServletRequestUtils.getStringParameter(request, "source", null);
+ if (name != null) {
+ List names = new ArrayList();
+ names.add(name);
+ getContainerWrapper().getTomcatContainer().recompileJsps(context, summary, names);
+ session.setAttribute(DisplayJspController.SUMMARY_ATTRIBUTE, summary);
+ } else {
+ logger.error("source is not passed, nothing to do");
+ }
+ }
+ return new ModelAndView(new RedirectView(request.getContextPath()
+ + ServletRequestUtils.getStringParameter(request, "view", getViewName()) + "?"
+ + request.getQueryString()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/ViewServletSourceController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/ViewServletSourceController.java
index 0bbbfd80d6..04841c8de5 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/ViewServletSourceController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/ViewServletSourceController.java
@@ -1,65 +1,65 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.jsp;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.apache.jasper.EmbeddedServletOptions;
-import org.apache.jasper.Options;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.File;
-import java.io.FileInputStream;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ViewServletSourceController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String jspName = ServletRequestUtils.getStringParameter(request, "source", null);
- ServletContext sctx = context.getServletContext();
- ServletConfig scfg = (ServletConfig) context.findChild("jsp");
- Options opt = new EmbeddedServletOptions(scfg, sctx);
- String encoding = opt.getJavaEncoding();
- String content = null;
-
- if (jspName != null) {
- String servletName =
- getContainerWrapper().getTomcatContainer().getServletFileNameForJsp(context, jspName);
-
- if (servletName != null) {
- File servletFile = new File(servletName);
- if (servletFile.exists()) {
- FileInputStream fis = new FileInputStream(servletFile);
- try {
- content = Utils.highlightStream(jspName, fis, "java", encoding);
- } finally {
- fis.close();
- }
- }
- }
- }
- return new ModelAndView(getViewName(), "content", content);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.jsp;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.apache.jasper.EmbeddedServletOptions;
+import org.apache.jasper.Options;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ViewServletSourceController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String jspName = ServletRequestUtils.getStringParameter(request, "source", null);
+ ServletContext sctx = context.getServletContext();
+ ServletConfig scfg = (ServletConfig) context.findChild("jsp");
+ Options opt = new EmbeddedServletOptions(scfg, sctx);
+ String encoding = opt.getJavaEncoding();
+ String content = null;
+
+ if (jspName != null) {
+ String servletName =
+ getContainerWrapper().getTomcatContainer().getServletFileNameForJsp(context, jspName);
+
+ if (servletName != null) {
+ File servletFile = new File(servletName);
+ if (servletFile.exists()) {
+ FileInputStream fis = new FileInputStream(servletFile);
+ try {
+ content = Utils.highlightStream(jspName, fis, "java", encoding);
+ } finally {
+ fis.close();
+ }
+ }
+ }
+ }
+ return new ModelAndView(getViewName(), "content", content);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/ViewSourceController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/ViewSourceController.java
index 83bd4808a5..2cf29a7f08 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/ViewSourceController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/jsp/ViewSourceController.java
@@ -1,107 +1,107 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.jsp;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.model.jsp.Item;
-import com.googlecode.psiprobe.model.jsp.Summary;
-
-import org.apache.catalina.Context;
-import org.apache.jasper.EmbeddedServletOptions;
-import org.apache.jasper.Options;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.InputStream;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ViewSourceController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String jspName = ServletRequestUtils.getStringParameter(request, "source", null);
- boolean highlight = ServletRequestUtils.getBooleanParameter(request, "highlight", true);
- Summary summary =
- (Summary) (request.getSession() != null ? request.getSession().getAttribute(
- DisplayJspController.SUMMARY_ATTRIBUTE) : null);
-
- if (jspName != null && summary != null && contextName.equals(summary.getName())) {
-
- Item item = (Item) summary.getItems().get(jspName);
-
- if (item != null) {
- // replace "\" with "/"
- jspName = jspName.replaceAll("\\\\", "/");
-
- // remove cheeky "../" from the path to avoid exploits
- while (jspName.indexOf("../") != -1) {
- jspName = jspName.replaceAll("\\.\\./", "");
- }
-
- if (getContainerWrapper().getTomcatContainer().resourceExists(jspName, context)) {
- ServletContext sctx = context.getServletContext();
- ServletConfig scfg = (ServletConfig) context.findChild("jsp");
- Options opt = new EmbeddedServletOptions(scfg, sctx);
- String descriptorPageEncoding =
- opt.getJspConfig().findJspProperty(jspName).getPageEncoding();
-
- if (descriptorPageEncoding != null && descriptorPageEncoding.length() > 0) {
- item.setEncoding(descriptorPageEncoding);
- } else {
-
- /*
- * we have to read the JSP twice, once to figure out the content encoding the second
- * time to read the actual content using the correct encoding
- */
- InputStream encodedStream =
- getContainerWrapper().getTomcatContainer().getResourceStream(jspName, context);
- item.setEncoding(Utils.getJSPEncoding(encodedStream));
- }
- InputStream jspStream =
- getContainerWrapper().getTomcatContainer().getResourceStream(jspName, context);
- if (highlight) {
- request.setAttribute("highlightedContent",
- Utils.highlightStream(jspName, jspStream, "xhtml", item.getEncoding()));
- } else {
- request.setAttribute("content", Utils.readStream(jspStream, item.getEncoding()));
- }
-
- } else {
- logger.error(jspName + " does not exist");
- }
-
- request.setAttribute("item", item);
-
- } else {
- logger.error("jsp name passed is not in the summary, ignored");
- }
- } else {
- if (jspName == null) {
- logger.error("Passed empty \"source\" parameter");
- }
- if (summary == null) {
- logger.error("Session has expired or there is no summary");
- }
- }
- return new ModelAndView(getViewName());
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.jsp;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.model.jsp.Item;
+import com.googlecode.psiprobe.model.jsp.Summary;
+
+import org.apache.catalina.Context;
+import org.apache.jasper.EmbeddedServletOptions;
+import org.apache.jasper.Options;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.InputStream;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ViewSourceController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String jspName = ServletRequestUtils.getStringParameter(request, "source", null);
+ boolean highlight = ServletRequestUtils.getBooleanParameter(request, "highlight", true);
+ Summary summary =
+ (Summary) (request.getSession() != null ? request.getSession().getAttribute(
+ DisplayJspController.SUMMARY_ATTRIBUTE) : null);
+
+ if (jspName != null && summary != null && contextName.equals(summary.getName())) {
+
+ Item item = (Item) summary.getItems().get(jspName);
+
+ if (item != null) {
+ // replace "\" with "/"
+ jspName = jspName.replaceAll("\\\\", "/");
+
+ // remove cheeky "../" from the path to avoid exploits
+ while (jspName.indexOf("../") != -1) {
+ jspName = jspName.replaceAll("\\.\\./", "");
+ }
+
+ if (getContainerWrapper().getTomcatContainer().resourceExists(jspName, context)) {
+ ServletContext sctx = context.getServletContext();
+ ServletConfig scfg = (ServletConfig) context.findChild("jsp");
+ Options opt = new EmbeddedServletOptions(scfg, sctx);
+ String descriptorPageEncoding =
+ opt.getJspConfig().findJspProperty(jspName).getPageEncoding();
+
+ if (descriptorPageEncoding != null && descriptorPageEncoding.length() > 0) {
+ item.setEncoding(descriptorPageEncoding);
+ } else {
+
+ /*
+ * we have to read the JSP twice, once to figure out the content encoding the second
+ * time to read the actual content using the correct encoding
+ */
+ InputStream encodedStream =
+ getContainerWrapper().getTomcatContainer().getResourceStream(jspName, context);
+ item.setEncoding(Utils.getJSPEncoding(encodedStream));
+ }
+ InputStream jspStream =
+ getContainerWrapper().getTomcatContainer().getResourceStream(jspName, context);
+ if (highlight) {
+ request.setAttribute("highlightedContent",
+ Utils.highlightStream(jspName, jspStream, "xhtml", item.getEncoding()));
+ } else {
+ request.setAttribute("content", Utils.readStream(jspStream, item.getEncoding()));
+ }
+
+ } else {
+ logger.error(jspName + " does not exist");
+ }
+
+ request.setAttribute("item", item);
+
+ } else {
+ logger.error("jsp name passed is not in the summary, ignored");
+ }
+ } else {
+ if (jspName == null) {
+ logger.error("Passed empty \"source\" parameter");
+ }
+ if (summary == null) {
+ logger.error("Session has expired or there is no summary");
+ }
+ }
+ return new ModelAndView(getViewName());
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/DownloadLogController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/DownloadLogController.java
index ef45a9d371..21c6d9212c 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/DownloadLogController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/DownloadLogController.java
@@ -1,40 +1,40 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.logs;
-
-import com.googlecode.psiprobe.Utils;
-import com.googlecode.psiprobe.tools.logging.LogDestination;
-
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.File;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class DownloadLogController extends LogHandlerController {
-
- protected ModelAndView handleLogFile(HttpServletRequest request, HttpServletResponse response,
- LogDestination logDest) throws Exception {
-
- File file = logDest.getFile();
- logger.info("Sending " + file + " to " + request.getRemoteAddr() + "("
- + request.getRemoteUser() + ")");
- Utils.sendFile(request, response, file);
- return null;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.logs;
+
+import com.googlecode.psiprobe.Utils;
+import com.googlecode.psiprobe.tools.logging.LogDestination;
+
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.File;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class DownloadLogController extends LogHandlerController {
+
+ protected ModelAndView handleLogFile(HttpServletRequest request, HttpServletResponse response,
+ LogDestination logDest) throws Exception {
+
+ File file = logDest.getFile();
+ logger.info("Sending " + file + " to " + request.getRemoteAddr() + "("
+ + request.getRemoteUser() + ")");
+ Utils.sendFile(request, response, file);
+ return null;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/FollowController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/FollowController.java
index ce59b646fa..c291103685 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/FollowController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/FollowController.java
@@ -1,85 +1,85 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.logs;
-
-import com.googlecode.psiprobe.tools.BackwardsFileStream;
-import com.googlecode.psiprobe.tools.BackwardsLineReader;
-import com.googlecode.psiprobe.tools.logging.LogDestination;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.File;
-import java.util.LinkedList;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class FollowController extends LogHandlerController {
-
- protected ModelAndView handleLogFile(HttpServletRequest request, HttpServletResponse response,
- LogDestination logDest) throws Exception {
-
- ModelAndView mv = new ModelAndView(getViewName());
- File file = logDest.getFile();
-
- if (file.exists()) {
- LinkedList lines = new LinkedList();
- long actualLength = file.length();
- long lastKnownLength = ServletRequestUtils.getLongParameter(request, "lastKnownLength", 0);
- long currentLength =
- ServletRequestUtils.getLongParameter(request, "currentLength", actualLength);
- long maxReadLines = ServletRequestUtils.getLongParameter(request, "maxReadLines", 0);
-
- if (lastKnownLength > currentLength || lastKnownLength > actualLength
- || currentLength > actualLength) {
-
- // file length got reset
- lastKnownLength = 0;
- lines.add(" ------------- THE FILE HAS BEEN TRUNCATED --------------");
- }
-
- BackwardsFileStream bfs = new BackwardsFileStream(file, currentLength);
- try {
- BackwardsLineReader br = new BackwardsLineReader(bfs);
- long readSize = 0;
- long totalReadSize = currentLength - lastKnownLength;
- String s;
- while (readSize < totalReadSize && (s = br.readLine()) != null) {
- if (!s.equals("")) {
- lines.addFirst(s);
- readSize += s.length();
- } else {
- readSize++;
- }
- if (maxReadLines != 0 && lines.size() >= maxReadLines) {
- break;
- }
- }
-
- if (lastKnownLength != 0 && readSize > totalReadSize) {
- lines.removeFirst();
- }
- } finally {
- bfs.close();
- }
-
- mv.addObject("lines", lines);
- }
- return mv;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.logs;
+
+import com.googlecode.psiprobe.tools.BackwardsFileStream;
+import com.googlecode.psiprobe.tools.BackwardsLineReader;
+import com.googlecode.psiprobe.tools.logging.LogDestination;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.File;
+import java.util.LinkedList;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class FollowController extends LogHandlerController {
+
+ protected ModelAndView handleLogFile(HttpServletRequest request, HttpServletResponse response,
+ LogDestination logDest) throws Exception {
+
+ ModelAndView mv = new ModelAndView(getViewName());
+ File file = logDest.getFile();
+
+ if (file.exists()) {
+ LinkedList lines = new LinkedList();
+ long actualLength = file.length();
+ long lastKnownLength = ServletRequestUtils.getLongParameter(request, "lastKnownLength", 0);
+ long currentLength =
+ ServletRequestUtils.getLongParameter(request, "currentLength", actualLength);
+ long maxReadLines = ServletRequestUtils.getLongParameter(request, "maxReadLines", 0);
+
+ if (lastKnownLength > currentLength || lastKnownLength > actualLength
+ || currentLength > actualLength) {
+
+ // file length got reset
+ lastKnownLength = 0;
+ lines.add(" ------------- THE FILE HAS BEEN TRUNCATED --------------");
+ }
+
+ BackwardsFileStream bfs = new BackwardsFileStream(file, currentLength);
+ try {
+ BackwardsLineReader br = new BackwardsLineReader(bfs);
+ long readSize = 0;
+ long totalReadSize = currentLength - lastKnownLength;
+ String s;
+ while (readSize < totalReadSize && (s = br.readLine()) != null) {
+ if (!s.equals("")) {
+ lines.addFirst(s);
+ readSize += s.length();
+ } else {
+ readSize++;
+ }
+ if (maxReadLines != 0 && lines.size() >= maxReadLines) {
+ break;
+ }
+ }
+
+ if (lastKnownLength != 0 && readSize > totalReadSize) {
+ lines.removeFirst();
+ }
+ } finally {
+ bfs.close();
+ }
+
+ mv.addObject("lines", lines);
+ }
+ return mv;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/ListLogsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/ListLogsController.java
index aac8a481e6..910617dd05 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/ListLogsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/ListLogsController.java
@@ -1,62 +1,62 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.logs;
-
-import com.googlecode.psiprobe.beans.LogResolverBean;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ListLogsController extends ParameterizableViewController {
-
- private String errorView;
- private LogResolverBean logResolver;
-
- public String getErrorView() {
- return errorView;
- }
-
- public void setErrorView(String errorView) {
- this.errorView = errorView;
- }
-
- public LogResolverBean getLogResolver() {
- return logResolver;
- }
-
- public void setLogResolver(LogResolverBean logResolver) {
- this.logResolver = logResolver;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- boolean showAll = ServletRequestUtils.getBooleanParameter(request, "apps", false);
- List uniqueList = logResolver.getLogDestinations(showAll);
- if (uniqueList != null) {
- return new ModelAndView(getViewName()).addObject("logs", uniqueList);
- } else {
- return new ModelAndView(errorView);
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.logs;
+
+import com.googlecode.psiprobe.beans.LogResolverBean;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ListLogsController extends ParameterizableViewController {
+
+ private String errorView;
+ private LogResolverBean logResolver;
+
+ public String getErrorView() {
+ return errorView;
+ }
+
+ public void setErrorView(String errorView) {
+ this.errorView = errorView;
+ }
+
+ public LogResolverBean getLogResolver() {
+ return logResolver;
+ }
+
+ public void setLogResolver(LogResolverBean logResolver) {
+ this.logResolver = logResolver;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ boolean showAll = ServletRequestUtils.getBooleanParameter(request, "apps", false);
+ List uniqueList = logResolver.getLogDestinations(showAll);
+ if (uniqueList != null) {
+ return new ModelAndView(getViewName()).addObject("logs", uniqueList);
+ } else {
+ return new ModelAndView(errorView);
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/LogHandlerController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/LogHandlerController.java
index c9256c4637..48c71887b5 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/LogHandlerController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/LogHandlerController.java
@@ -1,80 +1,80 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.logs;
-
-import com.googlecode.psiprobe.beans.LogResolverBean;
-import com.googlecode.psiprobe.tools.logging.LogDestination;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class LogHandlerController extends ParameterizableViewController {
-
- private LogResolverBean logResolver;
-
- public LogResolverBean getLogResolver() {
- return logResolver;
- }
-
- public void setLogResolver(LogResolverBean logResolver) {
- this.logResolver = logResolver;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- boolean logFound = false;
-
- ModelAndView modelAndView = null;
-
- String logType = ServletRequestUtils.getStringParameter(request, "logType");
- String webapp = ServletRequestUtils.getStringParameter(request, "webapp");
- boolean context = ServletRequestUtils.getBooleanParameter(request, "context", false);
- boolean root = ServletRequestUtils.getBooleanParameter(request, "root", false);
- String logName = ServletRequestUtils.getStringParameter(request, "logName");
- String logIndex = ServletRequestUtils.getStringParameter(request, "logIndex");
-
- LogDestination dest =
- logResolver.getLogDestination(logType, webapp, context, root, logName, logIndex);
-
- if (dest != null) {
- if (dest.getFile() != null && dest.getFile().exists()) {
- modelAndView = handleLogFile(request, response, dest);
- logFound = true;
- } else {
- logger.error(dest.getFile() + ": file not found");
- }
- } else {
- logger.error(logType + (root ? " root" : "") + " log" + (root ? "" : " \"" + logName + "\"")
- + " not found");
- }
- if (!logFound) {
- response.sendError(404);
- }
- return modelAndView;
- }
-
- protected ModelAndView handleLogFile(HttpServletRequest request, HttpServletResponse response,
- LogDestination logDest) throws Exception {
-
- return new ModelAndView(getViewName()).addObject("log", logDest);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.logs;
+
+import com.googlecode.psiprobe.beans.LogResolverBean;
+import com.googlecode.psiprobe.tools.logging.LogDestination;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class LogHandlerController extends ParameterizableViewController {
+
+ private LogResolverBean logResolver;
+
+ public LogResolverBean getLogResolver() {
+ return logResolver;
+ }
+
+ public void setLogResolver(LogResolverBean logResolver) {
+ this.logResolver = logResolver;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ boolean logFound = false;
+
+ ModelAndView modelAndView = null;
+
+ String logType = ServletRequestUtils.getStringParameter(request, "logType");
+ String webapp = ServletRequestUtils.getStringParameter(request, "webapp");
+ boolean context = ServletRequestUtils.getBooleanParameter(request, "context", false);
+ boolean root = ServletRequestUtils.getBooleanParameter(request, "root", false);
+ String logName = ServletRequestUtils.getStringParameter(request, "logName");
+ String logIndex = ServletRequestUtils.getStringParameter(request, "logIndex");
+
+ LogDestination dest =
+ logResolver.getLogDestination(logType, webapp, context, root, logName, logIndex);
+
+ if (dest != null) {
+ if (dest.getFile() != null && dest.getFile().exists()) {
+ modelAndView = handleLogFile(request, response, dest);
+ logFound = true;
+ } else {
+ logger.error(dest.getFile() + ": file not found");
+ }
+ } else {
+ logger.error(logType + (root ? " root" : "") + " log" + (root ? "" : " \"" + logName + "\"")
+ + " not found");
+ }
+ if (!logFound) {
+ response.sendError(404);
+ }
+ return modelAndView;
+ }
+
+ protected ModelAndView handleLogFile(HttpServletRequest request, HttpServletResponse response,
+ LogDestination logDest) throws Exception {
+
+ return new ModelAndView(getViewName()).addObject("log", logDest);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/SetupFollowController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/SetupFollowController.java
index 69acc8e9ec..513df43683 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/logs/SetupFollowController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/logs/SetupFollowController.java
@@ -1,38 +1,38 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.logs;
-
-import com.googlecode.psiprobe.tools.logging.LogDestination;
-
-import org.springframework.web.servlet.ModelAndView;
-
-import java.io.File;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class SetupFollowController extends LogHandlerController {
-
- protected ModelAndView handleLogFile(HttpServletRequest request, HttpServletResponse response,
- LogDestination logDest) throws Exception {
-
- File logFile = logDest.getFile();
- List sources = getLogResolver().getLogSources(logFile);
- return new ModelAndView(getViewName()).addObject("log", logDest).addObject("sources", sources);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.logs;
+
+import com.googlecode.psiprobe.tools.logging.LogDestination;
+
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.File;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class SetupFollowController extends LogHandlerController {
+
+ protected ModelAndView handleLogFile(HttpServletRequest request, HttpServletResponse response,
+ LogDestination logDest) throws Exception {
+
+ File logFile = logDest.getFile();
+ List sources = getLogResolver().getLogSources(logFile);
+ return new ModelAndView(getViewName()).addObject("log", logDest).addObject("sources", sources);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/servlets/ListServletMapsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/servlets/ListServletMapsController.java
index 8798e60b78..9def374883 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/servlets/ListServletMapsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/servlets/ListServletMapsController.java
@@ -1,58 +1,58 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.servlets;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Retrieves a list of servlet mappings for a particular web application or all web applications if
- * an application name is not passed in a query string.
- *
- * @author Andy Shapoval
- */
-public class ListServletMapsController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- List ctxs;
- if (context == null) {
- ctxs = getContainerWrapper().getTomcatContainer().findContexts();
- } else {
- ctxs = new ArrayList();
- ctxs.add(context);
- }
-
- List servletMaps = new ArrayList();
- for (Iterator i = ctxs.iterator(); i.hasNext();) {
- Context ctx = (Context) i.next();
- servletMaps.addAll(ApplicationUtils.getApplicationServletMaps(ctx));
- }
-
- return new ModelAndView(getViewName(), "servletMaps", servletMaps);
- }
-
- protected boolean isContextOptional() {
- return true;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.servlets;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Retrieves a list of servlet mappings for a particular web application or all web applications if
+ * an application name is not passed in a query string.
+ *
+ * @author Andy Shapoval
+ */
+public class ListServletMapsController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ List ctxs;
+ if (context == null) {
+ ctxs = getContainerWrapper().getTomcatContainer().findContexts();
+ } else {
+ ctxs = new ArrayList();
+ ctxs.add(context);
+ }
+
+ List servletMaps = new ArrayList();
+ for (Iterator i = ctxs.iterator(); i.hasNext();) {
+ Context ctx = (Context) i.next();
+ servletMaps.addAll(ApplicationUtils.getApplicationServletMaps(ctx));
+ }
+
+ return new ModelAndView(getViewName(), "servletMaps", servletMaps);
+ }
+
+ protected boolean isContextOptional() {
+ return true;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/servlets/ListServletsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/servlets/ListServletsController.java
index 25db89ad7c..9c30587626 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/servlets/ListServletsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/servlets/ListServletsController.java
@@ -1,67 +1,67 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.servlets;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.model.ServletInfo;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Retrieves a list of servlets for a particular web application or for all applications if an
- * application name is not passed in a query string.
- *
- * @author Andy Shapoval
- */
-public class ListServletsController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- List ctxs;
- if (context == null) {
- ctxs = getContainerWrapper().getTomcatContainer().findContexts();
- } else {
- ctxs = new ArrayList();
- ctxs.add(context);
- }
-
- List servlets = new ArrayList();
- for (Iterator i = ctxs.iterator(); i.hasNext();) {
- Context ctx = (Context) i.next();
- if (ctx != null) {
- List appServlets = ApplicationUtils.getApplicationServlets(ctx);
- for (Iterator j = appServlets.iterator(); j.hasNext();) {
- ServletInfo svlt = (ServletInfo) j.next();
- Collections.sort(svlt.getMappings());
- }
- servlets.addAll(appServlets);
- }
- }
-
- return new ModelAndView(getViewName(), "servlets", servlets);
- }
-
- protected boolean isContextOptional() {
- return true;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.servlets;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.model.ServletInfo;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Retrieves a list of servlets for a particular web application or for all applications if an
+ * application name is not passed in a query string.
+ *
+ * @author Andy Shapoval
+ */
+public class ListServletsController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ List ctxs;
+ if (context == null) {
+ ctxs = getContainerWrapper().getTomcatContainer().findContexts();
+ } else {
+ ctxs = new ArrayList();
+ ctxs.add(context);
+ }
+
+ List servlets = new ArrayList();
+ for (Iterator i = ctxs.iterator(); i.hasNext();) {
+ Context ctx = (Context) i.next();
+ if (ctx != null) {
+ List appServlets = ApplicationUtils.getApplicationServlets(ctx);
+ for (Iterator j = appServlets.iterator(); j.hasNext();) {
+ ServletInfo svlt = (ServletInfo) j.next();
+ Collections.sort(svlt.getMappings());
+ }
+ servlets.addAll(appServlets);
+ }
+ }
+
+ return new ModelAndView(getViewName(), "servlets", servlets);
+ }
+
+ protected boolean isContextOptional() {
+ return true;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ExpireSessionController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ExpireSessionController.java
index d9fb714087..e97dee4d66 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ExpireSessionController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ExpireSessionController.java
@@ -1,42 +1,42 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sessions;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.Session;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.InternalResourceView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Expires a single session of a particular web application.
- *
- * @author Andy Shapoval
- */
-public class ExpireSessionController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String sessionID = ServletRequestUtils.getStringParameter(request, "sid");
- Session session = context.getManager().findSession(sessionID);
- if (session != null) {
- session.expire();
- }
- return new ModelAndView(new InternalResourceView(getViewName()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sessions;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Session;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.InternalResourceView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Expires a single session of a particular web application.
+ *
+ * @author Andy Shapoval
+ */
+public class ExpireSessionController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String sessionID = ServletRequestUtils.getStringParameter(request, "sid");
+ Session session = context.getManager().findSession(sessionID);
+ if (session != null) {
+ session.expire();
+ }
+ return new ModelAndView(new InternalResourceView(getViewName()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ExpireSessionsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ExpireSessionsController.java
index 3cbf66c486..192d51b409 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ExpireSessionsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ExpireSessionsController.java
@@ -1,63 +1,63 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sessions;
-
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.Manager;
-import org.apache.catalina.Session;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.InternalResourceView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Expires a list of sessionIDs. Accepts a list of sid_webapp parameters that are expected to be in
- * a form of "sid;webapp"
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public class ExpireSessionsController extends TomcatContainerController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- String[] sidWebApps = ServletRequestUtils.getStringParameters(request, "sid_webapp");
- for (int i = 0; i < sidWebApps.length; i++) {
- if (sidWebApps[i] != null) {
- String[] ss = sidWebApps[i].split(";");
- if (ss.length == 2) {
- String sessionId = ss[0];
- String appName = ss[1];
- Context context = getContainerWrapper().getTomcatContainer().findContext(appName);
- if (context != null) {
- Manager manager = context.getManager();
- Session session = manager.findSession(sessionId);
- if (session != null && session.isValid()) {
- session.expire();
- }
- } else {
- return new ModelAndView("errors/paramerror");
- }
- } else {
- return new ModelAndView("errors/paramerror");
- }
- }
- }
- return new ModelAndView(new InternalResourceView(getViewName()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sessions;
+
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Manager;
+import org.apache.catalina.Session;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.InternalResourceView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Expires a list of sessionIDs. Accepts a list of sid_webapp parameters that are expected to be in
+ * a form of "sid;webapp"
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public class ExpireSessionsController extends TomcatContainerController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ String[] sidWebApps = ServletRequestUtils.getStringParameters(request, "sid_webapp");
+ for (int i = 0; i < sidWebApps.length; i++) {
+ if (sidWebApps[i] != null) {
+ String[] ss = sidWebApps[i].split(";");
+ if (ss.length == 2) {
+ String sessionId = ss[0];
+ String appName = ss[1];
+ Context context = getContainerWrapper().getTomcatContainer().findContext(appName);
+ if (context != null) {
+ Manager manager = context.getManager();
+ Session session = manager.findSession(sessionId);
+ if (session != null && session.isValid()) {
+ session.expire();
+ }
+ } else {
+ return new ModelAndView("errors/paramerror");
+ }
+ } else {
+ return new ModelAndView("errors/paramerror");
+ }
+ }
+ }
+ return new ModelAndView(new InternalResourceView(getViewName()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ListSessionAttributesController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ListSessionAttributesController.java
index 88399d8249..e5bab859b3 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ListSessionAttributesController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ListSessionAttributesController.java
@@ -1,52 +1,52 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sessions;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.model.ApplicationSession;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-import com.googlecode.psiprobe.tools.SecurityUtils;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Retrieves the list of attributes for given session.
- *
- * @author Vlad Ilyushchenko
- */
-public class ListSessionAttributesController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- boolean privileged = SecurityUtils.hasAttributeValueRole(getServletContext(), request);
- boolean calcSize =
- ServletRequestUtils.getBooleanParameter(request, "size", false) && privileged;
- String sid = ServletRequestUtils.getStringParameter(request, "sid");
-
- ApplicationSession appSession =
- ApplicationUtils.getApplicationSession(context.getManager().findSession(sid), calcSize,
- true);
-
- if (appSession != null) {
- appSession.setAllowedToViewValues(privileged);
- return new ModelAndView(getViewName(), "session", appSession);
- } else {
- return new ModelAndView(getViewName());
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sessions;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.model.ApplicationSession;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+import com.googlecode.psiprobe.tools.SecurityUtils;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Retrieves the list of attributes for given session.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ListSessionAttributesController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ boolean privileged = SecurityUtils.hasAttributeValueRole(getServletContext(), request);
+ boolean calcSize =
+ ServletRequestUtils.getBooleanParameter(request, "size", false) && privileged;
+ String sid = ServletRequestUtils.getStringParameter(request, "sid");
+
+ ApplicationSession appSession =
+ ApplicationUtils.getApplicationSession(context.getManager().findSession(sid), calcSize,
+ true);
+
+ if (appSession != null) {
+ appSession.setAllowedToViewValues(privileged);
+ return new ModelAndView(getViewName(), "session", appSession);
+ } else {
+ return new ModelAndView(getViewName());
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ListSessionsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ListSessionsController.java
index 73c9b6568b..53a342214e 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ListSessionsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/ListSessionsController.java
@@ -1,228 +1,228 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sessions;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.model.ApplicationSession;
-import com.googlecode.psiprobe.model.Attribute;
-import com.googlecode.psiprobe.model.SessionSearchInfo;
-import com.googlecode.psiprobe.tools.ApplicationUtils;
-import com.googlecode.psiprobe.tools.SecurityUtils;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.Session;
-import org.apache.commons.lang.StringUtils;
-import org.springframework.context.support.MessageSourceAccessor;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-/**
- * Creates the list of sessions for a particular web application or all web applications if a webapp
- * request parameter is not set.
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- */
-public class ListSessionsController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- boolean calcSize =
- ServletRequestUtils.getBooleanParameter(request, "size", false)
- && SecurityUtils.hasAttributeValueRole(getServletContext(), request);
-
- SessionSearchInfo searchInfo = new SessionSearchInfo();
- searchInfo.setSearchAction(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(
- request, "searchAction", SessionSearchInfo.ACTION_NONE)));
- HttpSession sess = request.getSession();
-
- if (searchInfo.isApply()) {
- searchInfo.setSessionId(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(
- request, "searchSessionId")));
- searchInfo.setLastIP(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(request,
- "searchLastIP")));
-
- searchInfo.setAgeFrom(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(request,
- "searchAgeFrom")));
- searchInfo.setAgeTo(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(request,
- "searchAgeTo")));
- searchInfo.setIdleTimeFrom(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(
- request, "searchIdleTimeFrom")));
- searchInfo.setIdleTimeTo(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(
- request, "searchIdleTimeTo")));
- searchInfo.setAttrName(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(request,
- "searchAttrName")));
- if (sess != null) {
- sess.setAttribute(SessionSearchInfo.SESS_ATTR_NAME, searchInfo);
- }
- } else if (sess != null) {
- if (searchInfo.isClear()) {
- sess.removeAttribute(SessionSearchInfo.SESS_ATTR_NAME);
- } else {
- SessionSearchInfo ss =
- (SessionSearchInfo) sess.getAttribute(SessionSearchInfo.SESS_ATTR_NAME);
- if (ss != null) {
- searchInfo = ss;
- }
- }
- }
-
- // context is not specified we'll retrieve all sessions of the container
-
- List ctxs;
- if (context == null) {
- ctxs = getContainerWrapper().getTomcatContainer().findContexts();
- } else {
- ctxs = new ArrayList();
- ctxs.add(context);
- }
-
- List sessionList = new ArrayList();
- for (Iterator it = ctxs.iterator(); it.hasNext();) {
- Context ctx = (Context) it.next();
- if (ctx != null && ctx.getManager() != null
- && (!searchInfo.isApply() || searchInfo.isUseSearch())) {
- Session[] sessions = ctx.getManager().findSessions();
- for (int i = 0; i < sessions.length; i++) {
- Session session = sessions[i];
- ApplicationSession appSession =
- ApplicationUtils.getApplicationSession(session, calcSize, searchInfo.isUseAttr());
- if (appSession != null && matchSession(appSession, searchInfo)) {
- if (ctx.getName() != null) {
- appSession.setApplicationName(ctx.getName().length() > 0 ? ctx.getName() : "/");
- }
- sessionList.add(appSession);
- }
- }
- }
- }
-
- if (sessionList.isEmpty() && searchInfo.isApply()) {
- synchronized (sess) {
- populateSearchMessages(searchInfo);
- }
- }
-
- ModelAndView modelAndView = new ModelAndView(getViewName(), "sessions", sessionList);
- modelAndView.addObject("searchInfo", searchInfo);
-
- return modelAndView;
- }
-
- private void populateSearchMessages(SessionSearchInfo searchInfo) {
- MessageSourceAccessor msa = getMessageSourceAccessor();
-
- searchInfo.getErrorMessages().clear();
-
- if (searchInfo.isEmpty()) {
- searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.empty"));
- } else if (searchInfo.isValid()) {
- searchInfo.setInfoMessage(msa.getMessage("probe.src.sessions.search.results.empty"));
- } else {
- if (!searchInfo.isSessionIdValid()) {
- searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.sessionId",
- new Object[] {searchInfo.getSessionIdMsg()}));
- }
- if (!searchInfo.isAttrNameValid()) {
- for (Iterator i = searchInfo.getAttrNameMsgs().iterator(); i.hasNext();) {
- String m = (String) i.next();
- searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.attrName",
- new Object[] {m}));
- }
- }
- if (!searchInfo.isAgeFromValid()) {
- searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.ageFrom"));
- }
- if (!searchInfo.isAgeToValid()) {
- searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.ageTo"));
- }
- if (!searchInfo.isIdleTimeFromValid()) {
- searchInfo
- .addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.idleTimeFrom"));
- }
- if (!searchInfo.isIdleTimeToValid()) {
- searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.idleTimeTo"));
- }
- if (searchInfo.getErrorMessages().isEmpty()) {
- searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid"));
- }
- }
- }
-
- private boolean matchSession(ApplicationSession appSession, SessionSearchInfo searchInfo) {
- boolean sessionMatches = true;
- if (searchInfo.isUseSearch()) {
- if (searchInfo.isUseSessionId() && appSession.getId() != null) {
- sessionMatches = searchInfo.getSessionIdPattern().matcher(appSession.getId()).matches();
- }
- if (sessionMatches && searchInfo.isUseAgeFrom()) {
- sessionMatches = appSession.getAge() >= searchInfo.getAgeFromSec().longValue() * 1000;
- }
- if (sessionMatches && searchInfo.isUseAgeTo()) {
- sessionMatches = appSession.getAge() <= searchInfo.getAgeToSec().longValue() * 1000;
- }
- if (sessionMatches && searchInfo.isUseIdleTimeFrom()) {
- sessionMatches =
- appSession.getIdleTime() >= searchInfo.getIdleTimeFromSec().longValue() * 1000;
- }
- if (sessionMatches && searchInfo.isUseIdleTimeTo()) {
- sessionMatches =
- appSession.getIdleTime() <= searchInfo.getIdleTimeToSec().longValue() * 1000;
- }
- if (searchInfo.isUseLastIP() && appSession.getLastAccessedIP() != null) {
- sessionMatches = appSession.getLastAccessedIP().indexOf(searchInfo.getLastIP()) > -1;
- }
-
- if (sessionMatches && searchInfo.isUseAttrName()) {
- boolean attrMatches = false;
- List a = new ArrayList();
- a.addAll(searchInfo.getAttrNamePatterns());
-
- for (Iterator i = appSession.getAttributes().iterator(); i.hasNext();) {
- String attrName = ((Attribute) i.next()).getName();
-
- if (attrName != null) {
- for (Iterator j = a.iterator(); j.hasNext();) {
- Pattern p = (Pattern) j.next();
- if (p.matcher(attrName).matches()) {
- j.remove();
- }
- }
-
- if (a.isEmpty()) {
- attrMatches = true;
- break;
- }
- }
- }
-
- sessionMatches = attrMatches;
- }
- }
-
- return sessionMatches;
- }
-
- protected boolean isContextOptional() {
- return true;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sessions;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.model.ApplicationSession;
+import com.googlecode.psiprobe.model.Attribute;
+import com.googlecode.psiprobe.model.SessionSearchInfo;
+import com.googlecode.psiprobe.tools.ApplicationUtils;
+import com.googlecode.psiprobe.tools.SecurityUtils;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Session;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.context.support.MessageSourceAccessor;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+/**
+ * Creates the list of sessions for a particular web application or all web applications if a webapp
+ * request parameter is not set.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ */
+public class ListSessionsController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ boolean calcSize =
+ ServletRequestUtils.getBooleanParameter(request, "size", false)
+ && SecurityUtils.hasAttributeValueRole(getServletContext(), request);
+
+ SessionSearchInfo searchInfo = new SessionSearchInfo();
+ searchInfo.setSearchAction(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(
+ request, "searchAction", SessionSearchInfo.ACTION_NONE)));
+ HttpSession sess = request.getSession();
+
+ if (searchInfo.isApply()) {
+ searchInfo.setSessionId(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(
+ request, "searchSessionId")));
+ searchInfo.setLastIP(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(request,
+ "searchLastIP")));
+
+ searchInfo.setAgeFrom(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(request,
+ "searchAgeFrom")));
+ searchInfo.setAgeTo(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(request,
+ "searchAgeTo")));
+ searchInfo.setIdleTimeFrom(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(
+ request, "searchIdleTimeFrom")));
+ searchInfo.setIdleTimeTo(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(
+ request, "searchIdleTimeTo")));
+ searchInfo.setAttrName(StringUtils.trimToNull(ServletRequestUtils.getStringParameter(request,
+ "searchAttrName")));
+ if (sess != null) {
+ sess.setAttribute(SessionSearchInfo.SESS_ATTR_NAME, searchInfo);
+ }
+ } else if (sess != null) {
+ if (searchInfo.isClear()) {
+ sess.removeAttribute(SessionSearchInfo.SESS_ATTR_NAME);
+ } else {
+ SessionSearchInfo ss =
+ (SessionSearchInfo) sess.getAttribute(SessionSearchInfo.SESS_ATTR_NAME);
+ if (ss != null) {
+ searchInfo = ss;
+ }
+ }
+ }
+
+ // context is not specified we'll retrieve all sessions of the container
+
+ List ctxs;
+ if (context == null) {
+ ctxs = getContainerWrapper().getTomcatContainer().findContexts();
+ } else {
+ ctxs = new ArrayList();
+ ctxs.add(context);
+ }
+
+ List sessionList = new ArrayList();
+ for (Iterator it = ctxs.iterator(); it.hasNext();) {
+ Context ctx = (Context) it.next();
+ if (ctx != null && ctx.getManager() != null
+ && (!searchInfo.isApply() || searchInfo.isUseSearch())) {
+ Session[] sessions = ctx.getManager().findSessions();
+ for (int i = 0; i < sessions.length; i++) {
+ Session session = sessions[i];
+ ApplicationSession appSession =
+ ApplicationUtils.getApplicationSession(session, calcSize, searchInfo.isUseAttr());
+ if (appSession != null && matchSession(appSession, searchInfo)) {
+ if (ctx.getName() != null) {
+ appSession.setApplicationName(ctx.getName().length() > 0 ? ctx.getName() : "/");
+ }
+ sessionList.add(appSession);
+ }
+ }
+ }
+ }
+
+ if (sessionList.isEmpty() && searchInfo.isApply()) {
+ synchronized (sess) {
+ populateSearchMessages(searchInfo);
+ }
+ }
+
+ ModelAndView modelAndView = new ModelAndView(getViewName(), "sessions", sessionList);
+ modelAndView.addObject("searchInfo", searchInfo);
+
+ return modelAndView;
+ }
+
+ private void populateSearchMessages(SessionSearchInfo searchInfo) {
+ MessageSourceAccessor msa = getMessageSourceAccessor();
+
+ searchInfo.getErrorMessages().clear();
+
+ if (searchInfo.isEmpty()) {
+ searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.empty"));
+ } else if (searchInfo.isValid()) {
+ searchInfo.setInfoMessage(msa.getMessage("probe.src.sessions.search.results.empty"));
+ } else {
+ if (!searchInfo.isSessionIdValid()) {
+ searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.sessionId",
+ new Object[] {searchInfo.getSessionIdMsg()}));
+ }
+ if (!searchInfo.isAttrNameValid()) {
+ for (Iterator i = searchInfo.getAttrNameMsgs().iterator(); i.hasNext();) {
+ String m = (String) i.next();
+ searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.attrName",
+ new Object[] {m}));
+ }
+ }
+ if (!searchInfo.isAgeFromValid()) {
+ searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.ageFrom"));
+ }
+ if (!searchInfo.isAgeToValid()) {
+ searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.ageTo"));
+ }
+ if (!searchInfo.isIdleTimeFromValid()) {
+ searchInfo
+ .addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.idleTimeFrom"));
+ }
+ if (!searchInfo.isIdleTimeToValid()) {
+ searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid.idleTimeTo"));
+ }
+ if (searchInfo.getErrorMessages().isEmpty()) {
+ searchInfo.addErrorMessage(msa.getMessage("probe.src.sessions.search.invalid"));
+ }
+ }
+ }
+
+ private boolean matchSession(ApplicationSession appSession, SessionSearchInfo searchInfo) {
+ boolean sessionMatches = true;
+ if (searchInfo.isUseSearch()) {
+ if (searchInfo.isUseSessionId() && appSession.getId() != null) {
+ sessionMatches = searchInfo.getSessionIdPattern().matcher(appSession.getId()).matches();
+ }
+ if (sessionMatches && searchInfo.isUseAgeFrom()) {
+ sessionMatches = appSession.getAge() >= searchInfo.getAgeFromSec().longValue() * 1000;
+ }
+ if (sessionMatches && searchInfo.isUseAgeTo()) {
+ sessionMatches = appSession.getAge() <= searchInfo.getAgeToSec().longValue() * 1000;
+ }
+ if (sessionMatches && searchInfo.isUseIdleTimeFrom()) {
+ sessionMatches =
+ appSession.getIdleTime() >= searchInfo.getIdleTimeFromSec().longValue() * 1000;
+ }
+ if (sessionMatches && searchInfo.isUseIdleTimeTo()) {
+ sessionMatches =
+ appSession.getIdleTime() <= searchInfo.getIdleTimeToSec().longValue() * 1000;
+ }
+ if (searchInfo.isUseLastIP() && appSession.getLastAccessedIP() != null) {
+ sessionMatches = appSession.getLastAccessedIP().indexOf(searchInfo.getLastIP()) > -1;
+ }
+
+ if (sessionMatches && searchInfo.isUseAttrName()) {
+ boolean attrMatches = false;
+ List a = new ArrayList();
+ a.addAll(searchInfo.getAttrNamePatterns());
+
+ for (Iterator i = appSession.getAttributes().iterator(); i.hasNext();) {
+ String attrName = ((Attribute) i.next()).getName();
+
+ if (attrName != null) {
+ for (Iterator j = a.iterator(); j.hasNext();) {
+ Pattern p = (Pattern) j.next();
+ if (p.matcher(attrName).matches()) {
+ j.remove();
+ }
+ }
+
+ if (a.isEmpty()) {
+ attrMatches = true;
+ break;
+ }
+ }
+ }
+
+ sessionMatches = attrMatches;
+ }
+ }
+
+ return sessionMatches;
+ }
+
+ protected boolean isContextOptional() {
+ return true;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/RemoveSessAttributeController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/RemoveSessAttributeController.java
index c323c248eb..aaa49501fa 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/RemoveSessAttributeController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sessions/RemoveSessAttributeController.java
@@ -1,44 +1,44 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sessions;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.Session;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class RemoveSessAttributeController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String sid = ServletRequestUtils.getStringParameter(request, "sid");
- String attrName = ServletRequestUtils.getStringParameter(request, "attr");
- Session session = context.getManager().findSession(sid);
- if (session != null) {
- session.getSession().removeAttribute(attrName);
- }
-
- return new ModelAndView(new RedirectView(request.getContextPath() + getViewName() + "?"
- + request.getQueryString()));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sessions;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Session;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class RemoveSessAttributeController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String sid = ServletRequestUtils.getStringParameter(request, "sid");
+ String attrName = ServletRequestUtils.getStringParameter(request, "attr");
+ Session session = context.getManager().findSession(sid);
+ if (session != null) {
+ session.getSession().removeAttribute(attrName);
+ }
+
+ return new ModelAndView(new RedirectView(request.getContextPath() + getViewName() + "?"
+ + request.getQueryString()));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/CachedRecordSetController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/CachedRecordSetController.java
index 2a758783fc..85795e13e0 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/CachedRecordSetController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/CachedRecordSetController.java
@@ -1,84 +1,84 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sql;
-
-import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-/**
- * Displays a result set cached in an attribute of HttpSession object to support result set
- * pagination feature without re-executing a query that created the result set.
- *
- * @author Andy Shapoval
- */
-public class CachedRecordSetController extends ParameterizableViewController {
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- int rowsPerPage = ServletRequestUtils.getIntParameter(request, "rowsPerPage", 0);
- List results = null;
- int rowsAffected = 0;
- HttpSession sess = request.getSession(false);
-
- if (sess == null) {
- request
- .setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage(
- "probe.src.dataSourceTest.cachedResultSet.failure"));
- logger.error("Cannot retrieve a cached result set. Http session is NULL.");
- } else {
- DataSourceTestInfo sessData =
- (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
-
- if (sessData == null) {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage(
- "probe.src.dataSourceTest.cachedResultSet.failure"));
- logger.error("Cannot retrieve a cached result set. " + DataSourceTestInfo.DS_TEST_SESS_ATTR
- + " session attribute is NULL.");
- } else {
- synchronized (sess) {
- sessData.setRowsPerPage(rowsPerPage);
- }
-
- results = sessData.getResults();
-
- if (results == null) {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage(
- "probe.src.dataSourceTest.cachedResultSet.failure"));
- logger.error("Cached results set is NULL.");
- } else {
- rowsAffected = results.size();
- }
- }
- }
-
- ModelAndView mv = new ModelAndView(getViewName(), "results", results);
- mv.addObject("rowsAffected", String.valueOf(rowsAffected));
- mv.addObject("rowsPerPage", String.valueOf(rowsPerPage));
-
- return mv;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sql;
+
+import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+/**
+ * Displays a result set cached in an attribute of HttpSession object to support result set
+ * pagination feature without re-executing a query that created the result set.
+ *
+ * @author Andy Shapoval
+ */
+public class CachedRecordSetController extends ParameterizableViewController {
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ int rowsPerPage = ServletRequestUtils.getIntParameter(request, "rowsPerPage", 0);
+ List results = null;
+ int rowsAffected = 0;
+ HttpSession sess = request.getSession(false);
+
+ if (sess == null) {
+ request
+ .setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage(
+ "probe.src.dataSourceTest.cachedResultSet.failure"));
+ logger.error("Cannot retrieve a cached result set. Http session is NULL.");
+ } else {
+ DataSourceTestInfo sessData =
+ (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
+
+ if (sessData == null) {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage(
+ "probe.src.dataSourceTest.cachedResultSet.failure"));
+ logger.error("Cannot retrieve a cached result set. " + DataSourceTestInfo.DS_TEST_SESS_ATTR
+ + " session attribute is NULL.");
+ } else {
+ synchronized (sess) {
+ sessData.setRowsPerPage(rowsPerPage);
+ }
+
+ results = sessData.getResults();
+
+ if (results == null) {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage(
+ "probe.src.dataSourceTest.cachedResultSet.failure"));
+ logger.error("Cached results set is NULL.");
+ } else {
+ rowsAffected = results.size();
+ }
+ }
+ }
+
+ ModelAndView mv = new ModelAndView(getViewName(), "results", results);
+ mv.addObject("rowsAffected", String.valueOf(rowsAffected));
+ mv.addObject("rowsPerPage", String.valueOf(rowsPerPage));
+
+ return mv;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/ConnectionTestController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/ConnectionTestController.java
index 3c42537cb7..21453aa25b 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/ConnectionTestController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/ConnectionTestController.java
@@ -1,111 +1,111 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sql;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.naming.NamingException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.sql.DataSource;
-
-/**
- * Verifies if a database connection can be established through a given datasource. Displays basic
- * information about the database.
- *
- * @author Andy Shapoval
- * @author Vlad Ilyushchenko
- * @author jackdimm
- */
-public class ConnectionTestController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String resourceName = ServletRequestUtils.getStringParameter(request, "resource");
- DataSource dataSource = null;
-
- try {
- dataSource =
- getContainerWrapper().getResourceResolver().lookupDataSource(context, resourceName,
- getContainerWrapper());
- } catch (NamingException e) {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.resource.lookup.failure",
- new Object[] {resourceName}));
- }
-
- if (dataSource == null) {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.resource.lookup.failure",
- new Object[] {resourceName}));
- } else {
- try {
- // TODO: use Spring's jdbc template?
- Connection conn = dataSource.getConnection();
- try {
- DatabaseMetaData md = conn.getMetaData();
-
- List dbMetaData = new ArrayList();
-
- addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.dbProdName",
- md.getDatabaseProductName());
- addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.dbProdVersion",
- md.getDatabaseProductVersion());
- addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName",
- md.getDriverName());
- addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion",
- md.getDriverVersion());
- // addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.jdbcVersion",
- // String.valueOf(md.getJDBCMajorVersion()));
-
- return new ModelAndView(getViewName(), "dbMetaData", dbMetaData);
- } finally {
- conn.close();
- }
- } catch (SQLException e) {
- String message =
- getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.connection.failure",
- new Object[] {e.getMessage()});
- logger.error(message, e);
- request.setAttribute("errorMessage", message);
- }
- }
-
- return new ModelAndView(getViewName());
- }
-
- protected boolean isContextOptional() {
- return true;
- }
-
- private void addDbMetaDataEntry(List list, String name, String value) {
- Map entry = new LinkedHashMap();
- entry.put("propertyName", getMessageSourceAccessor().getMessage(name));
- entry.put("propertyValue", value);
- list.add(entry);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sql;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.naming.NamingException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.sql.DataSource;
+
+/**
+ * Verifies if a database connection can be established through a given datasource. Displays basic
+ * information about the database.
+ *
+ * @author Andy Shapoval
+ * @author Vlad Ilyushchenko
+ * @author jackdimm
+ */
+public class ConnectionTestController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String resourceName = ServletRequestUtils.getStringParameter(request, "resource");
+ DataSource dataSource = null;
+
+ try {
+ dataSource =
+ getContainerWrapper().getResourceResolver().lookupDataSource(context, resourceName,
+ getContainerWrapper());
+ } catch (NamingException e) {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.resource.lookup.failure",
+ new Object[] {resourceName}));
+ }
+
+ if (dataSource == null) {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.resource.lookup.failure",
+ new Object[] {resourceName}));
+ } else {
+ try {
+ // TODO: use Spring's jdbc template?
+ Connection conn = dataSource.getConnection();
+ try {
+ DatabaseMetaData md = conn.getMetaData();
+
+ List dbMetaData = new ArrayList();
+
+ addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.dbProdName",
+ md.getDatabaseProductName());
+ addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.dbProdVersion",
+ md.getDatabaseProductVersion());
+ addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName",
+ md.getDriverName());
+ addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion",
+ md.getDriverVersion());
+ // addDbMetaDataEntry(dbMetaData, "probe.jsp.dataSourceTest.dbMetaData.jdbcVersion",
+ // String.valueOf(md.getJDBCMajorVersion()));
+
+ return new ModelAndView(getViewName(), "dbMetaData", dbMetaData);
+ } finally {
+ conn.close();
+ }
+ } catch (SQLException e) {
+ String message =
+ getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.connection.failure",
+ new Object[] {e.getMessage()});
+ logger.error(message, e);
+ request.setAttribute("errorMessage", message);
+ }
+ }
+
+ return new ModelAndView(getViewName());
+ }
+
+ protected boolean isContextOptional() {
+ return true;
+ }
+
+ private void addDbMetaDataEntry(List list, String name, String value) {
+ Map entry = new LinkedHashMap();
+ entry.put("propertyName", getMessageSourceAccessor().getMessage(name));
+ entry.put("propertyValue", value);
+ list.add(entry);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/DataSourceTestController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/DataSourceTestController.java
index 437ed8cdd4..46e12eace5 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/DataSourceTestController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/DataSourceTestController.java
@@ -1,106 +1,106 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sql;
-
-import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-/**
- * Displays a view that allows for a database connectivity testing. Supplies default values to input
- * fields of the view.
- *
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public class DataSourceTestController extends ParameterizableViewController {
- private int maxRows;
- private int rowsPerPage;
- private int historySize;
- private String replacePattern;
- private long collectionPeriod;
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- HttpSession sess = request.getSession(false);
-
- DataSourceTestInfo sessData = null;
-
- if (sess != null) {
- sessData = (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
- }
-
- String referer = request.getHeader("Referer");
- String backURL;
- if (referer != null) {
- backURL = referer.replaceAll(replacePattern, "");
- } else {
- backURL = null;
- }
-
- return new ModelAndView(getViewName())
- .addObject("maxRows",
- String.valueOf(sessData == null ? getMaxRows() : sessData.getMaxRows()))
- .addObject("rowsPerPage",
- String.valueOf(sessData == null ? getRowsPerPage() : sessData.getRowsPerPage()))
- .addObject("historySize",
- String.valueOf(sessData == null ? getHistorySize() : sessData.getHistorySize()))
- .addObject("backURL", backURL)
- .addObject("collectionPeriod", new Long(getCollectionPeriod()));
- }
-
- public long getCollectionPeriod() {
- return collectionPeriod;
- }
-
- public void setCollectionPeriod(long collectionPeriod) {
- this.collectionPeriod = collectionPeriod;
- }
-
- public int getMaxRows() {
- return maxRows;
- }
-
- public void setMaxRows(int maxRows) {
- this.maxRows = maxRows;
- }
-
- public int getRowsPerPage() {
- return rowsPerPage;
- }
-
- public void setRowsPerPage(int rowsPerPage) {
- this.rowsPerPage = rowsPerPage;
- }
-
- public int getHistorySize() {
- return historySize;
- }
-
- public void setHistorySize(int historySize) {
- this.historySize = historySize;
- }
-
- public String getReplacePattern() {
- return replacePattern;
- }
-
- public void setReplacePattern(String replacePattern) {
- this.replacePattern = replacePattern;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sql;
+
+import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+/**
+ * Displays a view that allows for a database connectivity testing. Supplies default values to input
+ * fields of the view.
+ *
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public class DataSourceTestController extends ParameterizableViewController {
+ private int maxRows;
+ private int rowsPerPage;
+ private int historySize;
+ private String replacePattern;
+ private long collectionPeriod;
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ HttpSession sess = request.getSession(false);
+
+ DataSourceTestInfo sessData = null;
+
+ if (sess != null) {
+ sessData = (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
+ }
+
+ String referer = request.getHeader("Referer");
+ String backURL;
+ if (referer != null) {
+ backURL = referer.replaceAll(replacePattern, "");
+ } else {
+ backURL = null;
+ }
+
+ return new ModelAndView(getViewName())
+ .addObject("maxRows",
+ String.valueOf(sessData == null ? getMaxRows() : sessData.getMaxRows()))
+ .addObject("rowsPerPage",
+ String.valueOf(sessData == null ? getRowsPerPage() : sessData.getRowsPerPage()))
+ .addObject("historySize",
+ String.valueOf(sessData == null ? getHistorySize() : sessData.getHistorySize()))
+ .addObject("backURL", backURL)
+ .addObject("collectionPeriod", new Long(getCollectionPeriod()));
+ }
+
+ public long getCollectionPeriod() {
+ return collectionPeriod;
+ }
+
+ public void setCollectionPeriod(long collectionPeriod) {
+ this.collectionPeriod = collectionPeriod;
+ }
+
+ public int getMaxRows() {
+ return maxRows;
+ }
+
+ public void setMaxRows(int maxRows) {
+ this.maxRows = maxRows;
+ }
+
+ public int getRowsPerPage() {
+ return rowsPerPage;
+ }
+
+ public void setRowsPerPage(int rowsPerPage) {
+ this.rowsPerPage = rowsPerPage;
+ }
+
+ public int getHistorySize() {
+ return historySize;
+ }
+
+ public void setHistorySize(int historySize) {
+ this.historySize = historySize;
+ }
+
+ public String getReplacePattern() {
+ return replacePattern;
+ }
+
+ public void setReplacePattern(String replacePattern) {
+ this.replacePattern = replacePattern;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/ExecuteSqlController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/ExecuteSqlController.java
index b3cdaad1bb..c424809c56 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/ExecuteSqlController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/ExecuteSqlController.java
@@ -1,196 +1,196 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sql;
-
-import com.googlecode.psiprobe.controllers.ContextHandlerController;
-import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
-
-import org.apache.catalina.Context;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.util.HtmlUtils;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.naming.NamingException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.sql.DataSource;
-
-/**
- * Executes an SQL query through a given datasource to test database connectivity. Displays results
- * returned by the query.
- *
- * @author Andy Shapoval
- * @author Mark Lewis
- * @author jackdimm
- */
-public class ExecuteSqlController extends ContextHandlerController {
-
- protected ModelAndView handleContext(String contextName, Context context,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- String resourceName = ServletRequestUtils.getStringParameter(request, "resource");
- String sql = ServletRequestUtils.getStringParameter(request, "sql", null);
-
- if (sql == null || sql.equals("") || sql.trim().equals("")) {
- request.setAttribute("errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.sql.required"));
-
- return new ModelAndView(getViewName());
- }
-
- int maxRows = ServletRequestUtils.getIntParameter(request, "maxRows", 0);
- int rowsPerPage = ServletRequestUtils.getIntParameter(request, "rowsPerPage", 0);
- int historySize = ServletRequestUtils.getIntParameter(request, "historySize", 0);
-
- // store current option values and query history in a session attribute
-
- HttpSession sess = request.getSession();
- DataSourceTestInfo sessData =
- (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
-
- synchronized (sess) {
- if (sessData == null) {
- sessData = new DataSourceTestInfo();
- sess.setAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR, sessData);
- }
-
- sessData.setMaxRows(maxRows);
- sessData.setRowsPerPage(rowsPerPage);
- sessData.setHistorySize(historySize);
- sessData.addQueryToHistory(sql);
- }
-
- DataSource dataSource = null;
-
- try {
- dataSource =
- getContainerWrapper().getResourceResolver().lookupDataSource(context, resourceName,
- getContainerWrapper());
- } catch (NamingException e) {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.resource.lookup.failure",
- new Object[] {resourceName}));
- }
-
- if (dataSource == null) {
- request.setAttribute(
- "errorMessage",
- getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.resource.lookup.failure",
- new Object[] {resourceName}));
- } else {
- List results = null;
- int rowsAffected = 0;
-
- try {
- // TODO: use Spring's jdbc template?
- Connection conn = dataSource.getConnection();
-
- try {
- conn.setAutoCommit(true);
- PreparedStatement stmt = conn.prepareStatement(sql);
-
- try {
- boolean hasResultSet = stmt.execute();
-
- if (!hasResultSet) {
- rowsAffected = stmt.getUpdateCount();
- } else {
- results = new ArrayList();
- ResultSet rs = stmt.getResultSet();
-
- try {
- ResultSetMetaData metaData = rs.getMetaData();
-
- while (rs.next() && (maxRows < 0 || results.size() < maxRows)) {
- Map record = new LinkedHashMap();
-
- for (int i = 1; i <= metaData.getColumnCount(); i++) {
- String value = rs.getString(i);
-
- if (rs.wasNull()) {
- value =
- getMessageSourceAccessor()
- .getMessage("probe.src.dataSourceTest.sql.null");
- } else {
- value = HtmlUtils.htmlEscape(value);
- }
-
- // a work around for IE browsers bug of not displaying
- // a border around an empty table column
-
- if (value.equals("")) {
- value = " ";
- }
-
- // Pad the keys of columns with existing labels so they are distinct
- String key = metaData.getColumnLabel(i);
- while (record.containsKey(key)) {
- key += " ";
- }
- record.put(HtmlUtils.htmlEscape(key), value);
- }
-
- results.add(record);
- }
- } finally {
- rs.close();
- }
-
- rowsAffected = results.size();
- }
- } finally {
- stmt.close();
- }
- } finally {
- conn.close();
- }
-
- // store the query results in the session attribute in order
- // to support a result set pagination feature without re-executing the query
-
- synchronized (sess) {
- sessData.setResults(results);
- }
-
- ModelAndView mv = new ModelAndView(getViewName(), "results", results);
- mv.addObject("rowsAffected", String.valueOf(rowsAffected));
- mv.addObject("rowsPerPage", String.valueOf(rowsPerPage));
-
- return mv;
- } catch (SQLException e) {
- String message =
- getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.sql.failure",
- new Object[] {e.getMessage()});
- logger.error(message, e);
- request.setAttribute("errorMessage", message);
- }
- }
-
- return new ModelAndView(getViewName());
- }
-
- protected boolean isContextOptional() {
- return true;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sql;
+
+import com.googlecode.psiprobe.controllers.ContextHandlerController;
+import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
+
+import org.apache.catalina.Context;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.util.HtmlUtils;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.naming.NamingException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.sql.DataSource;
+
+/**
+ * Executes an SQL query through a given datasource to test database connectivity. Displays results
+ * returned by the query.
+ *
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ * @author jackdimm
+ */
+public class ExecuteSqlController extends ContextHandlerController {
+
+ protected ModelAndView handleContext(String contextName, Context context,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+ String resourceName = ServletRequestUtils.getStringParameter(request, "resource");
+ String sql = ServletRequestUtils.getStringParameter(request, "sql", null);
+
+ if (sql == null || sql.equals("") || sql.trim().equals("")) {
+ request.setAttribute("errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.sql.required"));
+
+ return new ModelAndView(getViewName());
+ }
+
+ int maxRows = ServletRequestUtils.getIntParameter(request, "maxRows", 0);
+ int rowsPerPage = ServletRequestUtils.getIntParameter(request, "rowsPerPage", 0);
+ int historySize = ServletRequestUtils.getIntParameter(request, "historySize", 0);
+
+ // store current option values and query history in a session attribute
+
+ HttpSession sess = request.getSession();
+ DataSourceTestInfo sessData =
+ (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
+
+ synchronized (sess) {
+ if (sessData == null) {
+ sessData = new DataSourceTestInfo();
+ sess.setAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR, sessData);
+ }
+
+ sessData.setMaxRows(maxRows);
+ sessData.setRowsPerPage(rowsPerPage);
+ sessData.setHistorySize(historySize);
+ sessData.addQueryToHistory(sql);
+ }
+
+ DataSource dataSource = null;
+
+ try {
+ dataSource =
+ getContainerWrapper().getResourceResolver().lookupDataSource(context, resourceName,
+ getContainerWrapper());
+ } catch (NamingException e) {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.resource.lookup.failure",
+ new Object[] {resourceName}));
+ }
+
+ if (dataSource == null) {
+ request.setAttribute(
+ "errorMessage",
+ getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.resource.lookup.failure",
+ new Object[] {resourceName}));
+ } else {
+ List results = null;
+ int rowsAffected = 0;
+
+ try {
+ // TODO: use Spring's jdbc template?
+ Connection conn = dataSource.getConnection();
+
+ try {
+ conn.setAutoCommit(true);
+ PreparedStatement stmt = conn.prepareStatement(sql);
+
+ try {
+ boolean hasResultSet = stmt.execute();
+
+ if (!hasResultSet) {
+ rowsAffected = stmt.getUpdateCount();
+ } else {
+ results = new ArrayList();
+ ResultSet rs = stmt.getResultSet();
+
+ try {
+ ResultSetMetaData metaData = rs.getMetaData();
+
+ while (rs.next() && (maxRows < 0 || results.size() < maxRows)) {
+ Map record = new LinkedHashMap();
+
+ for (int i = 1; i <= metaData.getColumnCount(); i++) {
+ String value = rs.getString(i);
+
+ if (rs.wasNull()) {
+ value =
+ getMessageSourceAccessor()
+ .getMessage("probe.src.dataSourceTest.sql.null");
+ } else {
+ value = HtmlUtils.htmlEscape(value);
+ }
+
+ // a work around for IE browsers bug of not displaying
+ // a border around an empty table column
+
+ if (value.equals("")) {
+ value = " ";
+ }
+
+ // Pad the keys of columns with existing labels so they are distinct
+ String key = metaData.getColumnLabel(i);
+ while (record.containsKey(key)) {
+ key += " ";
+ }
+ record.put(HtmlUtils.htmlEscape(key), value);
+ }
+
+ results.add(record);
+ }
+ } finally {
+ rs.close();
+ }
+
+ rowsAffected = results.size();
+ }
+ } finally {
+ stmt.close();
+ }
+ } finally {
+ conn.close();
+ }
+
+ // store the query results in the session attribute in order
+ // to support a result set pagination feature without re-executing the query
+
+ synchronized (sess) {
+ sessData.setResults(results);
+ }
+
+ ModelAndView mv = new ModelAndView(getViewName(), "results", results);
+ mv.addObject("rowsAffected", String.valueOf(rowsAffected));
+ mv.addObject("rowsPerPage", String.valueOf(rowsPerPage));
+
+ return mv;
+ } catch (SQLException e) {
+ String message =
+ getMessageSourceAccessor().getMessage("probe.src.dataSourceTest.sql.failure",
+ new Object[] {e.getMessage()});
+ logger.error(message, e);
+ request.setAttribute("errorMessage", message);
+ }
+ }
+
+ return new ModelAndView(getViewName());
+ }
+
+ protected boolean isContextOptional() {
+ return true;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/QueryHistoryController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/QueryHistoryController.java
index 64c1dbffd6..4e219b37b4 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/QueryHistoryController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/QueryHistoryController.java
@@ -1,49 +1,49 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sql;
-
-import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-/**
- * Retrieves a history list of executed queries from a session variable.
- *
- * @author Andy Shapoval
- */
-public class QueryHistoryController extends ParameterizableViewController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- HttpSession sess = request.getSession(false);
- List queryHistory = null;
-
- if (sess != null) {
- DataSourceTestInfo sessData =
- (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
-
- if (sessData != null) {
- queryHistory = sessData.getQueryHistory();
- }
- }
-
- return new ModelAndView(getViewName(), "queryHistory", queryHistory);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sql;
+
+import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+/**
+ * Retrieves a history list of executed queries from a session variable.
+ *
+ * @author Andy Shapoval
+ */
+public class QueryHistoryController extends ParameterizableViewController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ HttpSession sess = request.getSession(false);
+ List queryHistory = null;
+
+ if (sess != null) {
+ DataSourceTestInfo sessData =
+ (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
+
+ if (sessData != null) {
+ queryHistory = sessData.getQueryHistory();
+ }
+ }
+
+ return new ModelAndView(getViewName(), "queryHistory", queryHistory);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/QueryHistoryItemController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/QueryHistoryItemController.java
index 6e18e7117e..84c1c18b82 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/sql/QueryHistoryItemController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/sql/QueryHistoryItemController.java
@@ -1,61 +1,61 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.sql;
-
-import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.AbstractController;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-/**
- * Retrieves a single query from a history list.
- *
- * @author Andy Shapoval
- */
-public class QueryHistoryItemController extends AbstractController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- int sqlId = ServletRequestUtils.getIntParameter(request, "sqlId", -1);
-
- HttpSession sess = request.getSession(false);
-
- if (sess != null) {
- DataSourceTestInfo sessData =
- (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
-
- if (sessData != null) {
- List queryHistory = sessData.getQueryHistory();
-
- if (queryHistory != null) {
- try {
- String sql = (String) queryHistory.get(sqlId);
- response.setCharacterEncoding("UTF-8");
- response.getWriter().print(sql);
- } catch (IndexOutOfBoundsException e) {
- logger.error("Cannot find a query history entry for history item id = " + sqlId);
- }
- }
- }
- }
-
- return null;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.sql;
+
+import com.googlecode.psiprobe.model.sql.DataSourceTestInfo;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.AbstractController;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+/**
+ * Retrieves a single query from a history list.
+ *
+ * @author Andy Shapoval
+ */
+public class QueryHistoryItemController extends AbstractController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ int sqlId = ServletRequestUtils.getIntParameter(request, "sqlId", -1);
+
+ HttpSession sess = request.getSession(false);
+
+ if (sess != null) {
+ DataSourceTestInfo sessData =
+ (DataSourceTestInfo) sess.getAttribute(DataSourceTestInfo.DS_TEST_SESS_ATTR);
+
+ if (sessData != null) {
+ List queryHistory = sessData.getQueryHistory();
+
+ if (queryHistory != null) {
+ try {
+ String sql = (String) queryHistory.get(sqlId);
+ response.setCharacterEncoding("UTF-8");
+ response.getWriter().print(sql);
+ } catch (IndexOutOfBoundsException e) {
+ logger.error("Cannot find a query history entry for history item id = " + sqlId);
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/system/AdviseGCController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/system/AdviseGCController.java
index d08b86194a..b727416b64 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/system/AdviseGCController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/system/AdviseGCController.java
@@ -1,61 +1,61 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.system;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Advises Java to run GC asap.
- *
- * @author Vlad Ilyushchenko
- */
-public class AdviseGCController extends ParameterizableViewController {
-
- private String replacePattern;
-
- public String getReplacePattern() {
- return replacePattern;
- }
-
- public void setReplacePattern(String replacePattern) {
- this.replacePattern = replacePattern;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- boolean finalization = ServletRequestUtils.getBooleanParameter(request, "fin", false);
-
- String referer = request.getHeader("Referer");
- String redirectURL;
- if (referer != null) {
- redirectURL = referer.replaceAll(replacePattern, "");
- } else {
- redirectURL = request.getContextPath() + getViewName();
- }
- if (finalization) {
- Runtime.getRuntime().runFinalization();
- logger.debug("Advised finalization");
- } else {
- Runtime.getRuntime().gc();
- logger.debug("Advised Garbage Collection");
- }
- logger.debug("Redirected to " + redirectURL);
- return new ModelAndView(new RedirectView(redirectURL));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.system;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Advises Java to run GC asap.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class AdviseGCController extends ParameterizableViewController {
+
+ private String replacePattern;
+
+ public String getReplacePattern() {
+ return replacePattern;
+ }
+
+ public void setReplacePattern(String replacePattern) {
+ this.replacePattern = replacePattern;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ boolean finalization = ServletRequestUtils.getBooleanParameter(request, "fin", false);
+
+ String referer = request.getHeader("Referer");
+ String redirectURL;
+ if (referer != null) {
+ redirectURL = referer.replaceAll(replacePattern, "");
+ } else {
+ redirectURL = request.getContextPath() + getViewName();
+ }
+ if (finalization) {
+ Runtime.getRuntime().runFinalization();
+ logger.debug("Advised finalization");
+ } else {
+ Runtime.getRuntime().gc();
+ logger.debug("Advised Garbage Collection");
+ }
+ logger.debug("Redirected to " + redirectURL);
+ return new ModelAndView(new RedirectView(redirectURL));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/system/MemoryStatsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/system/MemoryStatsController.java
index 8f9dbdbcbd..490480f58c 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/system/MemoryStatsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/system/MemoryStatsController.java
@@ -1,56 +1,56 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.system;
-
-import com.googlecode.psiprobe.beans.JvmMemoryInfoAccessorBean;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class MemoryStatsController extends ParameterizableViewController {
-
- private JvmMemoryInfoAccessorBean jvmMemoryInfoAccessorBean;
- private long collectionPeriod;
-
- public JvmMemoryInfoAccessorBean getJvmMemoryInfoAccessorBean() {
- return jvmMemoryInfoAccessorBean;
- }
-
- public void setJvmMemoryInfoAccessorBean(JvmMemoryInfoAccessorBean jvmMemoryInfoAccessorBean) {
- this.jvmMemoryInfoAccessorBean = jvmMemoryInfoAccessorBean;
- }
-
- public long getCollectionPeriod() {
- return collectionPeriod;
- }
-
- public void setCollectionPeriod(long collectionPeriod) {
- this.collectionPeriod = collectionPeriod;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- ModelAndView mv = new ModelAndView(getViewName());
- mv.addObject("pools", getJvmMemoryInfoAccessorBean().getPools());
- mv.addObject("collectionPeriod", new Long(getCollectionPeriod()));
- return mv;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.system;
+
+import com.googlecode.psiprobe.beans.JvmMemoryInfoAccessorBean;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class MemoryStatsController extends ParameterizableViewController {
+
+ private JvmMemoryInfoAccessorBean jvmMemoryInfoAccessorBean;
+ private long collectionPeriod;
+
+ public JvmMemoryInfoAccessorBean getJvmMemoryInfoAccessorBean() {
+ return jvmMemoryInfoAccessorBean;
+ }
+
+ public void setJvmMemoryInfoAccessorBean(JvmMemoryInfoAccessorBean jvmMemoryInfoAccessorBean) {
+ this.jvmMemoryInfoAccessorBean = jvmMemoryInfoAccessorBean;
+ }
+
+ public long getCollectionPeriod() {
+ return collectionPeriod;
+ }
+
+ public void setCollectionPeriod(long collectionPeriod) {
+ this.collectionPeriod = collectionPeriod;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ ModelAndView mv = new ModelAndView(getViewName());
+ mv.addObject("pools", getJvmMemoryInfoAccessorBean().getPools());
+ mv.addObject("collectionPeriod", new Long(getCollectionPeriod()));
+ return mv;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/system/SysInfoController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/system/SysInfoController.java
index 57a1c4c621..72e6673600 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/system/SysInfoController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/system/SysInfoController.java
@@ -1,91 +1,91 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.system;
-
-import com.googlecode.psiprobe.beans.RuntimeInfoAccessorBean;
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-import com.googlecode.psiprobe.model.SystemInformation;
-import com.googlecode.psiprobe.tools.SecurityUtils;
-
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Creates an instance of SystemInformation POJO.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class SysInfoController extends TomcatContainerController {
-
- private List filterOutKeys = new ArrayList();
- private RuntimeInfoAccessorBean runtimeInfoAccessor;
- private long collectionPeriod;
-
- public List getFilterOutKeys() {
- return filterOutKeys;
- }
-
- public void setFilterOutKeys(List filterOutKeys) {
- this.filterOutKeys = filterOutKeys;
- }
-
- public RuntimeInfoAccessorBean getRuntimeInfoAccessor() {
- return runtimeInfoAccessor;
- }
-
- public void setRuntimeInfoAccessor(RuntimeInfoAccessorBean runtimeInfoAccessor) {
- this.runtimeInfoAccessor = runtimeInfoAccessor;
- }
-
- public long getCollectionPeriod() {
- return collectionPeriod;
- }
-
- public void setCollectionPeriod(long collectionPeriod) {
- this.collectionPeriod = collectionPeriod;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- SystemInformation systemInformation = new SystemInformation();
- systemInformation.setAppBase(getContainerWrapper().getTomcatContainer().getAppBase()
- .getAbsolutePath());
- systemInformation.setConfigBase(getContainerWrapper().getTomcatContainer().getConfigBase());
-
- Map sysProps = new Properties();
- sysProps.putAll(System.getProperties());
-
- if (!SecurityUtils.hasAttributeValueRole(getServletContext(), request)) {
- for (Iterator it = filterOutKeys.iterator(); it.hasNext();) {
- sysProps.remove(it.next());
- }
- }
-
- systemInformation.setSystemProperties(sysProps);
-
- ModelAndView mv = new ModelAndView(getViewName());
- mv.addObject("systemInformation", systemInformation);
- mv.addObject("runtime", getRuntimeInfoAccessor().getRuntimeInformation());
- mv.addObject("collectionPeriod", new Long(getCollectionPeriod()));
- return mv;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.system;
+
+import com.googlecode.psiprobe.beans.RuntimeInfoAccessorBean;
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+import com.googlecode.psiprobe.model.SystemInformation;
+import com.googlecode.psiprobe.tools.SecurityUtils;
+
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Creates an instance of SystemInformation POJO.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class SysInfoController extends TomcatContainerController {
+
+ private List filterOutKeys = new ArrayList();
+ private RuntimeInfoAccessorBean runtimeInfoAccessor;
+ private long collectionPeriod;
+
+ public List getFilterOutKeys() {
+ return filterOutKeys;
+ }
+
+ public void setFilterOutKeys(List filterOutKeys) {
+ this.filterOutKeys = filterOutKeys;
+ }
+
+ public RuntimeInfoAccessorBean getRuntimeInfoAccessor() {
+ return runtimeInfoAccessor;
+ }
+
+ public void setRuntimeInfoAccessor(RuntimeInfoAccessorBean runtimeInfoAccessor) {
+ this.runtimeInfoAccessor = runtimeInfoAccessor;
+ }
+
+ public long getCollectionPeriod() {
+ return collectionPeriod;
+ }
+
+ public void setCollectionPeriod(long collectionPeriod) {
+ this.collectionPeriod = collectionPeriod;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ SystemInformation systemInformation = new SystemInformation();
+ systemInformation.setAppBase(getContainerWrapper().getTomcatContainer().getAppBase()
+ .getAbsolutePath());
+ systemInformation.setConfigBase(getContainerWrapper().getTomcatContainer().getConfigBase());
+
+ Map sysProps = new Properties();
+ sysProps.putAll(System.getProperties());
+
+ if (!SecurityUtils.hasAttributeValueRole(getServletContext(), request)) {
+ for (Iterator it = filterOutKeys.iterator(); it.hasNext();) {
+ sysProps.remove(it.next());
+ }
+ }
+
+ systemInformation.setSystemProperties(sysProps);
+
+ ModelAndView mv = new ModelAndView(getViewName());
+ mv.addObject("systemInformation", systemInformation);
+ mv.addObject("runtime", getRuntimeInfoAccessor().getRuntimeInformation());
+ mv.addObject("collectionPeriod", new Long(getCollectionPeriod()));
+ return mv;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/GetClassLoaderUrlsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/GetClassLoaderUrlsController.java
index bdbb9fde10..99ea3c0013 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/GetClassLoaderUrlsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/GetClassLoaderUrlsController.java
@@ -1,53 +1,53 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.threads;
-
-import com.googlecode.psiprobe.Utils;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import java.net.URLClassLoader;
-import java.util.Arrays;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class GetClassLoaderUrlsController extends ParameterizableViewController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- String threadName = ServletRequestUtils.getStringParameter(request, "thread", null);
-
- Thread thread = Utils.getThreadByName(threadName);
-
- if (thread != null) {
- ClassLoader cl = thread.getContextClassLoader();
- if (cl != null && cl instanceof URLClassLoader) {
- try {
- request.setAttribute("urls", Arrays.asList(((URLClassLoader) cl).getURLs()));
- } catch (Exception e) {
- logger.error("There was an exception querying classloader for thread \"" + threadName
- + "\"", e);
- }
- }
- }
-
- return new ModelAndView(getViewName());
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.threads;
+
+import com.googlecode.psiprobe.Utils;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import java.net.URLClassLoader;
+import java.util.Arrays;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class GetClassLoaderUrlsController extends ParameterizableViewController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ String threadName = ServletRequestUtils.getStringParameter(request, "thread", null);
+
+ Thread thread = Utils.getThreadByName(threadName);
+
+ if (thread != null) {
+ ClassLoader cl = thread.getContextClassLoader();
+ if (cl != null && cl instanceof URLClassLoader) {
+ try {
+ request.setAttribute("urls", Arrays.asList(((URLClassLoader) cl).getURLs()));
+ } catch (Exception e) {
+ logger.error("There was an exception querying classloader for thread \"" + threadName
+ + "\"", e);
+ }
+ }
+ }
+
+ return new ModelAndView(getViewName());
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ImplSelectorController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ImplSelectorController.java
index c308b3334e..209eb90f64 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ImplSelectorController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ImplSelectorController.java
@@ -1,57 +1,57 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.threads;
-
-import com.googlecode.psiprobe.Utils;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.AbstractController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ImplSelectorController extends AbstractController {
-
- private String impl1Controller;
- private String impl2Controller;
-
- public String getImpl1Controller() {
- return impl1Controller;
- }
-
- public void setImpl1Controller(String impl1Controller) {
- this.impl1Controller = impl1Controller;
- }
-
- public String getImpl2Controller() {
- return impl2Controller;
- }
-
- public void setImpl2Controller(String impl2Controller) {
- this.impl2Controller = impl2Controller;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- boolean forceOld = ServletRequestUtils.getBooleanParameter(request, "forceold", false);
- if (!forceOld && Utils.isThreadingEnabled()) {
- return new ModelAndView(impl2Controller);
- } else {
- return new ModelAndView(impl1Controller);
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.threads;
+
+import com.googlecode.psiprobe.Utils;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.AbstractController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ImplSelectorController extends AbstractController {
+
+ private String impl1Controller;
+ private String impl2Controller;
+
+ public String getImpl1Controller() {
+ return impl1Controller;
+ }
+
+ public void setImpl1Controller(String impl1Controller) {
+ this.impl1Controller = impl1Controller;
+ }
+
+ public String getImpl2Controller() {
+ return impl2Controller;
+ }
+
+ public void setImpl2Controller(String impl2Controller) {
+ this.impl2Controller = impl2Controller;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+ boolean forceOld = ServletRequestUtils.getBooleanParameter(request, "forceold", false);
+ if (!forceOld && Utils.isThreadingEnabled()) {
+ return new ModelAndView(impl2Controller);
+ } else {
+ return new ModelAndView(impl1Controller);
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/KillThreadController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/KillThreadController.java
index 3505cd0753..d8533d50ac 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/KillThreadController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/KillThreadController.java
@@ -1,64 +1,64 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.threads;
-
-import com.googlecode.psiprobe.Utils;
-
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-import org.springframework.web.servlet.view.RedirectView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class KillThreadController extends ParameterizableViewController {
-
- private String replacePattern;
-
- public String getReplacePattern() {
- return replacePattern;
- }
-
- public void setReplacePattern(String replacePattern) {
- this.replacePattern = replacePattern;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- String threadName = ServletRequestUtils.getStringParameter(request, "thread", null);
-
- Thread thread = null;
- if (threadName != null) {
- thread = Utils.getThreadByName(threadName);
- }
-
- if (thread != null) {
- thread.stop();
- }
-
- String referer = request.getHeader("Referer");
- String redirectURL;
- if (referer != null) {
- redirectURL = referer.replaceAll(replacePattern, "");
- } else {
- redirectURL = request.getContextPath() + getViewName();
- }
- return new ModelAndView(new RedirectView(redirectURL));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.threads;
+
+import com.googlecode.psiprobe.Utils;
+
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+import org.springframework.web.servlet.view.RedirectView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class KillThreadController extends ParameterizableViewController {
+
+ private String replacePattern;
+
+ public String getReplacePattern() {
+ return replacePattern;
+ }
+
+ public void setReplacePattern(String replacePattern) {
+ this.replacePattern = replacePattern;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ String threadName = ServletRequestUtils.getStringParameter(request, "thread", null);
+
+ Thread thread = null;
+ if (threadName != null) {
+ thread = Utils.getThreadByName(threadName);
+ }
+
+ if (thread != null) {
+ thread.stop();
+ }
+
+ String referer = request.getHeader("Referer");
+ String redirectURL;
+ if (referer != null) {
+ redirectURL = referer.replaceAll(replacePattern, "");
+ } else {
+ redirectURL = request.getContextPath() + getViewName();
+ }
+ return new ModelAndView(new RedirectView(redirectURL));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListSunThreadsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListSunThreadsController.java
index 7483f7b705..c99b307e57 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListSunThreadsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListSunThreadsController.java
@@ -1,101 +1,101 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.threads;
-
-import com.googlecode.psiprobe.model.SunThread;
-import com.googlecode.psiprobe.model.ThreadStackElement;
-import com.googlecode.psiprobe.tools.JmxTools;
-
-import org.apache.commons.modeler.Registry;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.management.openmbean.CompositeData;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ListSunThreadsController extends ParameterizableViewController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- List threads = null;
- int executionStackDepth = 1;
-
- MBeanServer mBeanServer = new Registry().getMBeanServer();
- ObjectName threadingOName = new ObjectName("java.lang:type=Threading");
-
- long[] deadlockedIds =
- (long[]) mBeanServer.invoke(threadingOName, "findMonitorDeadlockedThreads", null, null);
- long[] allIds = (long[]) mBeanServer.getAttribute(threadingOName, "AllThreadIds");
-
- if (allIds != null) {
- threads = new ArrayList(allIds.length);
-
- for (int i = 0; i < allIds.length; i++) {
- CompositeData cd =
- (CompositeData) mBeanServer.invoke(threadingOName, "getThreadInfo", new Object[] {
- new Long(allIds[i]), new Integer(executionStackDepth)},
- new String[] {"long", "int"});
-
- if (cd != null) {
- SunThread st = new SunThread();
- st.setId(JmxTools.getLongAttr(cd, "threadId"));
- st.setName(JmxTools.getStringAttr(cd, "threadName"));
- st.setState(JmxTools.getStringAttr(cd, "threadState"));
- st.setSuspended(JmxTools.getBooleanAttr(cd, "suspended"));
- st.setInNative(JmxTools.getBooleanAttr(cd, "inNative"));
- st.setLockName(JmxTools.getStringAttr(cd, "lockName"));
- st.setLockOwnerName(JmxTools.getStringAttr(cd, "lockOwnerName"));
- st.setWaitedCount(JmxTools.getLongAttr(cd, "waitedCount"));
- st.setBlockedCount(JmxTools.getLongAttr(cd, "blockedCount"));
- st.setDeadlocked(contains(deadlockedIds, st.getId()));
-
- CompositeData[] stack = (CompositeData[]) cd.get("stackTrace");
- if (stack.length > 0) {
- CompositeData cd2 = stack[0];
- ThreadStackElement tse = new ThreadStackElement();
- tse.setClassName(JmxTools.getStringAttr(cd2, "className"));
- tse.setFileName(JmxTools.getStringAttr(cd2, "fileName"));
- tse.setMethodName(JmxTools.getStringAttr(cd2, "methodName"));
- tse.setLineNumber(JmxTools.getIntAttr(cd2, "lineNumber", -1));
- tse.setNativeMethod(JmxTools.getBooleanAttr(cd2, "nativeMethod"));
- st.setExecutionPoint(tse);
- }
-
- threads.add(st);
- }
- }
- }
- return new ModelAndView(getViewName(), "threads", threads);
- }
-
- private static boolean contains(long[] array, long e) {
- if (array != null) {
- for (int i = 0; i < array.length; i++) {
- if (array[i] == e) {
- return true;
- }
- }
- }
- return false;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.threads;
+
+import com.googlecode.psiprobe.model.SunThread;
+import com.googlecode.psiprobe.model.ThreadStackElement;
+import com.googlecode.psiprobe.tools.JmxTools;
+
+import org.apache.commons.modeler.Registry;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.CompositeData;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ListSunThreadsController extends ParameterizableViewController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ List threads = null;
+ int executionStackDepth = 1;
+
+ MBeanServer mBeanServer = new Registry().getMBeanServer();
+ ObjectName threadingOName = new ObjectName("java.lang:type=Threading");
+
+ long[] deadlockedIds =
+ (long[]) mBeanServer.invoke(threadingOName, "findMonitorDeadlockedThreads", null, null);
+ long[] allIds = (long[]) mBeanServer.getAttribute(threadingOName, "AllThreadIds");
+
+ if (allIds != null) {
+ threads = new ArrayList(allIds.length);
+
+ for (int i = 0; i < allIds.length; i++) {
+ CompositeData cd =
+ (CompositeData) mBeanServer.invoke(threadingOName, "getThreadInfo", new Object[] {
+ new Long(allIds[i]), new Integer(executionStackDepth)},
+ new String[] {"long", "int"});
+
+ if (cd != null) {
+ SunThread st = new SunThread();
+ st.setId(JmxTools.getLongAttr(cd, "threadId"));
+ st.setName(JmxTools.getStringAttr(cd, "threadName"));
+ st.setState(JmxTools.getStringAttr(cd, "threadState"));
+ st.setSuspended(JmxTools.getBooleanAttr(cd, "suspended"));
+ st.setInNative(JmxTools.getBooleanAttr(cd, "inNative"));
+ st.setLockName(JmxTools.getStringAttr(cd, "lockName"));
+ st.setLockOwnerName(JmxTools.getStringAttr(cd, "lockOwnerName"));
+ st.setWaitedCount(JmxTools.getLongAttr(cd, "waitedCount"));
+ st.setBlockedCount(JmxTools.getLongAttr(cd, "blockedCount"));
+ st.setDeadlocked(contains(deadlockedIds, st.getId()));
+
+ CompositeData[] stack = (CompositeData[]) cd.get("stackTrace");
+ if (stack.length > 0) {
+ CompositeData cd2 = stack[0];
+ ThreadStackElement tse = new ThreadStackElement();
+ tse.setClassName(JmxTools.getStringAttr(cd2, "className"));
+ tse.setFileName(JmxTools.getStringAttr(cd2, "fileName"));
+ tse.setMethodName(JmxTools.getStringAttr(cd2, "methodName"));
+ tse.setLineNumber(JmxTools.getIntAttr(cd2, "lineNumber", -1));
+ tse.setNativeMethod(JmxTools.getBooleanAttr(cd2, "nativeMethod"));
+ st.setExecutionPoint(tse);
+ }
+
+ threads.add(st);
+ }
+ }
+ }
+ return new ModelAndView(getViewName(), "threads", threads);
+ }
+
+ private static boolean contains(long[] array, long e) {
+ if (array != null) {
+ for (int i = 0; i < array.length; i++) {
+ if (array[i] == e) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListThreadPoolsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListThreadPoolsController.java
index f03adf55c4..f3062ef164 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListThreadPoolsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListThreadPoolsController.java
@@ -1,47 +1,47 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.threads;
-
-import com.googlecode.psiprobe.beans.ContainerListenerBean;
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Creates the list of http connection thread pools.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ListThreadPoolsController extends TomcatContainerController {
-
- private ContainerListenerBean containerListenerBean;
-
- public ContainerListenerBean getContainerListenerBean() {
- return containerListenerBean;
- }
-
- public void setContainerListenerBean(ContainerListenerBean containerListenerBean) {
- this.containerListenerBean = containerListenerBean;
- }
-
- public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- List pools = containerListenerBean.getThreadPools();
- return new ModelAndView(getViewName()).addObject("pools", pools);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.threads;
+
+import com.googlecode.psiprobe.beans.ContainerListenerBean;
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Creates the list of http connection thread pools.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ListThreadPoolsController extends TomcatContainerController {
+
+ private ContainerListenerBean containerListenerBean;
+
+ public ContainerListenerBean getContainerListenerBean() {
+ return containerListenerBean;
+ }
+
+ public void setContainerListenerBean(ContainerListenerBean containerListenerBean) {
+ this.containerListenerBean = containerListenerBean;
+ }
+
+ public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
+ throws Exception {
+ List pools = containerListenerBean.getThreadPools();
+ return new ModelAndView(getViewName()).addObject("pools", pools);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListThreadsController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListThreadsController.java
index cc0b2f684e..30f311e14b 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListThreadsController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ListThreadsController.java
@@ -1,98 +1,98 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.threads;
-
-import com.googlecode.psiprobe.controllers.TomcatContainerController;
-import com.googlecode.psiprobe.model.java.ThreadModel;
-import com.googlecode.psiprobe.tools.Instruments;
-
-import org.apache.catalina.Context;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ListThreadsController extends TomcatContainerController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- /*
- * Create a list of webapp classloaders. This will help us to associate threads with
- * applications.
- */
- List contexts = getContainerWrapper().getTomcatContainer().findContexts();
- Map classLoaderMap = new TreeMap();
- for (int i = 0; i < contexts.size(); i++) {
- Context context = (Context) contexts.get(i);
- if (context.getLoader() != null && context.getLoader().getClassLoader() != null) {
- classLoaderMap.put(toUID(context.getLoader().getClassLoader()), context.getName());
- }
- }
-
- return new ModelAndView(getViewName(), "threads", enumerateThreads(classLoaderMap));
- }
-
- private List enumerateThreads(final Map classLoaderMap) {
-
- // get top ThreadGroup
- ThreadGroup masterGroup = Thread.currentThread().getThreadGroup();
- while (masterGroup.getParent() != null) {
- masterGroup = masterGroup.getParent();
- }
-
- // enumerate all Threads starting from top
- List threadList = new ArrayList();
-
- Thread[] threads = new Thread[masterGroup.activeCount()];
- int numThreads = masterGroup.enumerate(threads);
-
- for (int i = 0; i < numThreads; i++) {
- ThreadModel threadModel = new ThreadModel();
- threadModel.setThreadClass(threads[i].getClass().getName());
- threadModel.setName(threads[i].getName());
- threadModel.setPriority(threads[i].getPriority());
- threadModel.setDaemon(threads[i].isDaemon());
- threadModel.setInterrupted(threads[i].isInterrupted());
- if (threads[i].getThreadGroup() != null) {
- threadModel.setGroupName(threads[i].getThreadGroup().getName());
- }
- Object target = Instruments.getField(threads[i], "target");
- if (target != null) {
- threadModel.setRunnableClassName(target.getClass().getName());
- }
-
- ClassLoader cl = threads[i].getContextClassLoader();
- if (cl != null) {
- if (classLoaderMap != null) {
- threadModel.setAppName((String) classLoaderMap.get(toUID(cl)));
- }
- threadModel.setClassLoader(toUID(cl));
- }
- threadList.add(threadModel);
- }
- return threadList;
- }
-
- private static String toUID(Object o) {
- return o.getClass().getName() + "@" + o.hashCode();
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.threads;
+
+import com.googlecode.psiprobe.controllers.TomcatContainerController;
+import com.googlecode.psiprobe.model.java.ThreadModel;
+import com.googlecode.psiprobe.tools.Instruments;
+
+import org.apache.catalina.Context;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ListThreadsController extends TomcatContainerController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ /*
+ * Create a list of webapp classloaders. This will help us to associate threads with
+ * applications.
+ */
+ List contexts = getContainerWrapper().getTomcatContainer().findContexts();
+ Map classLoaderMap = new TreeMap();
+ for (int i = 0; i < contexts.size(); i++) {
+ Context context = (Context) contexts.get(i);
+ if (context.getLoader() != null && context.getLoader().getClassLoader() != null) {
+ classLoaderMap.put(toUID(context.getLoader().getClassLoader()), context.getName());
+ }
+ }
+
+ return new ModelAndView(getViewName(), "threads", enumerateThreads(classLoaderMap));
+ }
+
+ private List enumerateThreads(final Map classLoaderMap) {
+
+ // get top ThreadGroup
+ ThreadGroup masterGroup = Thread.currentThread().getThreadGroup();
+ while (masterGroup.getParent() != null) {
+ masterGroup = masterGroup.getParent();
+ }
+
+ // enumerate all Threads starting from top
+ List threadList = new ArrayList();
+
+ Thread[] threads = new Thread[masterGroup.activeCount()];
+ int numThreads = masterGroup.enumerate(threads);
+
+ for (int i = 0; i < numThreads; i++) {
+ ThreadModel threadModel = new ThreadModel();
+ threadModel.setThreadClass(threads[i].getClass().getName());
+ threadModel.setName(threads[i].getName());
+ threadModel.setPriority(threads[i].getPriority());
+ threadModel.setDaemon(threads[i].isDaemon());
+ threadModel.setInterrupted(threads[i].isInterrupted());
+ if (threads[i].getThreadGroup() != null) {
+ threadModel.setGroupName(threads[i].getThreadGroup().getName());
+ }
+ Object target = Instruments.getField(threads[i], "target");
+ if (target != null) {
+ threadModel.setRunnableClassName(target.getClass().getName());
+ }
+
+ ClassLoader cl = threads[i].getContextClassLoader();
+ if (cl != null) {
+ if (classLoaderMap != null) {
+ threadModel.setAppName((String) classLoaderMap.get(toUID(cl)));
+ }
+ threadModel.setClassLoader(toUID(cl));
+ }
+ threadList.add(threadModel);
+ }
+ return threadList;
+ }
+
+ private static String toUID(Object o) {
+ return o.getClass().getName() + "@" + o.hashCode();
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ThreadStackController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ThreadStackController.java
index 60a9874284..b59ccab0ea 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ThreadStackController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/threads/ThreadStackController.java
@@ -1,99 +1,99 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.threads;
-
-import com.googlecode.psiprobe.model.ThreadStackElement;
-import com.googlecode.psiprobe.tools.JmxTools;
-
-import org.apache.commons.modeler.Registry;
-import org.springframework.web.bind.ServletRequestUtils;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.management.openmbean.CompositeData;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ThreadStackController extends ParameterizableViewController {
-
- private int stackElementCount = 20;
-
- public int getStackElementCount() {
- return stackElementCount;
- }
-
- public void setStackElementCount(int stackElementCount) {
- this.stackElementCount = stackElementCount;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- long threadID = ServletRequestUtils.getLongParameter(request, "id", -1);
- String threadName = ServletRequestUtils.getStringParameter(request, "name", null);
-
- List stack = null;
- MBeanServer mBeanServer = new Registry().getMBeanServer();
- ObjectName threadingOName = new ObjectName("java.lang:type=Threading");
-
-
- if (threadID == -1 && threadName != null) {
- // find thread by name
- long[] allIds = (long[]) mBeanServer.getAttribute(threadingOName, "AllThreadIds");
- for (int i = 0; i < allIds.length; i++) {
- CompositeData cd =
- (CompositeData) mBeanServer.invoke(threadingOName, "getThreadInfo",
- new Object[] {new Long(allIds[i])}, new String[] {"long"});
- String name = JmxTools.getStringAttr(cd, "threadName");
- if (threadName.equals(name)) {
- threadID = allIds[i];
- break;
- }
- }
- }
-
- if (mBeanServer.queryMBeans(threadingOName, null) != null && threadID != -1) {
-
- CompositeData cd =
- (CompositeData) mBeanServer.invoke(threadingOName, "getThreadInfo", new Object[] {
- new Long(threadID), new Integer(stackElementCount)}, new String[] {"long", "int"});
- if (cd != null) {
- CompositeData[] elements = (CompositeData[]) cd.get("stackTrace");
- threadName = JmxTools.getStringAttr(cd, "threadName");
-
- stack = new ArrayList(elements.length);
-
- for (int i = 0; i < elements.length; i++) {
- CompositeData cd2 = elements[i];
- ThreadStackElement tse = new ThreadStackElement();
- tse.setClassName(JmxTools.getStringAttr(cd2, "className"));
- tse.setFileName(JmxTools.getStringAttr(cd2, "fileName"));
- tse.setMethodName(JmxTools.getStringAttr(cd2, "methodName"));
- tse.setLineNumber(JmxTools.getIntAttr(cd2, "lineNumber", -1));
- tse.setNativeMethod(JmxTools.getBooleanAttr(cd2, "nativeMethod"));
- stack.add(tse);
- }
- }
- }
-
- return new ModelAndView(getViewName(), "stack", stack).addObject("threadName", threadName);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.threads;
+
+import com.googlecode.psiprobe.model.ThreadStackElement;
+import com.googlecode.psiprobe.tools.JmxTools;
+
+import org.apache.commons.modeler.Registry;
+import org.springframework.web.bind.ServletRequestUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.CompositeData;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ThreadStackController extends ParameterizableViewController {
+
+ private int stackElementCount = 20;
+
+ public int getStackElementCount() {
+ return stackElementCount;
+ }
+
+ public void setStackElementCount(int stackElementCount) {
+ this.stackElementCount = stackElementCount;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ long threadID = ServletRequestUtils.getLongParameter(request, "id", -1);
+ String threadName = ServletRequestUtils.getStringParameter(request, "name", null);
+
+ List stack = null;
+ MBeanServer mBeanServer = new Registry().getMBeanServer();
+ ObjectName threadingOName = new ObjectName("java.lang:type=Threading");
+
+
+ if (threadID == -1 && threadName != null) {
+ // find thread by name
+ long[] allIds = (long[]) mBeanServer.getAttribute(threadingOName, "AllThreadIds");
+ for (int i = 0; i < allIds.length; i++) {
+ CompositeData cd =
+ (CompositeData) mBeanServer.invoke(threadingOName, "getThreadInfo",
+ new Object[] {new Long(allIds[i])}, new String[] {"long"});
+ String name = JmxTools.getStringAttr(cd, "threadName");
+ if (threadName.equals(name)) {
+ threadID = allIds[i];
+ break;
+ }
+ }
+ }
+
+ if (mBeanServer.queryMBeans(threadingOName, null) != null && threadID != -1) {
+
+ CompositeData cd =
+ (CompositeData) mBeanServer.invoke(threadingOName, "getThreadInfo", new Object[] {
+ new Long(threadID), new Integer(stackElementCount)}, new String[] {"long", "int"});
+ if (cd != null) {
+ CompositeData[] elements = (CompositeData[]) cd.get("stackTrace");
+ threadName = JmxTools.getStringAttr(cd, "threadName");
+
+ stack = new ArrayList(elements.length);
+
+ for (int i = 0; i < elements.length; i++) {
+ CompositeData cd2 = elements[i];
+ ThreadStackElement tse = new ThreadStackElement();
+ tse.setClassName(JmxTools.getStringAttr(cd2, "className"));
+ tse.setFileName(JmxTools.getStringAttr(cd2, "fileName"));
+ tse.setMethodName(JmxTools.getStringAttr(cd2, "methodName"));
+ tse.setLineNumber(JmxTools.getIntAttr(cd2, "lineNumber", -1));
+ tse.setNativeMethod(JmxTools.getBooleanAttr(cd2, "nativeMethod"));
+ stack.add(tse);
+ }
+ }
+ }
+
+ return new ModelAndView(getViewName(), "stack", stack).addObject("threadName", threadName);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/RestartJvmController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/RestartJvmController.java
index 4fddc20b5a..c0544189f5 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/RestartJvmController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/RestartJvmController.java
@@ -1,41 +1,41 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.wrapper;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-import org.tanukisoftware.wrapper.WrapperManager;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class RestartJvmController extends ParameterizableViewController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- boolean done = false;
- try {
- Class.forName("org.tanukisoftware.wrapper.WrapperManager");
- logger.info("JVM is RESTARTED by " + request.getRemoteAddr());
- WrapperManager.restartAndReturn();
- done = true;
- } catch (ClassNotFoundException e) {
- logger.info("WrapperManager not found. Do you have wrapper.jar in the classpath?");
- }
- return new ModelAndView(getViewName(), "done", Boolean.valueOf(done));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.wrapper;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+import org.tanukisoftware.wrapper.WrapperManager;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class RestartJvmController extends ParameterizableViewController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ boolean done = false;
+ try {
+ Class.forName("org.tanukisoftware.wrapper.WrapperManager");
+ logger.info("JVM is RESTARTED by " + request.getRemoteAddr());
+ WrapperManager.restartAndReturn();
+ done = true;
+ } catch (ClassNotFoundException e) {
+ logger.info("WrapperManager not found. Do you have wrapper.jar in the classpath?");
+ }
+ return new ModelAndView(getViewName(), "done", Boolean.valueOf(done));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/StopJvmController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/StopJvmController.java
index 5881144c4b..1a20f243fd 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/StopJvmController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/StopJvmController.java
@@ -1,51 +1,51 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.wrapper;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-import org.tanukisoftware.wrapper.WrapperManager;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class StopJvmController extends ParameterizableViewController {
-
- private int stopExitCode = 1;
-
- public int getStopExitCode() {
- return stopExitCode;
- }
-
- public void setStopExitCode(int stopExitCode) {
- this.stopExitCode = stopExitCode;
- }
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- boolean done = false;
- try {
- Class.forName("org.tanukisoftware.wrapper.WrapperManager");
- logger.info("JVM is STOPPED by " + request.getRemoteAddr());
- WrapperManager.stop(stopExitCode);
- done = true;
- } catch (ClassNotFoundException e) {
- logger.info("WrapperManager not found. Do you have wrapper.jar in the classpath?");
- }
- return new ModelAndView(getViewName(), "done", Boolean.valueOf(done));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.wrapper;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+import org.tanukisoftware.wrapper.WrapperManager;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class StopJvmController extends ParameterizableViewController {
+
+ private int stopExitCode = 1;
+
+ public int getStopExitCode() {
+ return stopExitCode;
+ }
+
+ public void setStopExitCode(int stopExitCode) {
+ this.stopExitCode = stopExitCode;
+ }
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ boolean done = false;
+ try {
+ Class.forName("org.tanukisoftware.wrapper.WrapperManager");
+ logger.info("JVM is STOPPED by " + request.getRemoteAddr());
+ WrapperManager.stop(stopExitCode);
+ done = true;
+ } catch (ClassNotFoundException e) {
+ logger.info("WrapperManager not found. Do you have wrapper.jar in the classpath?");
+ }
+ return new ModelAndView(getViewName(), "done", Boolean.valueOf(done));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/ThreadDumpController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/ThreadDumpController.java
index 8cbfcfca74..c9ee531ca7 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/ThreadDumpController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/ThreadDumpController.java
@@ -1,41 +1,41 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.wrapper;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-import org.tanukisoftware.wrapper.WrapperManager;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ThreadDumpController extends ParameterizableViewController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- boolean done = false;
- try {
- Class.forName("org.tanukisoftware.wrapper.WrapperManager");
- logger.info("ThreadDump requested by " + request.getRemoteAddr());
- WrapperManager.requestThreadDump();
- done = true;
- } catch (ClassNotFoundException e) {
- logger.info("WrapperManager not found. Do you have wrapper.jar in the classpath?");
- }
- return new ModelAndView(getViewName(), "done", Boolean.valueOf(done));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.wrapper;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+import org.tanukisoftware.wrapper.WrapperManager;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ThreadDumpController extends ParameterizableViewController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ boolean done = false;
+ try {
+ Class.forName("org.tanukisoftware.wrapper.WrapperManager");
+ logger.info("ThreadDump requested by " + request.getRemoteAddr());
+ WrapperManager.requestThreadDump();
+ done = true;
+ } catch (ClassNotFoundException e) {
+ logger.info("WrapperManager not found. Do you have wrapper.jar in the classpath?");
+ }
+ return new ModelAndView(getViewName(), "done", Boolean.valueOf(done));
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/WrapperInfoController.java b/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/WrapperInfoController.java
index 23a842a5ed..be2a8c3fa1 100644
--- a/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/WrapperInfoController.java
+++ b/core/src/main/java/com/googlecode/psiprobe/controllers/wrapper/WrapperInfoController.java
@@ -1,54 +1,54 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.controllers.wrapper;
-
-import com.googlecode.psiprobe.model.wrapper.WrapperInfo;
-
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.ParameterizableViewController;
-import org.tanukisoftware.wrapper.WrapperManager;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class WrapperInfoController extends ParameterizableViewController {
-
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- WrapperInfo wi = new WrapperInfo();
-
- try {
- Class.forName("org.tanukisoftware.wrapper.WrapperManager");
- wi.setVersion(WrapperManager.getVersion());
- wi.setBuildTime(WrapperManager.getBuildTime());
- wi.setUser(WrapperManager.getUser(false) != null ? WrapperManager.getUser(false).getUser()
- : null);
- wi.setInteractiveUser(WrapperManager.getInteractiveUser(false) != null ? WrapperManager
- .getInteractiveUser(false).getUser() : null);
- wi.setJvmPid(WrapperManager.getJavaPID());
- wi.setWrapperPid(WrapperManager.getWrapperPID());
- wi.setProperties(WrapperManager.getProperties().entrySet());
- wi.setControlledByWrapper(WrapperManager.isControlledByNativeWrapper());
- wi.setDebugEnabled(WrapperManager.isDebugEnabled());
- wi.setLaunchedAsService(WrapperManager.isLaunchedAsService());
- } catch (ClassNotFoundException e) {
- logger.info("Could not find WrapperManager class. Is wrapper.jar in the classpath?");
- wi.setControlledByWrapper(false);
- }
- return new ModelAndView(getViewName(), "wrapperInfo", wi);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.controllers.wrapper;
+
+import com.googlecode.psiprobe.model.wrapper.WrapperInfo;
+
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.ParameterizableViewController;
+import org.tanukisoftware.wrapper.WrapperManager;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class WrapperInfoController extends ParameterizableViewController {
+
+ protected ModelAndView handleRequestInternal(HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ WrapperInfo wi = new WrapperInfo();
+
+ try {
+ Class.forName("org.tanukisoftware.wrapper.WrapperManager");
+ wi.setVersion(WrapperManager.getVersion());
+ wi.setBuildTime(WrapperManager.getBuildTime());
+ wi.setUser(WrapperManager.getUser(false) != null ? WrapperManager.getUser(false).getUser()
+ : null);
+ wi.setInteractiveUser(WrapperManager.getInteractiveUser(false) != null ? WrapperManager
+ .getInteractiveUser(false).getUser() : null);
+ wi.setJvmPid(WrapperManager.getJavaPID());
+ wi.setWrapperPid(WrapperManager.getWrapperPID());
+ wi.setProperties(WrapperManager.getProperties().entrySet());
+ wi.setControlledByWrapper(WrapperManager.isControlledByNativeWrapper());
+ wi.setDebugEnabled(WrapperManager.isDebugEnabled());
+ wi.setLaunchedAsService(WrapperManager.isLaunchedAsService());
+ } catch (ClassNotFoundException e) {
+ logger.info("Could not find WrapperManager class. Is wrapper.jar in the classpath?");
+ wi.setControlledByWrapper(false);
+ }
+ return new ModelAndView(getViewName(), "wrapperInfo", wi);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/jsp/AddQueryParamTag.java b/core/src/main/java/com/googlecode/psiprobe/jsp/AddQueryParamTag.java
index 9decc6c0ba..5de669a997 100644
--- a/core/src/main/java/com/googlecode/psiprobe/jsp/AddQueryParamTag.java
+++ b/core/src/main/java/com/googlecode/psiprobe/jsp/AddQueryParamTag.java
@@ -1,70 +1,70 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.jsp;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.web.bind.ServletRequestUtils;
-
-import java.io.IOException;
-import java.util.Enumeration;
-
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.TagSupport;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class AddQueryParamTag extends TagSupport {
-
- private Log logger = LogFactory.getLog(getClass());
- private String param;
- private String value;
-
- public int doStartTag() throws JspException {
- StringBuffer query = new StringBuffer();
- query.append(param).append("=").append(value);
- for (Enumeration en = pageContext.getRequest().getParameterNames(); en.hasMoreElements();) {
- String name = (String) en.nextElement();
- if (!param.equals(name)) {
- query.append("&").append(name).append("=")
- .append(ServletRequestUtils.getStringParameter(pageContext.getRequest(), name, ""));
- }
- }
- try {
- pageContext.getOut().print(query);
- } catch (IOException e) {
- logger.debug("Exception printing query string to JspWriter", e);
- throw new JspException(e);
- }
- return EVAL_BODY_INCLUDE;
- }
-
- public String getParam() {
- return param;
- }
-
- public void setParam(String param) {
- this.param = param;
- }
-
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.jsp;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.web.bind.ServletRequestUtils;
+
+import java.io.IOException;
+import java.util.Enumeration;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class AddQueryParamTag extends TagSupport {
+
+ private Log logger = LogFactory.getLog(getClass());
+ private String param;
+ private String value;
+
+ public int doStartTag() throws JspException {
+ StringBuffer query = new StringBuffer();
+ query.append(param).append("=").append(value);
+ for (Enumeration en = pageContext.getRequest().getParameterNames(); en.hasMoreElements();) {
+ String name = (String) en.nextElement();
+ if (!param.equals(name)) {
+ query.append("&").append(name).append("=")
+ .append(ServletRequestUtils.getStringParameter(pageContext.getRequest(), name, ""));
+ }
+ }
+ try {
+ pageContext.getOut().print(query);
+ } catch (IOException e) {
+ logger.debug("Exception printing query string to JspWriter", e);
+ throw new JspException(e);
+ }
+ return EVAL_BODY_INCLUDE;
+ }
+
+ public String getParam() {
+ return param;
+ }
+
+ public void setParam(String param) {
+ this.param = param;
+ }
+
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/jsp/DurationTag.java b/core/src/main/java/com/googlecode/psiprobe/jsp/DurationTag.java
index 7854f11ec8..9472f72554 100644
--- a/core/src/main/java/com/googlecode/psiprobe/jsp/DurationTag.java
+++ b/core/src/main/java/com/googlecode/psiprobe/jsp/DurationTag.java
@@ -1,67 +1,67 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.jsp;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.IOException;
-
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.TagSupport;
-
-/**
- * Silly JSP tag to display duration in milliseconds as hours:minutes:seconds.milliseconds
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class DurationTag extends TagSupport {
-
- private static Log logger = LogFactory.getLog(DurationTag.class);
-
- private long value;
-
- public void setValue(long value) {
- this.value = value;
- }
-
- public int doStartTag() throws JspException {
- try {
- pageContext.getOut().write(duration(value));
- } catch (IOException e) {
- logger.debug("Exception writing duration to JspWriter", e);
- throw new JspException(e);
- }
- return EVAL_BODY_INCLUDE;
- }
-
- public static String duration(long value) {
- long millis = value % 1000;
- long sec = value / 1000;
- long mins = sec / 60;
- long hours = mins / 60;
-
- sec = sec % 60;
- mins = mins % 60;
-
- return hours + ":" + long2Str(mins) + ":" + long2Str(sec) + "." + long3Str(millis);
- }
-
- private static String long2Str(long l) {
- return l < 10 ? "0" + l : Long.toString(l);
- }
-
- private static String long3Str(long l) {
- return l < 10 ? "00" + l : l < 100 ? "0" + l : Long.toString(l);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.jsp;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.IOException;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+/**
+ * Silly JSP tag to display duration in milliseconds as hours:minutes:seconds.milliseconds
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class DurationTag extends TagSupport {
+
+ private static Log logger = LogFactory.getLog(DurationTag.class);
+
+ private long value;
+
+ public void setValue(long value) {
+ this.value = value;
+ }
+
+ public int doStartTag() throws JspException {
+ try {
+ pageContext.getOut().write(duration(value));
+ } catch (IOException e) {
+ logger.debug("Exception writing duration to JspWriter", e);
+ throw new JspException(e);
+ }
+ return EVAL_BODY_INCLUDE;
+ }
+
+ public static String duration(long value) {
+ long millis = value % 1000;
+ long sec = value / 1000;
+ long mins = sec / 60;
+ long hours = mins / 60;
+
+ sec = sec % 60;
+ mins = mins % 60;
+
+ return hours + ":" + long2Str(mins) + ":" + long2Str(sec) + "." + long3Str(millis);
+ }
+
+ private static String long2Str(long l) {
+ return l < 10 ? "0" + l : Long.toString(l);
+ }
+
+ private static String long3Str(long l) {
+ return l < 10 ? "00" + l : l < 100 ? "0" + l : Long.toString(l);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/jsp/OutTag.java b/core/src/main/java/com/googlecode/psiprobe/jsp/OutTag.java
index f0d3e9b1ae..2fbe48b302 100644
--- a/core/src/main/java/com/googlecode/psiprobe/jsp/OutTag.java
+++ b/core/src/main/java/com/googlecode/psiprobe/jsp/OutTag.java
@@ -1,89 +1,89 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.jsp;
-
-import org.apache.commons.lang.StringEscapeUtils;
-
-import java.io.IOException;
-
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspWriter;
-import javax.servlet.jsp.tagext.BodyTagSupport;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class OutTag extends BodyTagSupport {
-
- private int maxLength = -1;
- private boolean ellipsisRight = true;
- private Object value = null;
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-
- public int getMaxLength() {
- return maxLength;
- }
-
- public void setMaxLength(int maxLength) {
- this.maxLength = maxLength;
- }
-
- public boolean isEllipsisRight() {
- return ellipsisRight;
- }
-
- public void setEllipsisRight(boolean ellipsisRight) {
- this.ellipsisRight = ellipsisRight;
- }
-
- public int doStartTag() throws JspException {
- if (value != null) {
- print(value.toString(), pageContext.getOut());
- return SKIP_BODY;
- } else {
- return super.doStartTag();
- }
- }
-
- public int doAfterBody() throws JspException {
- print(getBodyContent().getString().trim(), getBodyContent().getEnclosingWriter());
- return SKIP_BODY;
- }
-
- private void print(String displayValue, JspWriter out) throws JspException {
- try {
- if (maxLength != -1 && displayValue.length() > maxLength) {
- String newValue;
- if (ellipsisRight) {
- newValue = displayValue.substring(0, maxLength - 3) + "...";
- } else {
- newValue = "..." + displayValue.substring(displayValue.length() - maxLength + 3);
- }
- String title = StringEscapeUtils.escapeHtml(displayValue);
- out.print("" + newValue + "");
- } else {
- out.print(displayValue);
- }
- } catch (IOException e) {
- throw new JspException(e);
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.jsp;
+
+import org.apache.commons.lang.StringEscapeUtils;
+
+import java.io.IOException;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.tagext.BodyTagSupport;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class OutTag extends BodyTagSupport {
+
+ private int maxLength = -1;
+ private boolean ellipsisRight = true;
+ private Object value = null;
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public int getMaxLength() {
+ return maxLength;
+ }
+
+ public void setMaxLength(int maxLength) {
+ this.maxLength = maxLength;
+ }
+
+ public boolean isEllipsisRight() {
+ return ellipsisRight;
+ }
+
+ public void setEllipsisRight(boolean ellipsisRight) {
+ this.ellipsisRight = ellipsisRight;
+ }
+
+ public int doStartTag() throws JspException {
+ if (value != null) {
+ print(value.toString(), pageContext.getOut());
+ return SKIP_BODY;
+ } else {
+ return super.doStartTag();
+ }
+ }
+
+ public int doAfterBody() throws JspException {
+ print(getBodyContent().getString().trim(), getBodyContent().getEnclosingWriter());
+ return SKIP_BODY;
+ }
+
+ private void print(String displayValue, JspWriter out) throws JspException {
+ try {
+ if (maxLength != -1 && displayValue.length() > maxLength) {
+ String newValue;
+ if (ellipsisRight) {
+ newValue = displayValue.substring(0, maxLength - 3) + "...";
+ } else {
+ newValue = "..." + displayValue.substring(displayValue.length() - maxLength + 3);
+ }
+ String title = StringEscapeUtils.escapeHtml(displayValue);
+ out.print("" + newValue + "");
+ } else {
+ out.print(displayValue);
+ }
+ } catch (IOException e) {
+ throw new JspException(e);
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/jsp/ParamToggleTag.java b/core/src/main/java/com/googlecode/psiprobe/jsp/ParamToggleTag.java
index bad2dc5b8f..73851ca1e0 100644
--- a/core/src/main/java/com/googlecode/psiprobe/jsp/ParamToggleTag.java
+++ b/core/src/main/java/com/googlecode/psiprobe/jsp/ParamToggleTag.java
@@ -1,70 +1,70 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.jsp;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.web.bind.ServletRequestUtils;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.Enumeration;
-
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.TagSupport;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ParamToggleTag extends TagSupport {
-
- private Log logger = LogFactory.getLog(getClass());
- private String param = "size";
-
- public int doStartTag() throws JspException {
- boolean getSize =
- ServletRequestUtils.getBooleanParameter(pageContext.getRequest(), param, false);
- StringBuffer query = new StringBuffer();
- query.append(param).append("=").append(!getSize);
- String encoding = pageContext.getResponse().getCharacterEncoding();
- for (Enumeration en = pageContext.getRequest().getParameterNames(); en.hasMoreElements();) {
- String name = (String) en.nextElement();
- if (!param.equals(name)) {
- try {
- String value = ServletRequestUtils.getStringParameter(pageContext.getRequest(), name, "");
- String encodedValue = URLEncoder.encode(value, encoding);
- query.append("&").append(name).append("=").append(encodedValue);
- } catch (UnsupportedEncodingException e) {
- throw new JspException(e);
- }
- }
- }
- try {
- pageContext.getOut().print(query);
- } catch (IOException e) {
- logger.debug("Exception printing query string to JspWriter", e);
- throw new JspException(e);
- }
- return EVAL_BODY_INCLUDE;
- }
-
- public String getParam() {
- return param;
- }
-
- public void setParam(String param) {
- this.param = param;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.jsp;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.web.bind.ServletRequestUtils;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Enumeration;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ParamToggleTag extends TagSupport {
+
+ private Log logger = LogFactory.getLog(getClass());
+ private String param = "size";
+
+ public int doStartTag() throws JspException {
+ boolean getSize =
+ ServletRequestUtils.getBooleanParameter(pageContext.getRequest(), param, false);
+ StringBuffer query = new StringBuffer();
+ query.append(param).append("=").append(!getSize);
+ String encoding = pageContext.getResponse().getCharacterEncoding();
+ for (Enumeration en = pageContext.getRequest().getParameterNames(); en.hasMoreElements();) {
+ String name = (String) en.nextElement();
+ if (!param.equals(name)) {
+ try {
+ String value = ServletRequestUtils.getStringParameter(pageContext.getRequest(), name, "");
+ String encodedValue = URLEncoder.encode(value, encoding);
+ query.append("&").append(name).append("=").append(encodedValue);
+ } catch (UnsupportedEncodingException e) {
+ throw new JspException(e);
+ }
+ }
+ }
+ try {
+ pageContext.getOut().print(query);
+ } catch (IOException e) {
+ logger.debug("Exception printing query string to JspWriter", e);
+ throw new JspException(e);
+ }
+ return EVAL_BODY_INCLUDE;
+ }
+
+ public String getParam() {
+ return param;
+ }
+
+ public void setParam(String param) {
+ this.param = param;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/jsp/VisualScoreTag.java b/core/src/main/java/com/googlecode/psiprobe/jsp/VisualScoreTag.java
index 34fc77bf47..e4302ee37b 100644
--- a/core/src/main/java/com/googlecode/psiprobe/jsp/VisualScoreTag.java
+++ b/core/src/main/java/com/googlecode/psiprobe/jsp/VisualScoreTag.java
@@ -1,265 +1,265 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.jsp;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspWriter;
-import javax.servlet.jsp.tagext.BodyContent;
-import javax.servlet.jsp.tagext.BodyTagSupport;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class VisualScoreTag extends BodyTagSupport {
-
- private static final long serialVersionUID = -5653846466205838602L;
-
- private static final String WHITE_LEFT_BORDER = "a0";
- private static final String RED_LEFT_BORDER = "a1";
- private static final String BLUE_LEFT_BORDER = "a2";
-
- private static final String WHITE_RIGHT_BORDER = "b0";
- private static final String RED_RIGHT_BORDER = "b1";
- private static final String BLUE_RIGHT_BORDER = "b2";
-
- protected Log log = LogFactory.getLog(getClass());
-
- /**
- * Red value.
- */
- private double value = 0;
-
- /**
- * Blue value.
- */
- private double value2 = 0;
-
- private double minValue = 0;
- private double maxValue = 100;
-
- /**
- * Number of parts in one block.
- * It always must be 5 to match the 5 different gifs available at
- * /src/main/webapp/css/classic/gifs
- */
- private int partialBlocks = 1;
-
- /**
- * Total number of blocks.
- * fullBlocks + 2 img elements will be added to the page.
- * The plus 2 is due the left and right border.
- */
- private int fullBlocks = 5;
-
- private boolean showEmptyBlocks = false;
- private boolean showA = false;
- private boolean showB = false;
-
- public int doAfterBody() throws JspException {
- BodyContent bc = getBodyContent();
- String body = bc.getString().trim();
-
- StringBuffer buf = calculateSuffix(body);
-
- try {
- JspWriter out = bc.getEnclosingWriter();
- out.print(buf.toString());
- } catch (IOException ioe) {
- throw new JspException("Error:IOException while writing to client" + ioe.getMessage());
- }
-
- return SKIP_BODY;
- }
-
- StringBuffer calculateSuffix(String body) {
- if (value < minValue) {
- log.info("value " + value + " is less than min value " + minValue);
- value = minValue;
- }
- if (value > maxValue) {
- log.info("value " + value + " is greater than max value " + maxValue);
- value = maxValue;
- }
- if (value + value2 < minValue || value2 < 0) {
- log.info("value2 " + value2 + " is less than min value");
- value2 = 0;
- }
- if (value + value2 > maxValue) {
- log.info("value2 " + value2 + " is greater than max value");
- value2 = maxValue - value;
- }
-
- double unitSize = (maxValue - minValue) / (fullBlocks * partialBlocks);
- double blockWidth = unitSize * partialBlocks;
-
- int fullRedBlockCount = (int) Math.floor(value / blockWidth);
- int partialRedBlockIndex =
- (int) Math.floor((value - fullRedBlockCount * blockWidth) / unitSize);
- int partialBlueBlockIndex1 =
- (partialRedBlockIndex > 0 ? Math.min((int) Math.floor(value2 / unitSize), partialBlocks
- - partialRedBlockIndex) : 0);
- int fullBlueBlockCount =
- Math.max(0, (int) Math.ceil(value2 / blockWidth) - (partialRedBlockIndex > 0 ? 1 : 0));
- int partialBlueBlockIndex2 =
- (int) Math
- .floor((value2 - (fullBlueBlockCount * blockWidth) - (partialBlueBlockIndex1 * unitSize))
- / unitSize);
-
- StringBuffer buf = new StringBuffer();
-
- // Beginning
- if (showA) {
- String format = WHITE_LEFT_BORDER;
- if (fullRedBlockCount > 0 || partialRedBlockIndex > 0) {
- format = RED_LEFT_BORDER;
- } else if (partialBlueBlockIndex1 == 0
- && (fullBlueBlockCount > 0 || partialBlueBlockIndex2 > 0)) {
- format = BLUE_LEFT_BORDER;
- }
- buf.append(MessageFormat.format(body, new Object[] {format}));
- }
-
- // Full red blocks
- String fullRedBody = MessageFormat.format(body, new Object[] {partialBlocks + "+0"});
- for (int i = 0; i < fullRedBlockCount; i++) {
- buf.append(fullRedBody);
- }
-
- // Mixed red/blue block (mid-block transition)
- if (partialRedBlockIndex > 0) {
- String partialBody =
- MessageFormat.format(body, new Object[] {partialRedBlockIndex + "+"
- + partialBlueBlockIndex1});
- buf.append(partialBody);
- }
-
- // Full blue blocks
- String fullBlueBody = MessageFormat.format(body, new Object[] {"0+" + partialBlocks});
- for (int i = 0; i < fullBlueBlockCount; i++) {
- buf.append(fullBlueBody);
- }
-
- // Partial blue block
- if (partialBlueBlockIndex2 > 0) {
- String partialBody = MessageFormat.format(body, new Object[] {"0+" + partialBlueBlockIndex2});
- buf.append(partialBody);
- }
-
- // Empty blocks
- int emptyBlocks =
- showEmptyBlocks ? fullBlocks
- - (fullRedBlockCount + fullBlueBlockCount + (partialRedBlockIndex > 0 ? 1 : 0) + (partialBlueBlockIndex2 > 0 ? 1
- : 0))
- : 0;
- if (emptyBlocks > 0) {
- String emptyBody = MessageFormat.format(body, new Object[] {"0+0"});
- for (int i = 0; i < emptyBlocks; i++) {
- buf.append(emptyBody);
- }
- }
-
- // End
- if (showB) {
- String format = WHITE_RIGHT_BORDER;
- if (fullRedBlockCount == fullBlocks) {
- format = RED_RIGHT_BORDER;
- } else if (fullRedBlockCount
- + (partialRedBlockIndex + partialBlueBlockIndex1 == partialBlocks ? 1 : 0)
- + fullBlueBlockCount == fullBlocks) {
- format = BLUE_RIGHT_BORDER;
- }
- buf.append(MessageFormat.format(body, new Object[] {format}));
- }
-
- return buf;
- }
-
- public double getValue() {
- return value;
- }
-
- public void setValue(double value) {
- this.value = value;
- }
-
- public double getValue2() {
- return value2;
- }
-
- public void setValue2(double value2) {
- this.value2 = value2;
- }
-
- public double getMinValue() {
- return minValue;
- }
-
- public void setMinValue(double minValue) {
- this.minValue = minValue;
- }
-
- public double getMaxValue() {
- return maxValue;
- }
-
- public void setMaxValue(double maxValue) {
- this.maxValue = maxValue;
- }
-
- public int getPartialBlocks() {
- return partialBlocks;
- }
-
- public void setPartialBlocks(int partialBlocks) {
- this.partialBlocks = partialBlocks;
- }
-
- public int getFullBlocks() {
- return fullBlocks;
- }
-
- public void setFullBlocks(int fullBlocks) {
- this.fullBlocks = fullBlocks;
- }
-
- public boolean isShowEmptyBlocks() {
- return showEmptyBlocks;
- }
-
- public void setShowEmptyBlocks(boolean showEmptyBlocks) {
- this.showEmptyBlocks = showEmptyBlocks;
- }
-
- public boolean isShowA() {
- return showA;
- }
-
- public void setShowA(boolean showA) {
- this.showA = showA;
- }
-
- public boolean isShowB() {
- return showB;
- }
-
- public void setShowB(boolean showB) {
- this.showB = showB;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.jsp;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.tagext.BodyContent;
+import javax.servlet.jsp.tagext.BodyTagSupport;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class VisualScoreTag extends BodyTagSupport {
+
+ private static final long serialVersionUID = -5653846466205838602L;
+
+ private static final String WHITE_LEFT_BORDER = "a0";
+ private static final String RED_LEFT_BORDER = "a1";
+ private static final String BLUE_LEFT_BORDER = "a2";
+
+ private static final String WHITE_RIGHT_BORDER = "b0";
+ private static final String RED_RIGHT_BORDER = "b1";
+ private static final String BLUE_RIGHT_BORDER = "b2";
+
+ protected Log log = LogFactory.getLog(getClass());
+
+ /**
+ * Red value.
+ */
+ private double value = 0;
+
+ /**
+ * Blue value.
+ */
+ private double value2 = 0;
+
+ private double minValue = 0;
+ private double maxValue = 100;
+
+ /**
+ * Number of parts in one block.
+ * It always must be 5 to match the 5 different gifs available at
+ * /src/main/webapp/css/classic/gifs
+ */
+ private int partialBlocks = 1;
+
+ /**
+ * Total number of blocks.
+ * fullBlocks + 2 img elements will be added to the page.
+ * The plus 2 is due the left and right border.
+ */
+ private int fullBlocks = 5;
+
+ private boolean showEmptyBlocks = false;
+ private boolean showA = false;
+ private boolean showB = false;
+
+ public int doAfterBody() throws JspException {
+ BodyContent bc = getBodyContent();
+ String body = bc.getString().trim();
+
+ StringBuffer buf = calculateSuffix(body);
+
+ try {
+ JspWriter out = bc.getEnclosingWriter();
+ out.print(buf.toString());
+ } catch (IOException ioe) {
+ throw new JspException("Error:IOException while writing to client" + ioe.getMessage());
+ }
+
+ return SKIP_BODY;
+ }
+
+ StringBuffer calculateSuffix(String body) {
+ if (value < minValue) {
+ log.info("value " + value + " is less than min value " + minValue);
+ value = minValue;
+ }
+ if (value > maxValue) {
+ log.info("value " + value + " is greater than max value " + maxValue);
+ value = maxValue;
+ }
+ if (value + value2 < minValue || value2 < 0) {
+ log.info("value2 " + value2 + " is less than min value");
+ value2 = 0;
+ }
+ if (value + value2 > maxValue) {
+ log.info("value2 " + value2 + " is greater than max value");
+ value2 = maxValue - value;
+ }
+
+ double unitSize = (maxValue - minValue) / (fullBlocks * partialBlocks);
+ double blockWidth = unitSize * partialBlocks;
+
+ int fullRedBlockCount = (int) Math.floor(value / blockWidth);
+ int partialRedBlockIndex =
+ (int) Math.floor((value - fullRedBlockCount * blockWidth) / unitSize);
+ int partialBlueBlockIndex1 =
+ (partialRedBlockIndex > 0 ? Math.min((int) Math.floor(value2 / unitSize), partialBlocks
+ - partialRedBlockIndex) : 0);
+ int fullBlueBlockCount =
+ Math.max(0, (int) Math.ceil(value2 / blockWidth) - (partialRedBlockIndex > 0 ? 1 : 0));
+ int partialBlueBlockIndex2 =
+ (int) Math
+ .floor((value2 - (fullBlueBlockCount * blockWidth) - (partialBlueBlockIndex1 * unitSize))
+ / unitSize);
+
+ StringBuffer buf = new StringBuffer();
+
+ // Beginning
+ if (showA) {
+ String format = WHITE_LEFT_BORDER;
+ if (fullRedBlockCount > 0 || partialRedBlockIndex > 0) {
+ format = RED_LEFT_BORDER;
+ } else if (partialBlueBlockIndex1 == 0
+ && (fullBlueBlockCount > 0 || partialBlueBlockIndex2 > 0)) {
+ format = BLUE_LEFT_BORDER;
+ }
+ buf.append(MessageFormat.format(body, new Object[] {format}));
+ }
+
+ // Full red blocks
+ String fullRedBody = MessageFormat.format(body, new Object[] {partialBlocks + "+0"});
+ for (int i = 0; i < fullRedBlockCount; i++) {
+ buf.append(fullRedBody);
+ }
+
+ // Mixed red/blue block (mid-block transition)
+ if (partialRedBlockIndex > 0) {
+ String partialBody =
+ MessageFormat.format(body, new Object[] {partialRedBlockIndex + "+"
+ + partialBlueBlockIndex1});
+ buf.append(partialBody);
+ }
+
+ // Full blue blocks
+ String fullBlueBody = MessageFormat.format(body, new Object[] {"0+" + partialBlocks});
+ for (int i = 0; i < fullBlueBlockCount; i++) {
+ buf.append(fullBlueBody);
+ }
+
+ // Partial blue block
+ if (partialBlueBlockIndex2 > 0) {
+ String partialBody = MessageFormat.format(body, new Object[] {"0+" + partialBlueBlockIndex2});
+ buf.append(partialBody);
+ }
+
+ // Empty blocks
+ int emptyBlocks =
+ showEmptyBlocks ? fullBlocks
+ - (fullRedBlockCount + fullBlueBlockCount + (partialRedBlockIndex > 0 ? 1 : 0) + (partialBlueBlockIndex2 > 0 ? 1
+ : 0))
+ : 0;
+ if (emptyBlocks > 0) {
+ String emptyBody = MessageFormat.format(body, new Object[] {"0+0"});
+ for (int i = 0; i < emptyBlocks; i++) {
+ buf.append(emptyBody);
+ }
+ }
+
+ // End
+ if (showB) {
+ String format = WHITE_RIGHT_BORDER;
+ if (fullRedBlockCount == fullBlocks) {
+ format = RED_RIGHT_BORDER;
+ } else if (fullRedBlockCount
+ + (partialRedBlockIndex + partialBlueBlockIndex1 == partialBlocks ? 1 : 0)
+ + fullBlueBlockCount == fullBlocks) {
+ format = BLUE_RIGHT_BORDER;
+ }
+ buf.append(MessageFormat.format(body, new Object[] {format}));
+ }
+
+ return buf;
+ }
+
+ public double getValue() {
+ return value;
+ }
+
+ public void setValue(double value) {
+ this.value = value;
+ }
+
+ public double getValue2() {
+ return value2;
+ }
+
+ public void setValue2(double value2) {
+ this.value2 = value2;
+ }
+
+ public double getMinValue() {
+ return minValue;
+ }
+
+ public void setMinValue(double minValue) {
+ this.minValue = minValue;
+ }
+
+ public double getMaxValue() {
+ return maxValue;
+ }
+
+ public void setMaxValue(double maxValue) {
+ this.maxValue = maxValue;
+ }
+
+ public int getPartialBlocks() {
+ return partialBlocks;
+ }
+
+ public void setPartialBlocks(int partialBlocks) {
+ this.partialBlocks = partialBlocks;
+ }
+
+ public int getFullBlocks() {
+ return fullBlocks;
+ }
+
+ public void setFullBlocks(int fullBlocks) {
+ this.fullBlocks = fullBlocks;
+ }
+
+ public boolean isShowEmptyBlocks() {
+ return showEmptyBlocks;
+ }
+
+ public void setShowEmptyBlocks(boolean showEmptyBlocks) {
+ this.showEmptyBlocks = showEmptyBlocks;
+ }
+
+ public boolean isShowA() {
+ return showA;
+ }
+
+ public void setShowA(boolean showA) {
+ this.showA = showA;
+ }
+
+ public boolean isShowB() {
+ return showB;
+ }
+
+ public void setShowB(boolean showB) {
+ this.showB = showB;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/jsp/VolumeTag.java b/core/src/main/java/com/googlecode/psiprobe/jsp/VolumeTag.java
index ad76a436f4..5e4230225a 100644
--- a/core/src/main/java/com/googlecode/psiprobe/jsp/VolumeTag.java
+++ b/core/src/main/java/com/googlecode/psiprobe/jsp/VolumeTag.java
@@ -1,62 +1,62 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.jsp;
-
-import com.googlecode.psiprobe.tools.SizeExpression;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.IOException;
-
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.TagSupport;
-
-/**
- * JSP tag to convert size from bytes into human readable form: KB, MB, GB or TB depending on how
- * large the value in bytes is.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class VolumeTag extends TagSupport {
-
- private Log logger = LogFactory.getLog(getClass());
-
- private long value;
- private int fractions = 0;
-
- public void setValue(long value) {
- this.value = value;
- }
-
- public int getFractions() {
- return fractions;
- }
-
- public void setFractions(int fractions) {
- this.fractions = fractions;
- }
-
- public int doStartTag() throws JspException {
- String title = Long.toString(value);
- String newValue = SizeExpression.format(value, fractions, true);
- try {
- pageContext.getOut().write("" + newValue + "");
- } catch (IOException e) {
- logger.debug("Exception writing value to JspWriter", e);
- throw new JspException(e);
- }
-
- return EVAL_BODY_INCLUDE;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.jsp;
+
+import com.googlecode.psiprobe.tools.SizeExpression;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.IOException;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+/**
+ * JSP tag to convert size from bytes into human readable form: KB, MB, GB or TB depending on how
+ * large the value in bytes is.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class VolumeTag extends TagSupport {
+
+ private Log logger = LogFactory.getLog(getClass());
+
+ private long value;
+ private int fractions = 0;
+
+ public void setValue(long value) {
+ this.value = value;
+ }
+
+ public int getFractions() {
+ return fractions;
+ }
+
+ public void setFractions(int fractions) {
+ this.fractions = fractions;
+ }
+
+ public int doStartTag() throws JspException {
+ String title = Long.toString(value);
+ String newValue = SizeExpression.format(value, fractions, true);
+ try {
+ pageContext.getOut().write("" + newValue + "");
+ } catch (IOException e) {
+ logger.debug("Exception writing value to JspWriter", e);
+ throw new JspException(e);
+ }
+
+ return EVAL_BODY_INCLUDE;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/mappers/AjaxDecoratorMapper.java b/core/src/main/java/com/googlecode/psiprobe/mappers/AjaxDecoratorMapper.java
index 45cfa8e5e0..969a680143 100644
--- a/core/src/main/java/com/googlecode/psiprobe/mappers/AjaxDecoratorMapper.java
+++ b/core/src/main/java/com/googlecode/psiprobe/mappers/AjaxDecoratorMapper.java
@@ -1,62 +1,62 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.mappers;
-
-import com.opensymphony.module.sitemesh.Config;
-import com.opensymphony.module.sitemesh.Decorator;
-import com.opensymphony.module.sitemesh.DecoratorMapper;
-import com.opensymphony.module.sitemesh.Page;
-import com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper;
-
-import java.util.Properties;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * The AjaxDecoratorMapper will exclude all "ajax" requests from being decorated. It will also make
- * sure that error pages rendered during ajax request execution are not decorated.
- *
- * @author Vlad Ilyushchenko
- */
-public class AjaxDecoratorMapper extends AbstractDecoratorMapper {
-
- private String ajaxExtension = ".ajax";
-
- public void init(Config config, Properties properties, DecoratorMapper decoratorMapper)
- throws InstantiationException {
-
- super.init(config, properties, decoratorMapper);
- if (properties.get("ajaxExtension") != null) {
- ajaxExtension = (String) properties.get("ajaxExtension");
- }
- }
-
- public Decorator getDecorator(HttpServletRequest request, Page page) {
-
- boolean callMapperChain;
- String originalURI = (String) request.getAttribute("javax.servlet.error.request_uri");
- if (originalURI != null) {
- //
- // cut off the query string
- //
- int qIdx = originalURI.indexOf("?");
- if (qIdx != -1) {
- originalURI = originalURI.substring(0, qIdx);
- }
- }
- callMapperChain =
- (originalURI == null || !originalURI.endsWith(ajaxExtension))
- && (!request.getServletPath().endsWith(ajaxExtension));
-
- return callMapperChain ? super.getDecorator(request, page) : null;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.mappers;
+
+import com.opensymphony.module.sitemesh.Config;
+import com.opensymphony.module.sitemesh.Decorator;
+import com.opensymphony.module.sitemesh.DecoratorMapper;
+import com.opensymphony.module.sitemesh.Page;
+import com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper;
+
+import java.util.Properties;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * The AjaxDecoratorMapper will exclude all "ajax" requests from being decorated. It will also make
+ * sure that error pages rendered during ajax request execution are not decorated.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class AjaxDecoratorMapper extends AbstractDecoratorMapper {
+
+ private String ajaxExtension = ".ajax";
+
+ public void init(Config config, Properties properties, DecoratorMapper decoratorMapper)
+ throws InstantiationException {
+
+ super.init(config, properties, decoratorMapper);
+ if (properties.get("ajaxExtension") != null) {
+ ajaxExtension = (String) properties.get("ajaxExtension");
+ }
+ }
+
+ public Decorator getDecorator(HttpServletRequest request, Page page) {
+
+ boolean callMapperChain;
+ String originalURI = (String) request.getAttribute("javax.servlet.error.request_uri");
+ if (originalURI != null) {
+ //
+ // cut off the query string
+ //
+ int qIdx = originalURI.indexOf("?");
+ if (qIdx != -1) {
+ originalURI = originalURI.substring(0, qIdx);
+ }
+ }
+ callMapperChain =
+ (originalURI == null || !originalURI.endsWith(ajaxExtension))
+ && (!request.getServletPath().endsWith(ajaxExtension));
+
+ return callMapperChain ? super.getDecorator(request, page) : null;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/Application.java b/core/src/main/java/com/googlecode/psiprobe/model/Application.java
index 61d6fb5835..73c2b9f1e4 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/Application.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/Application.java
@@ -1,218 +1,218 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import java.io.Serializable;
-
-/**
- * POJO representing Tomcat's web application.
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public class Application implements Serializable {
-
- private String name;
- private String displayName;
- private String docBase;
- private boolean available;
- private long sessionCount;
- private long sessionAttributeCount;
- private int contextAttributeCount;
- private int dataSourceBusyScore;
- private int dataSourceEstablishedScore;
- private boolean distributable;
- private int sessionTimeout;
- private String servletVersion;
- private boolean serializable;
- private long size;
- private int servletCount;
- private int requestCount;
- private long processingTime;
- private int errorCount;
- private long minTime;
- private long maxTime;
- private long avgTime;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public void setDisplayName(String displayName) {
- this.displayName = displayName;
- }
-
- public String getDocBase() {
- return docBase;
- }
-
- public void setDocBase(String docBase) {
- this.docBase = docBase;
- }
-
- public boolean isAvailable() {
- return available;
- }
-
- public void setAvailable(boolean available) {
- this.available = available;
- }
-
- public long getSessionCount() {
- return sessionCount;
- }
-
- public void setSessionCount(long sessionCount) {
- this.sessionCount = sessionCount;
- }
-
- public long getSessionAttributeCount() {
- return sessionAttributeCount;
- }
-
- public void setSessionAttributeCount(long sessionAttributeCount) {
- this.sessionAttributeCount = sessionAttributeCount;
- }
-
- public int getContextAttributeCount() {
- return contextAttributeCount;
- }
-
- public void setContextAttributeCount(int contextAttributeCount) {
- this.contextAttributeCount = contextAttributeCount;
- }
-
- public int getDataSourceBusyScore() {
- return dataSourceBusyScore;
- }
-
- public void setDataSourceBusyScore(int dataSourceBusyScore) {
- this.dataSourceBusyScore = dataSourceBusyScore;
- }
-
- public int getDataSourceEstablishedScore() {
- return dataSourceEstablishedScore;
- }
-
- public void setDataSourceEstablishedScore(int dataSourceEstablishedScore) {
- this.dataSourceEstablishedScore = dataSourceEstablishedScore;
- }
-
- public boolean isDistributable() {
- return distributable;
- }
-
- public void setDistributable(boolean distributable) {
- this.distributable = distributable;
- }
-
- public int getSessionTimeout() {
- return sessionTimeout;
- }
-
- public void setSessionTimeout(int sessionTimeout) {
- this.sessionTimeout = sessionTimeout;
- }
-
- public String getServletVersion() {
- return servletVersion;
- }
-
- public void setServletVersion(String servletVersion) {
- this.servletVersion = servletVersion;
- }
-
- public long getSize() {
- return size;
- }
-
- public void setSize(long size) {
- this.size = size;
- }
-
- public void addSize(long size) {
- this.size += size;
- }
-
- public boolean isSerializable() {
- return serializable;
- }
-
- public void setSerializable(boolean serializable) {
- this.serializable = serializable;
- }
-
- public int getServletCount() {
- return servletCount;
- }
-
- public void setServletCount(int servletCount) {
- this.servletCount = servletCount;
- }
-
- public int getRequestCount() {
- return requestCount;
- }
-
- public void setRequestCount(int requestCount) {
- this.requestCount = requestCount;
- }
-
- public long getProcessingTime() {
- return processingTime;
- }
-
- public void setProcessingTime(long processingTime) {
- this.processingTime = processingTime;
- }
-
- public int getErrorCount() {
- return errorCount;
- }
-
- public void setErrorCount(int errorCount) {
- this.errorCount = errorCount;
- }
-
- public long getMinTime() {
- return minTime;
- }
-
- public void setMinTime(long minTime) {
- this.minTime = minTime;
- }
-
- public long getMaxTime() {
- return maxTime;
- }
-
- public void setMaxTime(long maxTime) {
- this.maxTime = maxTime;
- }
-
- public long getAvgTime() {
- return avgTime;
- }
-
- public void setAvgTime(long avgTime) {
- this.avgTime = avgTime;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import java.io.Serializable;
+
+/**
+ * POJO representing Tomcat's web application.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public class Application implements Serializable {
+
+ private String name;
+ private String displayName;
+ private String docBase;
+ private boolean available;
+ private long sessionCount;
+ private long sessionAttributeCount;
+ private int contextAttributeCount;
+ private int dataSourceBusyScore;
+ private int dataSourceEstablishedScore;
+ private boolean distributable;
+ private int sessionTimeout;
+ private String servletVersion;
+ private boolean serializable;
+ private long size;
+ private int servletCount;
+ private int requestCount;
+ private long processingTime;
+ private int errorCount;
+ private long minTime;
+ private long maxTime;
+ private long avgTime;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public String getDocBase() {
+ return docBase;
+ }
+
+ public void setDocBase(String docBase) {
+ this.docBase = docBase;
+ }
+
+ public boolean isAvailable() {
+ return available;
+ }
+
+ public void setAvailable(boolean available) {
+ this.available = available;
+ }
+
+ public long getSessionCount() {
+ return sessionCount;
+ }
+
+ public void setSessionCount(long sessionCount) {
+ this.sessionCount = sessionCount;
+ }
+
+ public long getSessionAttributeCount() {
+ return sessionAttributeCount;
+ }
+
+ public void setSessionAttributeCount(long sessionAttributeCount) {
+ this.sessionAttributeCount = sessionAttributeCount;
+ }
+
+ public int getContextAttributeCount() {
+ return contextAttributeCount;
+ }
+
+ public void setContextAttributeCount(int contextAttributeCount) {
+ this.contextAttributeCount = contextAttributeCount;
+ }
+
+ public int getDataSourceBusyScore() {
+ return dataSourceBusyScore;
+ }
+
+ public void setDataSourceBusyScore(int dataSourceBusyScore) {
+ this.dataSourceBusyScore = dataSourceBusyScore;
+ }
+
+ public int getDataSourceEstablishedScore() {
+ return dataSourceEstablishedScore;
+ }
+
+ public void setDataSourceEstablishedScore(int dataSourceEstablishedScore) {
+ this.dataSourceEstablishedScore = dataSourceEstablishedScore;
+ }
+
+ public boolean isDistributable() {
+ return distributable;
+ }
+
+ public void setDistributable(boolean distributable) {
+ this.distributable = distributable;
+ }
+
+ public int getSessionTimeout() {
+ return sessionTimeout;
+ }
+
+ public void setSessionTimeout(int sessionTimeout) {
+ this.sessionTimeout = sessionTimeout;
+ }
+
+ public String getServletVersion() {
+ return servletVersion;
+ }
+
+ public void setServletVersion(String servletVersion) {
+ this.servletVersion = servletVersion;
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ public void setSize(long size) {
+ this.size = size;
+ }
+
+ public void addSize(long size) {
+ this.size += size;
+ }
+
+ public boolean isSerializable() {
+ return serializable;
+ }
+
+ public void setSerializable(boolean serializable) {
+ this.serializable = serializable;
+ }
+
+ public int getServletCount() {
+ return servletCount;
+ }
+
+ public void setServletCount(int servletCount) {
+ this.servletCount = servletCount;
+ }
+
+ public int getRequestCount() {
+ return requestCount;
+ }
+
+ public void setRequestCount(int requestCount) {
+ this.requestCount = requestCount;
+ }
+
+ public long getProcessingTime() {
+ return processingTime;
+ }
+
+ public void setProcessingTime(long processingTime) {
+ this.processingTime = processingTime;
+ }
+
+ public int getErrorCount() {
+ return errorCount;
+ }
+
+ public void setErrorCount(int errorCount) {
+ this.errorCount = errorCount;
+ }
+
+ public long getMinTime() {
+ return minTime;
+ }
+
+ public void setMinTime(long minTime) {
+ this.minTime = minTime;
+ }
+
+ public long getMaxTime() {
+ return maxTime;
+ }
+
+ public void setMaxTime(long maxTime) {
+ this.maxTime = maxTime;
+ }
+
+ public long getAvgTime() {
+ return avgTime;
+ }
+
+ public void setAvgTime(long avgTime) {
+ this.avgTime = avgTime;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/ApplicationParam.java b/core/src/main/java/com/googlecode/psiprobe/model/ApplicationParam.java
index bb09fc5e46..f20d18a90e 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/ApplicationParam.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/ApplicationParam.java
@@ -1,52 +1,52 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * A model class representing an application initialization parameter
- *
- * @author Andy Shapoval
- */
-public class ApplicationParam {
-
- private String name;
- private Object value;
-
- /**
- * denotes whether the value is taken from a deployment descriptor
- */
- public boolean fromDeplDescr;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-
- public boolean isFromDeplDescr() {
- return fromDeplDescr;
- }
-
- public void setFromDeplDescr(boolean fromDeplDescr) {
- this.fromDeplDescr = fromDeplDescr;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * A model class representing an application initialization parameter
+ *
+ * @author Andy Shapoval
+ */
+public class ApplicationParam {
+
+ private String name;
+ private Object value;
+
+ /**
+ * denotes whether the value is taken from a deployment descriptor
+ */
+ public boolean fromDeplDescr;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public boolean isFromDeplDescr() {
+ return fromDeplDescr;
+ }
+
+ public void setFromDeplDescr(boolean fromDeplDescr) {
+ this.fromDeplDescr = fromDeplDescr;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/ApplicationResource.java b/core/src/main/java/com/googlecode/psiprobe/model/ApplicationResource.java
index 3c3519ba59..a486403c06 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/ApplicationResource.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/ApplicationResource.java
@@ -1,102 +1,102 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * POJO representing application "resource" in Tomcat
- *
- * @author Vlad Ilyushchenko
- */
-public class ApplicationResource {
-
- private String applicationName;
- private String name;
- private String type;
- private String scope;
- private String auth;
- private String linkTo;
- private String description;
- private boolean lookedUp;
- private DataSourceInfo dataSourceInfo;
-
- public String getApplicationName() {
- return applicationName;
- }
-
- public void setApplicationName(String applicationName) {
- this.applicationName = applicationName;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getScope() {
- return scope;
- }
-
- public void setScope(String scope) {
- this.scope = scope;
- }
-
- public String getAuth() {
- return auth;
- }
-
- public void setAuth(String auth) {
- this.auth = auth;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public DataSourceInfo getDataSourceInfo() {
- return dataSourceInfo;
- }
-
- public void setDataSourceInfo(DataSourceInfo dataSourceInfo) {
- this.dataSourceInfo = dataSourceInfo;
- }
-
- public boolean isLookedUp() {
- return lookedUp;
- }
-
- public void setLookedUp(boolean lookedUp) {
- this.lookedUp = lookedUp;
- }
-
- public String getLinkTo() {
- return linkTo;
- }
-
- public void setLinkTo(String linkTo) {
- this.linkTo = linkTo;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * POJO representing application "resource" in Tomcat
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ApplicationResource {
+
+ private String applicationName;
+ private String name;
+ private String type;
+ private String scope;
+ private String auth;
+ private String linkTo;
+ private String description;
+ private boolean lookedUp;
+ private DataSourceInfo dataSourceInfo;
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getScope() {
+ return scope;
+ }
+
+ public void setScope(String scope) {
+ this.scope = scope;
+ }
+
+ public String getAuth() {
+ return auth;
+ }
+
+ public void setAuth(String auth) {
+ this.auth = auth;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public DataSourceInfo getDataSourceInfo() {
+ return dataSourceInfo;
+ }
+
+ public void setDataSourceInfo(DataSourceInfo dataSourceInfo) {
+ this.dataSourceInfo = dataSourceInfo;
+ }
+
+ public boolean isLookedUp() {
+ return lookedUp;
+ }
+
+ public void setLookedUp(boolean lookedUp) {
+ this.lookedUp = lookedUp;
+ }
+
+ public String getLinkTo() {
+ return linkTo;
+ }
+
+ public void setLinkTo(String linkTo) {
+ this.linkTo = linkTo;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/ApplicationSession.java b/core/src/main/java/com/googlecode/psiprobe/model/ApplicationSession.java
index 583deb977a..eb5d691785 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/ApplicationSession.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/ApplicationSession.java
@@ -1,192 +1,192 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * POJO representing HTTP session.
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- */
-public class ApplicationSession {
-
- public static final String LAST_ACCESSED_BY_IP = "__psiprobe_la_ip";
-
- private String id;
- private String applicationName;
- private Date creationTime;
- private Date lastAccessTime;
- private int maxIdleTime;
- private boolean valid;
- private boolean serializable;
- private long objectCount;
- private String info;
- private String managerType;
- private List attributes = new ArrayList();
- private long size;
- private boolean allowedToViewValues = false;
- private String lastAccessedIP;
- private Locale lastAccessedIPLocale;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getApplicationName() {
- return applicationName;
- }
-
- public void setApplicationName(String applicationName) {
- this.applicationName = applicationName;
- }
-
- public Date getCreationTime() {
- return creationTime;
- }
-
- public void setCreationTime(Date creationTime) {
- this.creationTime = creationTime;
- }
-
- public Date getLastAccessTime() {
- return lastAccessTime;
- }
-
- public void setLastAccessTime(Date lastAccessTime) {
- this.lastAccessTime = lastAccessTime;
- }
-
- public int getMaxIdleTime() {
- return maxIdleTime;
- }
-
- public void setMaxIdleTime(int maxIdleTime) {
- this.maxIdleTime = maxIdleTime;
- }
-
- public boolean isValid() {
- return valid;
- }
-
- public void setValid(boolean valid) {
- this.valid = valid;
- }
-
- public long getObjectCount() {
- return objectCount;
- }
-
- public void setObjectCount(long objectCount) {
- this.objectCount = objectCount;
- }
-
- public List getAttributes() {
- return attributes;
- }
-
- public void setAttributes(List attributes) {
- this.attributes = attributes;
- }
-
- public void addAttribute(Attribute sa) {
- attributes.add(sa);
- }
-
- public String getInfo() {
- return info;
- }
-
- public void setInfo(String info) {
- this.info = info;
- }
-
- public String getManagerType() {
- return managerType;
- }
-
- public void setManagerType(String managerType) {
- this.managerType = managerType;
- }
-
- public long getAge() {
- if (creationTime == null) {
- return 0;
- } else {
- return System.currentTimeMillis() - creationTime.getTime();
- }
- }
-
- public long getIdleTime() {
- if (lastAccessTime == null) {
- return getAge();
- } else {
- return System.currentTimeMillis() - lastAccessTime.getTime();
- }
- }
-
- public Date getExpiryTime() {
- if (getMaxIdleTime() <= 0) {
- return null;
- } else {
- return new Date(System.currentTimeMillis() + getMaxIdleTime() - getIdleTime());
- }
- }
-
- public boolean isSerializable() {
- return serializable;
- }
-
- public void setSerializable(boolean serializable) {
- this.serializable = serializable;
- }
-
- public long getSize() {
- return size;
- }
-
- public void setSize(long size) {
- this.size = size;
- }
-
- public boolean isAllowedToViewValues() {
- return allowedToViewValues;
- }
-
- public void setAllowedToViewValues(boolean allowedToViewValues) {
- this.allowedToViewValues = allowedToViewValues;
- }
-
- public String getLastAccessedIP() {
- return lastAccessedIP;
- }
-
- public void setLastAccessedIP(String lastAccessedIP) {
- this.lastAccessedIP = lastAccessedIP;
- }
-
- public Locale getLastAccessedIPLocale() {
- return lastAccessedIPLocale;
- }
-
- public void setLastAccessedIPLocale(Locale lastAccessedIPLocale) {
- this.lastAccessedIPLocale = lastAccessedIPLocale;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * POJO representing HTTP session.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ */
+public class ApplicationSession {
+
+ public static final String LAST_ACCESSED_BY_IP = "__psiprobe_la_ip";
+
+ private String id;
+ private String applicationName;
+ private Date creationTime;
+ private Date lastAccessTime;
+ private int maxIdleTime;
+ private boolean valid;
+ private boolean serializable;
+ private long objectCount;
+ private String info;
+ private String managerType;
+ private List attributes = new ArrayList();
+ private long size;
+ private boolean allowedToViewValues = false;
+ private String lastAccessedIP;
+ private Locale lastAccessedIPLocale;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ public Date getCreationTime() {
+ return creationTime;
+ }
+
+ public void setCreationTime(Date creationTime) {
+ this.creationTime = creationTime;
+ }
+
+ public Date getLastAccessTime() {
+ return lastAccessTime;
+ }
+
+ public void setLastAccessTime(Date lastAccessTime) {
+ this.lastAccessTime = lastAccessTime;
+ }
+
+ public int getMaxIdleTime() {
+ return maxIdleTime;
+ }
+
+ public void setMaxIdleTime(int maxIdleTime) {
+ this.maxIdleTime = maxIdleTime;
+ }
+
+ public boolean isValid() {
+ return valid;
+ }
+
+ public void setValid(boolean valid) {
+ this.valid = valid;
+ }
+
+ public long getObjectCount() {
+ return objectCount;
+ }
+
+ public void setObjectCount(long objectCount) {
+ this.objectCount = objectCount;
+ }
+
+ public List getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(List attributes) {
+ this.attributes = attributes;
+ }
+
+ public void addAttribute(Attribute sa) {
+ attributes.add(sa);
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getManagerType() {
+ return managerType;
+ }
+
+ public void setManagerType(String managerType) {
+ this.managerType = managerType;
+ }
+
+ public long getAge() {
+ if (creationTime == null) {
+ return 0;
+ } else {
+ return System.currentTimeMillis() - creationTime.getTime();
+ }
+ }
+
+ public long getIdleTime() {
+ if (lastAccessTime == null) {
+ return getAge();
+ } else {
+ return System.currentTimeMillis() - lastAccessTime.getTime();
+ }
+ }
+
+ public Date getExpiryTime() {
+ if (getMaxIdleTime() <= 0) {
+ return null;
+ } else {
+ return new Date(System.currentTimeMillis() + getMaxIdleTime() - getIdleTime());
+ }
+ }
+
+ public boolean isSerializable() {
+ return serializable;
+ }
+
+ public void setSerializable(boolean serializable) {
+ this.serializable = serializable;
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ public void setSize(long size) {
+ this.size = size;
+ }
+
+ public boolean isAllowedToViewValues() {
+ return allowedToViewValues;
+ }
+
+ public void setAllowedToViewValues(boolean allowedToViewValues) {
+ this.allowedToViewValues = allowedToViewValues;
+ }
+
+ public String getLastAccessedIP() {
+ return lastAccessedIP;
+ }
+
+ public void setLastAccessedIP(String lastAccessedIP) {
+ this.lastAccessedIP = lastAccessedIP;
+ }
+
+ public Locale getLastAccessedIPLocale() {
+ return lastAccessedIPLocale;
+ }
+
+ public void setLastAccessedIPLocale(Locale lastAccessedIPLocale) {
+ this.lastAccessedIPLocale = lastAccessedIPLocale;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/Attribute.java b/core/src/main/java/com/googlecode/psiprobe/model/Attribute.java
index 1d14d0966b..a1f4153501 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/Attribute.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/Attribute.java
@@ -1,67 +1,67 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * This bean represents HttpSession attirbute. It is a part of the display model for
- * ListSessionAttributesController.
- *
- * @author Vlad Ilyushchenko
- */
-public class Attribute {
-
- private String name;
- private String type;
- private Object value;
- private boolean serializable;
- private long size;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-
- public boolean isSerializable() {
- return serializable;
- }
-
- public void setSerializable(boolean serializable) {
- this.serializable = serializable;
- }
-
- public long getSize() {
- return size;
- }
-
- public void setSize(long size) {
- this.size = size;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * This bean represents HttpSession attirbute. It is a part of the display model for
+ * ListSessionAttributesController.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Attribute {
+
+ private String name;
+ private String type;
+ private Object value;
+ private boolean serializable;
+ private long size;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public boolean isSerializable() {
+ return serializable;
+ }
+
+ public void setSerializable(boolean serializable) {
+ this.serializable = serializable;
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ public void setSize(long size) {
+ this.size = size;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/DataSourceInfo.java b/core/src/main/java/com/googlecode/psiprobe/model/DataSourceInfo.java
index 3986726dcc..025bb728ae 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/DataSourceInfo.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/DataSourceInfo.java
@@ -1,95 +1,95 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import com.googlecode.psiprobe.Utils;
-
-/**
- * POJO representing a datasource.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class DataSourceInfo {
-
- private String jdbcURL;
- private int busyConnections;
- private int establishedConnections;
- private int maxConnections;
- private boolean resettable;
- private String username;
- private String type;
-
- public String getJdbcURL() {
- return jdbcURL;
- }
-
- public void setJdbcURL(String jdbcURL) {
- this.jdbcURL = jdbcURL;
- }
-
- public int getBusyConnections() {
- return busyConnections;
- }
-
- public void setBusyConnections(int busyConnections) {
- this.busyConnections = busyConnections;
- }
-
- public int getEstablishedConnections() {
- return establishedConnections;
- }
-
- public void setEstablishedConnections(int establishedConnections) {
- this.establishedConnections = establishedConnections;
- }
-
- public int getMaxConnections() {
- return maxConnections;
- }
-
- public void setMaxConnections(int maxConnections) {
- this.maxConnections = maxConnections;
- }
-
- public boolean isResettable() {
- return resettable;
- }
-
- public void setResettable(boolean resettable) {
- this.resettable = resettable;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public int getBusyScore() {
- return Utils.calcPoolUsageScore(getMaxConnections(), getBusyConnections());
- }
-
- public int getEstablishedScore() {
- return Utils.calcPoolUsageScore(getMaxConnections(), getEstablishedConnections());
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import com.googlecode.psiprobe.Utils;
+
+/**
+ * POJO representing a datasource.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class DataSourceInfo {
+
+ private String jdbcURL;
+ private int busyConnections;
+ private int establishedConnections;
+ private int maxConnections;
+ private boolean resettable;
+ private String username;
+ private String type;
+
+ public String getJdbcURL() {
+ return jdbcURL;
+ }
+
+ public void setJdbcURL(String jdbcURL) {
+ this.jdbcURL = jdbcURL;
+ }
+
+ public int getBusyConnections() {
+ return busyConnections;
+ }
+
+ public void setBusyConnections(int busyConnections) {
+ this.busyConnections = busyConnections;
+ }
+
+ public int getEstablishedConnections() {
+ return establishedConnections;
+ }
+
+ public void setEstablishedConnections(int establishedConnections) {
+ this.establishedConnections = establishedConnections;
+ }
+
+ public int getMaxConnections() {
+ return maxConnections;
+ }
+
+ public void setMaxConnections(int maxConnections) {
+ this.maxConnections = maxConnections;
+ }
+
+ public boolean isResettable() {
+ return resettable;
+ }
+
+ public void setResettable(boolean resettable) {
+ this.resettable = resettable;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public int getBusyScore() {
+ return Utils.calcPoolUsageScore(getMaxConnections(), getBusyConnections());
+ }
+
+ public int getEstablishedScore() {
+ return Utils.calcPoolUsageScore(getMaxConnections(), getEstablishedConnections());
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/DataSourceInfoGroup.java b/core/src/main/java/com/googlecode/psiprobe/model/DataSourceInfoGroup.java
index 66d7c16591..1e4cbf4de8 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/DataSourceInfoGroup.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/DataSourceInfoGroup.java
@@ -1,69 +1,69 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * This POJO represents a group of datasources. It provides methods for adding values to aggregated
- * totals of the group. The class is a part of the ListAllJdbcResourceGroups controller model.
- *
- * @author Andy Shapoval
- */
-public class DataSourceInfoGroup extends DataSourceInfo {
-
- private int dataSourceCount = 0;
-
- public DataSourceInfoGroup() {
- this.setJdbcURL(null);
- this.setBusyConnections(0);
- this.setEstablishedConnections(0);
- this.setMaxConnections(0);
- }
-
- public DataSourceInfoGroup(DataSourceInfo dataSourceInfo) {
- this.setJdbcURL(dataSourceInfo.getJdbcURL());
- this.setBusyConnections(dataSourceInfo.getBusyConnections());
- this.setEstablishedConnections(dataSourceInfo.getEstablishedConnections());
- this.setMaxConnections(dataSourceInfo.getMaxConnections());
- this.setDataSourceCount(1);
- }
-
- public int getDataSourceCount() {
- return dataSourceCount;
- }
-
- public void setDataSourceCount(int dataSourceCount) {
- this.dataSourceCount = dataSourceCount;
- }
-
- public void addBusyConnections(int busyConnectionsDelta) {
- setBusyConnections(getBusyConnections() + busyConnectionsDelta);
- }
-
- public void addEstablishedConnections(int establishedConnectionsDelta) {
- setEstablishedConnections(getEstablishedConnections() + establishedConnectionsDelta);
- }
-
- public void addMaxConnections(int maxConnectionsDelta) {
- setMaxConnections(getMaxConnections() + maxConnectionsDelta);
- }
-
- public void addDataSourceCount(int dataSourceCountDelta) {
- setDataSourceCount(getDataSourceCount() + dataSourceCountDelta);
- }
-
- public void addDataSourceInfo(DataSourceInfo dataSourceInfoDelta) {
- addBusyConnections(dataSourceInfoDelta.getBusyConnections());
- addEstablishedConnections(dataSourceInfoDelta.getEstablishedConnections());
- addMaxConnections(dataSourceInfoDelta.getMaxConnections());
- addDataSourceCount(1);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * This POJO represents a group of datasources. It provides methods for adding values to aggregated
+ * totals of the group. The class is a part of the ListAllJdbcResourceGroups controller model.
+ *
+ * @author Andy Shapoval
+ */
+public class DataSourceInfoGroup extends DataSourceInfo {
+
+ private int dataSourceCount = 0;
+
+ public DataSourceInfoGroup() {
+ this.setJdbcURL(null);
+ this.setBusyConnections(0);
+ this.setEstablishedConnections(0);
+ this.setMaxConnections(0);
+ }
+
+ public DataSourceInfoGroup(DataSourceInfo dataSourceInfo) {
+ this.setJdbcURL(dataSourceInfo.getJdbcURL());
+ this.setBusyConnections(dataSourceInfo.getBusyConnections());
+ this.setEstablishedConnections(dataSourceInfo.getEstablishedConnections());
+ this.setMaxConnections(dataSourceInfo.getMaxConnections());
+ this.setDataSourceCount(1);
+ }
+
+ public int getDataSourceCount() {
+ return dataSourceCount;
+ }
+
+ public void setDataSourceCount(int dataSourceCount) {
+ this.dataSourceCount = dataSourceCount;
+ }
+
+ public void addBusyConnections(int busyConnectionsDelta) {
+ setBusyConnections(getBusyConnections() + busyConnectionsDelta);
+ }
+
+ public void addEstablishedConnections(int establishedConnectionsDelta) {
+ setEstablishedConnections(getEstablishedConnections() + establishedConnectionsDelta);
+ }
+
+ public void addMaxConnections(int maxConnectionsDelta) {
+ setMaxConnections(getMaxConnections() + maxConnectionsDelta);
+ }
+
+ public void addDataSourceCount(int dataSourceCountDelta) {
+ setDataSourceCount(getDataSourceCount() + dataSourceCountDelta);
+ }
+
+ public void addDataSourceInfo(DataSourceInfo dataSourceInfoDelta) {
+ addBusyConnections(dataSourceInfoDelta.getBusyConnections());
+ addEstablishedConnections(dataSourceInfoDelta.getEstablishedConnections());
+ addMaxConnections(dataSourceInfoDelta.getMaxConnections());
+ addDataSourceCount(1);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/DisconnectedLogDestination.java b/core/src/main/java/com/googlecode/psiprobe/model/DisconnectedLogDestination.java
index a8c2351b23..18fbf70a01 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/DisconnectedLogDestination.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/DisconnectedLogDestination.java
@@ -1,111 +1,111 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import com.googlecode.psiprobe.tools.logging.LogDestination;
-
-import java.io.File;
-import java.io.Serializable;
-import java.sql.Timestamp;
-
-/**
- * This class holds attributes of any other LogDestination so that LogDestination can be serialized.
- * It is generally difficult to make just any LogDestination to be serializable as they more often
- * than not are connected to underlying Log implementation that are in many cases not serializable.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class DisconnectedLogDestination implements LogDestination, Serializable {
-
- private Application application;
- private boolean root;
- private boolean context;
- private String name;
- private String index;
- private String targetClass;
- private String conversionPattern;
- private File file;
- private String logType;
- private long size;
- private Timestamp lastModified;
- private String level;
- private String[] validLevels;
-
- public DisconnectedLogDestination(LogDestination destination) {
- this.application = destination.getApplication();
- this.root = destination.isRoot();
- this.context = destination.isContext();
- this.name = destination.getName();
- this.index = destination.getIndex();
- this.targetClass = destination.getTargetClass();
- this.conversionPattern = destination.getConversionPattern();
- this.file = destination.getFile();
- this.logType = destination.getLogType();
- this.size = destination.getSize();
- this.lastModified = destination.getLastModified();
- this.level = destination.getLevel();
- this.validLevels = destination.getValidLevels();
- }
-
- public Application getApplication() {
- return application;
- }
-
- public boolean isRoot() {
- return root;
- }
-
- public boolean isContext() {
- return context;
- }
-
- public String getName() {
- return name;
- }
-
- public String getIndex() {
- return index;
- }
-
- public String getTargetClass() {
- return targetClass;
- }
-
- public String getConversionPattern() {
- return conversionPattern;
- }
-
- public File getFile() {
- return file;
- }
-
- public String getLogType() {
- return logType;
- }
-
- public long getSize() {
- return size;
- }
-
- public Timestamp getLastModified() {
- return lastModified;
- }
-
- public String getLevel() {
- return level;
- }
-
- public String[] getValidLevels() {
- return validLevels;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import com.googlecode.psiprobe.tools.logging.LogDestination;
+
+import java.io.File;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * This class holds attributes of any other LogDestination so that LogDestination can be serialized.
+ * It is generally difficult to make just any LogDestination to be serializable as they more often
+ * than not are connected to underlying Log implementation that are in many cases not serializable.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class DisconnectedLogDestination implements LogDestination, Serializable {
+
+ private Application application;
+ private boolean root;
+ private boolean context;
+ private String name;
+ private String index;
+ private String targetClass;
+ private String conversionPattern;
+ private File file;
+ private String logType;
+ private long size;
+ private Timestamp lastModified;
+ private String level;
+ private String[] validLevels;
+
+ public DisconnectedLogDestination(LogDestination destination) {
+ this.application = destination.getApplication();
+ this.root = destination.isRoot();
+ this.context = destination.isContext();
+ this.name = destination.getName();
+ this.index = destination.getIndex();
+ this.targetClass = destination.getTargetClass();
+ this.conversionPattern = destination.getConversionPattern();
+ this.file = destination.getFile();
+ this.logType = destination.getLogType();
+ this.size = destination.getSize();
+ this.lastModified = destination.getLastModified();
+ this.level = destination.getLevel();
+ this.validLevels = destination.getValidLevels();
+ }
+
+ public Application getApplication() {
+ return application;
+ }
+
+ public boolean isRoot() {
+ return root;
+ }
+
+ public boolean isContext() {
+ return context;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getIndex() {
+ return index;
+ }
+
+ public String getTargetClass() {
+ return targetClass;
+ }
+
+ public String getConversionPattern() {
+ return conversionPattern;
+ }
+
+ public File getFile() {
+ return file;
+ }
+
+ public String getLogType() {
+ return logType;
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ public Timestamp getLastModified() {
+ return lastModified;
+ }
+
+ public String getLevel() {
+ return level;
+ }
+
+ public String[] getValidLevels() {
+ return validLevels;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/FilterInfo.java b/core/src/main/java/com/googlecode/psiprobe/model/FilterInfo.java
index 1cd893259e..69ceeca7c9 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/FilterInfo.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/FilterInfo.java
@@ -1,48 +1,48 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * A model class representing a filter
- *
- * @author Andy Shapoval
- */
-public class FilterInfo {
-
- private String filterName;
- private String filterClass;
- private String filterDesc;
-
- public String getFilterName() {
- return filterName;
- }
-
- public void setFilterName(String filterName) {
- this.filterName = filterName;
- }
-
- public String getFilterClass() {
- return filterClass;
- }
-
- public void setFilterClass(String filterClass) {
- this.filterClass = filterClass;
- }
-
- public String getFilterDesc() {
- return filterDesc;
- }
-
- public void setFilterDesc(String filterDesc) {
- this.filterDesc = filterDesc;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * A model class representing a filter
+ *
+ * @author Andy Shapoval
+ */
+public class FilterInfo {
+
+ private String filterName;
+ private String filterClass;
+ private String filterDesc;
+
+ public String getFilterName() {
+ return filterName;
+ }
+
+ public void setFilterName(String filterName) {
+ this.filterName = filterName;
+ }
+
+ public String getFilterClass() {
+ return filterClass;
+ }
+
+ public void setFilterClass(String filterClass) {
+ this.filterClass = filterClass;
+ }
+
+ public String getFilterDesc() {
+ return filterDesc;
+ }
+
+ public void setFilterDesc(String filterDesc) {
+ this.filterDesc = filterDesc;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/FilterMapping.java b/core/src/main/java/com/googlecode/psiprobe/model/FilterMapping.java
index 7bf1ac64d6..fb6fa6fbd1 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/FilterMapping.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/FilterMapping.java
@@ -1,66 +1,66 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * A model class representing a filter mapping item
- *
- * @author Andy Shapoval
- */
-public class FilterMapping {
-
- private String url;
- private String servletName;
- private String filterName;
- private String dispatcherMap;
- private String filterClass;
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getServletName() {
- return servletName;
- }
-
- public void setServletName(String servletName) {
- this.servletName = servletName;
- }
-
- public String getFilterName() {
- return filterName;
- }
-
- public void setFilterName(String filterName) {
- this.filterName = filterName;
- }
-
- public String getDispatcherMap() {
- return dispatcherMap;
- }
-
- public void setDispatcherMap(String dispatcherMap) {
- this.dispatcherMap = dispatcherMap;
- }
-
- public String getFilterClass() {
- return filterClass;
- }
-
- public void setFilterClass(String filterClass) {
- this.filterClass = filterClass;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * A model class representing a filter mapping item
+ *
+ * @author Andy Shapoval
+ */
+public class FilterMapping {
+
+ private String url;
+ private String servletName;
+ private String filterName;
+ private String dispatcherMap;
+ private String filterClass;
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getServletName() {
+ return servletName;
+ }
+
+ public void setServletName(String servletName) {
+ this.servletName = servletName;
+ }
+
+ public String getFilterName() {
+ return filterName;
+ }
+
+ public void setFilterName(String filterName) {
+ this.filterName = filterName;
+ }
+
+ public String getDispatcherMap() {
+ return dispatcherMap;
+ }
+
+ public void setDispatcherMap(String dispatcherMap) {
+ this.dispatcherMap = dispatcherMap;
+ }
+
+ public String getFilterClass() {
+ return filterClass;
+ }
+
+ public void setFilterClass(String filterClass) {
+ this.filterClass = filterClass;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/RequestProcessor.java b/core/src/main/java/com/googlecode/psiprobe/model/RequestProcessor.java
index 35761b4e27..664865ffbe 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/RequestProcessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/RequestProcessor.java
@@ -1,149 +1,149 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import java.util.Locale;
-
-/**
- * POJO representing a single http request processor thread.
- *
- * @author Vlad Ilyushchenko
- */
-public class RequestProcessor {
-
- private String name;
- private int stage;
- private long processingTime;
- private long bytesSent;
- private long bytesReceived;
- private String remoteAddr;
- private Locale remoteAddrLocale;
- private String virtualHost;
- private String method;
- private String currentUri;
- private String currentQueryString;
- private String protocol;
- private String workerThreadName;
- private boolean workerThreadNameSupported = false;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getStage() {
- return stage;
- }
-
- public void setStage(int stage) {
- this.stage = stage;
- }
-
- public long getProcessingTime() {
- return processingTime;
- }
-
- public void setProcessingTime(long processingTime) {
- this.processingTime = processingTime;
- }
-
- public long getBytesSent() {
- return bytesSent;
- }
-
- public void setBytesSent(long bytesSent) {
- this.bytesSent = bytesSent;
- }
-
- public long getBytesReceived() {
- return bytesReceived;
- }
-
- public void setBytesReceived(long bytesReceived) {
- this.bytesReceived = bytesReceived;
- }
-
- public String getRemoteAddr() {
- return remoteAddr;
- }
-
- public void setRemoteAddr(String remoteAddr) {
- this.remoteAddr = remoteAddr;
- }
-
- public String getVirtualHost() {
- return virtualHost;
- }
-
- public void setVirtualHost(String virtualHost) {
- this.virtualHost = virtualHost;
- }
-
- public String getMethod() {
- return method;
- }
-
- public void setMethod(String method) {
- this.method = method;
- }
-
- public String getCurrentUri() {
- return currentUri;
- }
-
- public void setCurrentUri(String currentUri) {
- this.currentUri = currentUri;
- }
-
- public String getCurrentQueryString() {
- return currentQueryString;
- }
-
- public void setCurrentQueryString(String currentQueryString) {
- this.currentQueryString = currentQueryString;
- }
-
- public String getProtocol() {
- return protocol;
- }
-
- public void setProtocol(String protocol) {
- this.protocol = protocol;
- }
-
- public Locale getRemoteAddrLocale() {
- return remoteAddrLocale;
- }
-
- public void setRemoteAddrLocale(Locale remoteAddrLocale) {
- this.remoteAddrLocale = remoteAddrLocale;
- }
-
- public String getWorkerThreadName() {
- return workerThreadName;
- }
-
- public void setWorkerThreadName(String workerThreadName) {
- this.workerThreadName = workerThreadName;
- }
-
- public boolean isWorkerThreadNameSupported() {
- return workerThreadNameSupported;
- }
-
- public void setWorkerThreadNameSupported(boolean workerThreadNameSupported) {
- this.workerThreadNameSupported = workerThreadNameSupported;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import java.util.Locale;
+
+/**
+ * POJO representing a single http request processor thread.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class RequestProcessor {
+
+ private String name;
+ private int stage;
+ private long processingTime;
+ private long bytesSent;
+ private long bytesReceived;
+ private String remoteAddr;
+ private Locale remoteAddrLocale;
+ private String virtualHost;
+ private String method;
+ private String currentUri;
+ private String currentQueryString;
+ private String protocol;
+ private String workerThreadName;
+ private boolean workerThreadNameSupported = false;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getStage() {
+ return stage;
+ }
+
+ public void setStage(int stage) {
+ this.stage = stage;
+ }
+
+ public long getProcessingTime() {
+ return processingTime;
+ }
+
+ public void setProcessingTime(long processingTime) {
+ this.processingTime = processingTime;
+ }
+
+ public long getBytesSent() {
+ return bytesSent;
+ }
+
+ public void setBytesSent(long bytesSent) {
+ this.bytesSent = bytesSent;
+ }
+
+ public long getBytesReceived() {
+ return bytesReceived;
+ }
+
+ public void setBytesReceived(long bytesReceived) {
+ this.bytesReceived = bytesReceived;
+ }
+
+ public String getRemoteAddr() {
+ return remoteAddr;
+ }
+
+ public void setRemoteAddr(String remoteAddr) {
+ this.remoteAddr = remoteAddr;
+ }
+
+ public String getVirtualHost() {
+ return virtualHost;
+ }
+
+ public void setVirtualHost(String virtualHost) {
+ this.virtualHost = virtualHost;
+ }
+
+ public String getMethod() {
+ return method;
+ }
+
+ public void setMethod(String method) {
+ this.method = method;
+ }
+
+ public String getCurrentUri() {
+ return currentUri;
+ }
+
+ public void setCurrentUri(String currentUri) {
+ this.currentUri = currentUri;
+ }
+
+ public String getCurrentQueryString() {
+ return currentQueryString;
+ }
+
+ public void setCurrentQueryString(String currentQueryString) {
+ this.currentQueryString = currentQueryString;
+ }
+
+ public String getProtocol() {
+ return protocol;
+ }
+
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
+ public Locale getRemoteAddrLocale() {
+ return remoteAddrLocale;
+ }
+
+ public void setRemoteAddrLocale(Locale remoteAddrLocale) {
+ this.remoteAddrLocale = remoteAddrLocale;
+ }
+
+ public String getWorkerThreadName() {
+ return workerThreadName;
+ }
+
+ public void setWorkerThreadName(String workerThreadName) {
+ this.workerThreadName = workerThreadName;
+ }
+
+ public boolean isWorkerThreadNameSupported() {
+ return workerThreadNameSupported;
+ }
+
+ public void setWorkerThreadNameSupported(boolean workerThreadNameSupported) {
+ this.workerThreadNameSupported = workerThreadNameSupported;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/ServletInfo.java b/core/src/main/java/com/googlecode/psiprobe/model/ServletInfo.java
index 4165f2d74b..61bffb22a4 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/ServletInfo.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/ServletInfo.java
@@ -1,169 +1,169 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A model class representing a servlet.
- *
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public class ServletInfo {
-
- private String applicationName;
- private String servletName;
- private String servletClass;
- private boolean available;
- private int loadOnStartup;
- private String runAs;
- private int errorCount;
- private long loadTime;
- private long maxTime;
- private long minTime;
- private long processingTime;
- private int requestCount;
- private boolean singleThreaded;
- private int allocationCount;
- private int maxInstances;
- private List mappings = new ArrayList();
-
- public String getApplicationName() {
- return applicationName;
- }
-
- public void setApplicationName(String applicationName) {
- this.applicationName = applicationName;
- }
-
- public String getServletName() {
- return servletName;
- }
-
- public void setServletName(String servletName) {
- this.servletName = servletName;
- }
-
- public String getServletClass() {
- return servletClass;
- }
-
- public void setServletClass(String servletClass) {
- this.servletClass = servletClass;
- }
-
- public boolean isAvailable() {
- return available;
- }
-
- public void setAvailable(boolean available) {
- this.available = available;
- }
-
- public int getLoadOnStartup() {
- return loadOnStartup;
- }
-
- public void setLoadOnStartup(int loadOnStartup) {
- this.loadOnStartup = loadOnStartup;
- }
-
- public String getRunAs() {
- return runAs;
- }
-
- public void setRunAs(String runAs) {
- this.runAs = runAs;
- }
-
- public int getErrorCount() {
- return errorCount;
- }
-
- public void setErrorCount(int errorCount) {
- this.errorCount = errorCount;
- }
-
- public long getLoadTime() {
- return loadTime;
- }
-
- public void setLoadTime(long loadTime) {
- this.loadTime = loadTime;
- }
-
- public long getMaxTime() {
- return maxTime;
- }
-
- public void setMaxTime(long maxTime) {
- this.maxTime = maxTime;
- }
-
- public long getMinTime() {
- return minTime;
- }
-
- public void setMinTime(long minTime) {
- this.minTime = minTime;
- }
-
- public long getProcessingTime() {
- return processingTime;
- }
-
- public void setProcessingTime(long processingTime) {
- this.processingTime = processingTime;
- }
-
- public int getRequestCount() {
- return requestCount;
- }
-
- public void setRequestCount(int requestCount) {
- this.requestCount = requestCount;
- }
-
- public boolean isSingleThreaded() {
- return singleThreaded;
- }
-
- public void setSingleThreaded(boolean singleThreaded) {
- this.singleThreaded = singleThreaded;
- }
-
- public int getAllocationCount() {
- return allocationCount;
- }
-
- public void setAllocationCount(int allocationCount) {
- this.allocationCount = allocationCount;
- }
-
- public int getMaxInstances() {
- return maxInstances;
- }
-
- public void setMaxInstances(int maxInstances) {
- this.maxInstances = maxInstances;
- }
-
- public List getMappings() {
- return mappings;
- }
-
- public void setMappings(List mappings) {
- this.mappings = mappings;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A model class representing a servlet.
+ *
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public class ServletInfo {
+
+ private String applicationName;
+ private String servletName;
+ private String servletClass;
+ private boolean available;
+ private int loadOnStartup;
+ private String runAs;
+ private int errorCount;
+ private long loadTime;
+ private long maxTime;
+ private long minTime;
+ private long processingTime;
+ private int requestCount;
+ private boolean singleThreaded;
+ private int allocationCount;
+ private int maxInstances;
+ private List mappings = new ArrayList();
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ public String getServletName() {
+ return servletName;
+ }
+
+ public void setServletName(String servletName) {
+ this.servletName = servletName;
+ }
+
+ public String getServletClass() {
+ return servletClass;
+ }
+
+ public void setServletClass(String servletClass) {
+ this.servletClass = servletClass;
+ }
+
+ public boolean isAvailable() {
+ return available;
+ }
+
+ public void setAvailable(boolean available) {
+ this.available = available;
+ }
+
+ public int getLoadOnStartup() {
+ return loadOnStartup;
+ }
+
+ public void setLoadOnStartup(int loadOnStartup) {
+ this.loadOnStartup = loadOnStartup;
+ }
+
+ public String getRunAs() {
+ return runAs;
+ }
+
+ public void setRunAs(String runAs) {
+ this.runAs = runAs;
+ }
+
+ public int getErrorCount() {
+ return errorCount;
+ }
+
+ public void setErrorCount(int errorCount) {
+ this.errorCount = errorCount;
+ }
+
+ public long getLoadTime() {
+ return loadTime;
+ }
+
+ public void setLoadTime(long loadTime) {
+ this.loadTime = loadTime;
+ }
+
+ public long getMaxTime() {
+ return maxTime;
+ }
+
+ public void setMaxTime(long maxTime) {
+ this.maxTime = maxTime;
+ }
+
+ public long getMinTime() {
+ return minTime;
+ }
+
+ public void setMinTime(long minTime) {
+ this.minTime = minTime;
+ }
+
+ public long getProcessingTime() {
+ return processingTime;
+ }
+
+ public void setProcessingTime(long processingTime) {
+ this.processingTime = processingTime;
+ }
+
+ public int getRequestCount() {
+ return requestCount;
+ }
+
+ public void setRequestCount(int requestCount) {
+ this.requestCount = requestCount;
+ }
+
+ public boolean isSingleThreaded() {
+ return singleThreaded;
+ }
+
+ public void setSingleThreaded(boolean singleThreaded) {
+ this.singleThreaded = singleThreaded;
+ }
+
+ public int getAllocationCount() {
+ return allocationCount;
+ }
+
+ public void setAllocationCount(int allocationCount) {
+ this.allocationCount = allocationCount;
+ }
+
+ public int getMaxInstances() {
+ return maxInstances;
+ }
+
+ public void setMaxInstances(int maxInstances) {
+ this.maxInstances = maxInstances;
+ }
+
+ public List getMappings() {
+ return mappings;
+ }
+
+ public void setMappings(List mappings) {
+ this.mappings = mappings;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/ServletMapping.java b/core/src/main/java/com/googlecode/psiprobe/model/ServletMapping.java
index 9fd24c13f9..d20938ad8e 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/ServletMapping.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/ServletMapping.java
@@ -1,67 +1,67 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * A model class representing a servlet mapping item.
- *
- * @author Andy Shapoval
- * @author Vlad Ilyushchenko
- */
-public class ServletMapping {
-
- private String applicationName;
- private String url;
- private String servletName;
- private String servletClass;
- private boolean available;
-
- public String getApplicationName() {
- return applicationName;
- }
-
- public void setApplicationName(String applicationName) {
- this.applicationName = applicationName;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getServletName() {
- return servletName;
- }
-
- public void setServletName(String servletName) {
- this.servletName = servletName;
- }
-
- public String getServletClass() {
- return servletClass;
- }
-
- public void setServletClass(String servletClass) {
- this.servletClass = servletClass;
- }
-
- public boolean isAvailable() {
- return available;
- }
-
- public void setAvailable(boolean available) {
- this.available = available;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * A model class representing a servlet mapping item.
+ *
+ * @author Andy Shapoval
+ * @author Vlad Ilyushchenko
+ */
+public class ServletMapping {
+
+ private String applicationName;
+ private String url;
+ private String servletName;
+ private String servletClass;
+ private boolean available;
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getServletName() {
+ return servletName;
+ }
+
+ public void setServletName(String servletName) {
+ this.servletName = servletName;
+ }
+
+ public String getServletClass() {
+ return servletClass;
+ }
+
+ public void setServletClass(String servletClass) {
+ this.servletClass = servletClass;
+ }
+
+ public boolean isAvailable() {
+ return available;
+ }
+
+ public void setAvailable(boolean available) {
+ this.available = available;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/SessionSearchInfo.java b/core/src/main/java/com/googlecode/psiprobe/model/SessionSearchInfo.java
index d09e6c9fb1..349b1b290c 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/SessionSearchInfo.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/SessionSearchInfo.java
@@ -1,313 +1,313 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-/**
- * Data model class used by session search feature of application session screen.
- *
- * @author Andy Shapoval
- * @author Vlad Ilyushchenko
- */
-public class SessionSearchInfo implements Serializable {
-
- public static final String SESS_ATTR_NAME = "sessionSearchInfo";
- public static final String ACTION_NONE = "none";
- public static final String ACTION_APPLY = "apply";
- public static final String ACTION_CLEAR = "clear";
-
- private String searchAction = ACTION_NONE;
- private boolean apply = false;
- private boolean clear = false;
- private String sessionId;
- private Pattern sessionIdPattern;
- private String sessionIdMsg;
- private String attrName;
- private List attrNamePatterns = new ArrayList();
- private List attrNameMsgs = new ArrayList();
- private String ageFrom;
- private Integer ageFromSec;
- private String ageTo;
- private Integer ageToSec;
- private String idleTimeFrom;
- private Integer idleTimeFromSec;
- private String idleTimeTo;
- private Integer idleTimeToSec;
- private String lastIP;
- private String infoMessage;
- private List errorMessages = new ArrayList();
-
- public boolean isEmpty() {
- return sessionId == null && attrName == null && ageFrom == null && ageTo == null
- && idleTimeFrom == null && idleTimeTo == null && lastIP == null;
- }
-
- public boolean isSessionIdValid() {
- return sessionId == null || sessionIdPattern != null;
- }
-
- public boolean isAttrNameValid() {
- return attrName == null || !attrNamePatterns.isEmpty();
- }
-
- public boolean isAgeFromValid() {
- return ageFrom == null || ageFromSec != null;
- }
-
- public boolean isAgeToValid() {
- return ageTo == null || ageToSec != null;
- }
-
- public boolean isIdleTimeFromValid() {
- return idleTimeFrom == null || idleTimeFromSec != null;
- }
-
- public boolean isIdleTimeToValid() {
- return idleTimeTo == null || idleTimeToSec != null;
- }
-
- public boolean isValid() {
- return isSessionIdValid() && isAttrNameValid() && isAgeFromValid() && isAgeToValid()
- && isIdleTimeFromValid() && isIdleTimeToValid();
- }
-
- public boolean isUseSearch() {
- return isApply() && !isEmpty() && isValid();
- }
-
- public boolean isUseSessionId() {
- return sessionIdPattern != null;
- }
-
- public boolean isUseAttrName() {
- return !attrNamePatterns.isEmpty();
- }
-
- public boolean isUseAttr() {
- return isUseSearch() && isUseAttrName();
- }
-
- public boolean isUseAgeFrom() {
- return ageFromSec != null;
- }
-
- public boolean isUseAgeTo() {
- return ageToSec != null;
- }
-
- public boolean isUseIdleTimeFrom() {
- return idleTimeFromSec != null;
- }
-
- public boolean isUseIdleTimeTo() {
- return idleTimeToSec != null;
- }
-
- public boolean isUseLastIP() {
- return lastIP != null;
- }
-
- public String getSearchAction() {
- return searchAction;
- }
-
- public void setSearchAction(String searchAction) {
- this.searchAction = searchAction;
- if (searchAction == null) {
- apply = false;
- clear = false;
- } else {
- apply = searchAction.equals(ACTION_APPLY);
- clear = searchAction.equals(ACTION_CLEAR);
- }
- }
-
- public boolean isApply() {
- return apply;
- }
-
- public boolean isClear() {
- return clear;
- }
-
- public String getSessionId() {
- return sessionId;
- }
-
- public void setSessionId(String sessionId) {
- this.sessionId = sessionId;
- sessionIdPattern = null;
- sessionIdMsg = null;
-
- if (sessionId != null) {
- try {
- sessionIdPattern = Pattern.compile(sessionId);
- } catch (PatternSyntaxException e) {
- sessionIdMsg = e.getDescription();
- }
- }
- }
-
- public Pattern getSessionIdPattern() {
- return sessionIdPattern;
- }
-
- public String getSessionIdMsg() {
- return sessionIdMsg;
- }
-
- public String getAttrName() {
- return attrName;
- }
-
- public void setAttrName(String attrName) {
- this.attrName = attrName;
- attrNamePatterns.clear();
- attrNameMsgs.clear();
-
- if (attrName != null) {
- String[] a = attrName.split(",");
- if (a.length == 0 && !attrName.equals("")) {
- attrNameMsgs.add("");
- } else {
- for (int i = 0; i < a.length; i++) {
- try {
- attrNamePatterns.add(Pattern.compile(a[i]));
- } catch (PatternSyntaxException e) {
- attrNameMsgs.add(e.getDescription());
- }
- }
- }
- }
- }
-
- public List getAttrNamePatterns() {
- return attrNamePatterns;
- }
-
- public List getAttrNameMsgs() {
- return attrNameMsgs;
- }
-
- public String getAgeFrom() {
- return ageFrom;
- }
-
- public void setAgeFrom(String ageFrom) {
- this.ageFrom = ageFrom;
- ageFromSec = null;
-
- if (ageFrom != null) {
- try {
- ageFromSec = Integer.valueOf(ageFrom);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- }
-
- public Integer getAgeFromSec() {
- return ageFromSec;
- }
-
- public String getAgeTo() {
- return ageTo;
- }
-
- public void setAgeTo(String ageTo) {
- this.ageTo = ageTo;
- ageToSec = null;
-
- if (ageTo != null) {
- try {
- ageToSec = Integer.valueOf(ageTo);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- }
-
- public Integer getAgeToSec() {
- return ageToSec;
- }
-
- public String getIdleTimeFrom() {
- return idleTimeFrom;
- }
-
- public void setIdleTimeFrom(String idleTimeFrom) {
- this.idleTimeFrom = idleTimeFrom;
- idleTimeFromSec = null;
-
- if (idleTimeFrom != null) {
- try {
- idleTimeFromSec = Integer.valueOf(idleTimeFrom);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- }
-
- public Integer getIdleTimeFromSec() {
- return idleTimeFromSec;
- }
-
- public String getIdleTimeTo() {
- return idleTimeTo;
- }
-
- public void setIdleTimeTo(String idleTimeTo) {
- this.idleTimeTo = idleTimeTo;
- idleTimeToSec = null;
-
- if (idleTimeTo != null) {
- try {
- idleTimeToSec = Integer.valueOf(idleTimeTo);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- }
-
- public Integer getIdleTimeToSec() {
- return idleTimeToSec;
- }
-
- public String getLastIP() {
- return lastIP;
- }
-
- public void setLastIP(String lastIP) {
- this.lastIP = lastIP;
- }
-
- public String getInfoMessage() {
- return infoMessage;
- }
-
- public void setInfoMessage(String infoMessage) {
- this.infoMessage = infoMessage;
- }
-
- public List getErrorMessages() {
- return errorMessages;
- }
-
- public void addErrorMessage(String msg) {
- errorMessages.add(msg);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+/**
+ * Data model class used by session search feature of application session screen.
+ *
+ * @author Andy Shapoval
+ * @author Vlad Ilyushchenko
+ */
+public class SessionSearchInfo implements Serializable {
+
+ public static final String SESS_ATTR_NAME = "sessionSearchInfo";
+ public static final String ACTION_NONE = "none";
+ public static final String ACTION_APPLY = "apply";
+ public static final String ACTION_CLEAR = "clear";
+
+ private String searchAction = ACTION_NONE;
+ private boolean apply = false;
+ private boolean clear = false;
+ private String sessionId;
+ private Pattern sessionIdPattern;
+ private String sessionIdMsg;
+ private String attrName;
+ private List attrNamePatterns = new ArrayList();
+ private List attrNameMsgs = new ArrayList();
+ private String ageFrom;
+ private Integer ageFromSec;
+ private String ageTo;
+ private Integer ageToSec;
+ private String idleTimeFrom;
+ private Integer idleTimeFromSec;
+ private String idleTimeTo;
+ private Integer idleTimeToSec;
+ private String lastIP;
+ private String infoMessage;
+ private List errorMessages = new ArrayList();
+
+ public boolean isEmpty() {
+ return sessionId == null && attrName == null && ageFrom == null && ageTo == null
+ && idleTimeFrom == null && idleTimeTo == null && lastIP == null;
+ }
+
+ public boolean isSessionIdValid() {
+ return sessionId == null || sessionIdPattern != null;
+ }
+
+ public boolean isAttrNameValid() {
+ return attrName == null || !attrNamePatterns.isEmpty();
+ }
+
+ public boolean isAgeFromValid() {
+ return ageFrom == null || ageFromSec != null;
+ }
+
+ public boolean isAgeToValid() {
+ return ageTo == null || ageToSec != null;
+ }
+
+ public boolean isIdleTimeFromValid() {
+ return idleTimeFrom == null || idleTimeFromSec != null;
+ }
+
+ public boolean isIdleTimeToValid() {
+ return idleTimeTo == null || idleTimeToSec != null;
+ }
+
+ public boolean isValid() {
+ return isSessionIdValid() && isAttrNameValid() && isAgeFromValid() && isAgeToValid()
+ && isIdleTimeFromValid() && isIdleTimeToValid();
+ }
+
+ public boolean isUseSearch() {
+ return isApply() && !isEmpty() && isValid();
+ }
+
+ public boolean isUseSessionId() {
+ return sessionIdPattern != null;
+ }
+
+ public boolean isUseAttrName() {
+ return !attrNamePatterns.isEmpty();
+ }
+
+ public boolean isUseAttr() {
+ return isUseSearch() && isUseAttrName();
+ }
+
+ public boolean isUseAgeFrom() {
+ return ageFromSec != null;
+ }
+
+ public boolean isUseAgeTo() {
+ return ageToSec != null;
+ }
+
+ public boolean isUseIdleTimeFrom() {
+ return idleTimeFromSec != null;
+ }
+
+ public boolean isUseIdleTimeTo() {
+ return idleTimeToSec != null;
+ }
+
+ public boolean isUseLastIP() {
+ return lastIP != null;
+ }
+
+ public String getSearchAction() {
+ return searchAction;
+ }
+
+ public void setSearchAction(String searchAction) {
+ this.searchAction = searchAction;
+ if (searchAction == null) {
+ apply = false;
+ clear = false;
+ } else {
+ apply = searchAction.equals(ACTION_APPLY);
+ clear = searchAction.equals(ACTION_CLEAR);
+ }
+ }
+
+ public boolean isApply() {
+ return apply;
+ }
+
+ public boolean isClear() {
+ return clear;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ public void setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ sessionIdPattern = null;
+ sessionIdMsg = null;
+
+ if (sessionId != null) {
+ try {
+ sessionIdPattern = Pattern.compile(sessionId);
+ } catch (PatternSyntaxException e) {
+ sessionIdMsg = e.getDescription();
+ }
+ }
+ }
+
+ public Pattern getSessionIdPattern() {
+ return sessionIdPattern;
+ }
+
+ public String getSessionIdMsg() {
+ return sessionIdMsg;
+ }
+
+ public String getAttrName() {
+ return attrName;
+ }
+
+ public void setAttrName(String attrName) {
+ this.attrName = attrName;
+ attrNamePatterns.clear();
+ attrNameMsgs.clear();
+
+ if (attrName != null) {
+ String[] a = attrName.split(",");
+ if (a.length == 0 && !attrName.equals("")) {
+ attrNameMsgs.add("");
+ } else {
+ for (int i = 0; i < a.length; i++) {
+ try {
+ attrNamePatterns.add(Pattern.compile(a[i]));
+ } catch (PatternSyntaxException e) {
+ attrNameMsgs.add(e.getDescription());
+ }
+ }
+ }
+ }
+ }
+
+ public List getAttrNamePatterns() {
+ return attrNamePatterns;
+ }
+
+ public List getAttrNameMsgs() {
+ return attrNameMsgs;
+ }
+
+ public String getAgeFrom() {
+ return ageFrom;
+ }
+
+ public void setAgeFrom(String ageFrom) {
+ this.ageFrom = ageFrom;
+ ageFromSec = null;
+
+ if (ageFrom != null) {
+ try {
+ ageFromSec = Integer.valueOf(ageFrom);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ }
+ }
+
+ public Integer getAgeFromSec() {
+ return ageFromSec;
+ }
+
+ public String getAgeTo() {
+ return ageTo;
+ }
+
+ public void setAgeTo(String ageTo) {
+ this.ageTo = ageTo;
+ ageToSec = null;
+
+ if (ageTo != null) {
+ try {
+ ageToSec = Integer.valueOf(ageTo);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ }
+ }
+
+ public Integer getAgeToSec() {
+ return ageToSec;
+ }
+
+ public String getIdleTimeFrom() {
+ return idleTimeFrom;
+ }
+
+ public void setIdleTimeFrom(String idleTimeFrom) {
+ this.idleTimeFrom = idleTimeFrom;
+ idleTimeFromSec = null;
+
+ if (idleTimeFrom != null) {
+ try {
+ idleTimeFromSec = Integer.valueOf(idleTimeFrom);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ }
+ }
+
+ public Integer getIdleTimeFromSec() {
+ return idleTimeFromSec;
+ }
+
+ public String getIdleTimeTo() {
+ return idleTimeTo;
+ }
+
+ public void setIdleTimeTo(String idleTimeTo) {
+ this.idleTimeTo = idleTimeTo;
+ idleTimeToSec = null;
+
+ if (idleTimeTo != null) {
+ try {
+ idleTimeToSec = Integer.valueOf(idleTimeTo);
+ } catch (NumberFormatException e) {
+ // ignore
+ }
+ }
+ }
+
+ public Integer getIdleTimeToSec() {
+ return idleTimeToSec;
+ }
+
+ public String getLastIP() {
+ return lastIP;
+ }
+
+ public void setLastIP(String lastIP) {
+ this.lastIP = lastIP;
+ }
+
+ public String getInfoMessage() {
+ return infoMessage;
+ }
+
+ public void setInfoMessage(String infoMessage) {
+ this.infoMessage = infoMessage;
+ }
+
+ public List getErrorMessages() {
+ return errorMessages;
+ }
+
+ public void addErrorMessage(String msg) {
+ errorMessages.add(msg);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/SunThread.java b/core/src/main/java/com/googlecode/psiprobe/model/SunThread.java
index e8735ad5eb..f2db31f394 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/SunThread.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/SunThread.java
@@ -1,119 +1,119 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class SunThread {
-
- private long id;
- private String name;
- private String state;
- private boolean deadlocked;
- private boolean suspended;
- private boolean inNative;
- private String lockName;
- private String lockOwnerName;
- private long waitedCount;
- private long blockedCount;
- private ThreadStackElement executionPoint;
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getState() {
- return state;
- }
-
- public void setState(String state) {
- this.state = state;
- }
-
- public boolean isDeadlocked() {
- return deadlocked;
- }
-
- public void setDeadlocked(boolean deadlocked) {
- this.deadlocked = deadlocked;
- }
-
- public boolean isSuspended() {
- return suspended;
- }
-
- public void setSuspended(boolean suspended) {
- this.suspended = suspended;
- }
-
- public boolean isInNative() {
- return inNative;
- }
-
- public void setInNative(boolean inNative) {
- this.inNative = inNative;
- }
-
- public String getLockName() {
- return lockName;
- }
-
- public void setLockName(String lockName) {
- this.lockName = lockName;
- }
-
- public String getLockOwnerName() {
- return lockOwnerName;
- }
-
- public void setLockOwnerName(String lockOwnerName) {
- this.lockOwnerName = lockOwnerName;
- }
-
- public long getWaitedCount() {
- return waitedCount;
- }
-
- public void setWaitedCount(long waitedCount) {
- this.waitedCount = waitedCount;
- }
-
- public long getBlockedCount() {
- return blockedCount;
- }
-
- public void setBlockedCount(long blockedCount) {
- this.blockedCount = blockedCount;
- }
-
- public ThreadStackElement getExecutionPoint() {
- return executionPoint;
- }
-
- public void setExecutionPoint(ThreadStackElement executionPoint) {
- this.executionPoint = executionPoint;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class SunThread {
+
+ private long id;
+ private String name;
+ private String state;
+ private boolean deadlocked;
+ private boolean suspended;
+ private boolean inNative;
+ private String lockName;
+ private String lockOwnerName;
+ private long waitedCount;
+ private long blockedCount;
+ private ThreadStackElement executionPoint;
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public boolean isDeadlocked() {
+ return deadlocked;
+ }
+
+ public void setDeadlocked(boolean deadlocked) {
+ this.deadlocked = deadlocked;
+ }
+
+ public boolean isSuspended() {
+ return suspended;
+ }
+
+ public void setSuspended(boolean suspended) {
+ this.suspended = suspended;
+ }
+
+ public boolean isInNative() {
+ return inNative;
+ }
+
+ public void setInNative(boolean inNative) {
+ this.inNative = inNative;
+ }
+
+ public String getLockName() {
+ return lockName;
+ }
+
+ public void setLockName(String lockName) {
+ this.lockName = lockName;
+ }
+
+ public String getLockOwnerName() {
+ return lockOwnerName;
+ }
+
+ public void setLockOwnerName(String lockOwnerName) {
+ this.lockOwnerName = lockOwnerName;
+ }
+
+ public long getWaitedCount() {
+ return waitedCount;
+ }
+
+ public void setWaitedCount(long waitedCount) {
+ this.waitedCount = waitedCount;
+ }
+
+ public long getBlockedCount() {
+ return blockedCount;
+ }
+
+ public void setBlockedCount(long blockedCount) {
+ this.blockedCount = blockedCount;
+ }
+
+ public ThreadStackElement getExecutionPoint() {
+ return executionPoint;
+ }
+
+ public void setExecutionPoint(ThreadStackElement executionPoint) {
+ this.executionPoint = executionPoint;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/SystemInformation.java b/core/src/main/java/com/googlecode/psiprobe/model/SystemInformation.java
index 1653e36e38..86cf0b2e31 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/SystemInformation.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/SystemInformation.java
@@ -1,88 +1,88 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import org.apache.catalina.util.ServerInfo;
-
-import java.io.File;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * POJO representing system information for "system infromation" tab.
- *
- * @author Vlad Ilyushchenko
- */
-public class SystemInformation implements Serializable {
-
- private String appBase;
- private String configBase;
- private Map systemProperties;
-
- public long getMaxMemory() {
- return Runtime.getRuntime().maxMemory();
- }
-
- public long getFreeMemory() {
- return Runtime.getRuntime().freeMemory();
- }
-
- public long getTotalMemory() {
- return Runtime.getRuntime().totalMemory();
- }
-
- public int getCpuCount() {
- return Runtime.getRuntime().availableProcessors();
- }
-
- public Date getDate() {
- return new Date();
- }
-
- public String getServerInfo() {
- return ServerInfo.getServerInfo();
- }
-
- public String getWorkingDir() {
- return new File("").getAbsolutePath();
- }
-
- public String getAppBase() {
- return appBase;
- }
-
- public void setAppBase(String appBase) {
- this.appBase = appBase;
- }
-
- public String getConfigBase() {
- return configBase;
- }
-
- public void setConfigBase(String configBase) {
- this.configBase = configBase;
- }
-
- public Map getSystemProperties() {
- return systemProperties;
- }
-
- public void setSystemProperties(Map systemProperties) {
- this.systemProperties = systemProperties;
- }
-
- public Set getSystemPropertySet() {
- return systemProperties.entrySet();
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import org.apache.catalina.util.ServerInfo;
+
+import java.io.File;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * POJO representing system information for "system infromation" tab.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class SystemInformation implements Serializable {
+
+ private String appBase;
+ private String configBase;
+ private Map systemProperties;
+
+ public long getMaxMemory() {
+ return Runtime.getRuntime().maxMemory();
+ }
+
+ public long getFreeMemory() {
+ return Runtime.getRuntime().freeMemory();
+ }
+
+ public long getTotalMemory() {
+ return Runtime.getRuntime().totalMemory();
+ }
+
+ public int getCpuCount() {
+ return Runtime.getRuntime().availableProcessors();
+ }
+
+ public Date getDate() {
+ return new Date();
+ }
+
+ public String getServerInfo() {
+ return ServerInfo.getServerInfo();
+ }
+
+ public String getWorkingDir() {
+ return new File("").getAbsolutePath();
+ }
+
+ public String getAppBase() {
+ return appBase;
+ }
+
+ public void setAppBase(String appBase) {
+ this.appBase = appBase;
+ }
+
+ public String getConfigBase() {
+ return configBase;
+ }
+
+ public void setConfigBase(String configBase) {
+ this.configBase = configBase;
+ }
+
+ public Map getSystemProperties() {
+ return systemProperties;
+ }
+
+ public void setSystemProperties(Map systemProperties) {
+ this.systemProperties = systemProperties;
+ }
+
+ public Set getSystemPropertySet() {
+ return systemProperties.entrySet();
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/ThreadPool.java b/core/src/main/java/com/googlecode/psiprobe/model/ThreadPool.java
index a20d211715..bad31354d9 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/ThreadPool.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/ThreadPool.java
@@ -1,76 +1,76 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * POJO representing thread pool
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class ThreadPool {
-
- private String name;
- private int maxThreads;
- private int minSpareThreads;
- private int maxSpareThreads;
- private int currentThreadCount;
- private int currentThreadsBusy;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getMaxThreads() {
- return maxThreads;
- }
-
- public void setMaxThreads(int maxThreads) {
- this.maxThreads = maxThreads;
- }
-
- public int getMinSpareThreads() {
- return minSpareThreads;
- }
-
- public void setMinSpareThreads(int minSpareThreads) {
- this.minSpareThreads = minSpareThreads;
- }
-
- public int getMaxSpareThreads() {
- return maxSpareThreads;
- }
-
- public void setMaxSpareThreads(int maxSpareThreads) {
- this.maxSpareThreads = maxSpareThreads;
- }
-
- public int getCurrentThreadCount() {
- return currentThreadCount;
- }
-
- public void setCurrentThreadCount(int currentThreadCount) {
- this.currentThreadCount = currentThreadCount;
- }
-
- public int getCurrentThreadsBusy() {
- return currentThreadsBusy;
- }
-
- public void setCurrentThreadsBusy(int currentThreadsBusy) {
- this.currentThreadsBusy = currentThreadsBusy;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * POJO representing thread pool
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class ThreadPool {
+
+ private String name;
+ private int maxThreads;
+ private int minSpareThreads;
+ private int maxSpareThreads;
+ private int currentThreadCount;
+ private int currentThreadsBusy;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getMaxThreads() {
+ return maxThreads;
+ }
+
+ public void setMaxThreads(int maxThreads) {
+ this.maxThreads = maxThreads;
+ }
+
+ public int getMinSpareThreads() {
+ return minSpareThreads;
+ }
+
+ public void setMinSpareThreads(int minSpareThreads) {
+ this.minSpareThreads = minSpareThreads;
+ }
+
+ public int getMaxSpareThreads() {
+ return maxSpareThreads;
+ }
+
+ public void setMaxSpareThreads(int maxSpareThreads) {
+ this.maxSpareThreads = maxSpareThreads;
+ }
+
+ public int getCurrentThreadCount() {
+ return currentThreadCount;
+ }
+
+ public void setCurrentThreadCount(int currentThreadCount) {
+ this.currentThreadCount = currentThreadCount;
+ }
+
+ public int getCurrentThreadsBusy() {
+ return currentThreadsBusy;
+ }
+
+ public void setCurrentThreadsBusy(int currentThreadsBusy) {
+ this.currentThreadsBusy = currentThreadsBusy;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/ThreadStackElement.java b/core/src/main/java/com/googlecode/psiprobe/model/ThreadStackElement.java
index 4fe061fa14..6ec7c1e9a7 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/ThreadStackElement.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/ThreadStackElement.java
@@ -1,65 +1,65 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ThreadStackElement {
-
- private String className;
- private String fileName;
- private String methodName;
- private int lineNumber;
- private boolean nativeMethod;
-
- public String getClassName() {
- return className;
- }
-
- public void setClassName(String className) {
- this.className = className;
- }
-
- public String getFileName() {
- return fileName;
- }
-
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- public String getMethodName() {
- return methodName;
- }
-
- public void setMethodName(String methodName) {
- this.methodName = methodName;
- }
-
- public int getLineNumber() {
- return lineNumber;
- }
-
- public void setLineNumber(int lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- public boolean isNativeMethod() {
- return nativeMethod;
- }
-
- public void setNativeMethod(boolean nativeMethod) {
- this.nativeMethod = nativeMethod;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ThreadStackElement {
+
+ private String className;
+ private String fileName;
+ private String methodName;
+ private int lineNumber;
+ private boolean nativeMethod;
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getMethodName() {
+ return methodName;
+ }
+
+ public void setMethodName(String methodName) {
+ this.methodName = methodName;
+ }
+
+ public int getLineNumber() {
+ return lineNumber;
+ }
+
+ public void setLineNumber(int lineNumber) {
+ this.lineNumber = lineNumber;
+ }
+
+ public boolean isNativeMethod() {
+ return nativeMethod;
+ }
+
+ public void setNativeMethod(boolean nativeMethod) {
+ this.nativeMethod = nativeMethod;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/TomcatTestReport.java b/core/src/main/java/com/googlecode/psiprobe/model/TomcatTestReport.java
index 0eb89dbc86..00dc886fe8 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/TomcatTestReport.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/TomcatTestReport.java
@@ -1,117 +1,117 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-/**
- * POJO representing "quick check" report.
- *
- * @author Vlad Ilyushchenko
- */
-public class TomcatTestReport {
-
- public static final int TEST_UNKNOWN = 0;
- public static final int TEST_PASSED = 1;
- public static final int TEST_FAILED = 2;
-
- private int defaultMemorySize = 1024 * 1024; // 1MB
- private int defaultFileCount = 10;
-
- private String contextName;
- private String dataSourceName;
- private int datasourceUsageScore;
- private long maxServiceTime;
- private int datasourceTest = TEST_UNKNOWN;
- private int fileTest = TEST_UNKNOWN;
- private int memoryTest = TEST_UNKNOWN;
- private int webappAvailabilityTest = TEST_UNKNOWN;
- private long testDuration;
-
- public String getContextName() {
- return contextName;
- }
-
- public void setContextName(String contextName) {
- this.contextName = contextName;
- }
-
- public int getDatasourceUsageScore() {
- return datasourceUsageScore;
- }
-
- public void setDatasourceUsageScore(int datasourceUsageScore) {
- this.datasourceUsageScore = datasourceUsageScore;
- }
-
- public String getDataSourceName() {
- return dataSourceName;
- }
-
- public void setDataSourceName(String dataSourceName) {
- this.dataSourceName = dataSourceName;
- }
-
- public int getDatasourceTest() {
- return datasourceTest;
- }
-
- public void setDatasourceTest(int datasourceTest) {
- this.datasourceTest = datasourceTest;
- }
-
- public int getFileTest() {
- return fileTest;
- }
-
- public void setFileTest(int fileTest) {
- this.fileTest = fileTest;
- }
-
- public int getMemoryTest() {
- return memoryTest;
- }
-
- public void setMemoryTest(int memoryTest) {
- this.memoryTest = memoryTest;
- }
-
- public int getDefaultMemorySize() {
- return defaultMemorySize;
- }
-
- public int getDefaultFileCount() {
- return defaultFileCount;
- }
-
- public long getTestDuration() {
- return testDuration;
- }
-
- public void setTestDuration(long testDuration) {
- this.testDuration = testDuration;
- }
-
- public long getMaxProcessingTime() {
- return maxServiceTime;
- }
-
- public void setMaxServiceTime(long maxProcessingTime) {
- this.maxServiceTime = maxProcessingTime;
- }
-
- public int getWebappAvailabilityTest() {
- return webappAvailabilityTest;
- }
-
- public void setWebappAvailabilityTest(int webappAvailabilityTest) {
- this.webappAvailabilityTest = webappAvailabilityTest;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+/**
+ * POJO representing "quick check" report.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class TomcatTestReport {
+
+ public static final int TEST_UNKNOWN = 0;
+ public static final int TEST_PASSED = 1;
+ public static final int TEST_FAILED = 2;
+
+ private int defaultMemorySize = 1024 * 1024; // 1MB
+ private int defaultFileCount = 10;
+
+ private String contextName;
+ private String dataSourceName;
+ private int datasourceUsageScore;
+ private long maxServiceTime;
+ private int datasourceTest = TEST_UNKNOWN;
+ private int fileTest = TEST_UNKNOWN;
+ private int memoryTest = TEST_UNKNOWN;
+ private int webappAvailabilityTest = TEST_UNKNOWN;
+ private long testDuration;
+
+ public String getContextName() {
+ return contextName;
+ }
+
+ public void setContextName(String contextName) {
+ this.contextName = contextName;
+ }
+
+ public int getDatasourceUsageScore() {
+ return datasourceUsageScore;
+ }
+
+ public void setDatasourceUsageScore(int datasourceUsageScore) {
+ this.datasourceUsageScore = datasourceUsageScore;
+ }
+
+ public String getDataSourceName() {
+ return dataSourceName;
+ }
+
+ public void setDataSourceName(String dataSourceName) {
+ this.dataSourceName = dataSourceName;
+ }
+
+ public int getDatasourceTest() {
+ return datasourceTest;
+ }
+
+ public void setDatasourceTest(int datasourceTest) {
+ this.datasourceTest = datasourceTest;
+ }
+
+ public int getFileTest() {
+ return fileTest;
+ }
+
+ public void setFileTest(int fileTest) {
+ this.fileTest = fileTest;
+ }
+
+ public int getMemoryTest() {
+ return memoryTest;
+ }
+
+ public void setMemoryTest(int memoryTest) {
+ this.memoryTest = memoryTest;
+ }
+
+ public int getDefaultMemorySize() {
+ return defaultMemorySize;
+ }
+
+ public int getDefaultFileCount() {
+ return defaultFileCount;
+ }
+
+ public long getTestDuration() {
+ return testDuration;
+ }
+
+ public void setTestDuration(long testDuration) {
+ this.testDuration = testDuration;
+ }
+
+ public long getMaxProcessingTime() {
+ return maxServiceTime;
+ }
+
+ public void setMaxServiceTime(long maxProcessingTime) {
+ this.maxServiceTime = maxProcessingTime;
+ }
+
+ public int getWebappAvailabilityTest() {
+ return webappAvailabilityTest;
+ }
+
+ public void setWebappAvailabilityTest(int webappAvailabilityTest) {
+ this.webappAvailabilityTest = webappAvailabilityTest;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/TransportableModel.java b/core/src/main/java/com/googlecode/psiprobe/model/TransportableModel.java
index 91f1929f10..35d2b704f0 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/TransportableModel.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/TransportableModel.java
@@ -1,37 +1,37 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A wrapper class to assist marshalling of ModelAndView.getModel() Map to XML representation.
- *
- * @author Vlad Ilyushchenko
- */
-public class TransportableModel {
-
- private Map items = new HashMap();
-
- public Map getItems() {
- return items;
- }
-
- public void setItems(Map items) {
- this.items = items;
- }
-
- public void putAll(Map map) {
- items.putAll(map);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A wrapper class to assist marshalling of ModelAndView.getModel() Map to XML representation.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class TransportableModel {
+
+ private Map items = new HashMap();
+
+ public Map getItems() {
+ return items;
+ }
+
+ public void setItems(Map items) {
+ this.items = items;
+ }
+
+ public void putAll(Map map) {
+ items.putAll(map);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/java/ThreadModel.java b/core/src/main/java/com/googlecode/psiprobe/model/java/ThreadModel.java
index 23726d4d25..93c911db84 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/java/ThreadModel.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/java/ThreadModel.java
@@ -1,101 +1,101 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.java;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ThreadModel {
-
- private String name;
- private int priority;
- private boolean daemon;
- private boolean interrupted;
- private String runnableClassName;
- private String groupName;
- private String appName;
- private String threadClass;
- private String classLoader;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getPriority() {
- return priority;
- }
-
- public void setPriority(int priority) {
- this.priority = priority;
- }
-
- public boolean isDaemon() {
- return daemon;
- }
-
- public void setDaemon(boolean daemon) {
- this.daemon = daemon;
- }
-
- public boolean isInterrupted() {
- return interrupted;
- }
-
- public void setInterrupted(boolean interrupted) {
- this.interrupted = interrupted;
- }
-
- public String getRunnableClassName() {
- return runnableClassName;
- }
-
- public void setRunnableClassName(String runnableClassName) {
- this.runnableClassName = runnableClassName;
- }
-
- public String getGroupName() {
- return groupName;
- }
-
- public void setGroupName(String groupName) {
- this.groupName = groupName;
- }
-
- public String getAppName() {
- return appName;
- }
-
- public void setAppName(String appName) {
- this.appName = appName;
- }
-
- public String getThreadClass() {
- return threadClass;
- }
-
- public void setThreadClass(String threadClass) {
- this.threadClass = threadClass;
- }
-
- public String getClassLoader() {
- return classLoader;
- }
-
- public void setClassLoader(String classLoader) {
- this.classLoader = classLoader;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.java;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ThreadModel {
+
+ private String name;
+ private int priority;
+ private boolean daemon;
+ private boolean interrupted;
+ private String runnableClassName;
+ private String groupName;
+ private String appName;
+ private String threadClass;
+ private String classLoader;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public void setPriority(int priority) {
+ this.priority = priority;
+ }
+
+ public boolean isDaemon() {
+ return daemon;
+ }
+
+ public void setDaemon(boolean daemon) {
+ this.daemon = daemon;
+ }
+
+ public boolean isInterrupted() {
+ return interrupted;
+ }
+
+ public void setInterrupted(boolean interrupted) {
+ this.interrupted = interrupted;
+ }
+
+ public String getRunnableClassName() {
+ return runnableClassName;
+ }
+
+ public void setRunnableClassName(String runnableClassName) {
+ this.runnableClassName = runnableClassName;
+ }
+
+ public String getGroupName() {
+ return groupName;
+ }
+
+ public void setGroupName(String groupName) {
+ this.groupName = groupName;
+ }
+
+ public String getAppName() {
+ return appName;
+ }
+
+ public void setAppName(String appName) {
+ this.appName = appName;
+ }
+
+ public String getThreadClass() {
+ return threadClass;
+ }
+
+ public void setThreadClass(String threadClass) {
+ this.threadClass = threadClass;
+ }
+
+ public String getClassLoader() {
+ return classLoader;
+ }
+
+ public void setClassLoader(String classLoader) {
+ this.classLoader = classLoader;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jmx/AsyncClusterSender.java b/core/src/main/java/com/googlecode/psiprobe/model/jmx/AsyncClusterSender.java
index d5be56b58d..f98781889c 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jmx/AsyncClusterSender.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jmx/AsyncClusterSender.java
@@ -1,56 +1,56 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jmx;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class AsyncClusterSender extends SyncClusterSender {
-
- private long inQueueCounter;
- private long outQueueCounter;
- private long queueSize;
- private long queuedNrOfBytes;
-
- public long getInQueueCounter() {
- return inQueueCounter;
- }
-
- public void setInQueueCounter(long inQueueCounter) {
- this.inQueueCounter = inQueueCounter;
- }
-
- public long getOutQueueCounter() {
- return outQueueCounter;
- }
-
- public void setOutQueueCounter(long outQueueCounter) {
- this.outQueueCounter = outQueueCounter;
- }
-
- public long getQueueSize() {
- return queueSize;
- }
-
- public void setQueueSize(long queueSize) {
- this.queueSize = queueSize;
- }
-
- public long getQueuedNrOfBytes() {
- return queuedNrOfBytes;
- }
-
- public void setQueuedNrOfBytes(long queuedNrOfBytes) {
- this.queuedNrOfBytes = queuedNrOfBytes;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jmx;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class AsyncClusterSender extends SyncClusterSender {
+
+ private long inQueueCounter;
+ private long outQueueCounter;
+ private long queueSize;
+ private long queuedNrOfBytes;
+
+ public long getInQueueCounter() {
+ return inQueueCounter;
+ }
+
+ public void setInQueueCounter(long inQueueCounter) {
+ this.inQueueCounter = inQueueCounter;
+ }
+
+ public long getOutQueueCounter() {
+ return outQueueCounter;
+ }
+
+ public void setOutQueueCounter(long outQueueCounter) {
+ this.outQueueCounter = outQueueCounter;
+ }
+
+ public long getQueueSize() {
+ return queueSize;
+ }
+
+ public void setQueueSize(long queueSize) {
+ this.queueSize = queueSize;
+ }
+
+ public long getQueuedNrOfBytes() {
+ return queuedNrOfBytes;
+ }
+
+ public void setQueuedNrOfBytes(long queuedNrOfBytes) {
+ this.queuedNrOfBytes = queuedNrOfBytes;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jmx/Cluster.java b/core/src/main/java/com/googlecode/psiprobe/model/jmx/Cluster.java
index d5c80f625e..618c7bcb23 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jmx/Cluster.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jmx/Cluster.java
@@ -1,240 +1,240 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jmx;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Cluster {
-
- private String name;
- private String info;
- private String managerClassName;
- private String mcastAddress;
- private String mcastBindAddress;
- private String mcastClusterDomain;
- private long mcastDropTime;
- private long mcastFrequency;
- private int mcastPort;
- private int mcastSoTimeout;
- private int mcastTTL;
- private List members = new ArrayList();
- private int tcpThreadCount;
- private String tcpListenAddress;
- private int tcpListenPort;
- private long tcpSelectorTimeout;
- private long nrOfMsgsReceived;
- private long totalReceivedBytes;
- private long senderAckTimeout;
- private boolean senderAutoConnect;
- private long senderFailureCounter;
- private long senderNrOfRequests;
- private String senderReplicationMode;
- private long senderTotalBytes;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getInfo() {
- return info;
- }
-
- public void setInfo(String info) {
- this.info = info;
- }
-
- public String getManagerClassName() {
- return managerClassName;
- }
-
- public void setManagerClassName(String managerClassName) {
- this.managerClassName = managerClassName;
- }
-
- public String getMcastAddress() {
- return mcastAddress;
- }
-
- public void setMcastAddress(String mcastAddress) {
- this.mcastAddress = mcastAddress;
- }
-
- public String getMcastBindAddress() {
- return mcastBindAddress;
- }
-
- public void setMcastBindAddress(String mcastBindAddress) {
- this.mcastBindAddress = mcastBindAddress;
- }
-
- public String getMcastClusterDomain() {
- return mcastClusterDomain;
- }
-
- public void setMcastClusterDomain(String mcastClusterDomain) {
- this.mcastClusterDomain = mcastClusterDomain;
- }
-
-
- public List getMembers() {
- return members;
- }
-
- public void setMembers(List members) {
- this.members = members;
- }
-
- public String getTcpListenAddress() {
- return tcpListenAddress;
- }
-
- public void setTcpListenAddress(String tcpListenAddress) {
- this.tcpListenAddress = tcpListenAddress;
- }
-
- public int getTcpListenPort() {
- return tcpListenPort;
- }
-
- public void setTcpListenPort(int tcpListenPort) {
- this.tcpListenPort = tcpListenPort;
- }
-
- public long getTcpSelectorTimeout() {
- return tcpSelectorTimeout;
- }
-
- public void setTcpSelectorTimeout(long tcpSelectorTimeout) {
- this.tcpSelectorTimeout = tcpSelectorTimeout;
- }
-
- public long getNrOfMsgsReceived() {
- return nrOfMsgsReceived;
- }
-
- public void setNrOfMsgsReceived(long nrOfMsgsReceived) {
- this.nrOfMsgsReceived = nrOfMsgsReceived;
- }
-
- public long getSenderAckTimeout() {
- return senderAckTimeout;
- }
-
- public void setSenderAckTimeout(long senderAckTimeout) {
- this.senderAckTimeout = senderAckTimeout;
- }
-
- public boolean isSenderAutoConnect() {
- return senderAutoConnect;
- }
-
- public void setSenderAutoConnect(boolean senderAutoConnect) {
- this.senderAutoConnect = senderAutoConnect;
- }
-
- public long getSenderFailureCounter() {
- return senderFailureCounter;
- }
-
- public void setSenderFailureCounter(long senderFailureCounter) {
- this.senderFailureCounter = senderFailureCounter;
- }
-
- public long getSenderNrOfRequests() {
- return senderNrOfRequests;
- }
-
- public void setSenderNrOfRequests(long senderNrOfRequests) {
- this.senderNrOfRequests = senderNrOfRequests;
- }
-
- public String getSenderReplicationMode() {
- return senderReplicationMode;
- }
-
- public void setSenderReplicationMode(String senderReplicationMode) {
- this.senderReplicationMode = senderReplicationMode;
- }
-
- public long getSenderTotalBytes() {
- return senderTotalBytes;
- }
-
- public void setSenderTotalBytes(long senderTotalBytes) {
- this.senderTotalBytes = senderTotalBytes;
- }
-
- public long getMcastDropTime() {
- return mcastDropTime;
- }
-
- public void setMcastDropTime(long mcastDropTime) {
- this.mcastDropTime = mcastDropTime;
- }
-
- public long getMcastFrequency() {
- return mcastFrequency;
- }
-
- public void setMcastFrequency(long mcastFrequency) {
- this.mcastFrequency = mcastFrequency;
- }
-
- public int getMcastPort() {
- return mcastPort;
- }
-
- public void setMcastPort(int mcastPort) {
- this.mcastPort = mcastPort;
- }
-
- public int getMcastSoTimeout() {
- return mcastSoTimeout;
- }
-
- public void setMcastSoTimeout(int mcastSoTimeout) {
- this.mcastSoTimeout = mcastSoTimeout;
- }
-
- public int getMcastTTL() {
- return mcastTTL;
- }
-
- public void setMcastTTL(int mcastTTL) {
- this.mcastTTL = mcastTTL;
- }
-
- public int getTcpThreadCount() {
- return tcpThreadCount;
- }
-
- public void setTcpThreadCount(int tcpThreadCount) {
- this.tcpThreadCount = tcpThreadCount;
- }
-
- public long getTotalReceivedBytes() {
- return totalReceivedBytes;
- }
-
- public void setTotalReceivedBytes(long totalReceivedBytes) {
- this.totalReceivedBytes = totalReceivedBytes;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jmx;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Cluster {
+
+ private String name;
+ private String info;
+ private String managerClassName;
+ private String mcastAddress;
+ private String mcastBindAddress;
+ private String mcastClusterDomain;
+ private long mcastDropTime;
+ private long mcastFrequency;
+ private int mcastPort;
+ private int mcastSoTimeout;
+ private int mcastTTL;
+ private List members = new ArrayList();
+ private int tcpThreadCount;
+ private String tcpListenAddress;
+ private int tcpListenPort;
+ private long tcpSelectorTimeout;
+ private long nrOfMsgsReceived;
+ private long totalReceivedBytes;
+ private long senderAckTimeout;
+ private boolean senderAutoConnect;
+ private long senderFailureCounter;
+ private long senderNrOfRequests;
+ private String senderReplicationMode;
+ private long senderTotalBytes;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getManagerClassName() {
+ return managerClassName;
+ }
+
+ public void setManagerClassName(String managerClassName) {
+ this.managerClassName = managerClassName;
+ }
+
+ public String getMcastAddress() {
+ return mcastAddress;
+ }
+
+ public void setMcastAddress(String mcastAddress) {
+ this.mcastAddress = mcastAddress;
+ }
+
+ public String getMcastBindAddress() {
+ return mcastBindAddress;
+ }
+
+ public void setMcastBindAddress(String mcastBindAddress) {
+ this.mcastBindAddress = mcastBindAddress;
+ }
+
+ public String getMcastClusterDomain() {
+ return mcastClusterDomain;
+ }
+
+ public void setMcastClusterDomain(String mcastClusterDomain) {
+ this.mcastClusterDomain = mcastClusterDomain;
+ }
+
+
+ public List getMembers() {
+ return members;
+ }
+
+ public void setMembers(List members) {
+ this.members = members;
+ }
+
+ public String getTcpListenAddress() {
+ return tcpListenAddress;
+ }
+
+ public void setTcpListenAddress(String tcpListenAddress) {
+ this.tcpListenAddress = tcpListenAddress;
+ }
+
+ public int getTcpListenPort() {
+ return tcpListenPort;
+ }
+
+ public void setTcpListenPort(int tcpListenPort) {
+ this.tcpListenPort = tcpListenPort;
+ }
+
+ public long getTcpSelectorTimeout() {
+ return tcpSelectorTimeout;
+ }
+
+ public void setTcpSelectorTimeout(long tcpSelectorTimeout) {
+ this.tcpSelectorTimeout = tcpSelectorTimeout;
+ }
+
+ public long getNrOfMsgsReceived() {
+ return nrOfMsgsReceived;
+ }
+
+ public void setNrOfMsgsReceived(long nrOfMsgsReceived) {
+ this.nrOfMsgsReceived = nrOfMsgsReceived;
+ }
+
+ public long getSenderAckTimeout() {
+ return senderAckTimeout;
+ }
+
+ public void setSenderAckTimeout(long senderAckTimeout) {
+ this.senderAckTimeout = senderAckTimeout;
+ }
+
+ public boolean isSenderAutoConnect() {
+ return senderAutoConnect;
+ }
+
+ public void setSenderAutoConnect(boolean senderAutoConnect) {
+ this.senderAutoConnect = senderAutoConnect;
+ }
+
+ public long getSenderFailureCounter() {
+ return senderFailureCounter;
+ }
+
+ public void setSenderFailureCounter(long senderFailureCounter) {
+ this.senderFailureCounter = senderFailureCounter;
+ }
+
+ public long getSenderNrOfRequests() {
+ return senderNrOfRequests;
+ }
+
+ public void setSenderNrOfRequests(long senderNrOfRequests) {
+ this.senderNrOfRequests = senderNrOfRequests;
+ }
+
+ public String getSenderReplicationMode() {
+ return senderReplicationMode;
+ }
+
+ public void setSenderReplicationMode(String senderReplicationMode) {
+ this.senderReplicationMode = senderReplicationMode;
+ }
+
+ public long getSenderTotalBytes() {
+ return senderTotalBytes;
+ }
+
+ public void setSenderTotalBytes(long senderTotalBytes) {
+ this.senderTotalBytes = senderTotalBytes;
+ }
+
+ public long getMcastDropTime() {
+ return mcastDropTime;
+ }
+
+ public void setMcastDropTime(long mcastDropTime) {
+ this.mcastDropTime = mcastDropTime;
+ }
+
+ public long getMcastFrequency() {
+ return mcastFrequency;
+ }
+
+ public void setMcastFrequency(long mcastFrequency) {
+ this.mcastFrequency = mcastFrequency;
+ }
+
+ public int getMcastPort() {
+ return mcastPort;
+ }
+
+ public void setMcastPort(int mcastPort) {
+ this.mcastPort = mcastPort;
+ }
+
+ public int getMcastSoTimeout() {
+ return mcastSoTimeout;
+ }
+
+ public void setMcastSoTimeout(int mcastSoTimeout) {
+ this.mcastSoTimeout = mcastSoTimeout;
+ }
+
+ public int getMcastTTL() {
+ return mcastTTL;
+ }
+
+ public void setMcastTTL(int mcastTTL) {
+ this.mcastTTL = mcastTTL;
+ }
+
+ public int getTcpThreadCount() {
+ return tcpThreadCount;
+ }
+
+ public void setTcpThreadCount(int tcpThreadCount) {
+ this.tcpThreadCount = tcpThreadCount;
+ }
+
+ public long getTotalReceivedBytes() {
+ return totalReceivedBytes;
+ }
+
+ public void setTotalReceivedBytes(long totalReceivedBytes) {
+ this.totalReceivedBytes = totalReceivedBytes;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jmx/ClusterSender.java b/core/src/main/java/com/googlecode/psiprobe/model/jmx/ClusterSender.java
index 06d5405e45..9ef5b01fed 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jmx/ClusterSender.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jmx/ClusterSender.java
@@ -1,128 +1,128 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jmx;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class ClusterSender {
-
- private String address;
- private int port;
- private long avgMessageSize;
- private long avgProcessingTime;
- private long connectCounter;
- private long disconnectCounter;
- private boolean connected;
- private long keepAliveTimeout;
- private long nrOfRequests;
- private long totalBytes;
- private boolean resend;
- private boolean suspect;
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public long getAvgMessageSize() {
- return avgMessageSize;
- }
-
- public void setAvgMessageSize(long avgMessageSize) {
- this.avgMessageSize = avgMessageSize;
- }
-
- public long getConnectCounter() {
- return connectCounter;
- }
-
- public void setConnectCounter(long connectCounter) {
- this.connectCounter = connectCounter;
- }
-
- public long getDisconnectCounter() {
- return disconnectCounter;
- }
-
- public void setDisconnectCounter(long disconnectCounter) {
- this.disconnectCounter = disconnectCounter;
- }
-
- public boolean isConnected() {
- return connected;
- }
-
- public void setConnected(boolean connected) {
- this.connected = connected;
- }
-
- public long getKeepAliveTimeout() {
- return keepAliveTimeout;
- }
-
- public void setKeepAliveTimeout(long keepAliveTimeout) {
- this.keepAliveTimeout = keepAliveTimeout;
- }
-
- public long getNrOfRequests() {
- return nrOfRequests;
- }
-
- public void setNrOfRequests(long nrOfRequests) {
- this.nrOfRequests = nrOfRequests;
- }
-
- public long getTotalBytes() {
- return totalBytes;
- }
-
- public void setTotalBytes(long totalBytes) {
- this.totalBytes = totalBytes;
- }
-
- public boolean isResend() {
- return resend;
- }
-
- public void setResend(boolean resend) {
- this.resend = resend;
- }
-
- public boolean isSuspect() {
- return suspect;
- }
-
- public void setSuspect(boolean suspect) {
- this.suspect = suspect;
- }
-
- public long getAvgProcessingTime() {
- return avgProcessingTime;
- }
-
- public void setAvgProcessingTime(long avgProcessingTime) {
- this.avgProcessingTime = avgProcessingTime;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jmx;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ClusterSender {
+
+ private String address;
+ private int port;
+ private long avgMessageSize;
+ private long avgProcessingTime;
+ private long connectCounter;
+ private long disconnectCounter;
+ private boolean connected;
+ private long keepAliveTimeout;
+ private long nrOfRequests;
+ private long totalBytes;
+ private boolean resend;
+ private boolean suspect;
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public long getAvgMessageSize() {
+ return avgMessageSize;
+ }
+
+ public void setAvgMessageSize(long avgMessageSize) {
+ this.avgMessageSize = avgMessageSize;
+ }
+
+ public long getConnectCounter() {
+ return connectCounter;
+ }
+
+ public void setConnectCounter(long connectCounter) {
+ this.connectCounter = connectCounter;
+ }
+
+ public long getDisconnectCounter() {
+ return disconnectCounter;
+ }
+
+ public void setDisconnectCounter(long disconnectCounter) {
+ this.disconnectCounter = disconnectCounter;
+ }
+
+ public boolean isConnected() {
+ return connected;
+ }
+
+ public void setConnected(boolean connected) {
+ this.connected = connected;
+ }
+
+ public long getKeepAliveTimeout() {
+ return keepAliveTimeout;
+ }
+
+ public void setKeepAliveTimeout(long keepAliveTimeout) {
+ this.keepAliveTimeout = keepAliveTimeout;
+ }
+
+ public long getNrOfRequests() {
+ return nrOfRequests;
+ }
+
+ public void setNrOfRequests(long nrOfRequests) {
+ this.nrOfRequests = nrOfRequests;
+ }
+
+ public long getTotalBytes() {
+ return totalBytes;
+ }
+
+ public void setTotalBytes(long totalBytes) {
+ this.totalBytes = totalBytes;
+ }
+
+ public boolean isResend() {
+ return resend;
+ }
+
+ public void setResend(boolean resend) {
+ this.resend = resend;
+ }
+
+ public boolean isSuspect() {
+ return suspect;
+ }
+
+ public void setSuspect(boolean suspect) {
+ this.suspect = suspect;
+ }
+
+ public long getAvgProcessingTime() {
+ return avgProcessingTime;
+ }
+
+ public void setAvgProcessingTime(long avgProcessingTime) {
+ this.avgProcessingTime = avgProcessingTime;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jmx/MemoryPool.java b/core/src/main/java/com/googlecode/psiprobe/model/jmx/MemoryPool.java
index b325ec19b0..24221d46ed 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jmx/MemoryPool.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jmx/MemoryPool.java
@@ -1,95 +1,95 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jmx;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class MemoryPool {
-
- private String name;
- private long init = 0;
- private long max = 0;
- private long used = 0;
- private long committed = 0;
- private String type;
- private String id;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- this.id = name != null ? name.replaceAll(" ", "_").toLowerCase() : null;
- }
-
- public long getInit() {
- return init;
- }
-
- public void setInit(long init) {
- this.init = init;
- }
-
- public long getMax() {
- return max;
- }
-
- public void setMax(long max) {
- this.max = max;
- }
-
- public long getUsed() {
- return used;
- }
-
- public void setUsed(long used) {
- this.used = used;
- }
-
- public long getCommitted() {
- return committed;
- }
-
- public void setCommitted(long committed) {
- this.committed = committed;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public int getUsageScore() {
- long div;
- if (max == -1) {
- /*
- * Some memory pools have an undefined maximum size. In this case, report how much of the
- * currently allocated memory is used.
- */
- div = committed;
- } else {
- div = max;
- }
- return div == 0 ? 0 : (int) (used * 100 / div);
- }
-
- public String getId() {
- return id;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jmx;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class MemoryPool {
+
+ private String name;
+ private long init = 0;
+ private long max = 0;
+ private long used = 0;
+ private long committed = 0;
+ private String type;
+ private String id;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ this.id = name != null ? name.replaceAll(" ", "_").toLowerCase() : null;
+ }
+
+ public long getInit() {
+ return init;
+ }
+
+ public void setInit(long init) {
+ this.init = init;
+ }
+
+ public long getMax() {
+ return max;
+ }
+
+ public void setMax(long max) {
+ this.max = max;
+ }
+
+ public long getUsed() {
+ return used;
+ }
+
+ public void setUsed(long used) {
+ this.used = used;
+ }
+
+ public long getCommitted() {
+ return committed;
+ }
+
+ public void setCommitted(long committed) {
+ this.committed = committed;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public int getUsageScore() {
+ long div;
+ if (max == -1) {
+ /*
+ * Some memory pools have an undefined maximum size. In this case, report how much of the
+ * currently allocated memory is used.
+ */
+ div = committed;
+ } else {
+ div = max;
+ }
+ return div == 0 ? 0 : (int) (used * 100 / div);
+ }
+
+ public String getId() {
+ return id;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jmx/PooledClusterSender.java b/core/src/main/java/com/googlecode/psiprobe/model/jmx/PooledClusterSender.java
index ed8f030c7d..e56a0dea93 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jmx/PooledClusterSender.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jmx/PooledClusterSender.java
@@ -1,29 +1,29 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jmx;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class PooledClusterSender extends ClusterSender {
-
- private int maxPoolSocketLimit;
-
- public int getMaxPoolSocketLimit() {
- return maxPoolSocketLimit;
- }
-
- public void setMaxPoolSocketLimit(int maxPoolSocketLimit) {
- this.maxPoolSocketLimit = maxPoolSocketLimit;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jmx;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class PooledClusterSender extends ClusterSender {
+
+ private int maxPoolSocketLimit;
+
+ public int getMaxPoolSocketLimit() {
+ return maxPoolSocketLimit;
+ }
+
+ public void setMaxPoolSocketLimit(int maxPoolSocketLimit) {
+ this.maxPoolSocketLimit = maxPoolSocketLimit;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jmx/RuntimeInformation.java b/core/src/main/java/com/googlecode/psiprobe/model/jmx/RuntimeInformation.java
index ca3fba0999..4bf4ee9911 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jmx/RuntimeInformation.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jmx/RuntimeInformation.java
@@ -1,147 +1,147 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jmx;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class RuntimeInformation {
-
- private String vmVendor;
- private long committedVirtualMemorySize = 0;
- private long freePhysicalMemorySize = 0;
- private long freeSwapSpaceSize = 0;
- private long processCpuTime = 0;
- private int availableProcessors = 1;
- private long totalPhysicalMemorySize = 0;
- private long totalSwapSpaceSize = 0;
- private String osName;
- private String osVersion;
- private long startTime;
- private long uptime;
- private long openFDCount;
- private long maxFDCount;
-
- public long getCommittedVirtualMemorySize() {
- return committedVirtualMemorySize;
- }
-
- public void setCommittedVirtualMemorySize(long committedVirtualMemorySize) {
- this.committedVirtualMemorySize = committedVirtualMemorySize;
- }
-
- public long getFreePhysicalMemorySize() {
- return freePhysicalMemorySize;
- }
-
- public void setFreePhysicalMemorySize(long freePhysicalMemorySize) {
- this.freePhysicalMemorySize = freePhysicalMemorySize;
- }
-
- public long getFreeSwapSpaceSize() {
- return freeSwapSpaceSize;
- }
-
- public void setFreeSwapSpaceSize(long freeSwapSpaceSize) {
- this.freeSwapSpaceSize = freeSwapSpaceSize;
- }
-
- public long getProcessCpuTime() {
- return processCpuTime;
- }
-
- public void setProcessCpuTime(long processCpuTime) {
- this.processCpuTime = processCpuTime;
- }
-
- public int getAvailableProcessors() {
- return availableProcessors;
- }
-
- public void setAvailableProcessors(int availableProcessors) {
- this.availableProcessors = availableProcessors;
- }
-
- public long getTotalPhysicalMemorySize() {
- return totalPhysicalMemorySize;
- }
-
- public void setTotalPhysicalMemorySize(long totalPhysicalMemorySize) {
- this.totalPhysicalMemorySize = totalPhysicalMemorySize;
- }
-
- public long getTotalSwapSpaceSize() {
- return totalSwapSpaceSize;
- }
-
- public void setTotalSwapSpaceSize(long totalSwapSpaceSize) {
- this.totalSwapSpaceSize = totalSwapSpaceSize;
- }
-
- public String getOsName() {
- return osName;
- }
-
- public void setOsName(String osName) {
- this.osName = osName;
- }
-
- public String getOsVersion() {
- return osVersion;
- }
-
- public void setOsVersion(String osVersion) {
- this.osVersion = osVersion;
- }
-
- public long getStartTime() {
- return startTime;
- }
-
- public void setStartTime(long startTime) {
- this.startTime = startTime;
- }
-
- public long getUptime() {
- return uptime;
- }
-
- public void setUptime(long uptime) {
- this.uptime = uptime;
- }
-
- public String getVmVendor() {
- return vmVendor;
- }
-
- public void setVmVendor(String vmVendor) {
- this.vmVendor = vmVendor;
- }
-
- public long getOpenFDCount() {
- return openFDCount;
- }
-
- public void setOpenFDCount(long openFDCount) {
- this.openFDCount = openFDCount;
- }
-
- public long getMaxFDCount() {
- return maxFDCount;
- }
-
- public void setMaxFDCount(long maxFDCount) {
- this.maxFDCount = maxFDCount;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jmx;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class RuntimeInformation {
+
+ private String vmVendor;
+ private long committedVirtualMemorySize = 0;
+ private long freePhysicalMemorySize = 0;
+ private long freeSwapSpaceSize = 0;
+ private long processCpuTime = 0;
+ private int availableProcessors = 1;
+ private long totalPhysicalMemorySize = 0;
+ private long totalSwapSpaceSize = 0;
+ private String osName;
+ private String osVersion;
+ private long startTime;
+ private long uptime;
+ private long openFDCount;
+ private long maxFDCount;
+
+ public long getCommittedVirtualMemorySize() {
+ return committedVirtualMemorySize;
+ }
+
+ public void setCommittedVirtualMemorySize(long committedVirtualMemorySize) {
+ this.committedVirtualMemorySize = committedVirtualMemorySize;
+ }
+
+ public long getFreePhysicalMemorySize() {
+ return freePhysicalMemorySize;
+ }
+
+ public void setFreePhysicalMemorySize(long freePhysicalMemorySize) {
+ this.freePhysicalMemorySize = freePhysicalMemorySize;
+ }
+
+ public long getFreeSwapSpaceSize() {
+ return freeSwapSpaceSize;
+ }
+
+ public void setFreeSwapSpaceSize(long freeSwapSpaceSize) {
+ this.freeSwapSpaceSize = freeSwapSpaceSize;
+ }
+
+ public long getProcessCpuTime() {
+ return processCpuTime;
+ }
+
+ public void setProcessCpuTime(long processCpuTime) {
+ this.processCpuTime = processCpuTime;
+ }
+
+ public int getAvailableProcessors() {
+ return availableProcessors;
+ }
+
+ public void setAvailableProcessors(int availableProcessors) {
+ this.availableProcessors = availableProcessors;
+ }
+
+ public long getTotalPhysicalMemorySize() {
+ return totalPhysicalMemorySize;
+ }
+
+ public void setTotalPhysicalMemorySize(long totalPhysicalMemorySize) {
+ this.totalPhysicalMemorySize = totalPhysicalMemorySize;
+ }
+
+ public long getTotalSwapSpaceSize() {
+ return totalSwapSpaceSize;
+ }
+
+ public void setTotalSwapSpaceSize(long totalSwapSpaceSize) {
+ this.totalSwapSpaceSize = totalSwapSpaceSize;
+ }
+
+ public String getOsName() {
+ return osName;
+ }
+
+ public void setOsName(String osName) {
+ this.osName = osName;
+ }
+
+ public String getOsVersion() {
+ return osVersion;
+ }
+
+ public void setOsVersion(String osVersion) {
+ this.osVersion = osVersion;
+ }
+
+ public long getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(long startTime) {
+ this.startTime = startTime;
+ }
+
+ public long getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(long uptime) {
+ this.uptime = uptime;
+ }
+
+ public String getVmVendor() {
+ return vmVendor;
+ }
+
+ public void setVmVendor(String vmVendor) {
+ this.vmVendor = vmVendor;
+ }
+
+ public long getOpenFDCount() {
+ return openFDCount;
+ }
+
+ public void setOpenFDCount(long openFDCount) {
+ this.openFDCount = openFDCount;
+ }
+
+ public long getMaxFDCount() {
+ return maxFDCount;
+ }
+
+ public void setMaxFDCount(long maxFDCount) {
+ this.maxFDCount = maxFDCount;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jmx/SyncClusterSender.java b/core/src/main/java/com/googlecode/psiprobe/model/jmx/SyncClusterSender.java
index dd0440c586..0ab68f777b 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jmx/SyncClusterSender.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jmx/SyncClusterSender.java
@@ -1,65 +1,65 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jmx;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class SyncClusterSender extends ClusterSender {
-
- private long dataFailureCounter;
- private long dataResendCounter;
- private long socketOpenCounter;
- private long socketCloseCounter;
- private long socketOpenFailureCounter;
-
- public long getDataFailureCounter() {
- return dataFailureCounter;
- }
-
- public void setDataFailureCounter(long dataFailureCounter) {
- this.dataFailureCounter = dataFailureCounter;
- }
-
- public long getDataResendCounter() {
- return dataResendCounter;
- }
-
- public void setDataResendCounter(long dataResendCounter) {
- this.dataResendCounter = dataResendCounter;
- }
-
- public long getSocketOpenCounter() {
- return socketOpenCounter;
- }
-
- public void setSocketOpenCounter(long socketOpenCounter) {
- this.socketOpenCounter = socketOpenCounter;
- }
-
- public long getSocketCloseCounter() {
- return socketCloseCounter;
- }
-
- public void setSocketCloseCounter(long socketCloseCounter) {
- this.socketCloseCounter = socketCloseCounter;
- }
-
- public long getSocketOpenFailureCounter() {
- return socketOpenFailureCounter;
- }
-
- public void setSocketOpenFailureCounter(long socketOpenFailureCounter) {
- this.socketOpenFailureCounter = socketOpenFailureCounter;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jmx;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class SyncClusterSender extends ClusterSender {
+
+ private long dataFailureCounter;
+ private long dataResendCounter;
+ private long socketOpenCounter;
+ private long socketCloseCounter;
+ private long socketOpenFailureCounter;
+
+ public long getDataFailureCounter() {
+ return dataFailureCounter;
+ }
+
+ public void setDataFailureCounter(long dataFailureCounter) {
+ this.dataFailureCounter = dataFailureCounter;
+ }
+
+ public long getDataResendCounter() {
+ return dataResendCounter;
+ }
+
+ public void setDataResendCounter(long dataResendCounter) {
+ this.dataResendCounter = dataResendCounter;
+ }
+
+ public long getSocketOpenCounter() {
+ return socketOpenCounter;
+ }
+
+ public void setSocketOpenCounter(long socketOpenCounter) {
+ this.socketOpenCounter = socketOpenCounter;
+ }
+
+ public long getSocketCloseCounter() {
+ return socketCloseCounter;
+ }
+
+ public void setSocketCloseCounter(long socketCloseCounter) {
+ this.socketCloseCounter = socketCloseCounter;
+ }
+
+ public long getSocketOpenFailureCounter() {
+ return socketOpenFailureCounter;
+ }
+
+ public void setSocketOpenFailureCounter(long socketOpenFailureCounter) {
+ this.socketOpenFailureCounter = socketOpenFailureCounter;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jmx/ThreadPoolObjectName.java b/core/src/main/java/com/googlecode/psiprobe/model/jmx/ThreadPoolObjectName.java
index 6b688747d1..c8192c72ea 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jmx/ThreadPoolObjectName.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jmx/ThreadPoolObjectName.java
@@ -1,54 +1,54 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jmx;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.management.ObjectName;
-
-/**
- * This bean represens a hierarchy of Tomcat's ObjectNames necessary to display real-time connection
- * information on "status" tab.
- *
- * @author Vlad Ilyushchenko
- */
-public class ThreadPoolObjectName {
-
- private ObjectName threadPoolName;
- private ObjectName globalRequestProcessorName;
- private List requestProcessorNames = new ArrayList();
-
- public ObjectName getThreadPoolName() {
- return threadPoolName;
- }
-
- public ObjectName getGlobalRequestProcessorName() {
- return globalRequestProcessorName;
- }
-
- public List getRequestProcessorNames() {
- return requestProcessorNames;
- }
-
- public void setThreadPoolName(ObjectName threadPoolName) {
- this.threadPoolName = threadPoolName;
- }
-
- public void setGlobalRequestProcessorName(ObjectName globalRequestProcessorName) {
- this.globalRequestProcessorName = globalRequestProcessorName;
- }
-
- public void setRequestProcessorNames(List requestProcessorNames) {
- this.requestProcessorNames = requestProcessorNames;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jmx;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.management.ObjectName;
+
+/**
+ * This bean represens a hierarchy of Tomcat's ObjectNames necessary to display real-time connection
+ * information on "status" tab.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class ThreadPoolObjectName {
+
+ private ObjectName threadPoolName;
+ private ObjectName globalRequestProcessorName;
+ private List requestProcessorNames = new ArrayList();
+
+ public ObjectName getThreadPoolName() {
+ return threadPoolName;
+ }
+
+ public ObjectName getGlobalRequestProcessorName() {
+ return globalRequestProcessorName;
+ }
+
+ public List getRequestProcessorNames() {
+ return requestProcessorNames;
+ }
+
+ public void setThreadPoolName(ObjectName threadPoolName) {
+ this.threadPoolName = threadPoolName;
+ }
+
+ public void setGlobalRequestProcessorName(ObjectName globalRequestProcessorName) {
+ this.globalRequestProcessorName = globalRequestProcessorName;
+ }
+
+ public void setRequestProcessorNames(List requestProcessorNames) {
+ this.requestProcessorNames = requestProcessorNames;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jsp/CompilerException.java b/core/src/main/java/com/googlecode/psiprobe/model/jsp/CompilerException.java
index ad2ccf7981..3ea5becc37 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jsp/CompilerException.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jsp/CompilerException.java
@@ -1,33 +1,33 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jsp;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class CompilerException extends Exception {
-
- public CompilerException() {}
-
- public CompilerException(String message) {
- super(message);
- }
-
- public CompilerException(Throwable cause) {
- super(cause);
- }
-
- public CompilerException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jsp;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class CompilerException extends Exception {
+
+ public CompilerException() {}
+
+ public CompilerException(String message) {
+ super(message);
+ }
+
+ public CompilerException(Throwable cause) {
+ super(cause);
+ }
+
+ public CompilerException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jsp/Item.java b/core/src/main/java/com/googlecode/psiprobe/model/jsp/Item.java
index 1b32d93e23..8f43f08255 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jsp/Item.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jsp/Item.java
@@ -1,126 +1,126 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jsp;
-
-import java.io.Serializable;
-import java.sql.Timestamp;
-import java.util.Date;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Item implements Serializable {
-
- /**
- * Item is Out Of Date and requires recompilation.
- */
- public static final int STATE_OOD = 1;
-
- /**
- * Item is compiled and ready to use.
- */
- public static final int STATE_READY = 2;
-
- /**
- * Item failed to compile.
- */
- public static final int STATE_FAILED = 3;
-
- private String name;
- private Exception exception;
- private long compileTime = -1;
- private int state = STATE_OOD;
- private int level;
- private boolean missing = true;
- private long size;
- private long lastModified;
- private Date timestamp;
- private String encoding = null;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Exception getException() {
- return exception;
- }
-
- public void setException(Exception exception) {
- this.exception = exception;
- }
-
- public long getCompileTime() {
- return compileTime;
- }
-
- public void setCompileTime(long compileTime) {
- this.compileTime = compileTime;
- }
-
- public int getState() {
- return state;
- }
-
- public void setState(int state) {
- this.state = state;
- }
-
- public int getLevel() {
- return level;
- }
-
- public void setLevel(int level) {
- this.level = level;
- }
-
- public boolean isMissing() {
- return missing;
- }
-
- public void setMissing(boolean missing) {
- this.missing = missing;
- }
-
- public long getSize() {
- return size;
- }
-
- public void setSize(long size) {
- this.size = size;
- }
-
- public long getLastModified() {
- return lastModified;
- }
-
- public void setLastModified(long lastModified) {
- this.lastModified = lastModified;
- this.timestamp = new Timestamp(lastModified);
- }
-
- public Date getTimestamp() {
- return timestamp;
- }
-
- public String getEncoding() {
- return encoding;
- }
-
- public void setEncoding(String encoding) {
- this.encoding = encoding;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jsp;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.Date;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Item implements Serializable {
+
+ /**
+ * Item is Out Of Date and requires recompilation.
+ */
+ public static final int STATE_OOD = 1;
+
+ /**
+ * Item is compiled and ready to use.
+ */
+ public static final int STATE_READY = 2;
+
+ /**
+ * Item failed to compile.
+ */
+ public static final int STATE_FAILED = 3;
+
+ private String name;
+ private Exception exception;
+ private long compileTime = -1;
+ private int state = STATE_OOD;
+ private int level;
+ private boolean missing = true;
+ private long size;
+ private long lastModified;
+ private Date timestamp;
+ private String encoding = null;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Exception getException() {
+ return exception;
+ }
+
+ public void setException(Exception exception) {
+ this.exception = exception;
+ }
+
+ public long getCompileTime() {
+ return compileTime;
+ }
+
+ public void setCompileTime(long compileTime) {
+ this.compileTime = compileTime;
+ }
+
+ public int getState() {
+ return state;
+ }
+
+ public void setState(int state) {
+ this.state = state;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public boolean isMissing() {
+ return missing;
+ }
+
+ public void setMissing(boolean missing) {
+ this.missing = missing;
+ }
+
+ public long getSize() {
+ return size;
+ }
+
+ public void setSize(long size) {
+ this.size = size;
+ }
+
+ public long getLastModified() {
+ return lastModified;
+ }
+
+ public void setLastModified(long lastModified) {
+ this.lastModified = lastModified;
+ this.timestamp = new Timestamp(lastModified);
+ }
+
+ public Date getTimestamp() {
+ return timestamp;
+ }
+
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/jsp/Summary.java b/core/src/main/java/com/googlecode/psiprobe/model/jsp/Summary.java
index d0c2a5769e..11f28b6510 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/jsp/Summary.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/jsp/Summary.java
@@ -1,50 +1,50 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.jsp;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Summary implements Serializable {
-
- private String name;
- private Map items;
- private int outOfDateCount;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Map getItems() {
- return items;
- }
-
- public void setItems(Map items) {
- this.items = items;
- }
-
- public int getOutOfDateCount() {
- return outOfDateCount;
- }
-
- public void setOutOfDateCount(int outOfDateCount) {
- this.outOfDateCount = outOfDateCount;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.jsp;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Summary implements Serializable {
+
+ private String name;
+ private Map items;
+ private int outOfDateCount;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Map getItems() {
+ return items;
+ }
+
+ public void setItems(Map items) {
+ this.items = items;
+ }
+
+ public int getOutOfDateCount() {
+ return outOfDateCount;
+ }
+
+ public void setOutOfDateCount(int outOfDateCount) {
+ this.outOfDateCount = outOfDateCount;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/sql/DataSourceTestInfo.java b/core/src/main/java/com/googlecode/psiprobe/model/sql/DataSourceTestInfo.java
index bbde66ff89..b7574af526 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/sql/DataSourceTestInfo.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/sql/DataSourceTestInfo.java
@@ -1,79 +1,79 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.sql;
-
-import java.io.Serializable;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * A class to store data source test tool related data in a session attribute.
- *
- * @author Andy Shapoval
- */
-public class DataSourceTestInfo implements Serializable {
-
- public static final String DS_TEST_SESS_ATTR = "dataSourceTestData";
-
- List results = null;
- LinkedList queryHistory = new LinkedList();
- int maxRows = 0;
- int rowsPerPage = 0;
- int historySize = 0;
-
- public DataSourceTestInfo() {}
-
- public void addQueryToHistory(String sql) {
- queryHistory.remove(sql);
- queryHistory.addFirst(sql);
-
- while (historySize >= 0 && queryHistory.size() > historySize) {
- queryHistory.removeLast();
- }
- }
-
- public List getResults() {
- return results;
- }
-
- public void setResults(List results) {
- this.results = results;
- }
-
- public List getQueryHistory() {
- return queryHistory;
- }
-
- public int getMaxRows() {
- return maxRows;
- }
-
- public void setMaxRows(int maxRows) {
- this.maxRows = maxRows;
- }
-
- public int getRowsPerPage() {
- return rowsPerPage;
- }
-
- public void setRowsPerPage(int rowsPerPage) {
- this.rowsPerPage = rowsPerPage;
- }
-
- public int getHistorySize() {
- return historySize;
- }
-
- public void setHistorySize(int historySize) {
- this.historySize = historySize;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.sql;
+
+import java.io.Serializable;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * A class to store data source test tool related data in a session attribute.
+ *
+ * @author Andy Shapoval
+ */
+public class DataSourceTestInfo implements Serializable {
+
+ public static final String DS_TEST_SESS_ATTR = "dataSourceTestData";
+
+ List results = null;
+ LinkedList queryHistory = new LinkedList();
+ int maxRows = 0;
+ int rowsPerPage = 0;
+ int historySize = 0;
+
+ public DataSourceTestInfo() {}
+
+ public void addQueryToHistory(String sql) {
+ queryHistory.remove(sql);
+ queryHistory.addFirst(sql);
+
+ while (historySize >= 0 && queryHistory.size() > historySize) {
+ queryHistory.removeLast();
+ }
+ }
+
+ public List getResults() {
+ return results;
+ }
+
+ public void setResults(List results) {
+ this.results = results;
+ }
+
+ public List getQueryHistory() {
+ return queryHistory;
+ }
+
+ public int getMaxRows() {
+ return maxRows;
+ }
+
+ public void setMaxRows(int maxRows) {
+ this.maxRows = maxRows;
+ }
+
+ public int getRowsPerPage() {
+ return rowsPerPage;
+ }
+
+ public void setRowsPerPage(int rowsPerPage) {
+ this.rowsPerPage = rowsPerPage;
+ }
+
+ public int getHistorySize() {
+ return historySize;
+ }
+
+ public void setHistorySize(int historySize) {
+ this.historySize = historySize;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/stats/StatsCollection.java b/core/src/main/java/com/googlecode/psiprobe/model/stats/StatsCollection.java
index eaa1ee5b7c..a02f783534 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/stats/StatsCollection.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/stats/StatsCollection.java
@@ -1,263 +1,263 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.stats;
-
-import com.googlecode.psiprobe.tools.UpdateCommitLock;
-
-import com.thoughtworks.xstream.XStream;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jfree.data.xy.XYDataItem;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.web.context.WebApplicationContext;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public class StatsCollection implements InitializingBean, DisposableBean, ApplicationContextAware {
-
- private Log logger = LogFactory.getLog(this.getClass());
-
- private Map statsData = new TreeMap();
- private String swapFileName;
- private String storagePath = null;
- private File contextTempDir;
- private int maxFiles = 2;
- private final UpdateCommitLock lock = new UpdateCommitLock();
-
- public String getSwapFileName() {
- return swapFileName;
- }
-
- public void setSwapFileName(String swapFileName) {
- this.swapFileName = swapFileName;
- }
-
- public String getStoragePath() {
- return storagePath;
- }
-
- public void setStoragePath(String storagePath) {
- this.storagePath = storagePath;
- }
-
- public boolean isCollected(String statsName) {
- return statsData.get(statsName) != null;
- }
-
- public int getMaxFiles() {
- return maxFiles;
- }
-
- public void setMaxFiles(int maxFiles) {
- this.maxFiles = maxFiles > 0 ? maxFiles : 2;
- }
-
- public synchronized List newStats(String name, int maxElements) {
- List stats = Collections.synchronizedList(new ArrayList(maxElements));
- statsData.put(name, stats);
- return stats;
- }
-
- public synchronized void resetStats(String name) {
- List stats = getStats(name);
- if (stats != null) {
- stats.clear();
- }
- }
-
- public synchronized List getStats(String name) {
- return (List) statsData.get(name);
- }
-
- public long getLastValueForStat(String statName) {
- long statValue = 0;
-
- List stats = getStats(statName);
- if (stats != null && !stats.isEmpty()) {
- XYDataItem xy = (XYDataItem) stats.get(stats.size() - 1);
- if (xy != null && xy.getY() != null) {
- statValue = xy.getY().longValue();
- }
- }
-
- return statValue;
- }
-
- /**
- * Returns series if stat name starts with the prefix.
- *
- * @param statNamePrefix
- * @return a Map of matching stats. Map keys are stat names and map values are corresponding
- * series.
- */
- public synchronized Map getStatsByPrefix(String statNamePrefix) {
- Map map = new HashMap();
- for (Iterator i = statsData.entrySet().iterator(); i.hasNext();) {
- Map.Entry en = (Map.Entry) i.next();
- if (((String) en.getKey()).startsWith(statNamePrefix)) {
- map.put(en.getKey(), en.getValue());
- }
- }
- return map;
- }
-
- private File makeFile() {
- return storagePath == null ? new File(contextTempDir, swapFileName) : new File(storagePath,
- swapFileName);
- }
-
- private void shiftFiles(int index) {
- if (index >= maxFiles - 1) {
- new File(makeFile().getAbsolutePath() + "." + index).delete();
- } else {
- shiftFiles(index + 1);
- File srcFile = index == 0 ? makeFile() : new File(makeFile().getAbsolutePath() + "." + index);
- File destFile = new File(makeFile().getAbsolutePath() + "." + (index + 1));
- srcFile.renameTo(destFile);
- }
- }
-
- /**
- * Writes stats data to file on disk.
- *
- * @throws IOException
- * @throws InterruptedException
- */
- public synchronized void serialize() throws IOException, InterruptedException {
- lock.lockForCommit();
- long t = System.currentTimeMillis();
- try {
- shiftFiles(0);
- OutputStream os = new FileOutputStream(makeFile());
- try {
- new XStream().toXML(statsData, os);
- } finally {
- os.close();
- }
- } catch (Exception e) {
- logger.error("Could not write stats data to " + makeFile().getAbsolutePath(), e);
- } finally {
- lock.releaseCommitLock();
- logger.debug("stats serialized in " + (System.currentTimeMillis() - t) + "ms.");
- }
- }
-
- private Map deserialize(File f) {
- Map stats = null;
- if (f.exists() && f.canRead()) {
- long t = System.currentTimeMillis();
- try {
- FileInputStream fis = new FileInputStream(f);
- try {
- stats = (Map) (new XStream().fromXML(fis));
-
- if (stats != null) {
- // adjust stats data so that charts look realistic.
- // we do that by ending the previous stats group with 0 value
- // and starting the current stats group also with 0
- // thus giving the chart nice plunge to zero indicating downtime
- //
- // and lets not bother about rotating stats;
- // regular stats collection cycle will do it
-
- for (Iterator it = stats.keySet().iterator(); it.hasNext();) {
- List l = (List) stats.get(it.next());
- if (l.size() > 0) {
- XYDataItem xy = (XYDataItem) l.get(l.size() - 1);
- l.add(new XYDataItem(xy.getX().longValue() + 1, 0));
- l.add(new XYDataItem(System.currentTimeMillis(), 0));
- }
- }
- }
- } finally {
- fis.close();
- }
- logger.debug("stats data read in " + (System.currentTimeMillis() - t) + "ms.");
- } catch (Throwable e) {
- logger.error("Could not read stats data from " + f.getAbsolutePath(), e);
- //
- // make sure we always re-throw ThreadDeath
- //
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
- }
-
- return stats;
- }
-
- public void lockForUpdate() throws InterruptedException {
- lock.lockForUpdate();
- }
-
- public void releaseLock() {
- lock.releaseUpdateLock();
- }
-
- /**
- * Reads stats data from file on disk.
- *
- * @throws Exception
- */
- public synchronized void afterPropertiesSet() throws Exception {
- int index = 0;
- Map stats;
-
- while (true) {
- File f = index == 0 ? makeFile() : new File(makeFile().getAbsolutePath() + "." + index);
- stats = deserialize(f);
- index += 1;
- if (stats != null || index >= maxFiles - 1) {
- break;
- }
- }
-
- if (stats != null) {
- statsData = stats;
- } else {
- logger.debug("Stats data file not found. Empty file assumed.");
- }
-
- }
-
-
- public void destroy() throws Exception {
- serialize();
- }
-
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- WebApplicationContext wac = (WebApplicationContext) applicationContext;
- contextTempDir = (File) wac.getServletContext().getAttribute("javax.servlet.context.tempdir");
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.stats;
+
+import com.googlecode.psiprobe.tools.UpdateCommitLock;
+
+import com.thoughtworks.xstream.XStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jfree.data.xy.XYDataItem;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.web.context.WebApplicationContext;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public class StatsCollection implements InitializingBean, DisposableBean, ApplicationContextAware {
+
+ private Log logger = LogFactory.getLog(this.getClass());
+
+ private Map statsData = new TreeMap();
+ private String swapFileName;
+ private String storagePath = null;
+ private File contextTempDir;
+ private int maxFiles = 2;
+ private final UpdateCommitLock lock = new UpdateCommitLock();
+
+ public String getSwapFileName() {
+ return swapFileName;
+ }
+
+ public void setSwapFileName(String swapFileName) {
+ this.swapFileName = swapFileName;
+ }
+
+ public String getStoragePath() {
+ return storagePath;
+ }
+
+ public void setStoragePath(String storagePath) {
+ this.storagePath = storagePath;
+ }
+
+ public boolean isCollected(String statsName) {
+ return statsData.get(statsName) != null;
+ }
+
+ public int getMaxFiles() {
+ return maxFiles;
+ }
+
+ public void setMaxFiles(int maxFiles) {
+ this.maxFiles = maxFiles > 0 ? maxFiles : 2;
+ }
+
+ public synchronized List newStats(String name, int maxElements) {
+ List stats = Collections.synchronizedList(new ArrayList(maxElements));
+ statsData.put(name, stats);
+ return stats;
+ }
+
+ public synchronized void resetStats(String name) {
+ List stats = getStats(name);
+ if (stats != null) {
+ stats.clear();
+ }
+ }
+
+ public synchronized List getStats(String name) {
+ return (List) statsData.get(name);
+ }
+
+ public long getLastValueForStat(String statName) {
+ long statValue = 0;
+
+ List stats = getStats(statName);
+ if (stats != null && !stats.isEmpty()) {
+ XYDataItem xy = (XYDataItem) stats.get(stats.size() - 1);
+ if (xy != null && xy.getY() != null) {
+ statValue = xy.getY().longValue();
+ }
+ }
+
+ return statValue;
+ }
+
+ /**
+ * Returns series if stat name starts with the prefix.
+ *
+ * @param statNamePrefix
+ * @return a Map of matching stats. Map keys are stat names and map values are corresponding
+ * series.
+ */
+ public synchronized Map getStatsByPrefix(String statNamePrefix) {
+ Map map = new HashMap();
+ for (Iterator i = statsData.entrySet().iterator(); i.hasNext();) {
+ Map.Entry en = (Map.Entry) i.next();
+ if (((String) en.getKey()).startsWith(statNamePrefix)) {
+ map.put(en.getKey(), en.getValue());
+ }
+ }
+ return map;
+ }
+
+ private File makeFile() {
+ return storagePath == null ? new File(contextTempDir, swapFileName) : new File(storagePath,
+ swapFileName);
+ }
+
+ private void shiftFiles(int index) {
+ if (index >= maxFiles - 1) {
+ new File(makeFile().getAbsolutePath() + "." + index).delete();
+ } else {
+ shiftFiles(index + 1);
+ File srcFile = index == 0 ? makeFile() : new File(makeFile().getAbsolutePath() + "." + index);
+ File destFile = new File(makeFile().getAbsolutePath() + "." + (index + 1));
+ srcFile.renameTo(destFile);
+ }
+ }
+
+ /**
+ * Writes stats data to file on disk.
+ *
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public synchronized void serialize() throws IOException, InterruptedException {
+ lock.lockForCommit();
+ long t = System.currentTimeMillis();
+ try {
+ shiftFiles(0);
+ OutputStream os = new FileOutputStream(makeFile());
+ try {
+ new XStream().toXML(statsData, os);
+ } finally {
+ os.close();
+ }
+ } catch (Exception e) {
+ logger.error("Could not write stats data to " + makeFile().getAbsolutePath(), e);
+ } finally {
+ lock.releaseCommitLock();
+ logger.debug("stats serialized in " + (System.currentTimeMillis() - t) + "ms.");
+ }
+ }
+
+ private Map deserialize(File f) {
+ Map stats = null;
+ if (f.exists() && f.canRead()) {
+ long t = System.currentTimeMillis();
+ try {
+ FileInputStream fis = new FileInputStream(f);
+ try {
+ stats = (Map) (new XStream().fromXML(fis));
+
+ if (stats != null) {
+ // adjust stats data so that charts look realistic.
+ // we do that by ending the previous stats group with 0 value
+ // and starting the current stats group also with 0
+ // thus giving the chart nice plunge to zero indicating downtime
+ //
+ // and lets not bother about rotating stats;
+ // regular stats collection cycle will do it
+
+ for (Iterator it = stats.keySet().iterator(); it.hasNext();) {
+ List l = (List) stats.get(it.next());
+ if (l.size() > 0) {
+ XYDataItem xy = (XYDataItem) l.get(l.size() - 1);
+ l.add(new XYDataItem(xy.getX().longValue() + 1, 0));
+ l.add(new XYDataItem(System.currentTimeMillis(), 0));
+ }
+ }
+ }
+ } finally {
+ fis.close();
+ }
+ logger.debug("stats data read in " + (System.currentTimeMillis() - t) + "ms.");
+ } catch (Throwable e) {
+ logger.error("Could not read stats data from " + f.getAbsolutePath(), e);
+ //
+ // make sure we always re-throw ThreadDeath
+ //
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+ }
+
+ return stats;
+ }
+
+ public void lockForUpdate() throws InterruptedException {
+ lock.lockForUpdate();
+ }
+
+ public void releaseLock() {
+ lock.releaseUpdateLock();
+ }
+
+ /**
+ * Reads stats data from file on disk.
+ *
+ * @throws Exception
+ */
+ public synchronized void afterPropertiesSet() throws Exception {
+ int index = 0;
+ Map stats;
+
+ while (true) {
+ File f = index == 0 ? makeFile() : new File(makeFile().getAbsolutePath() + "." + index);
+ stats = deserialize(f);
+ index += 1;
+ if (stats != null || index >= maxFiles - 1) {
+ break;
+ }
+ }
+
+ if (stats != null) {
+ statsData = stats;
+ } else {
+ logger.debug("Stats data file not found. Empty file assumed.");
+ }
+
+ }
+
+
+ public void destroy() throws Exception {
+ serialize();
+ }
+
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ WebApplicationContext wac = (WebApplicationContext) applicationContext;
+ contextTempDir = (File) wac.getServletContext().getAttribute("javax.servlet.context.tempdir");
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/model/wrapper/WrapperInfo.java b/core/src/main/java/com/googlecode/psiprobe/model/wrapper/WrapperInfo.java
index bb6909b5cf..cdfa5add37 100644
--- a/core/src/main/java/com/googlecode/psiprobe/model/wrapper/WrapperInfo.java
+++ b/core/src/main/java/com/googlecode/psiprobe/model/wrapper/WrapperInfo.java
@@ -1,112 +1,112 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.model.wrapper;
-
-import java.util.Set;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class WrapperInfo {
-
- private String user;
- private String interactiveUser;
- private String version;
- private int wrapperPid;
- private int jvmPid;
- private String buildTime;
- private Set properties;
- private boolean controlledByWrapper;
- private boolean launchedAsService;
- private boolean debugEnabled;
-
- public String getUser() {
- return user;
- }
-
- public void setUser(String user) {
- this.user = user;
- }
-
- public String getInteractiveUser() {
- return interactiveUser;
- }
-
- public void setInteractiveUser(String interactiveUser) {
- this.interactiveUser = interactiveUser;
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public int getWrapperPid() {
- return wrapperPid;
- }
-
- public void setWrapperPid(int wrapperPid) {
- this.wrapperPid = wrapperPid;
- }
-
- public int getJvmPid() {
- return jvmPid;
- }
-
- public void setJvmPid(int jvmPid) {
- this.jvmPid = jvmPid;
- }
-
- public String getBuildTime() {
- return buildTime;
- }
-
- public void setBuildTime(String buildTime) {
- this.buildTime = buildTime;
- }
-
- public Set getProperties() {
- return properties;
- }
-
- public void setProperties(Set properties) {
- this.properties = properties;
- }
-
- public boolean isControlledByWrapper() {
- return controlledByWrapper;
- }
-
- public void setControlledByWrapper(boolean controlledByWrapper) {
- this.controlledByWrapper = controlledByWrapper;
- }
-
- public boolean isLaunchedAsService() {
- return launchedAsService;
- }
-
- public void setLaunchedAsService(boolean launchedAsService) {
- this.launchedAsService = launchedAsService;
- }
-
- public boolean isDebugEnabled() {
- return debugEnabled;
- }
-
- public void setDebugEnabled(boolean debugEnabled) {
- this.debugEnabled = debugEnabled;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.model.wrapper;
+
+import java.util.Set;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class WrapperInfo {
+
+ private String user;
+ private String interactiveUser;
+ private String version;
+ private int wrapperPid;
+ private int jvmPid;
+ private String buildTime;
+ private Set properties;
+ private boolean controlledByWrapper;
+ private boolean launchedAsService;
+ private boolean debugEnabled;
+
+ public String getUser() {
+ return user;
+ }
+
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ public String getInteractiveUser() {
+ return interactiveUser;
+ }
+
+ public void setInteractiveUser(String interactiveUser) {
+ this.interactiveUser = interactiveUser;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public int getWrapperPid() {
+ return wrapperPid;
+ }
+
+ public void setWrapperPid(int wrapperPid) {
+ this.wrapperPid = wrapperPid;
+ }
+
+ public int getJvmPid() {
+ return jvmPid;
+ }
+
+ public void setJvmPid(int jvmPid) {
+ this.jvmPid = jvmPid;
+ }
+
+ public String getBuildTime() {
+ return buildTime;
+ }
+
+ public void setBuildTime(String buildTime) {
+ this.buildTime = buildTime;
+ }
+
+ public Set getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Set properties) {
+ this.properties = properties;
+ }
+
+ public boolean isControlledByWrapper() {
+ return controlledByWrapper;
+ }
+
+ public void setControlledByWrapper(boolean controlledByWrapper) {
+ this.controlledByWrapper = controlledByWrapper;
+ }
+
+ public boolean isLaunchedAsService() {
+ return launchedAsService;
+ }
+
+ public void setLaunchedAsService(boolean launchedAsService) {
+ this.launchedAsService = launchedAsService;
+ }
+
+ public boolean isDebugEnabled() {
+ return debugEnabled;
+ }
+
+ public void setDebugEnabled(boolean debugEnabled) {
+ this.debugEnabled = debugEnabled;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tokenizer/StringTokenizer.java b/core/src/main/java/com/googlecode/psiprobe/tokenizer/StringTokenizer.java
index 1d0d3cb4dd..1194c277a8 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tokenizer/StringTokenizer.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tokenizer/StringTokenizer.java
@@ -1,56 +1,56 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tokenizer;
-
-import java.io.IOException;
-import java.io.StringReader;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class StringTokenizer extends Tokenizer {
-
- public StringTokenizer() {}
-
- public StringTokenizer(final String str) {
- setString(str);
- }
-
- public void setString(final String str) {
- setReader(new StringReader(str));
- }
-
- public boolean hasMore() {
- try {
- return super.hasMore();
- } catch (IOException e) {
- return false;
- }
- }
-
- public Token getToken() {
- try {
- return super.getToken();
- } catch (IOException e) {
- return null;
- }
- }
-
- public Token nextToken() {
- try {
- return super.nextToken();
- } catch (IOException e) {
- return null;
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tokenizer;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class StringTokenizer extends Tokenizer {
+
+ public StringTokenizer() {}
+
+ public StringTokenizer(final String str) {
+ setString(str);
+ }
+
+ public void setString(final String str) {
+ setReader(new StringReader(str));
+ }
+
+ public boolean hasMore() {
+ try {
+ return super.hasMore();
+ } catch (IOException e) {
+ return false;
+ }
+ }
+
+ public Token getToken() {
+ try {
+ return super.getToken();
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ public Token nextToken() {
+ try {
+ return super.nextToken();
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tokenizer/Token.java b/core/src/main/java/com/googlecode/psiprobe/tokenizer/Token.java
index 5c3fd803c2..db1befa80c 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tokenizer/Token.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tokenizer/Token.java
@@ -1,31 +1,31 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tokenizer;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public interface Token {
-
- String getText();
-
- String getInnerText();
-
- String getName();
-
- int getType();
-
- int getLine();
-
- int getCol();
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tokenizer;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public interface Token {
+
+ String getText();
+
+ String getInnerText();
+
+ String getName();
+
+ int getType();
+
+ int getLine();
+
+ int getCol();
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tokenizer/Tokenizer.java b/core/src/main/java/com/googlecode/psiprobe/tokenizer/Tokenizer.java
index 930f3bc407..1644ebed22 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tokenizer/Tokenizer.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tokenizer/Tokenizer.java
@@ -1,321 +1,321 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tokenizer;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Tokenizer {
-
- public static final int TT_TOKEN = 0;
- public static final int TT_SYMBOL = 1;
- public static final int TT_BLOCK = 2;
- public static final int TT_ERROR = 3;
-
- private Reader reader;
- private final List symbols;
- /*
- * private boolean enableHidden; private boolean hideNonSymbols;
- */
- private int pushCount = 0;
- //
- private final TokenizerToken token;
- private final TokenizerToken upcomingToken;
- //
- private int cachePosition;
- private int cacheSize;
- private final char[] cacheBuffer;
- private int cachePinPosition;
-
- public Tokenizer() {
- this(null, 4096);
- }
-
- public Tokenizer(Reader reader) {
- this(reader, 4096);
- }
-
- public Tokenizer(Reader reader, int cacheBufferSize) {
- symbols = new UniqueList();
- token = new TokenizerToken();
- upcomingToken = new TokenizerToken();
- cacheBuffer = new char[cacheBufferSize];
- setReader(reader);
- }
-
- private void loadCache(int count) throws IOException {
- int charToRead = count == 0 ? 0 : count - 1;
- if (cachePosition + charToRead >= cacheSize) {
- if (cacheSize == 0) {
- cacheSize = reader.read(cacheBuffer, 0, cacheBuffer.length);
- cachePosition = 0;
- } else if (cacheSize == cacheBuffer.length) {
- // make sure we do not read beyond the stream
- int halfCacheSize = cacheSize / 2;
- // copy the lower half into the upper half
- System.arraycopy(cacheBuffer, halfCacheSize, cacheBuffer, 0, halfCacheSize);
- cachePosition -= halfCacheSize;
- if (cachePinPosition != -1) {
- cachePinPosition -= halfCacheSize;
- }
-
- int charsRead = reader.read(cacheBuffer, halfCacheSize, cacheSize - halfCacheSize);
- if (charsRead == -1) {
- cacheSize = halfCacheSize;
- } else {
- cacheSize = charsRead + halfCacheSize;
- }
- }
- }
- }
-
- public Token getToken() throws IOException {
- if (token.type == Tokenizer.TT_ERROR) {
- return nextToken();
- }
- return token;
- }
-
- public Token nextToken() throws IOException {
- if (pushCount > 0) {
- pushCount--;
- return token;
- } else if (upcomingToken.type != Tokenizer.TT_ERROR) {
- token.assign(upcomingToken);
- upcomingToken.type = Tokenizer.TT_ERROR;
- return token;
- } else {
- token.init();
- char[] b = new char[1];
- while (hasMore()) {
- read(b, 1);
-
- int symbolIndex = lookupSymbol(b[0]);
-
- if (symbolIndex != -1) {
- // we have found a symbol
- TokenizerToken workToken =
- token.type == Tokenizer.TT_TOKEN && token.text.length() > 0 ? upcomingToken : token;
- TokenizerSymbol symbol = ((TokenizerSymbol) symbols.get(symbolIndex));
- boolean hideSymbol = symbol.hidden;
-
- if (!hideSymbol) {
- workToken.init();
- workToken.text.append(symbol.startText);
- workToken.type = Tokenizer.TT_SYMBOL;
- workToken.name = symbol.name;
- }
-
- if (symbol.tailText != null) {
- // the symbol is a block
- // look for the tailText
- while (hasMore() && !compare(symbol.tailText.toCharArray(), 0)) {
- read(b, 1);
- if (!hideSymbol) {
- workToken.text.append(b);
- workToken.innerText.append(b);
- }
- }
-
- if (!hideSymbol) {
- workToken.text.append(symbol.tailText);
- }
- workToken.type = Tokenizer.TT_BLOCK;
- }
-
- // if (!hideSymbol) break;
- if (token.text.length() > 0) {
- break;
- }
- } else {
- token.text.append(b);
- token.type = Tokenizer.TT_TOKEN;
- }
- }
- }
- return token;
- }
-
- public void pushBack() {
- pushCount++;
- }
-
- public void setReader(Reader reader) {
- this.reader = reader;
- cachePosition = 0;
- cachePinPosition = -1;
- cacheSize = 0;
- token.type = TT_ERROR;
- upcomingToken.type = TT_ERROR;
- }
-
- private boolean compare(char[] chars, int offs) throws IOException {
- char[] b = new char[chars.length - offs];
- cachePinPosition = cachePosition;
- read(b, b.length);
- for (int i = 0; i < b.length; i++) {
- if (b[i] != chars[i + offs]) {
- cachePosition = cachePinPosition;
- cachePinPosition = -1;
- return false;
- }
- }
- return true;
- }
-
- private int lookupSymbol(char b) throws IOException {
- int result = -1;
-
- Character c = new Character(b);
- int index = Collections.binarySearch(symbols, c);
-
- if (index >= 0) {
- // the index could be anywhere within a group of sybols with the same first letter
- // so we need to scroll up the group to make sure we start test from the beginning
- while (index > 0 && ((TokenizerSymbol) symbols.get(index - 1)).compareTo(c) == 0) {
- index--;
- }
- while (index < symbols.size()) {
- TokenizerSymbol symbol = ((TokenizerSymbol) symbols.get(index));
- if (symbol.compareTo(c) == 0) {
- if (compare(symbol.startText.toCharArray(), 1)) {
- result = index;
- break;
- } else {
- index++;
- }
- } else {
- break;
- }
- }
- }
- return result;
- }
-
- private void read(char[] b, int count) throws IOException {
- loadCache(count);
- int endPoint = cachePosition + count - 1 >= cacheSize ? cacheSize : cachePosition + count - 1;
- if (cachePosition <= endPoint) {
- System.arraycopy(cacheBuffer, cachePosition, b, 0, endPoint - cachePosition + 1);
- }
- cachePosition = endPoint + 1;
- }
-
- public boolean hasMore() throws IOException {
- loadCache(0);
- return (cachePosition < cacheSize) || upcomingToken.type != Tokenizer.TT_ERROR || pushCount > 0;
- }
-
- public void addSymbol(String text) {
- symbols.add(new TokenizerSymbol(null, text, null, false, false, true, false));
- }
-
- public void addSymbol(String text, boolean hidden) {
- symbols.add(new TokenizerSymbol(null, text, null, hidden, false, true, false));
- }
-
- public void addSymbol(String startText, String endText, boolean hidden) {
- symbols.add(new TokenizerSymbol(null, startText, endText, hidden, false, true, false));
- }
-
- public void addSymbol(TokenizerSymbol symbol) {
- symbols.add(symbol);
- }
-
- public String getNextString(String defaultValue) throws IOException {
- return hasMore() ? nextToken().getInnerText() : defaultValue;
- }
-
- public boolean getNextBoolean(String trueValue, boolean defaultValue) throws IOException {
- return hasMore() ? trueValue.equalsIgnoreCase(nextToken().getInnerText()) : defaultValue;
- }
-
- public long getNextLong(long defaultValue) throws IOException {
- String stval = getNextString(null);
-
- if (stval == null) {
- return defaultValue;
- }
-
- try {
- return Long.parseLong(stval);
- } catch (NumberFormatException e) {
- return defaultValue;
- }
- }
-}
-
-
-class TokenizerToken implements Token {
-
- final StringBuffer text = new StringBuffer();
- final StringBuffer innerText = new StringBuffer();
- String name = "";
- int type = Tokenizer.TT_ERROR;
- int line = 0;
- int col = 0;
-
- public TokenizerToken() {
- type = Tokenizer.TT_ERROR;
- }
-
- public String getText() {
- return text.toString();
- }
-
- public String getInnerText() {
- return type == Tokenizer.TT_BLOCK ? innerText.toString() : getText();
- }
-
- public String getName() {
- return name;
- }
-
- public int getType() {
- return type;
- }
-
- public int getLine() {
- return line;
- }
-
- public int getCol() {
- return col;
- }
-
- public String toString() {
- return getText();
- }
-
- public void assign(TokenizerToken token) {
- this.text.setLength(0);
- this.text.append(token.text);
- this.innerText.setLength(0);
- this.innerText.append(token.innerText);
- this.name = token.name;
- this.type = token.type;
- this.col = token.col;
- this.line = token.line;
- }
-
- public void init() {
- text.setLength(0);
- innerText.setLength(0);
- name = "";
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tokenizer;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Tokenizer {
+
+ public static final int TT_TOKEN = 0;
+ public static final int TT_SYMBOL = 1;
+ public static final int TT_BLOCK = 2;
+ public static final int TT_ERROR = 3;
+
+ private Reader reader;
+ private final List symbols;
+ /*
+ * private boolean enableHidden; private boolean hideNonSymbols;
+ */
+ private int pushCount = 0;
+ //
+ private final TokenizerToken token;
+ private final TokenizerToken upcomingToken;
+ //
+ private int cachePosition;
+ private int cacheSize;
+ private final char[] cacheBuffer;
+ private int cachePinPosition;
+
+ public Tokenizer() {
+ this(null, 4096);
+ }
+
+ public Tokenizer(Reader reader) {
+ this(reader, 4096);
+ }
+
+ public Tokenizer(Reader reader, int cacheBufferSize) {
+ symbols = new UniqueList();
+ token = new TokenizerToken();
+ upcomingToken = new TokenizerToken();
+ cacheBuffer = new char[cacheBufferSize];
+ setReader(reader);
+ }
+
+ private void loadCache(int count) throws IOException {
+ int charToRead = count == 0 ? 0 : count - 1;
+ if (cachePosition + charToRead >= cacheSize) {
+ if (cacheSize == 0) {
+ cacheSize = reader.read(cacheBuffer, 0, cacheBuffer.length);
+ cachePosition = 0;
+ } else if (cacheSize == cacheBuffer.length) {
+ // make sure we do not read beyond the stream
+ int halfCacheSize = cacheSize / 2;
+ // copy the lower half into the upper half
+ System.arraycopy(cacheBuffer, halfCacheSize, cacheBuffer, 0, halfCacheSize);
+ cachePosition -= halfCacheSize;
+ if (cachePinPosition != -1) {
+ cachePinPosition -= halfCacheSize;
+ }
+
+ int charsRead = reader.read(cacheBuffer, halfCacheSize, cacheSize - halfCacheSize);
+ if (charsRead == -1) {
+ cacheSize = halfCacheSize;
+ } else {
+ cacheSize = charsRead + halfCacheSize;
+ }
+ }
+ }
+ }
+
+ public Token getToken() throws IOException {
+ if (token.type == Tokenizer.TT_ERROR) {
+ return nextToken();
+ }
+ return token;
+ }
+
+ public Token nextToken() throws IOException {
+ if (pushCount > 0) {
+ pushCount--;
+ return token;
+ } else if (upcomingToken.type != Tokenizer.TT_ERROR) {
+ token.assign(upcomingToken);
+ upcomingToken.type = Tokenizer.TT_ERROR;
+ return token;
+ } else {
+ token.init();
+ char[] b = new char[1];
+ while (hasMore()) {
+ read(b, 1);
+
+ int symbolIndex = lookupSymbol(b[0]);
+
+ if (symbolIndex != -1) {
+ // we have found a symbol
+ TokenizerToken workToken =
+ token.type == Tokenizer.TT_TOKEN && token.text.length() > 0 ? upcomingToken : token;
+ TokenizerSymbol symbol = ((TokenizerSymbol) symbols.get(symbolIndex));
+ boolean hideSymbol = symbol.hidden;
+
+ if (!hideSymbol) {
+ workToken.init();
+ workToken.text.append(symbol.startText);
+ workToken.type = Tokenizer.TT_SYMBOL;
+ workToken.name = symbol.name;
+ }
+
+ if (symbol.tailText != null) {
+ // the symbol is a block
+ // look for the tailText
+ while (hasMore() && !compare(symbol.tailText.toCharArray(), 0)) {
+ read(b, 1);
+ if (!hideSymbol) {
+ workToken.text.append(b);
+ workToken.innerText.append(b);
+ }
+ }
+
+ if (!hideSymbol) {
+ workToken.text.append(symbol.tailText);
+ }
+ workToken.type = Tokenizer.TT_BLOCK;
+ }
+
+ // if (!hideSymbol) break;
+ if (token.text.length() > 0) {
+ break;
+ }
+ } else {
+ token.text.append(b);
+ token.type = Tokenizer.TT_TOKEN;
+ }
+ }
+ }
+ return token;
+ }
+
+ public void pushBack() {
+ pushCount++;
+ }
+
+ public void setReader(Reader reader) {
+ this.reader = reader;
+ cachePosition = 0;
+ cachePinPosition = -1;
+ cacheSize = 0;
+ token.type = TT_ERROR;
+ upcomingToken.type = TT_ERROR;
+ }
+
+ private boolean compare(char[] chars, int offs) throws IOException {
+ char[] b = new char[chars.length - offs];
+ cachePinPosition = cachePosition;
+ read(b, b.length);
+ for (int i = 0; i < b.length; i++) {
+ if (b[i] != chars[i + offs]) {
+ cachePosition = cachePinPosition;
+ cachePinPosition = -1;
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private int lookupSymbol(char b) throws IOException {
+ int result = -1;
+
+ Character c = new Character(b);
+ int index = Collections.binarySearch(symbols, c);
+
+ if (index >= 0) {
+ // the index could be anywhere within a group of sybols with the same first letter
+ // so we need to scroll up the group to make sure we start test from the beginning
+ while (index > 0 && ((TokenizerSymbol) symbols.get(index - 1)).compareTo(c) == 0) {
+ index--;
+ }
+ while (index < symbols.size()) {
+ TokenizerSymbol symbol = ((TokenizerSymbol) symbols.get(index));
+ if (symbol.compareTo(c) == 0) {
+ if (compare(symbol.startText.toCharArray(), 1)) {
+ result = index;
+ break;
+ } else {
+ index++;
+ }
+ } else {
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ private void read(char[] b, int count) throws IOException {
+ loadCache(count);
+ int endPoint = cachePosition + count - 1 >= cacheSize ? cacheSize : cachePosition + count - 1;
+ if (cachePosition <= endPoint) {
+ System.arraycopy(cacheBuffer, cachePosition, b, 0, endPoint - cachePosition + 1);
+ }
+ cachePosition = endPoint + 1;
+ }
+
+ public boolean hasMore() throws IOException {
+ loadCache(0);
+ return (cachePosition < cacheSize) || upcomingToken.type != Tokenizer.TT_ERROR || pushCount > 0;
+ }
+
+ public void addSymbol(String text) {
+ symbols.add(new TokenizerSymbol(null, text, null, false, false, true, false));
+ }
+
+ public void addSymbol(String text, boolean hidden) {
+ symbols.add(new TokenizerSymbol(null, text, null, hidden, false, true, false));
+ }
+
+ public void addSymbol(String startText, String endText, boolean hidden) {
+ symbols.add(new TokenizerSymbol(null, startText, endText, hidden, false, true, false));
+ }
+
+ public void addSymbol(TokenizerSymbol symbol) {
+ symbols.add(symbol);
+ }
+
+ public String getNextString(String defaultValue) throws IOException {
+ return hasMore() ? nextToken().getInnerText() : defaultValue;
+ }
+
+ public boolean getNextBoolean(String trueValue, boolean defaultValue) throws IOException {
+ return hasMore() ? trueValue.equalsIgnoreCase(nextToken().getInnerText()) : defaultValue;
+ }
+
+ public long getNextLong(long defaultValue) throws IOException {
+ String stval = getNextString(null);
+
+ if (stval == null) {
+ return defaultValue;
+ }
+
+ try {
+ return Long.parseLong(stval);
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+}
+
+
+class TokenizerToken implements Token {
+
+ final StringBuffer text = new StringBuffer();
+ final StringBuffer innerText = new StringBuffer();
+ String name = "";
+ int type = Tokenizer.TT_ERROR;
+ int line = 0;
+ int col = 0;
+
+ public TokenizerToken() {
+ type = Tokenizer.TT_ERROR;
+ }
+
+ public String getText() {
+ return text.toString();
+ }
+
+ public String getInnerText() {
+ return type == Tokenizer.TT_BLOCK ? innerText.toString() : getText();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public int getLine() {
+ return line;
+ }
+
+ public int getCol() {
+ return col;
+ }
+
+ public String toString() {
+ return getText();
+ }
+
+ public void assign(TokenizerToken token) {
+ this.text.setLength(0);
+ this.text.append(token.text);
+ this.innerText.setLength(0);
+ this.innerText.append(token.innerText);
+ this.name = token.name;
+ this.type = token.type;
+ this.col = token.col;
+ this.line = token.line;
+ }
+
+ public void init() {
+ text.setLength(0);
+ innerText.setLength(0);
+ name = "";
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tokenizer/TokenizerSymbol.java b/core/src/main/java/com/googlecode/psiprobe/tokenizer/TokenizerSymbol.java
index ef23b3bbaa..21f8ceb638 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tokenizer/TokenizerSymbol.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tokenizer/TokenizerSymbol.java
@@ -1,55 +1,55 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tokenizer;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class TokenizerSymbol implements Comparable {
-
- final String name;
- final String startText;
- final String tailText;
- final boolean hidden;
- final boolean decodePaired;
- final boolean enabled;
- final boolean canBeNested;
-
- public TokenizerSymbol(String name, String startText, String tailText, boolean hidden,
- boolean decodePaired, boolean enabled, boolean canBeNested) {
-
- this.name = name;
- this.startText = startText;
- this.tailText = tailText;
- this.hidden = hidden;
- this.decodePaired = decodePaired;
- this.enabled = enabled;
- this.canBeNested = canBeNested;
- }
-
- public int compareTo(Object o) {
- if (o instanceof Character) {
- return compareTo((Character) o);
- } else {
- return compareTo((TokenizerSymbol) o);
- }
- }
-
- public int compareTo(Character c) {
- return c.charValue() - startText.charAt(0);
- }
-
- public int compareTo(TokenizerSymbol symbol) {
- return symbol.startText.compareTo(startText);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tokenizer;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class TokenizerSymbol implements Comparable {
+
+ final String name;
+ final String startText;
+ final String tailText;
+ final boolean hidden;
+ final boolean decodePaired;
+ final boolean enabled;
+ final boolean canBeNested;
+
+ public TokenizerSymbol(String name, String startText, String tailText, boolean hidden,
+ boolean decodePaired, boolean enabled, boolean canBeNested) {
+
+ this.name = name;
+ this.startText = startText;
+ this.tailText = tailText;
+ this.hidden = hidden;
+ this.decodePaired = decodePaired;
+ this.enabled = enabled;
+ this.canBeNested = canBeNested;
+ }
+
+ public int compareTo(Object o) {
+ if (o instanceof Character) {
+ return compareTo((Character) o);
+ } else {
+ return compareTo((TokenizerSymbol) o);
+ }
+ }
+
+ public int compareTo(Character c) {
+ return c.charValue() - startText.charAt(0);
+ }
+
+ public int compareTo(TokenizerSymbol symbol) {
+ return symbol.startText.compareTo(startText);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tokenizer/UniqueList.java b/core/src/main/java/com/googlecode/psiprobe/tokenizer/UniqueList.java
index 131c073e6c..be36f8b3c5 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tokenizer/UniqueList.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tokenizer/UniqueList.java
@@ -1,71 +1,71 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tokenizer;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.Vector;
-
-/**
- * UniqueList
is a successor of java.util.Vector
to provide a collection
- * that contains no duplicate elements, more formally such that e1.compareTo(e2) == 0.
- *
- *
- * As from above, the collection implies that all its elements must implement
- * Comparable
interface.
- *
- * The collection is kept ordered whenever elements added or removed and besides uniqueness it is to
- * provide fast element search based again on e1.compareTo(e2) values.
- *
- * @author Vlad Ilyushchenko
- */
-public class UniqueList extends Vector {
-
- public synchronized boolean add(Object obj) {
- return add(obj, null);
- }
-
- protected synchronized boolean add(Object obj, Comparator c) {
- if (size() == 0) {
- return super.add(obj);
- } else {
- int index;
- index =
- c == null ? Collections.binarySearch(this, obj) : Collections.binarySearch(this, obj, c);
- if (index < 0) {
- if (-index - 1 >= size()) {
- super.add(obj);
- } else {
- super.insertElementAt(obj, -index - 1);
- }
- }
- return index < 0;
- }
- }
-
- public synchronized void insertElementAt(Object obj, int index) {
- add(obj);
- }
-
- public synchronized boolean addAll(Collection c) {
- boolean ok = this != c;
- if (ok) {
- Iterator iterator = c.iterator();
- while (iterator.hasNext()) {
- ok = this.add(iterator.next()) && ok;
- }
- }
- return ok;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tokenizer;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Vector;
+
+/**
+ * UniqueList
is a successor of java.util.Vector
to provide a collection
+ * that contains no duplicate elements, more formally such that e1.compareTo(e2) == 0.
+ *
+ *
+ * As from above, the collection implies that all its elements must implement
+ * Comparable
interface.
+ *
+ * The collection is kept ordered whenever elements added or removed and besides uniqueness it is to
+ * provide fast element search based again on e1.compareTo(e2) values.
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class UniqueList extends Vector {
+
+ public synchronized boolean add(Object obj) {
+ return add(obj, null);
+ }
+
+ protected synchronized boolean add(Object obj, Comparator c) {
+ if (size() == 0) {
+ return super.add(obj);
+ } else {
+ int index;
+ index =
+ c == null ? Collections.binarySearch(this, obj) : Collections.binarySearch(this, obj, c);
+ if (index < 0) {
+ if (-index - 1 >= size()) {
+ super.add(obj);
+ } else {
+ super.insertElementAt(obj, -index - 1);
+ }
+ }
+ return index < 0;
+ }
+ }
+
+ public synchronized void insertElementAt(Object obj, int index) {
+ add(obj);
+ }
+
+ public synchronized boolean addAll(Collection c) {
+ boolean ok = this != c;
+ if (ok) {
+ Iterator iterator = c.iterator();
+ while (iterator.hasNext()) {
+ ok = this.add(iterator.next()) && ok;
+ }
+ }
+ return ok;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/Accessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/Accessor.java
index 0bd87ec82d..b65b51c830 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/Accessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/Accessor.java
@@ -1,23 +1,23 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import java.lang.reflect.Field;
-
-/**
- *
- * @author Mark Lewis
- */
-public interface Accessor {
-
- Object get(Object o, Field f);
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import java.lang.reflect.Field;
+
+/**
+ *
+ * @author Mark Lewis
+ */
+public interface Accessor {
+
+ Object get(Object o, Field f);
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/AccessorFactory.java b/core/src/main/java/com/googlecode/psiprobe/tools/AccessorFactory.java
index c9e9915024..b2d898ddf2 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/AccessorFactory.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/AccessorFactory.java
@@ -1,37 +1,37 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-/**
- *
- * @author Mark Lewis
- */
-public class AccessorFactory {
-
- private AccessorFactory() {}
-
- public static Accessor getInstance() {
- return getSimple();
- }
-
- private static Accessor getReflective() {
- try {
- return new ReflectiveAccessor();
- } catch (Exception ex) {
- return null;
- }
- }
-
- private static Accessor getSimple() {
- return new SimpleAccessor();
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+/**
+ *
+ * @author Mark Lewis
+ */
+public class AccessorFactory {
+
+ private AccessorFactory() {}
+
+ public static Accessor getInstance() {
+ return getSimple();
+ }
+
+ private static Accessor getReflective() {
+ try {
+ return new ReflectiveAccessor();
+ } catch (Exception ex) {
+ return null;
+ }
+ }
+
+ private static Accessor getSimple() {
+ return new SimpleAccessor();
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/ApplicationUtils.java b/core/src/main/java/com/googlecode/psiprobe/tools/ApplicationUtils.java
index 544dfc1b9e..2b342141b0 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/ApplicationUtils.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/ApplicationUtils.java
@@ -1,405 +1,405 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import com.googlecode.psiprobe.beans.ContainerWrapperBean;
-import com.googlecode.psiprobe.beans.ResourceResolver;
-import com.googlecode.psiprobe.model.Application;
-import com.googlecode.psiprobe.model.ApplicationResource;
-import com.googlecode.psiprobe.model.ApplicationSession;
-import com.googlecode.psiprobe.model.Attribute;
-import com.googlecode.psiprobe.model.FilterInfo;
-import com.googlecode.psiprobe.model.ServletInfo;
-import com.googlecode.psiprobe.model.ServletMapping;
-
-import net.sf.javainetlocator.InetAddressLocator;
-import org.apache.catalina.Container;
-import org.apache.catalina.Context;
-import org.apache.catalina.Session;
-import org.apache.catalina.Wrapper;
-import org.apache.catalina.core.StandardWrapper;
-import org.apache.catalina.deploy.FilterDef;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.util.ClassUtils;
-
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.naming.NamingException;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Andy Shapoval
- * @author Mark Lewis
- */
-public class ApplicationUtils {
-
- private static Log logger = LogFactory.getLog(ApplicationUtils.class);
-
- public static Application getApplication(Context context, ContainerWrapperBean containerWrapper) {
- return getApplication(context, null, false, containerWrapper);
- }
-
- /**
- * Creates Application instance from Tomcat Context object. If ResourceResolver is passed the
- * method will also collect additional information about the application such as session count,
- * session attribute count, application attribute count, servlet count, servlet stats summary and
- * datasource usage summary. Collecting additional information can be CPU intensive and time
- * consuming so this should be avoided unless absolutely required. Some datasource implementations
- * (c3p0) are known to be prone to internal deadlocks, so this method can also hang is datasource
- * usage stats is to be collected.
- *
- * @param context
- * @param resourceResolver
- * @param calcSize
- * @return Application object
- */
- public static Application getApplication(Context context, ResourceResolver resourceResolver,
- boolean calcSize, ContainerWrapperBean containerWrapper) {
-
- // ContainerWrapperBean containerWrapper
- logger.debug("Querying webapp: " + context.getName());
-
- Application app = new Application();
- app.setName(context.getName().length() > 0 ? context.getName() : "/");
- app.setDocBase(context.getDocBase());
- app.setDisplayName(context.getDisplayName());
-
- app.setAvailable(containerWrapper.getTomcatContainer().getAvailable(context));
- app.setDistributable(context.getDistributable());
- app.setSessionTimeout(context.getSessionTimeout());
- app.setServletVersion(context.getServletContext().getMajorVersion() + "."
- + context.getServletContext().getMinorVersion());
-
- if (resourceResolver != null) {
- logger.debug("counting servlet attributes");
-
- int ctxAttrCount = 0;
- for (Enumeration e = context.getServletContext().getAttributeNames(); e.hasMoreElements(); e
- .nextElement()) {
- ctxAttrCount++;
- }
- app.setContextAttributeCount(ctxAttrCount);
-
- if (app.isAvailable()) {
- logger.debug("collecting session information");
-
- app.setSessionCount(context.getManager().findSessions().length);
-
- boolean serializable = true;
- int sessionAttributeCount = 0;
- long size = 0;
-
- Session[] sessions = context.getManager().findSessions();
- for (int i = 0; i < sessions.length; i++) {
- ApplicationSession appSession = getApplicationSession(sessions[i], calcSize, false);
- if (appSession != null) {
- sessionAttributeCount += appSession.getObjectCount();
- serializable = serializable && appSession.isSerializable();
- size += appSession.getSize();
- }
- }
- app.setSerializable(serializable);
- app.setSessionAttributeCount(sessionAttributeCount);
- app.setSize(size);
- }
-
- logger.debug("aggregating servlet stats");
-
- collectApplicationServletStats(context, app);
-
- if (resourceResolver.supportsPrivateResources() && app.isAvailable()) {
- int[] scores =
- getApplicationDataSourceUsageScores(context, resourceResolver, containerWrapper);
- app.setDataSourceBusyScore(scores[0]);
- app.setDataSourceEstablishedScore(scores[1]);
- }
- }
-
- return app;
- }
-
- /**
- * Calculates Sum of requestCount, errorCount and processingTime for all servlets for the give
- * application. It also works out minimum value of minTime and maximum value for maxTime for all
- * servlets.
- *
- * @param context
- * @param app
- */
- public static void collectApplicationServletStats(Context context, Application app) {
- int svltCount = 0;
- int reqCount = 0;
- int errCount = 0;
- long procTime = 0;
- long minTime = Long.MAX_VALUE;
- long maxTime = 0;
-
- Container[] cns = context.findChildren();
- for (int i = 0; i < cns.length; i++) {
- if (cns[i] instanceof StandardWrapper) {
- StandardWrapper sw = (StandardWrapper) cns[i];
- svltCount++;
- reqCount += sw.getRequestCount();
- errCount += sw.getErrorCount();
- procTime += sw.getProcessingTime();
- if (sw.getRequestCount() > 0) {
- minTime = Math.min(minTime, sw.getMinTime());
- }
- maxTime = Math.max(maxTime, sw.getMaxTime());
- }
- }
- app.setServletCount(svltCount);
- app.setRequestCount(reqCount);
- app.setErrorCount(errCount);
- app.setProcessingTime(procTime);
- app.setMinTime(minTime == Long.MAX_VALUE ? 0 : minTime);
- app.setMaxTime(maxTime);
- }
-
- public static int[] getApplicationDataSourceUsageScores(Context context,
- ResourceResolver resolver, ContainerWrapperBean containerWrapper) {
-
- logger.debug("Calculating datasource usage score");
-
- int[] scores = new int[] {0, 0};
- List appResources;
- try {
- appResources = resolver.getApplicationResources(context, containerWrapper);
- } catch (NamingException e) {
- throw new RuntimeException(e);
- }
- for (Iterator it = appResources.iterator(); it.hasNext();) {
- ApplicationResource appResource = (ApplicationResource) it.next();
- if (appResource.getDataSourceInfo() != null) {
- scores[0] = Math.max(scores[0], appResource.getDataSourceInfo().getBusyScore());
- scores[1] = Math.max(scores[1], appResource.getDataSourceInfo().getEstablishedScore());
- }
- }
- return scores;
- }
-
- public static ApplicationSession getApplicationSession(Session session, boolean calcSize,
- boolean addAttributes) {
-
- ApplicationSession sbean = null;
- if (session != null && session.isValid()) {
- sbean = new ApplicationSession();
-
- sbean.setId(session.getId());
- sbean.setCreationTime(new Date(session.getCreationTime()));
- sbean.setLastAccessTime(new Date(session.getLastAccessedTime()));
- sbean.setMaxIdleTime(session.getMaxInactiveInterval() * 1000);
- sbean.setManagerType(session.getManager().getClass().getName());
- // sbean.setInfo(session.getInfo());
- // TODO:fixmee
-
- boolean sessionSerializable = true;
- int attributeCount = 0;
- long size = 0;
-
- HttpSession httpSession = session.getSession();
- Set processedObjects = new HashSet(1000);
-
- // Exclude references back to the session itself
- processedObjects.add(httpSession);
- try {
- for (Enumeration e = httpSession.getAttributeNames(); e.hasMoreElements();) {
- String name = (String) e.nextElement();
- Object o = httpSession.getAttribute(name);
- sessionSerializable = sessionSerializable && o instanceof Serializable;
-
- long oSize = 0;
- if (calcSize) {
- try {
- oSize += Instruments.sizeOf(name, processedObjects);
- oSize += Instruments.sizeOf(o, processedObjects);
- } catch (Throwable th) {
- logger.error("Cannot estimate size of attribute \"" + name + "\"", th);
- //
- // make sure we always re-throw ThreadDeath
- //
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
- }
-
- if (addAttributes) {
- Attribute saBean = new Attribute();
- saBean.setName(name);
- saBean.setType(ClassUtils.getQualifiedName(o.getClass()));
- saBean.setValue(o);
- saBean.setSize(oSize);
- saBean.setSerializable(o instanceof Serializable);
- sbean.addAttribute(saBean);
- }
- attributeCount++;
- size += oSize;
- }
- String lastAccessedIP =
- (String) httpSession.getAttribute(ApplicationSession.LAST_ACCESSED_BY_IP);
- if (lastAccessedIP != null) {
- sbean.setLastAccessedIP(lastAccessedIP);
- }
- try {
- sbean.setLastAccessedIPLocale(InetAddressLocator.getLocale(InetAddress.getByName(
- lastAccessedIP).getAddress()));
- } catch (Throwable e) {
- logger.error("Cannot determine Locale of " + lastAccessedIP);
- //
- // make sure we always re-throw ThreadDeath
- //
- if (e instanceof ThreadDeath) {
- throw (ThreadDeath) e;
- }
- }
-
-
- } catch (IllegalStateException e) {
- logger.info("Session appears to be invalidated, ignore");
- }
-
- sbean.setObjectCount(attributeCount);
- sbean.setSize(size);
- sbean.setSerializable(sessionSerializable);
- }
-
- return sbean;
- }
-
- public static List getApplicationAttributes(Context context) {
- List attrs = new ArrayList();
- ServletContext servletCtx = context.getServletContext();
- for (Enumeration e = servletCtx.getAttributeNames(); e.hasMoreElements();) {
- String attrName = (String) e.nextElement();
- Object attrValue = servletCtx.getAttribute(attrName);
-
- Attribute attr = new Attribute();
- attr.setName(attrName);
- attr.setValue(attrValue);
- attr.setType(ClassUtils.getQualifiedName(attrValue.getClass()));
- attrs.add(attr);
- }
- return attrs;
- }
-
- public static List getApplicationInitParams(Context context, ContainerWrapperBean containerWrapper) {
- return containerWrapper.getTomcatContainer().getApplicationInitParams(context);
- }
-
- public static ServletInfo getApplicationServlet(Context context, String servletName) {
- Container c = context.findChild(servletName);
-
- if (c instanceof Wrapper) {
- Wrapper w = (Wrapper) c;
- return getServletInfo(w, context.getName());
- } else {
- return null;
- }
- }
-
- private static ServletInfo getServletInfo(Wrapper w, String contextName) {
- ServletInfo si = new ServletInfo();
- si.setApplicationName(contextName.length() > 0 ? contextName : "/");
- si.setServletName(w.getName());
- si.setServletClass(w.getServletClass());
- si.setAvailable(!w.isUnavailable());
- si.setLoadOnStartup(w.getLoadOnStartup());
- si.setRunAs(w.getRunAs());
- String[] ms = w.findMappings();
- for (int i = 0; i < ms.length; i++) {
- si.getMappings().add(ms[i]);
- }
- if (w instanceof StandardWrapper) {
- StandardWrapper sw = (StandardWrapper) w;
- si.setAllocationCount(sw.getCountAllocated());
- si.setErrorCount(sw.getErrorCount());
- si.setLoadTime(sw.getLoadTime());
- si.setMaxInstances(sw.getMaxInstances());
- si.setMaxTime(sw.getMaxTime());
- si.setMinTime(sw.getMinTime() == Long.MAX_VALUE ? 0 : sw.getMinTime());
- si.setProcessingTime(sw.getProcessingTime());
- si.setRequestCount(sw.getRequestCount());
- si.setSingleThreaded(sw.isSingleThreadModel());
- }
- return si;
- }
-
- public static List getApplicationServlets(Context context) {
- Container[] cns = context.findChildren();
- List servlets = new ArrayList(cns.length);
- for (int i = 0; i < cns.length; i++) {
- if (cns[i] instanceof Wrapper) {
- Wrapper w = (Wrapper) cns[i];
- servlets.add(getServletInfo(w, context.getName()));
- }
- }
- return servlets;
- }
-
- public static List getApplicationServletMaps(Context context) {
- String[] sms = context.findServletMappings();
- List servletMaps = new ArrayList(sms.length);
- for (int i = 0; i < sms.length; i++) {
- if (sms[i] != null) {
- String sn = context.findServletMapping(sms[i]);
- if (sn != null) {
- ServletMapping sm = new ServletMapping();
- sm.setApplicationName(context.getName().length() > 0 ? context.getName() : "/");
- sm.setUrl(sms[i]);
- sm.setServletName(sn);
- Container c = context.findChild(sn);
- if (c instanceof Wrapper) {
- Wrapper w = (Wrapper) c;
- sm.setServletClass(w.getServletClass());
- sm.setAvailable(!w.isUnavailable());
- }
- servletMaps.add(sm);
- }
- }
- }
- return servletMaps;
- }
-
- public static FilterInfo getApplicationFilter(Context context, String filterName) {
- FilterDef fd = context.findFilterDef(filterName);
- if (fd != null) {
- return getFilterInfo(fd);
- } else {
- return null;
- }
- }
-
- private static FilterInfo getFilterInfo(FilterDef fd) {
- FilterInfo fi = new FilterInfo();
- fi.setFilterName(fd.getFilterName());
- fi.setFilterClass(fd.getFilterClass());
- fi.setFilterDesc(fd.getDescription());
- return fi;
- }
-
- public static List getApplicationFilters(Context context, ContainerWrapperBean containerWrapper) {
- return containerWrapper.getTomcatContainer().getApplicationFilters(context);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import com.googlecode.psiprobe.beans.ContainerWrapperBean;
+import com.googlecode.psiprobe.beans.ResourceResolver;
+import com.googlecode.psiprobe.model.Application;
+import com.googlecode.psiprobe.model.ApplicationResource;
+import com.googlecode.psiprobe.model.ApplicationSession;
+import com.googlecode.psiprobe.model.Attribute;
+import com.googlecode.psiprobe.model.FilterInfo;
+import com.googlecode.psiprobe.model.ServletInfo;
+import com.googlecode.psiprobe.model.ServletMapping;
+
+import net.sf.javainetlocator.InetAddressLocator;
+import org.apache.catalina.Container;
+import org.apache.catalina.Context;
+import org.apache.catalina.Session;
+import org.apache.catalina.Wrapper;
+import org.apache.catalina.core.StandardWrapper;
+import org.apache.catalina.deploy.FilterDef;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.util.ClassUtils;
+
+import java.io.Serializable;
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.naming.NamingException;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Andy Shapoval
+ * @author Mark Lewis
+ */
+public class ApplicationUtils {
+
+ private static Log logger = LogFactory.getLog(ApplicationUtils.class);
+
+ public static Application getApplication(Context context, ContainerWrapperBean containerWrapper) {
+ return getApplication(context, null, false, containerWrapper);
+ }
+
+ /**
+ * Creates Application instance from Tomcat Context object. If ResourceResolver is passed the
+ * method will also collect additional information about the application such as session count,
+ * session attribute count, application attribute count, servlet count, servlet stats summary and
+ * datasource usage summary. Collecting additional information can be CPU intensive and time
+ * consuming so this should be avoided unless absolutely required. Some datasource implementations
+ * (c3p0) are known to be prone to internal deadlocks, so this method can also hang is datasource
+ * usage stats is to be collected.
+ *
+ * @param context
+ * @param resourceResolver
+ * @param calcSize
+ * @return Application object
+ */
+ public static Application getApplication(Context context, ResourceResolver resourceResolver,
+ boolean calcSize, ContainerWrapperBean containerWrapper) {
+
+ // ContainerWrapperBean containerWrapper
+ logger.debug("Querying webapp: " + context.getName());
+
+ Application app = new Application();
+ app.setName(context.getName().length() > 0 ? context.getName() : "/");
+ app.setDocBase(context.getDocBase());
+ app.setDisplayName(context.getDisplayName());
+
+ app.setAvailable(containerWrapper.getTomcatContainer().getAvailable(context));
+ app.setDistributable(context.getDistributable());
+ app.setSessionTimeout(context.getSessionTimeout());
+ app.setServletVersion(context.getServletContext().getMajorVersion() + "."
+ + context.getServletContext().getMinorVersion());
+
+ if (resourceResolver != null) {
+ logger.debug("counting servlet attributes");
+
+ int ctxAttrCount = 0;
+ for (Enumeration e = context.getServletContext().getAttributeNames(); e.hasMoreElements(); e
+ .nextElement()) {
+ ctxAttrCount++;
+ }
+ app.setContextAttributeCount(ctxAttrCount);
+
+ if (app.isAvailable()) {
+ logger.debug("collecting session information");
+
+ app.setSessionCount(context.getManager().findSessions().length);
+
+ boolean serializable = true;
+ int sessionAttributeCount = 0;
+ long size = 0;
+
+ Session[] sessions = context.getManager().findSessions();
+ for (int i = 0; i < sessions.length; i++) {
+ ApplicationSession appSession = getApplicationSession(sessions[i], calcSize, false);
+ if (appSession != null) {
+ sessionAttributeCount += appSession.getObjectCount();
+ serializable = serializable && appSession.isSerializable();
+ size += appSession.getSize();
+ }
+ }
+ app.setSerializable(serializable);
+ app.setSessionAttributeCount(sessionAttributeCount);
+ app.setSize(size);
+ }
+
+ logger.debug("aggregating servlet stats");
+
+ collectApplicationServletStats(context, app);
+
+ if (resourceResolver.supportsPrivateResources() && app.isAvailable()) {
+ int[] scores =
+ getApplicationDataSourceUsageScores(context, resourceResolver, containerWrapper);
+ app.setDataSourceBusyScore(scores[0]);
+ app.setDataSourceEstablishedScore(scores[1]);
+ }
+ }
+
+ return app;
+ }
+
+ /**
+ * Calculates Sum of requestCount, errorCount and processingTime for all servlets for the give
+ * application. It also works out minimum value of minTime and maximum value for maxTime for all
+ * servlets.
+ *
+ * @param context
+ * @param app
+ */
+ public static void collectApplicationServletStats(Context context, Application app) {
+ int svltCount = 0;
+ int reqCount = 0;
+ int errCount = 0;
+ long procTime = 0;
+ long minTime = Long.MAX_VALUE;
+ long maxTime = 0;
+
+ Container[] cns = context.findChildren();
+ for (int i = 0; i < cns.length; i++) {
+ if (cns[i] instanceof StandardWrapper) {
+ StandardWrapper sw = (StandardWrapper) cns[i];
+ svltCount++;
+ reqCount += sw.getRequestCount();
+ errCount += sw.getErrorCount();
+ procTime += sw.getProcessingTime();
+ if (sw.getRequestCount() > 0) {
+ minTime = Math.min(minTime, sw.getMinTime());
+ }
+ maxTime = Math.max(maxTime, sw.getMaxTime());
+ }
+ }
+ app.setServletCount(svltCount);
+ app.setRequestCount(reqCount);
+ app.setErrorCount(errCount);
+ app.setProcessingTime(procTime);
+ app.setMinTime(minTime == Long.MAX_VALUE ? 0 : minTime);
+ app.setMaxTime(maxTime);
+ }
+
+ public static int[] getApplicationDataSourceUsageScores(Context context,
+ ResourceResolver resolver, ContainerWrapperBean containerWrapper) {
+
+ logger.debug("Calculating datasource usage score");
+
+ int[] scores = new int[] {0, 0};
+ List appResources;
+ try {
+ appResources = resolver.getApplicationResources(context, containerWrapper);
+ } catch (NamingException e) {
+ throw new RuntimeException(e);
+ }
+ for (Iterator it = appResources.iterator(); it.hasNext();) {
+ ApplicationResource appResource = (ApplicationResource) it.next();
+ if (appResource.getDataSourceInfo() != null) {
+ scores[0] = Math.max(scores[0], appResource.getDataSourceInfo().getBusyScore());
+ scores[1] = Math.max(scores[1], appResource.getDataSourceInfo().getEstablishedScore());
+ }
+ }
+ return scores;
+ }
+
+ public static ApplicationSession getApplicationSession(Session session, boolean calcSize,
+ boolean addAttributes) {
+
+ ApplicationSession sbean = null;
+ if (session != null && session.isValid()) {
+ sbean = new ApplicationSession();
+
+ sbean.setId(session.getId());
+ sbean.setCreationTime(new Date(session.getCreationTime()));
+ sbean.setLastAccessTime(new Date(session.getLastAccessedTime()));
+ sbean.setMaxIdleTime(session.getMaxInactiveInterval() * 1000);
+ sbean.setManagerType(session.getManager().getClass().getName());
+ // sbean.setInfo(session.getInfo());
+ // TODO:fixmee
+
+ boolean sessionSerializable = true;
+ int attributeCount = 0;
+ long size = 0;
+
+ HttpSession httpSession = session.getSession();
+ Set processedObjects = new HashSet(1000);
+
+ // Exclude references back to the session itself
+ processedObjects.add(httpSession);
+ try {
+ for (Enumeration e = httpSession.getAttributeNames(); e.hasMoreElements();) {
+ String name = (String) e.nextElement();
+ Object o = httpSession.getAttribute(name);
+ sessionSerializable = sessionSerializable && o instanceof Serializable;
+
+ long oSize = 0;
+ if (calcSize) {
+ try {
+ oSize += Instruments.sizeOf(name, processedObjects);
+ oSize += Instruments.sizeOf(o, processedObjects);
+ } catch (Throwable th) {
+ logger.error("Cannot estimate size of attribute \"" + name + "\"", th);
+ //
+ // make sure we always re-throw ThreadDeath
+ //
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+ }
+
+ if (addAttributes) {
+ Attribute saBean = new Attribute();
+ saBean.setName(name);
+ saBean.setType(ClassUtils.getQualifiedName(o.getClass()));
+ saBean.setValue(o);
+ saBean.setSize(oSize);
+ saBean.setSerializable(o instanceof Serializable);
+ sbean.addAttribute(saBean);
+ }
+ attributeCount++;
+ size += oSize;
+ }
+ String lastAccessedIP =
+ (String) httpSession.getAttribute(ApplicationSession.LAST_ACCESSED_BY_IP);
+ if (lastAccessedIP != null) {
+ sbean.setLastAccessedIP(lastAccessedIP);
+ }
+ try {
+ sbean.setLastAccessedIPLocale(InetAddressLocator.getLocale(InetAddress.getByName(
+ lastAccessedIP).getAddress()));
+ } catch (Throwable e) {
+ logger.error("Cannot determine Locale of " + lastAccessedIP);
+ //
+ // make sure we always re-throw ThreadDeath
+ //
+ if (e instanceof ThreadDeath) {
+ throw (ThreadDeath) e;
+ }
+ }
+
+
+ } catch (IllegalStateException e) {
+ logger.info("Session appears to be invalidated, ignore");
+ }
+
+ sbean.setObjectCount(attributeCount);
+ sbean.setSize(size);
+ sbean.setSerializable(sessionSerializable);
+ }
+
+ return sbean;
+ }
+
+ public static List getApplicationAttributes(Context context) {
+ List attrs = new ArrayList();
+ ServletContext servletCtx = context.getServletContext();
+ for (Enumeration e = servletCtx.getAttributeNames(); e.hasMoreElements();) {
+ String attrName = (String) e.nextElement();
+ Object attrValue = servletCtx.getAttribute(attrName);
+
+ Attribute attr = new Attribute();
+ attr.setName(attrName);
+ attr.setValue(attrValue);
+ attr.setType(ClassUtils.getQualifiedName(attrValue.getClass()));
+ attrs.add(attr);
+ }
+ return attrs;
+ }
+
+ public static List getApplicationInitParams(Context context, ContainerWrapperBean containerWrapper) {
+ return containerWrapper.getTomcatContainer().getApplicationInitParams(context);
+ }
+
+ public static ServletInfo getApplicationServlet(Context context, String servletName) {
+ Container c = context.findChild(servletName);
+
+ if (c instanceof Wrapper) {
+ Wrapper w = (Wrapper) c;
+ return getServletInfo(w, context.getName());
+ } else {
+ return null;
+ }
+ }
+
+ private static ServletInfo getServletInfo(Wrapper w, String contextName) {
+ ServletInfo si = new ServletInfo();
+ si.setApplicationName(contextName.length() > 0 ? contextName : "/");
+ si.setServletName(w.getName());
+ si.setServletClass(w.getServletClass());
+ si.setAvailable(!w.isUnavailable());
+ si.setLoadOnStartup(w.getLoadOnStartup());
+ si.setRunAs(w.getRunAs());
+ String[] ms = w.findMappings();
+ for (int i = 0; i < ms.length; i++) {
+ si.getMappings().add(ms[i]);
+ }
+ if (w instanceof StandardWrapper) {
+ StandardWrapper sw = (StandardWrapper) w;
+ si.setAllocationCount(sw.getCountAllocated());
+ si.setErrorCount(sw.getErrorCount());
+ si.setLoadTime(sw.getLoadTime());
+ si.setMaxInstances(sw.getMaxInstances());
+ si.setMaxTime(sw.getMaxTime());
+ si.setMinTime(sw.getMinTime() == Long.MAX_VALUE ? 0 : sw.getMinTime());
+ si.setProcessingTime(sw.getProcessingTime());
+ si.setRequestCount(sw.getRequestCount());
+ si.setSingleThreaded(sw.isSingleThreadModel());
+ }
+ return si;
+ }
+
+ public static List getApplicationServlets(Context context) {
+ Container[] cns = context.findChildren();
+ List servlets = new ArrayList(cns.length);
+ for (int i = 0; i < cns.length; i++) {
+ if (cns[i] instanceof Wrapper) {
+ Wrapper w = (Wrapper) cns[i];
+ servlets.add(getServletInfo(w, context.getName()));
+ }
+ }
+ return servlets;
+ }
+
+ public static List getApplicationServletMaps(Context context) {
+ String[] sms = context.findServletMappings();
+ List servletMaps = new ArrayList(sms.length);
+ for (int i = 0; i < sms.length; i++) {
+ if (sms[i] != null) {
+ String sn = context.findServletMapping(sms[i]);
+ if (sn != null) {
+ ServletMapping sm = new ServletMapping();
+ sm.setApplicationName(context.getName().length() > 0 ? context.getName() : "/");
+ sm.setUrl(sms[i]);
+ sm.setServletName(sn);
+ Container c = context.findChild(sn);
+ if (c instanceof Wrapper) {
+ Wrapper w = (Wrapper) c;
+ sm.setServletClass(w.getServletClass());
+ sm.setAvailable(!w.isUnavailable());
+ }
+ servletMaps.add(sm);
+ }
+ }
+ }
+ return servletMaps;
+ }
+
+ public static FilterInfo getApplicationFilter(Context context, String filterName) {
+ FilterDef fd = context.findFilterDef(filterName);
+ if (fd != null) {
+ return getFilterInfo(fd);
+ } else {
+ return null;
+ }
+ }
+
+ private static FilterInfo getFilterInfo(FilterDef fd) {
+ FilterInfo fi = new FilterInfo();
+ fi.setFilterName(fd.getFilterName());
+ fi.setFilterClass(fd.getFilterClass());
+ fi.setFilterDesc(fd.getDescription());
+ return fi;
+ }
+
+ public static List getApplicationFilters(Context context, ContainerWrapperBean containerWrapper) {
+ return containerWrapper.getTomcatContainer().getApplicationFilters(context);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/AsyncSocketFactory.java b/core/src/main/java/com/googlecode/psiprobe/tools/AsyncSocketFactory.java
index 67379b5b0e..e54bf258ac 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/AsyncSocketFactory.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/AsyncSocketFactory.java
@@ -1,144 +1,144 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import java.io.IOException;
-import java.net.Socket;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class AsyncSocketFactory {
-
- public static Socket createSocket(String server, int port, long timeout) throws IOException {
- SocketWrapper socketWrapper = new SocketWrapper();
- socketWrapper.server = server;
- socketWrapper.port = port;
-
- Object sync = new Object();
- Thread socketThread = new Thread(new SocketRunnable(socketWrapper, sync));
- socketThread.setDaemon(true);
- Thread timeoutThread = new Thread(new TimeoutRunnable(sync, timeout * 1000));
- timeoutThread.setDaemon(true);
-
- timeoutThread.start();
- socketThread.start();
-
- synchronized (sync) {
- if (socketWrapper.socket == null) {
- try {
- sync.wait(timeout * 1000);
- } catch (InterruptedException e) {
- //
- }
- }
- }
-
- timeoutThread.interrupt();
- socketThread.interrupt();
-
- socketWrapper.valid = false;
-
- if (socketWrapper.getSocket() == null && socketWrapper.exception != null) {
- throw socketWrapper.exception;
- } else if (socketWrapper.getSocket() == null) {
- throw new TimeoutException();
- }
-
- return socketWrapper.getSocket();
- }
-
- static class SocketWrapper {
-
- private Socket socket = null;
- private String server;
- private int port;
- private IOException exception;
- private boolean valid = true;
-
- public Socket getSocket() {
- return socket;
- }
-
- public void setSocket(Socket socket) {
- this.socket = socket;
- }
-
- public String getServer() {
- return server;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setException(IOException exception) {
- this.exception = exception;
- }
-
- public boolean isValid() {
- return valid;
- }
-
- }
-
- static class SocketRunnable implements Runnable {
-
- private SocketWrapper socketWrapper;
- private final Object sync;
-
- public SocketRunnable(SocketWrapper socketWrapper, Object sync) {
- this.socketWrapper = socketWrapper;
- this.sync = sync;
- }
-
- public void run() {
- try {
- socketWrapper.setSocket(new Socket(socketWrapper.getServer(), socketWrapper.getPort()));
- if (!socketWrapper.isValid()) {
- socketWrapper.getSocket().close();
- socketWrapper.setSocket(null);
- }
- } catch (IOException e) {
- socketWrapper.setException(e);
- }
- synchronized (sync) {
- sync.notify();
- }
- }
-
- }
-
- static class TimeoutRunnable implements Runnable {
-
- private final Object sync;
- private long timeout;
-
- public TimeoutRunnable(Object sync, long timeout) {
- this.sync = sync;
- this.timeout = timeout;
- }
-
- public void run() {
- try {
- Thread.sleep(timeout);
- synchronized (sync) {
- sync.notify();
- }
- } catch (InterruptedException e) {
- //
- }
- }
-
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import java.io.IOException;
+import java.net.Socket;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class AsyncSocketFactory {
+
+ public static Socket createSocket(String server, int port, long timeout) throws IOException {
+ SocketWrapper socketWrapper = new SocketWrapper();
+ socketWrapper.server = server;
+ socketWrapper.port = port;
+
+ Object sync = new Object();
+ Thread socketThread = new Thread(new SocketRunnable(socketWrapper, sync));
+ socketThread.setDaemon(true);
+ Thread timeoutThread = new Thread(new TimeoutRunnable(sync, timeout * 1000));
+ timeoutThread.setDaemon(true);
+
+ timeoutThread.start();
+ socketThread.start();
+
+ synchronized (sync) {
+ if (socketWrapper.socket == null) {
+ try {
+ sync.wait(timeout * 1000);
+ } catch (InterruptedException e) {
+ //
+ }
+ }
+ }
+
+ timeoutThread.interrupt();
+ socketThread.interrupt();
+
+ socketWrapper.valid = false;
+
+ if (socketWrapper.getSocket() == null && socketWrapper.exception != null) {
+ throw socketWrapper.exception;
+ } else if (socketWrapper.getSocket() == null) {
+ throw new TimeoutException();
+ }
+
+ return socketWrapper.getSocket();
+ }
+
+ static class SocketWrapper {
+
+ private Socket socket = null;
+ private String server;
+ private int port;
+ private IOException exception;
+ private boolean valid = true;
+
+ public Socket getSocket() {
+ return socket;
+ }
+
+ public void setSocket(Socket socket) {
+ this.socket = socket;
+ }
+
+ public String getServer() {
+ return server;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setException(IOException exception) {
+ this.exception = exception;
+ }
+
+ public boolean isValid() {
+ return valid;
+ }
+
+ }
+
+ static class SocketRunnable implements Runnable {
+
+ private SocketWrapper socketWrapper;
+ private final Object sync;
+
+ public SocketRunnable(SocketWrapper socketWrapper, Object sync) {
+ this.socketWrapper = socketWrapper;
+ this.sync = sync;
+ }
+
+ public void run() {
+ try {
+ socketWrapper.setSocket(new Socket(socketWrapper.getServer(), socketWrapper.getPort()));
+ if (!socketWrapper.isValid()) {
+ socketWrapper.getSocket().close();
+ socketWrapper.setSocket(null);
+ }
+ } catch (IOException e) {
+ socketWrapper.setException(e);
+ }
+ synchronized (sync) {
+ sync.notify();
+ }
+ }
+
+ }
+
+ static class TimeoutRunnable implements Runnable {
+
+ private final Object sync;
+ private long timeout;
+
+ public TimeoutRunnable(Object sync, long timeout) {
+ this.sync = sync;
+ this.timeout = timeout;
+ }
+
+ public void run() {
+ try {
+ Thread.sleep(timeout);
+ synchronized (sync) {
+ sync.notify();
+ }
+ } catch (InterruptedException e) {
+ //
+ }
+ }
+
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/BackwardsFileStream.java b/core/src/main/java/com/googlecode/psiprobe/tools/BackwardsFileStream.java
index a005ad39da..ed28f862cb 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/BackwardsFileStream.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/BackwardsFileStream.java
@@ -1,53 +1,53 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.RandomAccessFile;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class BackwardsFileStream extends InputStream {
-
- private RandomAccessFile raf;
- private long seekPos;
-
- public BackwardsFileStream(File file) throws IOException {
- raf = new RandomAccessFile(file, "r");
- seekPos = raf.length();
- }
-
- public BackwardsFileStream(File file, long pos) throws IOException {
- raf = new RandomAccessFile(file, "r");
- seekPos = pos;
- }
-
- public int read() throws IOException {
- if (seekPos > 0) {
- raf.seek(--seekPos);
- return raf.read();
- } else {
- // return EOF (so to speak)
- return -1;
- }
- }
-
- public void close() throws IOException {
- if (raf != null) {
- raf.close();
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.RandomAccessFile;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class BackwardsFileStream extends InputStream {
+
+ private RandomAccessFile raf;
+ private long seekPos;
+
+ public BackwardsFileStream(File file) throws IOException {
+ raf = new RandomAccessFile(file, "r");
+ seekPos = raf.length();
+ }
+
+ public BackwardsFileStream(File file, long pos) throws IOException {
+ raf = new RandomAccessFile(file, "r");
+ seekPos = pos;
+ }
+
+ public int read() throws IOException {
+ if (seekPos > 0) {
+ raf.seek(--seekPos);
+ return raf.read();
+ } else {
+ // return EOF (so to speak)
+ return -1;
+ }
+ }
+
+ public void close() throws IOException {
+ if (raf != null) {
+ raf.close();
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/BackwardsLineReader.java b/core/src/main/java/com/googlecode/psiprobe/tools/BackwardsLineReader.java
index 605c1cbd7b..efb1924969 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/BackwardsLineReader.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/BackwardsLineReader.java
@@ -1,96 +1,96 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Reads lines from "backwards" InputStream. This class facilitates reading files from bottom up.
- *
- * This source code was kindly contributed by Kan Ogawa.
- *
- * @author Kan Ogawa - Original source code.
- * @author Vlad Ilyushchenko - optimised "reverse" method and reduced line buffer size
- */
-public class BackwardsLineReader {
-
- private BufferedInputStream bis;
- private boolean skipLF = true;
- private String encoding;
-
- public BackwardsLineReader(InputStream is) {
- this(is, null);
- }
-
- public BackwardsLineReader(InputStream is, String encoding) {
- this.bis = new BufferedInputStream(is, 8192);
- this.encoding = encoding;
- }
-
- public String readLine() throws IOException {
- ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
- boolean empty = false;
- while (true) {
- byte b = (byte) bis.read();
- if (b != -1) {
- if (b == '\n') {
- skipLF = false;
- // quit this loop
- break;
- }
- if (b == '\r') {
- if (skipLF) {
- // quit this loop. if the carriage return only was read
- break;
- } else {
- // go to next loop, if both the carriage return and
- // the line feed were read
- continue;
- }
- }
- baos.write(b);
- } else {
- // quit this loop, if the first of the backwards stream is
- // reached
- if (baos.toByteArray().length == 0) {
- empty = true;
- }
- break;
- }
- }
- if (!empty) {
- byte[] byteArray = baos.toByteArray();
- reverse(byteArray);
- return encoding == null ? new String(byteArray) : new String(byteArray, encoding);
- } else {
- // return null if the end of the stream has been reached
- return null;
- }
- }
-
- public void close() throws IOException {
- if (bis != null) {
- bis.close();
- }
- }
-
- private void reverse(byte[] byteArray) {
- for (int i = 0; i < byteArray.length / 2; i++) {
- byte temp = byteArray[i];
- byteArray[i] = byteArray[byteArray.length - i - 1];
- byteArray[byteArray.length - i - 1] = temp;
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Reads lines from "backwards" InputStream. This class facilitates reading files from bottom up.
+ *
+ * This source code was kindly contributed by Kan Ogawa.
+ *
+ * @author Kan Ogawa - Original source code.
+ * @author Vlad Ilyushchenko - optimised "reverse" method and reduced line buffer size
+ */
+public class BackwardsLineReader {
+
+ private BufferedInputStream bis;
+ private boolean skipLF = true;
+ private String encoding;
+
+ public BackwardsLineReader(InputStream is) {
+ this(is, null);
+ }
+
+ public BackwardsLineReader(InputStream is, String encoding) {
+ this.bis = new BufferedInputStream(is, 8192);
+ this.encoding = encoding;
+ }
+
+ public String readLine() throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
+ boolean empty = false;
+ while (true) {
+ byte b = (byte) bis.read();
+ if (b != -1) {
+ if (b == '\n') {
+ skipLF = false;
+ // quit this loop
+ break;
+ }
+ if (b == '\r') {
+ if (skipLF) {
+ // quit this loop. if the carriage return only was read
+ break;
+ } else {
+ // go to next loop, if both the carriage return and
+ // the line feed were read
+ continue;
+ }
+ }
+ baos.write(b);
+ } else {
+ // quit this loop, if the first of the backwards stream is
+ // reached
+ if (baos.toByteArray().length == 0) {
+ empty = true;
+ }
+ break;
+ }
+ }
+ if (!empty) {
+ byte[] byteArray = baos.toByteArray();
+ reverse(byteArray);
+ return encoding == null ? new String(byteArray) : new String(byteArray, encoding);
+ } else {
+ // return null if the end of the stream has been reached
+ return null;
+ }
+ }
+
+ public void close() throws IOException {
+ if (bis != null) {
+ bis.close();
+ }
+ }
+
+ private void reverse(byte[] byteArray) {
+ for (int i = 0; i < byteArray.length / 2; i++) {
+ byte temp = byteArray[i];
+ byteArray[i] = byteArray[byteArray.length - i - 1];
+ byteArray[byteArray.length - i - 1] = temp;
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/Instruments.java b/core/src/main/java/com/googlecode/psiprobe/tools/Instruments.java
index bee8afc7db..bf03f4667a 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/Instruments.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/Instruments.java
@@ -1,197 +1,197 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Instruments {
-
- public static final long SIZE_VOID = 0;
- public static final long SIZE_BOOLEAN = 1;
- public static final long SIZE_BYTE = 1;
- public static final long SIZE_CHAR = 2;
- public static final long SIZE_SHORT = 2;
- public static final long SIZE_INT = 4;
- public static final long SIZE_LONG = 8;
- public static final long SIZE_FLOAT = 4;
- public static final long SIZE_DOUBLE = 8;
- public static final long SIZE_OBJECT = 8;
- public static final long SIZE_REFERENCE;
-
- private static final Accessor ACCESSOR = AccessorFactory.getInstance();
- private static final boolean IGNORE_NIO;
- static {
- String ignoreNIOProp = System.getProperty("com.googlecode.psiprobe.intruments.ignoreNIO");
- String os64bitProp = System.getProperty("sun.arch.data.model");
- IGNORE_NIO = (ignoreNIOProp == null || "true".equalsIgnoreCase(ignoreNIOProp));
- SIZE_REFERENCE = ("64".equals(os64bitProp) ? 8 : 4);
- }
-
- private Set processedObjects = new HashSet(2048);
- private List thisQueue = new LinkedList();
- private List nextQueue = new LinkedList();
- private ClassLoader classLoader = null;
-
- public static long sizeOf(Object o) {
- return new Instruments().internalSizeOf(o);
- }
-
- public static long sizeOf(Object o, ClassLoader cl) {
- Instruments instruments = new Instruments();
- instruments.classLoader = cl;
- return instruments.internalSizeOf(o);
- }
-
- public static long sizeOf(Object o, Set objects) {
- Instruments instruments = new Instruments();
- instruments.processedObjects = objects;
- return instruments.internalSizeOf(o);
- }
-
- private long internalSizeOf(Object obj) {
- long size = 0;
- thisQueue.add(obj);
- while (!thisQueue.isEmpty()) {
- Iterator it = thisQueue.iterator();
- while (it.hasNext()) {
- Object o = it.next();
- if (isInitialized() && o != null
- && (classLoader == null || classLoader == o.getClass().getClassLoader())
- && (!IGNORE_NIO || !o.getClass().getName().startsWith("java.nio."))) {
- ObjectWrapper ow = new ObjectWrapper(o);
- if (!processedObjects.contains(ow)) {
- if (o.getClass().isArray()) {
- size += sizeOfArray(o);
- } else if (o.getClass().isPrimitive()) {
- size += sizeOfPrimitive(o.getClass());
- } else {
- processedObjects.add(ow);
- size += sizeOfObject(o);
- }
- }
- }
- it.remove();
- }
- // avoids ConcurrentModificationException
- if (!nextQueue.isEmpty()) {
- thisQueue.addAll(nextQueue);
- nextQueue.clear();
- }
- }
- return size;
- }
-
- private long sizeOfObject(Object o) {
- long size = SIZE_OBJECT;
- Class clazz = o.getClass();
- while (clazz != null) {
- Field fields[] = clazz.getDeclaredFields();
- for (int i = 0; i < fields.length; i++) {
- Field f = fields[i];
- if (!Modifier.isStatic(f.getModifiers())) {
- if (f.getType().isPrimitive()) {
- size += sizeOfPrimitive(f.getType());
- } else {
- Object val = ACCESSOR.get(o, f);
- if (f.getType().isArray()) {
- size += sizeOfArray(val);
- } else {
- size += SIZE_REFERENCE;
- nextQueue.add(val);
- }
- }
- }
- }
- clazz = clazz.getSuperclass();
- }
- return size;
- }
-
- private long sizeOfArray(Object o) {
- if (o != null) {
- Class ct = o.getClass().getComponentType();
- if (ct.isPrimitive()) {
- return Array.getLength(o) * sizeOfPrimitive(ct);
- } else {
- for (int i = 0; i < Array.getLength(o); i++) {
- nextQueue.add(Array.get(o, i));
- }
- }
- }
- return 0;
- }
-
- private static long sizeOfPrimitive(Class t) {
- if (t == Boolean.TYPE) {
- return SIZE_BOOLEAN;
- } else if (t == Byte.TYPE) {
- return SIZE_BYTE;
- } else if (t == Character.TYPE) {
- return SIZE_CHAR;
- } else if (t == Short.TYPE) {
- return SIZE_SHORT;
- } else if (t == Integer.TYPE) {
- return SIZE_INT;
- } else if (t == Long.TYPE) {
- return SIZE_LONG;
- } else if (t == Float.TYPE) {
- return SIZE_FLOAT;
- } else if (t == Double.TYPE) {
- return SIZE_DOUBLE;
- } else if (t == Void.TYPE) {
- return SIZE_VOID;
- } else {
- return SIZE_REFERENCE;
- }
- }
-
- public static boolean isInitialized() {
- return ACCESSOR != null;
- }
-
- public static Object getField(Object o, String name) {
- if (isInitialized()) {
- Field f = findField(o.getClass(), name);
- if (f != null) {
- return ACCESSOR.get(o, f);
- }
- }
- return null;
- }
-
- public static Field findField(Class clazz, String name) {
- Field[] fields = clazz.getDeclaredFields();
- for (int i = 0; i < fields.length; i++) {
- if (name.equals(fields[i].getName())) {
- return fields[i];
- }
- }
- Class superClass = clazz.getSuperclass();
- if (superClass != null) {
- return findField(superClass, name);
- } else {
- return null;
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Instruments {
+
+ public static final long SIZE_VOID = 0;
+ public static final long SIZE_BOOLEAN = 1;
+ public static final long SIZE_BYTE = 1;
+ public static final long SIZE_CHAR = 2;
+ public static final long SIZE_SHORT = 2;
+ public static final long SIZE_INT = 4;
+ public static final long SIZE_LONG = 8;
+ public static final long SIZE_FLOAT = 4;
+ public static final long SIZE_DOUBLE = 8;
+ public static final long SIZE_OBJECT = 8;
+ public static final long SIZE_REFERENCE;
+
+ private static final Accessor ACCESSOR = AccessorFactory.getInstance();
+ private static final boolean IGNORE_NIO;
+ static {
+ String ignoreNIOProp = System.getProperty("com.googlecode.psiprobe.intruments.ignoreNIO");
+ String os64bitProp = System.getProperty("sun.arch.data.model");
+ IGNORE_NIO = (ignoreNIOProp == null || "true".equalsIgnoreCase(ignoreNIOProp));
+ SIZE_REFERENCE = ("64".equals(os64bitProp) ? 8 : 4);
+ }
+
+ private Set processedObjects = new HashSet(2048);
+ private List thisQueue = new LinkedList();
+ private List nextQueue = new LinkedList();
+ private ClassLoader classLoader = null;
+
+ public static long sizeOf(Object o) {
+ return new Instruments().internalSizeOf(o);
+ }
+
+ public static long sizeOf(Object o, ClassLoader cl) {
+ Instruments instruments = new Instruments();
+ instruments.classLoader = cl;
+ return instruments.internalSizeOf(o);
+ }
+
+ public static long sizeOf(Object o, Set objects) {
+ Instruments instruments = new Instruments();
+ instruments.processedObjects = objects;
+ return instruments.internalSizeOf(o);
+ }
+
+ private long internalSizeOf(Object obj) {
+ long size = 0;
+ thisQueue.add(obj);
+ while (!thisQueue.isEmpty()) {
+ Iterator it = thisQueue.iterator();
+ while (it.hasNext()) {
+ Object o = it.next();
+ if (isInitialized() && o != null
+ && (classLoader == null || classLoader == o.getClass().getClassLoader())
+ && (!IGNORE_NIO || !o.getClass().getName().startsWith("java.nio."))) {
+ ObjectWrapper ow = new ObjectWrapper(o);
+ if (!processedObjects.contains(ow)) {
+ if (o.getClass().isArray()) {
+ size += sizeOfArray(o);
+ } else if (o.getClass().isPrimitive()) {
+ size += sizeOfPrimitive(o.getClass());
+ } else {
+ processedObjects.add(ow);
+ size += sizeOfObject(o);
+ }
+ }
+ }
+ it.remove();
+ }
+ // avoids ConcurrentModificationException
+ if (!nextQueue.isEmpty()) {
+ thisQueue.addAll(nextQueue);
+ nextQueue.clear();
+ }
+ }
+ return size;
+ }
+
+ private long sizeOfObject(Object o) {
+ long size = SIZE_OBJECT;
+ Class clazz = o.getClass();
+ while (clazz != null) {
+ Field fields[] = clazz.getDeclaredFields();
+ for (int i = 0; i < fields.length; i++) {
+ Field f = fields[i];
+ if (!Modifier.isStatic(f.getModifiers())) {
+ if (f.getType().isPrimitive()) {
+ size += sizeOfPrimitive(f.getType());
+ } else {
+ Object val = ACCESSOR.get(o, f);
+ if (f.getType().isArray()) {
+ size += sizeOfArray(val);
+ } else {
+ size += SIZE_REFERENCE;
+ nextQueue.add(val);
+ }
+ }
+ }
+ }
+ clazz = clazz.getSuperclass();
+ }
+ return size;
+ }
+
+ private long sizeOfArray(Object o) {
+ if (o != null) {
+ Class ct = o.getClass().getComponentType();
+ if (ct.isPrimitive()) {
+ return Array.getLength(o) * sizeOfPrimitive(ct);
+ } else {
+ for (int i = 0; i < Array.getLength(o); i++) {
+ nextQueue.add(Array.get(o, i));
+ }
+ }
+ }
+ return 0;
+ }
+
+ private static long sizeOfPrimitive(Class t) {
+ if (t == Boolean.TYPE) {
+ return SIZE_BOOLEAN;
+ } else if (t == Byte.TYPE) {
+ return SIZE_BYTE;
+ } else if (t == Character.TYPE) {
+ return SIZE_CHAR;
+ } else if (t == Short.TYPE) {
+ return SIZE_SHORT;
+ } else if (t == Integer.TYPE) {
+ return SIZE_INT;
+ } else if (t == Long.TYPE) {
+ return SIZE_LONG;
+ } else if (t == Float.TYPE) {
+ return SIZE_FLOAT;
+ } else if (t == Double.TYPE) {
+ return SIZE_DOUBLE;
+ } else if (t == Void.TYPE) {
+ return SIZE_VOID;
+ } else {
+ return SIZE_REFERENCE;
+ }
+ }
+
+ public static boolean isInitialized() {
+ return ACCESSOR != null;
+ }
+
+ public static Object getField(Object o, String name) {
+ if (isInitialized()) {
+ Field f = findField(o.getClass(), name);
+ if (f != null) {
+ return ACCESSOR.get(o, f);
+ }
+ }
+ return null;
+ }
+
+ public static Field findField(Class clazz, String name) {
+ Field[] fields = clazz.getDeclaredFields();
+ for (int i = 0; i < fields.length; i++) {
+ if (name.equals(fields[i].getName())) {
+ return fields[i];
+ }
+ }
+ Class superClass = clazz.getSuperclass();
+ if (superClass != null) {
+ return findField(superClass, name);
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/JmxTools.java b/core/src/main/java/com/googlecode/psiprobe/tools/JmxTools.java
index 3bbfe77202..aa2cc47495 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/JmxTools.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/JmxTools.java
@@ -1,114 +1,114 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import javax.management.AttributeNotFoundException;
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanInfo;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.management.openmbean.CompositeData;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class JmxTools {
-
- private static Log logger = LogFactory.getLog(JmxTools.class);
-
- public static Object getAttribute(MBeanServer mBeanServer, ObjectName oName, String attrName)
- throws Exception {
-
- try {
- return mBeanServer.getAttribute(oName, attrName);
- } catch (AttributeNotFoundException e) {
- logger.error(oName + " does not have \"" + attrName + "\" attribute");
- return null;
- }
- }
-
- public static long getLongAttr(MBeanServer mBeanServer, ObjectName oName, String attrName,
- long defaultValue) {
-
- try {
- Object o = mBeanServer.getAttribute(oName, attrName);
- return o == null ? defaultValue : ((Long) o).longValue();
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
- public static long getLongAttr(MBeanServer mBeanServer, ObjectName oName, String attrName)
- throws Exception {
-
- return ((Long) mBeanServer.getAttribute(oName, attrName)).longValue();
- }
-
- public static int getIntAttr(MBeanServer mBeanServer, ObjectName oName, String attrName)
- throws Exception {
-
- return ((Integer) mBeanServer.getAttribute(oName, attrName)).intValue();
- }
-
- public static String getStringAttr(MBeanServer mBeanServer, ObjectName oName, String attrName)
- throws Exception {
-
- Object o = getAttribute(mBeanServer, oName, attrName);
- return o == null ? null : o.toString();
- }
-
- public static long getLongAttr(CompositeData cds, String name) {
- Object o = cds.get(name);
- if (o != null && o instanceof Long) {
- return ((Long) o).longValue();
- } else {
- return 0;
- }
- }
-
- public static String getStringAttr(CompositeData cds, String name) {
- Object o = cds.get(name);
- return o != null ? o.toString() : null;
- }
-
- public static boolean getBooleanAttr(CompositeData cds, String name) {
- Object o = cds.get(name);
- return o != null && o instanceof Boolean && ((Boolean) o).booleanValue();
- }
-
- public static int getIntAttr(CompositeData cds, String name, int defaultValue) {
- Object o = cds.get(name);
-
- if (o != null && o instanceof Integer) {
- return ((Integer) o).intValue();
- } else {
- return defaultValue;
- }
- }
-
- public static boolean hasAttribute(MBeanServer server, ObjectName mbean, String attrName)
- throws Exception {
-
- MBeanInfo info = server.getMBeanInfo(mbean);
- MBeanAttributeInfo[] ai = info.getAttributes();
- for (int i = 0; i < ai.length; i++) {
- if (ai[i].getName().equals(attrName)) {
- return true;
- }
- }
- return false;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.management.AttributeNotFoundException;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.CompositeData;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class JmxTools {
+
+ private static Log logger = LogFactory.getLog(JmxTools.class);
+
+ public static Object getAttribute(MBeanServer mBeanServer, ObjectName oName, String attrName)
+ throws Exception {
+
+ try {
+ return mBeanServer.getAttribute(oName, attrName);
+ } catch (AttributeNotFoundException e) {
+ logger.error(oName + " does not have \"" + attrName + "\" attribute");
+ return null;
+ }
+ }
+
+ public static long getLongAttr(MBeanServer mBeanServer, ObjectName oName, String attrName,
+ long defaultValue) {
+
+ try {
+ Object o = mBeanServer.getAttribute(oName, attrName);
+ return o == null ? defaultValue : ((Long) o).longValue();
+ } catch (Exception e) {
+ return defaultValue;
+ }
+ }
+
+ public static long getLongAttr(MBeanServer mBeanServer, ObjectName oName, String attrName)
+ throws Exception {
+
+ return ((Long) mBeanServer.getAttribute(oName, attrName)).longValue();
+ }
+
+ public static int getIntAttr(MBeanServer mBeanServer, ObjectName oName, String attrName)
+ throws Exception {
+
+ return ((Integer) mBeanServer.getAttribute(oName, attrName)).intValue();
+ }
+
+ public static String getStringAttr(MBeanServer mBeanServer, ObjectName oName, String attrName)
+ throws Exception {
+
+ Object o = getAttribute(mBeanServer, oName, attrName);
+ return o == null ? null : o.toString();
+ }
+
+ public static long getLongAttr(CompositeData cds, String name) {
+ Object o = cds.get(name);
+ if (o != null && o instanceof Long) {
+ return ((Long) o).longValue();
+ } else {
+ return 0;
+ }
+ }
+
+ public static String getStringAttr(CompositeData cds, String name) {
+ Object o = cds.get(name);
+ return o != null ? o.toString() : null;
+ }
+
+ public static boolean getBooleanAttr(CompositeData cds, String name) {
+ Object o = cds.get(name);
+ return o != null && o instanceof Boolean && ((Boolean) o).booleanValue();
+ }
+
+ public static int getIntAttr(CompositeData cds, String name, int defaultValue) {
+ Object o = cds.get(name);
+
+ if (o != null && o instanceof Integer) {
+ return ((Integer) o).intValue();
+ } else {
+ return defaultValue;
+ }
+ }
+
+ public static boolean hasAttribute(MBeanServer server, ObjectName mbean, String attrName)
+ throws Exception {
+
+ MBeanInfo info = server.getMBeanInfo(mbean);
+ MBeanAttributeInfo[] ai = info.getAttributes();
+ for (int i = 0; i < ai.length; i++) {
+ if (ai[i].getName().equals(attrName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/ObjectWrapper.java b/core/src/main/java/com/googlecode/psiprobe/tools/ObjectWrapper.java
index 51ef97a560..9b8564f906 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/ObjectWrapper.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/ObjectWrapper.java
@@ -1,52 +1,52 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-/**
- * Wraps an object that may have overridden the {@link Object#equals(Object) equals()} and
- * {@link Object#hashCode() hashCode()} methods so it reverts to the default behavior for
- * {@link Object} instead.
- *
- * This allows us to (1) use {@link java.util.Collection#contains(Object)} to filter out unique
- * instances when calculating object sizes and (2) call {@link Object#hashCode() hashCode()} without
- * fear of an exception or infinite loop.
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- *
- * @see Instruments
- */
-class ObjectWrapper {
-
- private Object o;
-
- public ObjectWrapper(Object o) {
- this.o = o;
- }
-
- public boolean equals(Object o1) {
- if (o == null) {
- return o1 == null;
- } else {
- ObjectWrapper ow = (ObjectWrapper) o1;
- /*
- * I know, this condition may seem strange, but if "equals" is left out, sizeOf() may run into
- * an infinite loop on some objects
- */
- return ow.o == o;// || o.equals(ow.o);
- }
- }
-
- public int hashCode() {
- return System.identityHashCode(o);
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+/**
+ * Wraps an object that may have overridden the {@link Object#equals(Object) equals()} and
+ * {@link Object#hashCode() hashCode()} methods so it reverts to the default behavior for
+ * {@link Object} instead.
+ *
+ * This allows us to (1) use {@link java.util.Collection#contains(Object)} to filter out unique
+ * instances when calculating object sizes and (2) call {@link Object#hashCode() hashCode()} without
+ * fear of an exception or infinite loop.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ *
+ * @see Instruments
+ */
+class ObjectWrapper {
+
+ private Object o;
+
+ public ObjectWrapper(Object o) {
+ this.o = o;
+ }
+
+ public boolean equals(Object o1) {
+ if (o == null) {
+ return o1 == null;
+ } else {
+ ObjectWrapper ow = (ObjectWrapper) o1;
+ /*
+ * I know, this condition may seem strange, but if "equals" is left out, sizeOf() may run into
+ * an infinite loop on some objects
+ */
+ return ow.o == o;// || o.equals(ow.o);
+ }
+ }
+
+ public int hashCode() {
+ return System.identityHashCode(o);
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/SecurityUtils.java b/core/src/main/java/com/googlecode/psiprobe/tools/SecurityUtils.java
index e3933cfad7..5d71f10c4e 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/SecurityUtils.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/SecurityUtils.java
@@ -1,63 +1,63 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import org.springframework.security.GrantedAuthority;
-import org.springframework.security.context.SecurityContextHolder;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class SecurityUtils {
-
- private SecurityUtils() {}
-
- public static boolean hasAttributeValueRole(ServletContext servletContext,
- HttpServletRequest request) {
-
- String[] privilegedRoles = getPrivilegedRoles(servletContext).split(",");
- for (int i = 0; i < privilegedRoles.length; i++) {
- String privilegedRole = privilegedRoles[i];
- if (userHasRole(privilegedRole)) {
- return true;
- }
- }
- return false;
- }
-
- private static boolean userHasRole(String privilegedRole) {
- GrantedAuthority[] authorities =
- SecurityContextHolder.getContext().getAuthentication().getAuthorities();
-
- boolean result = false;
- for (int i = 0; i < authorities.length; i++) {
- if (privilegedRole.equals(authorities[i].getAuthority())) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- private static boolean userHasRole(String privilegedRole, HttpServletRequest request) {
- return request.isUserInRole(privilegedRole);
- }
-
- private static String getPrivilegedRoles(ServletContext servletContext) {
- return servletContext.getInitParameter("attribute.value.roles");
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import org.springframework.security.GrantedAuthority;
+import org.springframework.security.context.SecurityContextHolder;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class SecurityUtils {
+
+ private SecurityUtils() {}
+
+ public static boolean hasAttributeValueRole(ServletContext servletContext,
+ HttpServletRequest request) {
+
+ String[] privilegedRoles = getPrivilegedRoles(servletContext).split(",");
+ for (int i = 0; i < privilegedRoles.length; i++) {
+ String privilegedRole = privilegedRoles[i];
+ if (userHasRole(privilegedRole)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static boolean userHasRole(String privilegedRole) {
+ GrantedAuthority[] authorities =
+ SecurityContextHolder.getContext().getAuthentication().getAuthorities();
+
+ boolean result = false;
+ for (int i = 0; i < authorities.length; i++) {
+ if (privilegedRole.equals(authorities[i].getAuthority())) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ private static boolean userHasRole(String privilegedRole, HttpServletRequest request) {
+ return request.isUserInRole(privilegedRole);
+ }
+
+ private static String getPrivilegedRoles(ServletContext servletContext) {
+ return servletContext.getInitParameter("attribute.value.roles");
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/SizeExpression.java b/core/src/main/java/com/googlecode/psiprobe/tools/SizeExpression.java
index 7ba08a54db..51bfe2666f 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/SizeExpression.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/SizeExpression.java
@@ -1,196 +1,196 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import java.text.NumberFormat;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Tool for parsing and formatting SI-prefixed numbers in base-2 and base-10.
- *
- * @author Mark Lewis
- */
-public class SizeExpression {
-
- public static final long MULTIPLIER_2 = 1024;
- public static final long MULTIPLIER_10 = 1000;
- public static final String UNIT_BASE = "B";
- public static final char PREFIX_KILO = 'K';
- public static final char PREFIX_MEGA = 'M';
- public static final char PREFIX_GIGA = 'G';
- public static final char PREFIX_TERA = 'T';
- public static final char PREFIX_PETA = 'P';
-
- /**
- * Parses the given expression into a numerical value.
- *
- *
- * An expression has three parts:
- *
- *
- *
- *
- *
- * Name |
- * Description |
- *
- *
- *
- *
- *
- * Base Number |
- * (Required) The mantissa or significand of the expression. This can include decimal values. |
- *
- *
- * Prefix |
- * (Optional) The SI
- * prefix. These span from K for kilo- to P for peta-. |
- *
- *
- * Unit |
- * (Optional) If the unit "B" (for bytes) is provided, the prefix is treated as base-2 (1024).
- * Otherwise, it uses base-10 (1000). |
- *
- *
- *
- *
- *
- *
- * Note: Whitespace may or may not exist between the Base Number and Prefix. |
- *
- *
- *
- *
- *
- *
- * Examples:
- *
- *
- * - "2k" returns {@code 2000}
- * - "3.5m" returns {@code 3500000}
- * - "2kb" returns {@code 2048}
- * - "3.5mb" returns {@code 3670016}
- *
- *
- * @param expression the expression to parse
- * @return the parsed value
- * @throws NumberFormatException if the given expression cannot be parsed
- */
- public static long parse(String expression) {
- String prefixClass =
- "[" + PREFIX_KILO + PREFIX_MEGA + PREFIX_GIGA + PREFIX_TERA + PREFIX_PETA + "]";
- Pattern p =
- Pattern.compile("(\\d+|\\d*\\.\\d+)\\s*(" + prefixClass + ")?(" + UNIT_BASE + ")?",
- Pattern.CASE_INSENSITIVE);
- Matcher m = p.matcher(expression);
- if (m.matches()) {
- String value = m.group(1);
- String unitPrefix = m.group(2);
- String unitBase = m.group(3);
- double multiplier = 1;
- if (unitPrefix != null) {
- multiplier = multiplier(unitPrefix.charAt(0), unitBase != null);
- }
- double rawValue = Double.parseDouble(value);
- return (long) (rawValue * multiplier);
- } else {
- throw new NumberFormatException("Invalid expression format: " + expression);
- }
- }
-
- /**
- * Formats the value as an expression.
- *
- * @param value the numerical value to be formatted
- * @param decimalPlaces the number of decimal places in the mantissa
- * @param base2 whether to use the base-2 (1024) multiplier and format with "B" units. If false,
- * uses the base-10 (1000) multiplier and no units.
- * @return a formatted string expression of the value
- */
- public static String format(long value, int decimalPlaces, boolean base2) {
- NumberFormat nf = NumberFormat.getInstance();
- nf.setMinimumFractionDigits(decimalPlaces);
-
- double doubleResult;
- String unit = (base2 ? UNIT_BASE : "");
- double multiplierKilo = multiplier(PREFIX_KILO, base2);
- double multiplierMega = multiplier(PREFIX_MEGA, base2);
- double multiplierGiga = multiplier(PREFIX_GIGA, base2);
- double multiplierTera = multiplier(PREFIX_TERA, base2);
- double multiplierPeta = multiplier(PREFIX_PETA, base2);
- if (value < multiplierKilo) {
- doubleResult = value;
- nf.setMinimumFractionDigits(0);
- } else if (value >= multiplierKilo && value < multiplierMega) {
- doubleResult = round(value / multiplierKilo, decimalPlaces);
- unit = PREFIX_KILO + unit;
- } else if (value >= multiplierMega && value < multiplierGiga) {
- doubleResult = round(value / multiplierMega, decimalPlaces);
- unit = PREFIX_MEGA + unit;
- } else if (value >= multiplierGiga && value < multiplierTera) {
- doubleResult = round(value / multiplierGiga, decimalPlaces);
- unit = PREFIX_GIGA + unit;
- } else if (value >= multiplierTera && value < multiplierPeta) {
- doubleResult = round(value / multiplierTera, decimalPlaces);
- unit = PREFIX_TERA + unit;
- } else {
- doubleResult = round(value / multiplierPeta, decimalPlaces);
- unit = PREFIX_PETA + unit;
- }
- return nf.format(doubleResult) + (base2 ? " " : "") + unit;
- }
-
- /**
- * Rounds a decimal value to the given decimal place.
- *
- * @param value the value to round
- * @param decimalPlaces the number of decimal places to preserve.
- * @return the rounded value
- */
- private static double round(double value, int decimalPlaces) {
- return Math.round(value * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces);
- }
-
- /**
- * Returns the base-2 or base-10 multiplier for a given prefix.
- *
- * @param unitPrefix the character representing the prefix. Can be K, M, G, T, or P.
- * @param base2 whether to use the base-2 (1024) multiplier. If false, uses the base-10 (1000)
- * multiplier.
- * @return the multiplier for the given prefix
- */
- private static double multiplier(char unitPrefix, boolean base2) {
- long result;
- long multiplier = (base2 ? MULTIPLIER_2 : MULTIPLIER_10);
- switch (Character.toUpperCase(unitPrefix)) {
- case PREFIX_KILO:
- result = multiplier;
- break;
- case PREFIX_MEGA:
- result = multiplier * multiplier;
- break;
- case PREFIX_GIGA:
- result = multiplier * multiplier * multiplier;
- break;
- case PREFIX_TERA:
- result = multiplier * multiplier * multiplier * multiplier;
- break;
- case PREFIX_PETA:
- result = multiplier * multiplier * multiplier * multiplier * multiplier;
- break;
- default:
- throw new IllegalArgumentException("Invalid unit prefix: " + unitPrefix);
- }
- return result;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import java.text.NumberFormat;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Tool for parsing and formatting SI-prefixed numbers in base-2 and base-10.
+ *
+ * @author Mark Lewis
+ */
+public class SizeExpression {
+
+ public static final long MULTIPLIER_2 = 1024;
+ public static final long MULTIPLIER_10 = 1000;
+ public static final String UNIT_BASE = "B";
+ public static final char PREFIX_KILO = 'K';
+ public static final char PREFIX_MEGA = 'M';
+ public static final char PREFIX_GIGA = 'G';
+ public static final char PREFIX_TERA = 'T';
+ public static final char PREFIX_PETA = 'P';
+
+ /**
+ * Parses the given expression into a numerical value.
+ *
+ *
+ * An expression has three parts:
+ *
+ *
+ *
+ *
+ *
+ * Name |
+ * Description |
+ *
+ *
+ *
+ *
+ *
+ * Base Number |
+ * (Required) The mantissa or significand of the expression. This can include decimal values. |
+ *
+ *
+ * Prefix |
+ * (Optional) The SI
+ * prefix. These span from K for kilo- to P for peta-. |
+ *
+ *
+ * Unit |
+ * (Optional) If the unit "B" (for bytes) is provided, the prefix is treated as base-2 (1024).
+ * Otherwise, it uses base-10 (1000). |
+ *
+ *
+ *
+ *
+ *
+ *
+ * Note: Whitespace may or may not exist between the Base Number and Prefix. |
+ *
+ *
+ *
+ *
+ *
+ *
+ * Examples:
+ *
+ *
+ * - "2k" returns {@code 2000}
+ * - "3.5m" returns {@code 3500000}
+ * - "2kb" returns {@code 2048}
+ * - "3.5mb" returns {@code 3670016}
+ *
+ *
+ * @param expression the expression to parse
+ * @return the parsed value
+ * @throws NumberFormatException if the given expression cannot be parsed
+ */
+ public static long parse(String expression) {
+ String prefixClass =
+ "[" + PREFIX_KILO + PREFIX_MEGA + PREFIX_GIGA + PREFIX_TERA + PREFIX_PETA + "]";
+ Pattern p =
+ Pattern.compile("(\\d+|\\d*\\.\\d+)\\s*(" + prefixClass + ")?(" + UNIT_BASE + ")?",
+ Pattern.CASE_INSENSITIVE);
+ Matcher m = p.matcher(expression);
+ if (m.matches()) {
+ String value = m.group(1);
+ String unitPrefix = m.group(2);
+ String unitBase = m.group(3);
+ double multiplier = 1;
+ if (unitPrefix != null) {
+ multiplier = multiplier(unitPrefix.charAt(0), unitBase != null);
+ }
+ double rawValue = Double.parseDouble(value);
+ return (long) (rawValue * multiplier);
+ } else {
+ throw new NumberFormatException("Invalid expression format: " + expression);
+ }
+ }
+
+ /**
+ * Formats the value as an expression.
+ *
+ * @param value the numerical value to be formatted
+ * @param decimalPlaces the number of decimal places in the mantissa
+ * @param base2 whether to use the base-2 (1024) multiplier and format with "B" units. If false,
+ * uses the base-10 (1000) multiplier and no units.
+ * @return a formatted string expression of the value
+ */
+ public static String format(long value, int decimalPlaces, boolean base2) {
+ NumberFormat nf = NumberFormat.getInstance();
+ nf.setMinimumFractionDigits(decimalPlaces);
+
+ double doubleResult;
+ String unit = (base2 ? UNIT_BASE : "");
+ double multiplierKilo = multiplier(PREFIX_KILO, base2);
+ double multiplierMega = multiplier(PREFIX_MEGA, base2);
+ double multiplierGiga = multiplier(PREFIX_GIGA, base2);
+ double multiplierTera = multiplier(PREFIX_TERA, base2);
+ double multiplierPeta = multiplier(PREFIX_PETA, base2);
+ if (value < multiplierKilo) {
+ doubleResult = value;
+ nf.setMinimumFractionDigits(0);
+ } else if (value >= multiplierKilo && value < multiplierMega) {
+ doubleResult = round(value / multiplierKilo, decimalPlaces);
+ unit = PREFIX_KILO + unit;
+ } else if (value >= multiplierMega && value < multiplierGiga) {
+ doubleResult = round(value / multiplierMega, decimalPlaces);
+ unit = PREFIX_MEGA + unit;
+ } else if (value >= multiplierGiga && value < multiplierTera) {
+ doubleResult = round(value / multiplierGiga, decimalPlaces);
+ unit = PREFIX_GIGA + unit;
+ } else if (value >= multiplierTera && value < multiplierPeta) {
+ doubleResult = round(value / multiplierTera, decimalPlaces);
+ unit = PREFIX_TERA + unit;
+ } else {
+ doubleResult = round(value / multiplierPeta, decimalPlaces);
+ unit = PREFIX_PETA + unit;
+ }
+ return nf.format(doubleResult) + (base2 ? " " : "") + unit;
+ }
+
+ /**
+ * Rounds a decimal value to the given decimal place.
+ *
+ * @param value the value to round
+ * @param decimalPlaces the number of decimal places to preserve.
+ * @return the rounded value
+ */
+ private static double round(double value, int decimalPlaces) {
+ return Math.round(value * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces);
+ }
+
+ /**
+ * Returns the base-2 or base-10 multiplier for a given prefix.
+ *
+ * @param unitPrefix the character representing the prefix. Can be K, M, G, T, or P.
+ * @param base2 whether to use the base-2 (1024) multiplier. If false, uses the base-10 (1000)
+ * multiplier.
+ * @return the multiplier for the given prefix
+ */
+ private static double multiplier(char unitPrefix, boolean base2) {
+ long result;
+ long multiplier = (base2 ? MULTIPLIER_2 : MULTIPLIER_10);
+ switch (Character.toUpperCase(unitPrefix)) {
+ case PREFIX_KILO:
+ result = multiplier;
+ break;
+ case PREFIX_MEGA:
+ result = multiplier * multiplier;
+ break;
+ case PREFIX_GIGA:
+ result = multiplier * multiplier * multiplier;
+ break;
+ case PREFIX_TERA:
+ result = multiplier * multiplier * multiplier * multiplier;
+ break;
+ case PREFIX_PETA:
+ result = multiplier * multiplier * multiplier * multiplier * multiplier;
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid unit prefix: " + unitPrefix);
+ }
+ return result;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/TimeoutException.java b/core/src/main/java/com/googlecode/psiprobe/tools/TimeoutException.java
index e23af1a9c5..96969b6855 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/TimeoutException.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/TimeoutException.java
@@ -1,23 +1,23 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import java.io.IOException;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class TimeoutException extends IOException {
-
- public TimeoutException() {}
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import java.io.IOException;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class TimeoutException extends IOException {
+
+ public TimeoutException() {}
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/UpdateCommitLock.java b/core/src/main/java/com/googlecode/psiprobe/tools/UpdateCommitLock.java
index 6408f8c6d2..2a2a24b288 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/UpdateCommitLock.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/UpdateCommitLock.java
@@ -1,55 +1,55 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-/**
- * Simple update-commit lock. This implementation assumes that unlimited number of updates can
- * happen concurrently. However if commit is in progress any update must wait for it to end.
- * Likewise commits must wait for any updates to finish before aquiring the lock.
- *
- * Commits themselves are not synchronized. It is allowed for two commits to run concurrently.
- *
- * @author Vlad Ilyushchenko
- * @author Christoph Geiss
- */
-public class UpdateCommitLock {
-
- private int updateCount = 0;
- private int commitCount = 0;
- private int commitRequests = 0;
-
- public synchronized void lockForUpdate() throws InterruptedException {
- while (commitCount > 0 || commitRequests > 0) {
- wait();
- }
- updateCount++;
- }
-
- public synchronized void releaseUpdateLock() {
- updateCount--;
- notifyAll();
- }
-
- public synchronized void lockForCommit() throws InterruptedException {
- commitRequests++;
- while (updateCount > 0 || commitCount > 0) {
- wait();
- }
- commitRequests--;
- commitCount++;
- }
-
- public synchronized void releaseCommitLock() {
- commitCount--;
- notifyAll();
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+/**
+ * Simple update-commit lock. This implementation assumes that unlimited number of updates can
+ * happen concurrently. However if commit is in progress any update must wait for it to end.
+ * Likewise commits must wait for any updates to finish before aquiring the lock.
+ *
+ * Commits themselves are not synchronized. It is allowed for two commits to run concurrently.
+ *
+ * @author Vlad Ilyushchenko
+ * @author Christoph Geiss
+ */
+public class UpdateCommitLock {
+
+ private int updateCount = 0;
+ private int commitCount = 0;
+ private int commitRequests = 0;
+
+ public synchronized void lockForUpdate() throws InterruptedException {
+ while (commitCount > 0 || commitRequests > 0) {
+ wait();
+ }
+ updateCount++;
+ }
+
+ public synchronized void releaseUpdateLock() {
+ updateCount--;
+ notifyAll();
+ }
+
+ public synchronized void lockForCommit() throws InterruptedException {
+ commitRequests++;
+ while (updateCount > 0 || commitCount > 0) {
+ wait();
+ }
+ commitRequests--;
+ commitCount++;
+ }
+
+ public synchronized void releaseCommitLock() {
+ commitCount--;
+ notifyAll();
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/Whois.java b/core/src/main/java/com/googlecode/psiprobe/tools/Whois.java
index 0b75d4d8f4..a229964018 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/Whois.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/Whois.java
@@ -1,132 +1,132 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import com.googlecode.psiprobe.tools.url.URLParser;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.net.Socket;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Whois {
-
- public static Response lookup(String server, int port, String query) throws IOException {
- return lookup(server, port, query, 5);
- }
-
- public static Response lookup(String server, int port, String query, long timeout)
- throws IOException {
-
- return lookup(server, port, query, timeout, System.getProperty("line.separator"));
- }
-
- public static Response lookup(String server, int port, String query, long timeout,
- String lineSeparator) throws IOException {
-
- if (query == null) {
- return null;
- }
-
- Response response = new Response();
-
- response.server = server;
- response.port = port;
-
- Socket connection = AsyncSocketFactory.createSocket(server, port, timeout);
- try {
- PrintStream out = new PrintStream(connection.getOutputStream());
- try {
- BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
- try {
- out.println(query);
- StringBuffer sb = new StringBuffer();
-
- String line;
- while ((line = in.readLine()) != null) {
- sb.append(line).append(lineSeparator);
- line = line.trim();
- if (!line.startsWith("%") && !line.startsWith("#")) {
- int fs = line.indexOf(":");
- if (fs > 0) {
- String name = line.substring(0, fs);
- String value = line.substring(fs + 1).trim();
- response.data.put(name, value);
- }
- }
- }
- response.summary = sb.toString();
-
- Response newResponse = null;
- String referral = (String) response.getData().get("ReferralServer");
-
- if (referral != null) {
- try {
- URLParser url = new URLParser(referral);
- if ("whois".equals(url.getProtocol())) {
- newResponse =
- lookup(url.getHost(), url.getPort() == -1 ? 43 : url.getPort(), query, timeout,
- lineSeparator);
- }
- } catch (IOException e) {
- // System.out.println("Could not contact " + referral);
-
- }
- }
- if (newResponse != null) {
- response = newResponse;
- }
- } finally {
- in.close();
- }
- } finally {
- out.close();
- }
- } finally {
- connection.close();
- }
-
- return response;
- }
-
- public static class Response {
-
- private String summary;
- private Map data = new TreeMap();
- private String server;
- private int port;
-
- public String getSummary() {
- return summary;
- }
-
- public Map getData() {
- return data;
- }
-
- public String getServer() {
- return server;
- }
-
- public int getPort() {
- return port;
- }
-
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import com.googlecode.psiprobe.tools.url.URLParser;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.net.Socket;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Whois {
+
+ public static Response lookup(String server, int port, String query) throws IOException {
+ return lookup(server, port, query, 5);
+ }
+
+ public static Response lookup(String server, int port, String query, long timeout)
+ throws IOException {
+
+ return lookup(server, port, query, timeout, System.getProperty("line.separator"));
+ }
+
+ public static Response lookup(String server, int port, String query, long timeout,
+ String lineSeparator) throws IOException {
+
+ if (query == null) {
+ return null;
+ }
+
+ Response response = new Response();
+
+ response.server = server;
+ response.port = port;
+
+ Socket connection = AsyncSocketFactory.createSocket(server, port, timeout);
+ try {
+ PrintStream out = new PrintStream(connection.getOutputStream());
+ try {
+ BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ try {
+ out.println(query);
+ StringBuffer sb = new StringBuffer();
+
+ String line;
+ while ((line = in.readLine()) != null) {
+ sb.append(line).append(lineSeparator);
+ line = line.trim();
+ if (!line.startsWith("%") && !line.startsWith("#")) {
+ int fs = line.indexOf(":");
+ if (fs > 0) {
+ String name = line.substring(0, fs);
+ String value = line.substring(fs + 1).trim();
+ response.data.put(name, value);
+ }
+ }
+ }
+ response.summary = sb.toString();
+
+ Response newResponse = null;
+ String referral = (String) response.getData().get("ReferralServer");
+
+ if (referral != null) {
+ try {
+ URLParser url = new URLParser(referral);
+ if ("whois".equals(url.getProtocol())) {
+ newResponse =
+ lookup(url.getHost(), url.getPort() == -1 ? 43 : url.getPort(), query, timeout,
+ lineSeparator);
+ }
+ } catch (IOException e) {
+ // System.out.println("Could not contact " + referral);
+
+ }
+ }
+ if (newResponse != null) {
+ response = newResponse;
+ }
+ } finally {
+ in.close();
+ }
+ } finally {
+ out.close();
+ }
+ } finally {
+ connection.close();
+ }
+
+ return response;
+ }
+
+ public static class Response {
+
+ private String summary;
+ private Map data = new TreeMap();
+ private String server;
+ private int port;
+
+ public String getSummary() {
+ return summary;
+ }
+
+ public Map getData() {
+ return data;
+ }
+
+ public String getServer() {
+ return server;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/DefaultAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/DefaultAccessor.java
index c93756a37d..76ae13c8c1 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/DefaultAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/DefaultAccessor.java
@@ -1,72 +1,72 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging;
-
-import com.googlecode.psiprobe.model.Application;
-
-import org.apache.commons.beanutils.MethodUtils;
-import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class DefaultAccessor {
-
- protected final Log log = LogFactory.getLog(getClass());
- private Application application;
- private Object target;
-
- public Application getApplication() {
- return application;
- }
-
- public void setApplication(Application application) {
- this.application = application;
- }
-
- public Object getTarget() {
- return target;
- }
-
- public void setTarget(Object target) {
- this.target = target;
- }
-
- public String getTargetClass() {
- return getTarget().getClass().getName();
- }
-
- protected Object getProperty(Object o, String name, Object defaultValue) {
- try {
- return PropertyUtils.isReadable(o, name) ? PropertyUtils.getProperty(o, name) : defaultValue;
- } catch (Exception e) {
- log.debug("Could not access property \"" + name + "\" of object " + o, e);
- return defaultValue;
- }
- }
-
- protected Object invokeMethod(Object object, String name, Object param, Object defaultValue) {
- try {
- if (param == null) {
- return MethodUtils.invokeMethod(object, name, new Object[] {});
- } else {
- return MethodUtils.invokeMethod(object, name, param);
- }
- } catch (Exception e) {
- return defaultValue;
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging;
+
+import com.googlecode.psiprobe.model.Application;
+
+import org.apache.commons.beanutils.MethodUtils;
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class DefaultAccessor {
+
+ protected final Log log = LogFactory.getLog(getClass());
+ private Application application;
+ private Object target;
+
+ public Application getApplication() {
+ return application;
+ }
+
+ public void setApplication(Application application) {
+ this.application = application;
+ }
+
+ public Object getTarget() {
+ return target;
+ }
+
+ public void setTarget(Object target) {
+ this.target = target;
+ }
+
+ public String getTargetClass() {
+ return getTarget().getClass().getName();
+ }
+
+ protected Object getProperty(Object o, String name, Object defaultValue) {
+ try {
+ return PropertyUtils.isReadable(o, name) ? PropertyUtils.getProperty(o, name) : defaultValue;
+ } catch (Exception e) {
+ log.debug("Could not access property \"" + name + "\" of object " + o, e);
+ return defaultValue;
+ }
+ }
+
+ protected Object invokeMethod(Object object, String name, Object param, Object defaultValue) {
+ try {
+ if (param == null) {
+ return MethodUtils.invokeMethod(object, name, new Object[] {});
+ } else {
+ return MethodUtils.invokeMethod(object, name, param);
+ }
+ } catch (Exception e) {
+ return defaultValue;
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/FileLogAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/FileLogAccessor.java
index 8b77f56f4d..e0674b8eff 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/FileLogAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/FileLogAccessor.java
@@ -1,53 +1,53 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging;
-
-import java.io.File;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class FileLogAccessor extends AbstractLogDestination {
-
- private String name;
- private File file;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getTargetClass() {
- return "stdout";
- }
-
- public String getLogType() {
- return "stdout";
- }
-
- public String getConversionPattern() {
- return "";
- }
-
- public File getFile() {
- return file;
- }
-
- public void setFile(File file) {
- this.file = file;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging;
+
+import java.io.File;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class FileLogAccessor extends AbstractLogDestination {
+
+ private String name;
+ private File file;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getTargetClass() {
+ return "stdout";
+ }
+
+ public String getLogType() {
+ return "stdout";
+ }
+
+ public String getConversionPattern() {
+ return "";
+ }
+
+ public File getFile() {
+ return file;
+ }
+
+ public void setFile(File file) {
+ this.file = file;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/LogDestination.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/LogDestination.java
index bc34c3a15e..2952152967 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/LogDestination.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/LogDestination.java
@@ -1,56 +1,56 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging;
-
-import com.googlecode.psiprobe.model.Application;
-
-import java.io.File;
-import java.sql.Timestamp;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public interface LogDestination {
-
- Application getApplication();
-
- boolean isRoot();
-
- boolean isContext();
-
- String getName();
-
- String getIndex();
-
- String getTargetClass();
-
- String getConversionPattern();
-
- File getFile();
-
- long getSize();
-
- Timestamp getLastModified();
-
- /**
- * Type of the log, e.g. "log4j", "jdk", "commons-" etc.
- *
- * @return the class of the log
- */
- String getLogType();
-
- String getLevel();
-
- String[] getValidLevels();
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging;
+
+import com.googlecode.psiprobe.model.Application;
+
+import java.io.File;
+import java.sql.Timestamp;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public interface LogDestination {
+
+ Application getApplication();
+
+ boolean isRoot();
+
+ boolean isContext();
+
+ String getName();
+
+ String getIndex();
+
+ String getTargetClass();
+
+ String getConversionPattern();
+
+ File getFile();
+
+ long getSize();
+
+ Timestamp getLastModified();
+
+ /**
+ * Type of the log, e.g. "log4j", "jdk", "commons-" etc.
+ *
+ * @return the class of the log
+ */
+ String getLogType();
+
+ String getLevel();
+
+ String[] getValidLevels();
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/catalina/CatalinaLoggerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/catalina/CatalinaLoggerAccessor.java
index b9a528719b..1af4edb50b 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/catalina/CatalinaLoggerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/catalina/CatalinaLoggerAccessor.java
@@ -1,56 +1,56 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.catalina;
-
-import com.googlecode.psiprobe.tools.Instruments;
-import com.googlecode.psiprobe.tools.logging.AbstractLogDestination;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class CatalinaLoggerAccessor extends AbstractLogDestination {
-
- public boolean isContext() {
- return true;
- }
-
- public String getName() {
- return null;
- }
-
- public String getLogType() {
- return "catalina";
- }
-
- public File getFile() {
- String dir = (String) invokeMethod(getTarget(), "getDirectory", null, null);
- String prefix = (String) invokeMethod(getTarget(), "getPrefix", null, null);
- String suffix = (String) invokeMethod(getTarget(), "getSuffix", null, null);
- boolean timestamp = ((Boolean) Instruments.getField(getTarget(), "timestamp")).booleanValue();
- String date = timestamp ? new SimpleDateFormat("yyyy-MM-dd").format(new Date()) : "";
-
- File file =
- (date != null && dir != null && prefix != null && suffix != null ? new File(dir, prefix
- + date + suffix) : null);
- if (file != null && !file.isAbsolute()) {
- return new File(System.getProperty("catalina.base"), file.getPath());
- } else {
- return file;
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.catalina;
+
+import com.googlecode.psiprobe.tools.Instruments;
+import com.googlecode.psiprobe.tools.logging.AbstractLogDestination;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class CatalinaLoggerAccessor extends AbstractLogDestination {
+
+ public boolean isContext() {
+ return true;
+ }
+
+ public String getName() {
+ return null;
+ }
+
+ public String getLogType() {
+ return "catalina";
+ }
+
+ public File getFile() {
+ String dir = (String) invokeMethod(getTarget(), "getDirectory", null, null);
+ String prefix = (String) invokeMethod(getTarget(), "getPrefix", null, null);
+ String suffix = (String) invokeMethod(getTarget(), "getSuffix", null, null);
+ boolean timestamp = ((Boolean) Instruments.getField(getTarget(), "timestamp")).booleanValue();
+ String date = timestamp ? new SimpleDateFormat("yyyy-MM-dd").format(new Date()) : "";
+
+ File file =
+ (date != null && dir != null && prefix != null && suffix != null ? new File(dir, prefix
+ + date + suffix) : null);
+ if (file != null && !file.isAbsolute()) {
+ return new File(System.getProperty("catalina.base"), file.getPath());
+ } else {
+ return file;
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/commons/CommonsLoggerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/commons/CommonsLoggerAccessor.java
index 4a9afe0805..840b67736f 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/commons/CommonsLoggerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/commons/CommonsLoggerAccessor.java
@@ -1,41 +1,41 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.commons;
-
-import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
-import com.googlecode.psiprobe.tools.logging.LogDestination;
-
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class CommonsLoggerAccessor extends DefaultAccessor {
-
- public List getDestinations() {
- GetAllDestinationsVisitor v = new GetAllDestinationsVisitor();
- v.setTarget(getTarget());
- v.setApplication(getApplication());
- v.visit();
- return v.getDestinations();
- }
-
- public LogDestination getDestination(String logIndex) {
- GetSingleDestinationVisitor v = new GetSingleDestinationVisitor(logIndex);
- v.setTarget(getTarget());
- v.setApplication(getApplication());
- v.visit();
- return v.getDestination();
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.commons;
+
+import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
+import com.googlecode.psiprobe.tools.logging.LogDestination;
+
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class CommonsLoggerAccessor extends DefaultAccessor {
+
+ public List getDestinations() {
+ GetAllDestinationsVisitor v = new GetAllDestinationsVisitor();
+ v.setTarget(getTarget());
+ v.setApplication(getApplication());
+ v.visit();
+ return v.getDestinations();
+ }
+
+ public LogDestination getDestination(String logIndex) {
+ GetSingleDestinationVisitor v = new GetSingleDestinationVisitor(logIndex);
+ v.setTarget(getTarget());
+ v.setApplication(getApplication());
+ v.visit();
+ return v.getDestination();
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14HandlerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14HandlerAccessor.java
index 01cbdb7f1d..b8cfe8a023 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14HandlerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14HandlerAccessor.java
@@ -1,78 +1,78 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.jdk;
-
-import com.googlecode.psiprobe.tools.logging.AbstractLogDestination;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Jdk14HandlerAccessor extends AbstractLogDestination {
-
- private Jdk14LoggerAccessor loggerAccessor;
- private String index;
-
- public Jdk14LoggerAccessor getLoggerAccessor() {
- return loggerAccessor;
- }
-
- public void setLoggerAccessor(Jdk14LoggerAccessor loggerAccessor) {
- this.loggerAccessor = loggerAccessor;
- }
-
- public boolean isContext() {
- return getLoggerAccessor().isContext();
- }
-
- public boolean isRoot() {
- return getLoggerAccessor().isRoot();
- }
-
- public String getName() {
- return getLoggerAccessor().getName();
- }
-
- public String getIndex() {
- return index;
- }
-
- public void setIndex(String index) {
- this.index = index;
- }
-
- public String getLogType() {
- return "jdk";
- }
-
- public String getLevel() {
- return getLoggerAccessor().getLevel();
- }
-
- public void setLevel(String newLevelStr) {
- try {
- Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
- Object newLevel = MethodUtils.invokeMethod(level, "parse", newLevelStr);
- MethodUtils.invokeMethod(getTarget(), "setLevel", newLevel);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#setLevel(\"" + newLevelStr + "\") failed", e);
- }
- }
-
- public String[] getValidLevels() {
- return new String[] {"OFF", "SEVERE", "WARNING", "INFO", "CONFIG", "FINE", "FINER", "FINEST",
- "ALL"};
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.jdk;
+
+import com.googlecode.psiprobe.tools.logging.AbstractLogDestination;
+
+import org.apache.commons.beanutils.MethodUtils;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Jdk14HandlerAccessor extends AbstractLogDestination {
+
+ private Jdk14LoggerAccessor loggerAccessor;
+ private String index;
+
+ public Jdk14LoggerAccessor getLoggerAccessor() {
+ return loggerAccessor;
+ }
+
+ public void setLoggerAccessor(Jdk14LoggerAccessor loggerAccessor) {
+ this.loggerAccessor = loggerAccessor;
+ }
+
+ public boolean isContext() {
+ return getLoggerAccessor().isContext();
+ }
+
+ public boolean isRoot() {
+ return getLoggerAccessor().isRoot();
+ }
+
+ public String getName() {
+ return getLoggerAccessor().getName();
+ }
+
+ public String getIndex() {
+ return index;
+ }
+
+ public void setIndex(String index) {
+ this.index = index;
+ }
+
+ public String getLogType() {
+ return "jdk";
+ }
+
+ public String getLevel() {
+ return getLoggerAccessor().getLevel();
+ }
+
+ public void setLevel(String newLevelStr) {
+ try {
+ Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
+ Object newLevel = MethodUtils.invokeMethod(level, "parse", newLevelStr);
+ MethodUtils.invokeMethod(getTarget(), "setLevel", newLevel);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#setLevel(\"" + newLevelStr + "\") failed", e);
+ }
+ }
+
+ public String[] getValidLevels() {
+ return new String[] {"OFF", "SEVERE", "WARNING", "INFO", "CONFIG", "FINE", "FINER", "FINEST",
+ "ALL"};
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14LoggerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14LoggerAccessor.java
index 01a1b00089..3335031c8a 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14LoggerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14LoggerAccessor.java
@@ -1,147 +1,147 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.jdk;
-
-import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Jdk14LoggerAccessor extends DefaultAccessor {
-
- private boolean context = false;
-
- public List getHandlers() {
- List handlerAccessors = new ArrayList();
- try {
- Object handlers[] = (Object[]) MethodUtils.invokeMethod(getTarget(), "getHandlers", null);
- for (int h = 0; h < handlers.length; h++) {
- Object handler = handlers[h];
- Jdk14HandlerAccessor handlerAccessor = wrapHandler(handler, h);
- if (handlerAccessor != null) {
- handlerAccessors.add(handlerAccessor);
- }
- }
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#handlers inaccessible", e);
- }
- return handlerAccessors;
- }
-
- public boolean isContext() {
- return context;
- }
-
- public void setContext(boolean context) {
- this.context = context;
- }
-
- public boolean isRoot() {
- return "".equals(getName()) || isJuliRoot();
- }
-
- public boolean isJuliRoot() {
- return "org.apache.juli.ClassLoaderLogManager$RootLogger".equals(getTargetClass());
- }
-
- public String getName() {
- return (String) getProperty(getTarget(), "name", null);
- }
-
- public Jdk14HandlerAccessor getHandler(String logIndex) {
- int index = 0;
- try {
- index = Integer.parseInt(logIndex);
- } catch (Exception e) {
- log.info("Could not parse integer from: " + logIndex + ". Assuming 0.");
- }
- return getHandler(index);
- }
-
- public Jdk14HandlerAccessor getHandler(int index) {
- try {
- Object handlers[] = (Object[]) MethodUtils.invokeMethod(getTarget(), "getHandlers", null);
- return wrapHandler(handlers[index], index);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#handlers inaccessible", e);
- }
- return null;
- }
-
- public String getLevel() {
- try {
- Object level = null;
- Object target = getTarget();
- while (level == null && target != null) {
- level = getLevelInternal(target);
- target = MethodUtils.invokeMethod(target, "getParent", null);
- }
- if (level == null && isJuliRoot()) {
- return "INFO";
- } else {
- return (String) MethodUtils.invokeMethod(level, "getName", null);
- }
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getLevel() failed", e);
- }
- return null;
- }
-
- public void setLevel(String newLevelStr) {
- try {
- Class levelClass =
- getTarget().getClass().getClassLoader().loadClass("java.util.logging.Level");
- Method parse = MethodUtils.getAccessibleMethod(levelClass, "parse", String.class);
- Object newLevel = parse.invoke(null, new Object[] {newLevelStr});
- MethodUtils.invokeMethod(getTarget(), "setLevel", newLevel);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#setLevel(\"" + newLevelStr + "\") failed", e);
- }
- }
-
- private Object getLevelInternal(Object target) throws Exception {
- return MethodUtils.invokeMethod(target, "getLevel", null);
- }
-
- private Jdk14HandlerAccessor wrapHandler(Object handler, int index) {
- try {
- if (handler == null) {
- throw new IllegalArgumentException("handler is null");
- }
- Jdk14HandlerAccessor handlerAccessor = null;
- if ("org.apache.juli.FileHandler".equals(handler.getClass().getName())) {
- handlerAccessor = new JuliHandlerAccessor();
- } else if ("java.util.logging.ConsoleHandler".equals(handler.getClass().getName())) {
- handlerAccessor = new Jdk14HandlerAccessor();
- }
-
- if (handlerAccessor != null) {
- handlerAccessor.setLoggerAccessor(this);
- handlerAccessor.setTarget(handler);
- handlerAccessor.setIndex(Integer.toString(index));
- handlerAccessor.setApplication(getApplication());
- }
- return handlerAccessor;
- } catch (Exception e) {
- log.error("Could not wrap handler: " + handler, e);
- }
- return null;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.jdk;
+
+import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
+
+import org.apache.commons.beanutils.MethodUtils;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Jdk14LoggerAccessor extends DefaultAccessor {
+
+ private boolean context = false;
+
+ public List getHandlers() {
+ List handlerAccessors = new ArrayList();
+ try {
+ Object handlers[] = (Object[]) MethodUtils.invokeMethod(getTarget(), "getHandlers", null);
+ for (int h = 0; h < handlers.length; h++) {
+ Object handler = handlers[h];
+ Jdk14HandlerAccessor handlerAccessor = wrapHandler(handler, h);
+ if (handlerAccessor != null) {
+ handlerAccessors.add(handlerAccessor);
+ }
+ }
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#handlers inaccessible", e);
+ }
+ return handlerAccessors;
+ }
+
+ public boolean isContext() {
+ return context;
+ }
+
+ public void setContext(boolean context) {
+ this.context = context;
+ }
+
+ public boolean isRoot() {
+ return "".equals(getName()) || isJuliRoot();
+ }
+
+ public boolean isJuliRoot() {
+ return "org.apache.juli.ClassLoaderLogManager$RootLogger".equals(getTargetClass());
+ }
+
+ public String getName() {
+ return (String) getProperty(getTarget(), "name", null);
+ }
+
+ public Jdk14HandlerAccessor getHandler(String logIndex) {
+ int index = 0;
+ try {
+ index = Integer.parseInt(logIndex);
+ } catch (Exception e) {
+ log.info("Could not parse integer from: " + logIndex + ". Assuming 0.");
+ }
+ return getHandler(index);
+ }
+
+ public Jdk14HandlerAccessor getHandler(int index) {
+ try {
+ Object handlers[] = (Object[]) MethodUtils.invokeMethod(getTarget(), "getHandlers", null);
+ return wrapHandler(handlers[index], index);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#handlers inaccessible", e);
+ }
+ return null;
+ }
+
+ public String getLevel() {
+ try {
+ Object level = null;
+ Object target = getTarget();
+ while (level == null && target != null) {
+ level = getLevelInternal(target);
+ target = MethodUtils.invokeMethod(target, "getParent", null);
+ }
+ if (level == null && isJuliRoot()) {
+ return "INFO";
+ } else {
+ return (String) MethodUtils.invokeMethod(level, "getName", null);
+ }
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getLevel() failed", e);
+ }
+ return null;
+ }
+
+ public void setLevel(String newLevelStr) {
+ try {
+ Class levelClass =
+ getTarget().getClass().getClassLoader().loadClass("java.util.logging.Level");
+ Method parse = MethodUtils.getAccessibleMethod(levelClass, "parse", String.class);
+ Object newLevel = parse.invoke(null, new Object[] {newLevelStr});
+ MethodUtils.invokeMethod(getTarget(), "setLevel", newLevel);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#setLevel(\"" + newLevelStr + "\") failed", e);
+ }
+ }
+
+ private Object getLevelInternal(Object target) throws Exception {
+ return MethodUtils.invokeMethod(target, "getLevel", null);
+ }
+
+ private Jdk14HandlerAccessor wrapHandler(Object handler, int index) {
+ try {
+ if (handler == null) {
+ throw new IllegalArgumentException("handler is null");
+ }
+ Jdk14HandlerAccessor handlerAccessor = null;
+ if ("org.apache.juli.FileHandler".equals(handler.getClass().getName())) {
+ handlerAccessor = new JuliHandlerAccessor();
+ } else if ("java.util.logging.ConsoleHandler".equals(handler.getClass().getName())) {
+ handlerAccessor = new Jdk14HandlerAccessor();
+ }
+
+ if (handlerAccessor != null) {
+ handlerAccessor.setLoggerAccessor(this);
+ handlerAccessor.setTarget(handler);
+ handlerAccessor.setIndex(Integer.toString(index));
+ handlerAccessor.setApplication(getApplication());
+ }
+ return handlerAccessor;
+ } catch (Exception e) {
+ log.error("Could not wrap handler: " + handler, e);
+ }
+ return null;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14ManagerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14ManagerAccessor.java
index f7c121b867..bd26c82bea 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14ManagerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/Jdk14ManagerAccessor.java
@@ -1,80 +1,80 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.jdk;
-
-import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Jdk14ManagerAccessor extends DefaultAccessor {
-
- public Jdk14ManagerAccessor(ClassLoader cl) throws ClassNotFoundException,
- IllegalAccessException, IllegalArgumentException, InvocationTargetException {
-
- Class clazz = cl.loadClass("java.util.logging.LogManager");
- Method getManager = MethodUtils.getAccessibleMethod(clazz, "getLogManager", new Class[] {});
- Object manager = getManager.invoke(null, null);
- if (manager == null) {
- throw new NullPointerException(clazz.getName() + ".getLogManager() returned null");
- }
- setTarget(manager);
- }
-
- public Jdk14LoggerAccessor getRootLogger() {
- return getLogger("");
- }
-
- public Jdk14LoggerAccessor getLogger(String name) {
- try {
- Object logger = MethodUtils.invokeMethod(getTarget(), "getLogger", name);
- if (logger == null) {
- throw new NullPointerException(getTarget().getClass().getName() + "#getLogger(\"" + name
- + "\") returned null");
- }
- Jdk14LoggerAccessor accessor = new Jdk14LoggerAccessor();
- accessor.setTarget(logger);
- accessor.setApplication(getApplication());
- return accessor;
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getLogger(\"" + name + "\") failed", e);
- }
- return null;
- }
-
- public List getHandlers() {
- List allHandlers = new ArrayList();
- try {
- Enumeration e = (Enumeration) MethodUtils.invokeMethod(getTarget(), "getLoggerNames", null);
- while (e.hasMoreElements()) {
- String name = (String) e.nextElement();
- Jdk14LoggerAccessor accessor = getLogger(name);
- if (accessor != null) {
- allHandlers.addAll(accessor.getHandlers());
- }
- }
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getLoggerNames() failed", e);
- }
- return allHandlers;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.jdk;
+
+import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
+
+import org.apache.commons.beanutils.MethodUtils;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Jdk14ManagerAccessor extends DefaultAccessor {
+
+ public Jdk14ManagerAccessor(ClassLoader cl) throws ClassNotFoundException,
+ IllegalAccessException, IllegalArgumentException, InvocationTargetException {
+
+ Class clazz = cl.loadClass("java.util.logging.LogManager");
+ Method getManager = MethodUtils.getAccessibleMethod(clazz, "getLogManager", new Class[] {});
+ Object manager = getManager.invoke(null, null);
+ if (manager == null) {
+ throw new NullPointerException(clazz.getName() + ".getLogManager() returned null");
+ }
+ setTarget(manager);
+ }
+
+ public Jdk14LoggerAccessor getRootLogger() {
+ return getLogger("");
+ }
+
+ public Jdk14LoggerAccessor getLogger(String name) {
+ try {
+ Object logger = MethodUtils.invokeMethod(getTarget(), "getLogger", name);
+ if (logger == null) {
+ throw new NullPointerException(getTarget().getClass().getName() + "#getLogger(\"" + name
+ + "\") returned null");
+ }
+ Jdk14LoggerAccessor accessor = new Jdk14LoggerAccessor();
+ accessor.setTarget(logger);
+ accessor.setApplication(getApplication());
+ return accessor;
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getLogger(\"" + name + "\") failed", e);
+ }
+ return null;
+ }
+
+ public List getHandlers() {
+ List allHandlers = new ArrayList();
+ try {
+ Enumeration e = (Enumeration) MethodUtils.invokeMethod(getTarget(), "getLoggerNames", null);
+ while (e.hasMoreElements()) {
+ String name = (String) e.nextElement();
+ Jdk14LoggerAccessor accessor = getLogger(name);
+ if (accessor != null) {
+ allHandlers.addAll(accessor.getHandlers());
+ }
+ }
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getLoggerNames() failed", e);
+ }
+ return allHandlers;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/JuliHandlerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/JuliHandlerAccessor.java
index 2c8965d6a4..50bab0bc29 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/JuliHandlerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/jdk/JuliHandlerAccessor.java
@@ -1,33 +1,33 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.jdk;
-
-import com.googlecode.psiprobe.tools.Instruments;
-
-import java.io.File;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class JuliHandlerAccessor extends Jdk14HandlerAccessor {
-
- public File getFile() {
- String dir = (String) Instruments.getField(getTarget(), "directory");
- String prefix = (String) Instruments.getField(getTarget(), "prefix");
- String suffix = (String) Instruments.getField(getTarget(), "suffix");
- String date = (String) Instruments.getField(getTarget(), "date");
- return dir != null && prefix != null && suffix != null && date != null ? new File(dir, prefix
- + date + suffix) : getStdoutFile();
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.jdk;
+
+import com.googlecode.psiprobe.tools.Instruments;
+
+import java.io.File;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class JuliHandlerAccessor extends Jdk14HandlerAccessor {
+
+ public File getFile() {
+ String dir = (String) Instruments.getField(getTarget(), "directory");
+ String prefix = (String) Instruments.getField(getTarget(), "prefix");
+ String suffix = (String) Instruments.getField(getTarget(), "suffix");
+ String date = (String) Instruments.getField(getTarget(), "date");
+ return dir != null && prefix != null && suffix != null && date != null ? new File(dir, prefix
+ + date + suffix) : getStdoutFile();
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JAppenderAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JAppenderAccessor.java
index 678d5ef135..ad0510d2d8 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JAppenderAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JAppenderAccessor.java
@@ -1,75 +1,75 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.log4j;
-
-import com.googlecode.psiprobe.tools.logging.AbstractLogDestination;
-
-import java.io.File;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Log4JAppenderAccessor extends AbstractLogDestination {
- private Log4JLoggerAccessor loggerAccessor;
-
- public Log4JLoggerAccessor getLoggerAccessor() {
- return loggerAccessor;
- }
-
- public void setLoggerAccessor(Log4JLoggerAccessor loggerAccessor) {
- this.loggerAccessor = loggerAccessor;
- }
-
- public boolean isContext() {
- return getLoggerAccessor().isContext();
- }
-
- public boolean isRoot() {
- return getLoggerAccessor().isRoot();
- }
-
- public String getName() {
- return getLoggerAccessor().getName();
- }
-
- public String getLogType() {
- return "log4j";
- }
-
- public String getIndex() {
- return (String) getProperty(getTarget(), "name", null);
- }
-
- public String getConversionPattern() {
- Object layout = getProperty(getTarget(), "layout", null);
- if (layout != null && "org.apache.log4j.PatternLayout".equals(layout.getClass().getName())) {
- return (String) getProperty(layout, "conversionPattern", null);
- } else {
- return null;
- }
- }
-
- public File getFile() {
- String fileName = (String) getProperty(getTarget(), "file", null);
- return fileName != null ? new File(fileName) : getStdoutFile();
- }
-
- public String getLevel() {
- return getLoggerAccessor().getLevel();
- }
-
- public String[] getValidLevels() {
- return new String[] {"OFF", "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE", "ALL"};
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.log4j;
+
+import com.googlecode.psiprobe.tools.logging.AbstractLogDestination;
+
+import java.io.File;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Log4JAppenderAccessor extends AbstractLogDestination {
+ private Log4JLoggerAccessor loggerAccessor;
+
+ public Log4JLoggerAccessor getLoggerAccessor() {
+ return loggerAccessor;
+ }
+
+ public void setLoggerAccessor(Log4JLoggerAccessor loggerAccessor) {
+ this.loggerAccessor = loggerAccessor;
+ }
+
+ public boolean isContext() {
+ return getLoggerAccessor().isContext();
+ }
+
+ public boolean isRoot() {
+ return getLoggerAccessor().isRoot();
+ }
+
+ public String getName() {
+ return getLoggerAccessor().getName();
+ }
+
+ public String getLogType() {
+ return "log4j";
+ }
+
+ public String getIndex() {
+ return (String) getProperty(getTarget(), "name", null);
+ }
+
+ public String getConversionPattern() {
+ Object layout = getProperty(getTarget(), "layout", null);
+ if (layout != null && "org.apache.log4j.PatternLayout".equals(layout.getClass().getName())) {
+ return (String) getProperty(layout, "conversionPattern", null);
+ } else {
+ return null;
+ }
+ }
+
+ public File getFile() {
+ String fileName = (String) getProperty(getTarget(), "file", null);
+ return fileName != null ? new File(fileName) : getStdoutFile();
+ }
+
+ public String getLevel() {
+ return getLoggerAccessor().getLevel();
+ }
+
+ public String[] getValidLevels() {
+ return new String[] {"OFF", "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE", "ALL"};
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JLoggerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JLoggerAccessor.java
index de599fbb32..0540b56893 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JLoggerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JLoggerAccessor.java
@@ -1,108 +1,108 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.log4j;
-
-import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Log4JLoggerAccessor extends DefaultAccessor {
-
- private boolean context = false;
-
- public List getAppenders() {
- List appenders = new ArrayList();
- try {
- Enumeration e = (Enumeration) MethodUtils.invokeMethod(getTarget(), "getAllAppenders", null);
- while (e.hasMoreElements()) {
- Log4JAppenderAccessor appender = wrapAppender(e.nextElement());
- if (appender != null) {
- appenders.add(appender);
- }
- }
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getAllAppenders() failed", e);
- }
- return appenders;
- }
-
- public Log4JAppenderAccessor getAppender(String name) {
- try {
- Object appender = MethodUtils.invokeMethod(getTarget(), "getAppender", name);
- return wrapAppender(appender);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getAppender() failed", e);
- }
- return null;
- }
-
- public boolean isContext() {
- return context;
- }
-
- public void setContext(boolean context) {
- this.context = context;
- }
-
- public boolean isRoot() {
- return "root".equals(getName()) && "org.apache.log4j.spi.RootLogger".equals(getTargetClass());
- }
-
- public String getName() {
- return (String) getProperty(getTarget(), "name", null);
- }
-
- public String getLevel() {
- try {
- Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
- return (String) MethodUtils.invokeMethod(level, "toString", null);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getLevel() failed", e);
- }
- return null;
- }
-
- public void setLevel(String newLevelStr) {
- try {
- Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
- Object newLevel = MethodUtils.invokeMethod(level, "toLevel", newLevelStr);
- MethodUtils.invokeMethod(getTarget(), "setLevel", newLevel);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#setLevel(\"" + newLevelStr + "\") failed", e);
- }
- }
-
- private Log4JAppenderAccessor wrapAppender(Object appender) {
- try {
- if (appender == null) {
- throw new IllegalArgumentException("appender is null");
- }
- Log4JAppenderAccessor appenderAccessor = new Log4JAppenderAccessor();
- appenderAccessor.setTarget(appender);
- appenderAccessor.setLoggerAccessor(this);
- appenderAccessor.setApplication(getApplication());
- return appenderAccessor;
- } catch (Exception e) {
- log.error("Could not wrap appender: " + appender, e);
- }
- return null;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.log4j;
+
+import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
+
+import org.apache.commons.beanutils.MethodUtils;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Log4JLoggerAccessor extends DefaultAccessor {
+
+ private boolean context = false;
+
+ public List getAppenders() {
+ List appenders = new ArrayList();
+ try {
+ Enumeration e = (Enumeration) MethodUtils.invokeMethod(getTarget(), "getAllAppenders", null);
+ while (e.hasMoreElements()) {
+ Log4JAppenderAccessor appender = wrapAppender(e.nextElement());
+ if (appender != null) {
+ appenders.add(appender);
+ }
+ }
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getAllAppenders() failed", e);
+ }
+ return appenders;
+ }
+
+ public Log4JAppenderAccessor getAppender(String name) {
+ try {
+ Object appender = MethodUtils.invokeMethod(getTarget(), "getAppender", name);
+ return wrapAppender(appender);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getAppender() failed", e);
+ }
+ return null;
+ }
+
+ public boolean isContext() {
+ return context;
+ }
+
+ public void setContext(boolean context) {
+ this.context = context;
+ }
+
+ public boolean isRoot() {
+ return "root".equals(getName()) && "org.apache.log4j.spi.RootLogger".equals(getTargetClass());
+ }
+
+ public String getName() {
+ return (String) getProperty(getTarget(), "name", null);
+ }
+
+ public String getLevel() {
+ try {
+ Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
+ return (String) MethodUtils.invokeMethod(level, "toString", null);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getLevel() failed", e);
+ }
+ return null;
+ }
+
+ public void setLevel(String newLevelStr) {
+ try {
+ Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
+ Object newLevel = MethodUtils.invokeMethod(level, "toLevel", newLevelStr);
+ MethodUtils.invokeMethod(getTarget(), "setLevel", newLevel);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#setLevel(\"" + newLevelStr + "\") failed", e);
+ }
+ }
+
+ private Log4JAppenderAccessor wrapAppender(Object appender) {
+ try {
+ if (appender == null) {
+ throw new IllegalArgumentException("appender is null");
+ }
+ Log4JAppenderAccessor appenderAccessor = new Log4JAppenderAccessor();
+ appenderAccessor.setTarget(appender);
+ appenderAccessor.setLoggerAccessor(this);
+ appenderAccessor.setApplication(getApplication());
+ return appenderAccessor;
+ } catch (Exception e) {
+ log.error("Could not wrap appender: " + appender, e);
+ }
+ return null;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JManagerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JManagerAccessor.java
index 6a7ddd6235..3bcb66f413 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JManagerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/log4j/Log4JManagerAccessor.java
@@ -1,97 +1,97 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.log4j;
-
-import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Log4JManagerAccessor extends DefaultAccessor {
-
- public Log4JManagerAccessor(ClassLoader cl) throws ClassNotFoundException {
- Class clazz = cl.loadClass("org.apache.log4j.LogManager");
- Method m = MethodUtils.getAccessibleMethod(clazz, "exists", new Class[] {String.class});
- if (m == null) {
- throw new RuntimeException("The LogManager is part of the slf4j bridge.");
- }
- setTarget(clazz);
- }
-
- public Log4JLoggerAccessor getRootLogger() {
- try {
- Class clazz = (Class) getTarget();
- Method m = MethodUtils.getAccessibleMethod(clazz, "getRootLogger", new Class[] {});
- Object logger = m.invoke(null, null);
- if (logger == null) {
- throw new NullPointerException(getTarget().getClass().getName()
- + "#getRootLogger() returned null");
- }
- Log4JLoggerAccessor accessor = new Log4JLoggerAccessor();
- accessor.setTarget(logger);
- accessor.setApplication(getApplication());
- return accessor;
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getRootLogger() failed", e);
- }
- return null;
- }
-
- public Log4JLoggerAccessor getLogger(String name) {
- try {
- Class clazz = (Class) getTarget();
- Method m = MethodUtils.getAccessibleMethod(clazz, "getLogger", new Class[] {String.class});
- Object logger = m.invoke(null, new Object[] {name});
- if (logger == null) {
- throw new NullPointerException(getTarget().getClass().getName() + "#getLogger(\"" + name
- + "\") returned null");
- }
- Log4JLoggerAccessor accessor = new Log4JLoggerAccessor();
- accessor.setTarget(logger);
- accessor.setApplication(getApplication());
- return accessor;
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getLogger(\"" + name + "\") failed", e);
- }
- return null;
- }
-
- public List getAppenders() {
- List appenders = new ArrayList();
- try {
- appenders.addAll(getRootLogger().getAppenders());
-
- Class clazz = (Class) getTarget();
- Method m = MethodUtils.getAccessibleMethod(clazz, "getCurrentLoggers", new Class[] {});
- Enumeration e = (Enumeration) m.invoke(null, null);
- while (e.hasMoreElements()) {
- Log4JLoggerAccessor accessor = new Log4JLoggerAccessor();
- accessor.setTarget(e.nextElement());
- accessor.setApplication(getApplication());
-
- appenders.addAll(accessor.getAppenders());
- }
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getCurrentLoggers() failed", e);
- }
- return appenders;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.log4j;
+
+import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
+
+import org.apache.commons.beanutils.MethodUtils;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Log4JManagerAccessor extends DefaultAccessor {
+
+ public Log4JManagerAccessor(ClassLoader cl) throws ClassNotFoundException {
+ Class clazz = cl.loadClass("org.apache.log4j.LogManager");
+ Method m = MethodUtils.getAccessibleMethod(clazz, "exists", new Class[] {String.class});
+ if (m == null) {
+ throw new RuntimeException("The LogManager is part of the slf4j bridge.");
+ }
+ setTarget(clazz);
+ }
+
+ public Log4JLoggerAccessor getRootLogger() {
+ try {
+ Class clazz = (Class) getTarget();
+ Method m = MethodUtils.getAccessibleMethod(clazz, "getRootLogger", new Class[] {});
+ Object logger = m.invoke(null, null);
+ if (logger == null) {
+ throw new NullPointerException(getTarget().getClass().getName()
+ + "#getRootLogger() returned null");
+ }
+ Log4JLoggerAccessor accessor = new Log4JLoggerAccessor();
+ accessor.setTarget(logger);
+ accessor.setApplication(getApplication());
+ return accessor;
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getRootLogger() failed", e);
+ }
+ return null;
+ }
+
+ public Log4JLoggerAccessor getLogger(String name) {
+ try {
+ Class clazz = (Class) getTarget();
+ Method m = MethodUtils.getAccessibleMethod(clazz, "getLogger", new Class[] {String.class});
+ Object logger = m.invoke(null, new Object[] {name});
+ if (logger == null) {
+ throw new NullPointerException(getTarget().getClass().getName() + "#getLogger(\"" + name
+ + "\") returned null");
+ }
+ Log4JLoggerAccessor accessor = new Log4JLoggerAccessor();
+ accessor.setTarget(logger);
+ accessor.setApplication(getApplication());
+ return accessor;
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getLogger(\"" + name + "\") failed", e);
+ }
+ return null;
+ }
+
+ public List getAppenders() {
+ List appenders = new ArrayList();
+ try {
+ appenders.addAll(getRootLogger().getAppenders());
+
+ Class clazz = (Class) getTarget();
+ Method m = MethodUtils.getAccessibleMethod(clazz, "getCurrentLoggers", new Class[] {});
+ Enumeration e = (Enumeration) m.invoke(null, null);
+ while (e.hasMoreElements()) {
+ Log4JLoggerAccessor accessor = new Log4JLoggerAccessor();
+ accessor.setTarget(e.nextElement());
+ accessor.setApplication(getApplication());
+
+ appenders.addAll(accessor.getAppenders());
+ }
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getCurrentLoggers() failed", e);
+ }
+ return appenders;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackAppenderAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackAppenderAccessor.java
index 4805f371a5..c863d57e90 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackAppenderAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackAppenderAccessor.java
@@ -1,103 +1,103 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.logback;
-
-import com.googlecode.psiprobe.tools.logging.AbstractLogDestination;
-
-import java.io.File;
-
-/**
- * A wrapper for a Logback appender for a specific logger.
- *
- * @author Harald Wellmann
- */
-public class LogbackAppenderAccessor extends AbstractLogDestination {
-
- private LogbackLoggerAccessor loggerAccessor;
-
- public LogbackLoggerAccessor getLoggerAccessor() {
- return loggerAccessor;
- }
-
- public void setLoggerAccessor(LogbackLoggerAccessor loggerAccessor) {
- this.loggerAccessor = loggerAccessor;
- }
-
- public boolean isContext() {
- return getLoggerAccessor().isContext();
- }
-
- public boolean isRoot() {
- return getLoggerAccessor().isRoot();
- }
-
- public String getName() {
- return getLoggerAccessor().getName();
- }
-
- /**
- * Returns the log type, to distinguish logback appenders from other types like log4j appenders or
- * jdk handlers.
- *
- * @return the log type
- */
- public String getLogType() {
- return "logback";
- }
-
- /**
- * Returns the name of this appender.
- *
- * @return the name of this appender.
- */
- public String getIndex() {
- return (String) getProperty(getTarget(), "name", null);
- }
-
- /**
- * Returns the file that this appender writes to by accessing the {@code file} bean property of
- * the appender.
- *
- *
- * If no such property exists, we assume the appender to write to stdout or stderr so the output
- * will be contained in catalina.out.
- *
- *
- * @return the file this appender writes to
- */
- public File getFile() {
- String fileName = (String) getProperty(getTarget(), "file", null);
- return fileName != null ? new File(fileName) : getStdoutFile();
- }
-
- /**
- * Gets the level of the associated logger.
- *
- * @return the logger's level
- */
- public String getLevel() {
- return getLoggerAccessor().getLevel();
- }
-
- /**
- * Returns the valid log level names.
- *
- *
- * Note that Logback has no FATAL level.
- *
- *
- * @return the valid log level names
- */
- public String[] getValidLevels() {
- return new String[] {"OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE", "ALL"};
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.logback;
+
+import com.googlecode.psiprobe.tools.logging.AbstractLogDestination;
+
+import java.io.File;
+
+/**
+ * A wrapper for a Logback appender for a specific logger.
+ *
+ * @author Harald Wellmann
+ */
+public class LogbackAppenderAccessor extends AbstractLogDestination {
+
+ private LogbackLoggerAccessor loggerAccessor;
+
+ public LogbackLoggerAccessor getLoggerAccessor() {
+ return loggerAccessor;
+ }
+
+ public void setLoggerAccessor(LogbackLoggerAccessor loggerAccessor) {
+ this.loggerAccessor = loggerAccessor;
+ }
+
+ public boolean isContext() {
+ return getLoggerAccessor().isContext();
+ }
+
+ public boolean isRoot() {
+ return getLoggerAccessor().isRoot();
+ }
+
+ public String getName() {
+ return getLoggerAccessor().getName();
+ }
+
+ /**
+ * Returns the log type, to distinguish logback appenders from other types like log4j appenders or
+ * jdk handlers.
+ *
+ * @return the log type
+ */
+ public String getLogType() {
+ return "logback";
+ }
+
+ /**
+ * Returns the name of this appender.
+ *
+ * @return the name of this appender.
+ */
+ public String getIndex() {
+ return (String) getProperty(getTarget(), "name", null);
+ }
+
+ /**
+ * Returns the file that this appender writes to by accessing the {@code file} bean property of
+ * the appender.
+ *
+ *
+ * If no such property exists, we assume the appender to write to stdout or stderr so the output
+ * will be contained in catalina.out.
+ *
+ *
+ * @return the file this appender writes to
+ */
+ public File getFile() {
+ String fileName = (String) getProperty(getTarget(), "file", null);
+ return fileName != null ? new File(fileName) : getStdoutFile();
+ }
+
+ /**
+ * Gets the level of the associated logger.
+ *
+ * @return the logger's level
+ */
+ public String getLevel() {
+ return getLoggerAccessor().getLevel();
+ }
+
+ /**
+ * Returns the valid log level names.
+ *
+ *
+ * Note that Logback has no FATAL level.
+ *
+ *
+ * @return the valid log level names
+ */
+ public String[] getValidLevels() {
+ return new String[] {"OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE", "ALL"};
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackFactoryAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackFactoryAccessor.java
index 7c60f3550b..55191ded5a 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackFactoryAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackFactoryAccessor.java
@@ -1,121 +1,121 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.logback;
-
-import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Wraps a Logback logger factory from a given web application class loader.
- *
- *
- * All Logback classes are loaded via the given class loader and not via psi-probe's own class
- * loader. For this reasons, all methods on Logback objects are invoked via reflection.
- *
- *
- * This way, we can even handle different versions of Logback embedded in different WARs.
- *
- *
- * @author Harald Wellmann
- */
-public class LogbackFactoryAccessor extends DefaultAccessor {
-
- /**
- * Attempts to initialize a Logback logger factory via the given class loader.
- *
- * @param cl the ClassLoader to use when fetching the factory
- */
- public LogbackFactoryAccessor(ClassLoader cl) throws ClassNotFoundException,
- IllegalAccessException, IllegalArgumentException, InvocationTargetException {
-
- // Get the singleton SLF4J binding, which may or may not be Logback, depending on the binding.
- Class clazz = cl.loadClass("org.slf4j.impl.StaticLoggerBinder");
- Method m1 = MethodUtils.getAccessibleMethod(clazz, "getSingleton", new Class[] {});
- Object singleton = m1.invoke(null, null);
- Method m = MethodUtils.getAccessibleMethod(clazz, "getLoggerFactory", new Class[] {});
- Object loggerFactory = m.invoke(singleton, null);
-
- // Check if the binding is indeed Logback
- Class loggerFactoryClass = cl.loadClass("ch.qos.logback.classic.LoggerContext");
- if (!loggerFactoryClass.isInstance(loggerFactory)) {
- throw new RuntimeException("The singleton SLF4J binding was not Logback");
- }
- setTarget(loggerFactory);
- }
-
- /**
- * Returns the Logback root logger.
- *
- * @return the root logger
- */
- public LogbackLoggerAccessor getRootLogger() {
- // Logback has no dedicated getRootLogger() method, so we simply access the root logger
- // by its well-defined name.
- return getLogger("ROOT");
- }
-
- /**
- * Returns the Logback logger with a given name.
- *
- * @return the Logger with the given name
- */
- public LogbackLoggerAccessor getLogger(String name) {
- try {
- Class clazz = getTarget().getClass();
- Method m = MethodUtils.getAccessibleMethod(clazz, "getLogger", new Class[] {String.class});
- Object logger = m.invoke(getTarget(), new Object[] {name});
- if (logger == null) {
- throw new NullPointerException(getTarget() + ".getLogger(\"" + name + "\") returned null");
- }
- LogbackLoggerAccessor accessor = new LogbackLoggerAccessor();
- accessor.setTarget(logger);
- accessor.setApplication(getApplication());
- return accessor;
-
- } catch (Exception e) {
- log.error(getTarget() + ".getLogger(\"" + name + "\") failed", e);
- }
- return null;
- }
-
- /**
- * Returns a list of wrappers for all Logback appenders that have an associated logger.
- *
- * @return a list of {@link LogbackAppenderAccessor}s representing all appenders that are in use
- */
- public List getAppenders() {
- List appenders = new ArrayList();
- try {
- Class clazz = getTarget().getClass();
- Method m = MethodUtils.getAccessibleMethod(clazz, "getLoggerList", new Class[] {});
- List loggers = (List) m.invoke(getTarget(), null);
- Iterator it = loggers.iterator();
- while (it.hasNext()) {
- LogbackLoggerAccessor accessor = new LogbackLoggerAccessor();
- accessor.setTarget(it.next());
- accessor.setApplication(getApplication());
-
- appenders.addAll(accessor.getAppenders());
- }
- } catch (Exception e) {
- log.error(getTarget() + ".getLoggerList() failed", e);
- }
- return appenders;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.logback;
+
+import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
+
+import org.apache.commons.beanutils.MethodUtils;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Wraps a Logback logger factory from a given web application class loader.
+ *
+ *
+ * All Logback classes are loaded via the given class loader and not via psi-probe's own class
+ * loader. For this reasons, all methods on Logback objects are invoked via reflection.
+ *
+ *
+ * This way, we can even handle different versions of Logback embedded in different WARs.
+ *
+ *
+ * @author Harald Wellmann
+ */
+public class LogbackFactoryAccessor extends DefaultAccessor {
+
+ /**
+ * Attempts to initialize a Logback logger factory via the given class loader.
+ *
+ * @param cl the ClassLoader to use when fetching the factory
+ */
+ public LogbackFactoryAccessor(ClassLoader cl) throws ClassNotFoundException,
+ IllegalAccessException, IllegalArgumentException, InvocationTargetException {
+
+ // Get the singleton SLF4J binding, which may or may not be Logback, depending on the binding.
+ Class clazz = cl.loadClass("org.slf4j.impl.StaticLoggerBinder");
+ Method m1 = MethodUtils.getAccessibleMethod(clazz, "getSingleton", new Class[] {});
+ Object singleton = m1.invoke(null, null);
+ Method m = MethodUtils.getAccessibleMethod(clazz, "getLoggerFactory", new Class[] {});
+ Object loggerFactory = m.invoke(singleton, null);
+
+ // Check if the binding is indeed Logback
+ Class loggerFactoryClass = cl.loadClass("ch.qos.logback.classic.LoggerContext");
+ if (!loggerFactoryClass.isInstance(loggerFactory)) {
+ throw new RuntimeException("The singleton SLF4J binding was not Logback");
+ }
+ setTarget(loggerFactory);
+ }
+
+ /**
+ * Returns the Logback root logger.
+ *
+ * @return the root logger
+ */
+ public LogbackLoggerAccessor getRootLogger() {
+ // Logback has no dedicated getRootLogger() method, so we simply access the root logger
+ // by its well-defined name.
+ return getLogger("ROOT");
+ }
+
+ /**
+ * Returns the Logback logger with a given name.
+ *
+ * @return the Logger with the given name
+ */
+ public LogbackLoggerAccessor getLogger(String name) {
+ try {
+ Class clazz = getTarget().getClass();
+ Method m = MethodUtils.getAccessibleMethod(clazz, "getLogger", new Class[] {String.class});
+ Object logger = m.invoke(getTarget(), new Object[] {name});
+ if (logger == null) {
+ throw new NullPointerException(getTarget() + ".getLogger(\"" + name + "\") returned null");
+ }
+ LogbackLoggerAccessor accessor = new LogbackLoggerAccessor();
+ accessor.setTarget(logger);
+ accessor.setApplication(getApplication());
+ return accessor;
+
+ } catch (Exception e) {
+ log.error(getTarget() + ".getLogger(\"" + name + "\") failed", e);
+ }
+ return null;
+ }
+
+ /**
+ * Returns a list of wrappers for all Logback appenders that have an associated logger.
+ *
+ * @return a list of {@link LogbackAppenderAccessor}s representing all appenders that are in use
+ */
+ public List getAppenders() {
+ List appenders = new ArrayList();
+ try {
+ Class clazz = getTarget().getClass();
+ Method m = MethodUtils.getAccessibleMethod(clazz, "getLoggerList", new Class[] {});
+ List loggers = (List) m.invoke(getTarget(), null);
+ Iterator it = loggers.iterator();
+ while (it.hasNext()) {
+ LogbackLoggerAccessor accessor = new LogbackLoggerAccessor();
+ accessor.setTarget(it.next());
+ accessor.setApplication(getApplication());
+
+ appenders.addAll(accessor.getAppenders());
+ }
+ } catch (Exception e) {
+ log.error(getTarget() + ".getLoggerList() failed", e);
+ }
+ return appenders;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackLoggerAccessor.java b/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackLoggerAccessor.java
index d3fccfcec2..e3620922f1 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackLoggerAccessor.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/logging/logback/LogbackLoggerAccessor.java
@@ -1,159 +1,159 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.logging.logback;
-
-import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
-
-import org.apache.commons.beanutils.MethodUtils;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A wrapper for a Logback logger.
- *
- * @author Harald Wellmann
- * @author Mark Lewis
- */
-public class LogbackLoggerAccessor extends DefaultAccessor {
-
- /**
- * Returns all appenders of this logger.
- *
- * @return a list of {@link LogbackAppenderAccessor}s
- */
- public List getAppenders() {
- List appenders = new ArrayList();
- try {
- Iterator it = (Iterator) MethodUtils.invokeMethod(getTarget(), "iteratorForAppenders", null);
- while (it.hasNext()) {
- Object appender = it.next();
- List siftedAppenders = getSiftedAppenders(appender);
- if (siftedAppenders != null) {
- for (int i = 0; i < siftedAppenders.size(); i++) {
- Object siftedAppender = siftedAppenders.get(i);
- wrapAndAddAppender(siftedAppender, appenders);
- }
- } else {
- wrapAndAddAppender(appender, appenders);
- }
- }
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getAppenders() failed", e);
- }
- return appenders;
- }
-
- /**
- * Returns the appender of this logger with the given name.
- *
- * @param name the name of the appender to return
- * @return the appender with the given name, or null if no such appender exists for this logger
- */
- public LogbackAppenderAccessor getAppender(String name) {
- try {
- Object appender = MethodUtils.invokeMethod(getTarget(), "getAppender", name);
- if (appender == null) {
- List appenders = getAppenders();
- for (int i = 0; i < appenders.size(); i++) {
- LogbackAppenderAccessor wrappedAppender = (LogbackAppenderAccessor) appenders.get(i);
- if (wrappedAppender.getIndex().equals(name)) {
- return wrappedAppender;
- }
- }
- }
- return wrapAppender(appender);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getAppender() failed", e);
- }
- return null;
- }
-
- public boolean isContext() {
- return false;
- }
-
- public boolean isRoot() {
- return "ROOT".equals(getName());
- }
-
- public String getName() {
- return (String) getProperty(getTarget(), "name", null);
- }
-
- /**
- * Gets the log level of this logger.
- *
- * @return the level of this logger
- */
- public String getLevel() {
- try {
- Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
- return (String) MethodUtils.invokeMethod(level, "toString", null);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#getLevel() failed", e);
- }
- return null;
- }
-
- /**
- * Sets the log level of this logger.
- *
- * @param newLevelStr the name of the new level
- */
- public void setLevel(String newLevelStr) {
- try {
- Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
- Object newLevel = MethodUtils.invokeMethod(level, "toLevel", newLevelStr);
- MethodUtils.invokeMethod(getTarget(), "setLevel", newLevel);
- } catch (Exception e) {
- log.error(getTarget().getClass().getName() + "#setLevel(\"" + newLevelStr + "\") failed", e);
- }
- }
-
- private List getSiftedAppenders(Object appender) throws Exception {
- if ("ch.qos.logback.classic.sift.SiftingAppender".equals(appender.getClass().getName())) {
- Object tracker = MethodUtils.invokeMethod(appender, "getAppenderTracker", null);
- if (tracker != null) {
- return (List) MethodUtils.invokeMethod(tracker, "valueList", null);
- } else {
- return new ArrayList();
- }
- } else {
- return null;
- }
- }
-
- private void wrapAndAddAppender(Object appender, List appenders) {
- LogbackAppenderAccessor appenderAccessor = wrapAppender(appender);
- if (appenderAccessor != null) {
- appenders.add(appenderAccessor);
- }
- }
-
- private LogbackAppenderAccessor wrapAppender(Object appender) {
- try {
- if (appender == null) {
- throw new IllegalArgumentException("appender is null");
- }
- LogbackAppenderAccessor appenderAccessor = new LogbackAppenderAccessor();
- appenderAccessor.setTarget(appender);
- appenderAccessor.setLoggerAccessor(this);
- appenderAccessor.setApplication(getApplication());
- return appenderAccessor;
- } catch (Exception e) {
- log.error("Could not wrap appender: " + appender, e);
- }
- return null;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.logging.logback;
+
+import com.googlecode.psiprobe.tools.logging.DefaultAccessor;
+
+import org.apache.commons.beanutils.MethodUtils;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * A wrapper for a Logback logger.
+ *
+ * @author Harald Wellmann
+ * @author Mark Lewis
+ */
+public class LogbackLoggerAccessor extends DefaultAccessor {
+
+ /**
+ * Returns all appenders of this logger.
+ *
+ * @return a list of {@link LogbackAppenderAccessor}s
+ */
+ public List getAppenders() {
+ List appenders = new ArrayList();
+ try {
+ Iterator it = (Iterator) MethodUtils.invokeMethod(getTarget(), "iteratorForAppenders", null);
+ while (it.hasNext()) {
+ Object appender = it.next();
+ List siftedAppenders = getSiftedAppenders(appender);
+ if (siftedAppenders != null) {
+ for (int i = 0; i < siftedAppenders.size(); i++) {
+ Object siftedAppender = siftedAppenders.get(i);
+ wrapAndAddAppender(siftedAppender, appenders);
+ }
+ } else {
+ wrapAndAddAppender(appender, appenders);
+ }
+ }
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getAppenders() failed", e);
+ }
+ return appenders;
+ }
+
+ /**
+ * Returns the appender of this logger with the given name.
+ *
+ * @param name the name of the appender to return
+ * @return the appender with the given name, or null if no such appender exists for this logger
+ */
+ public LogbackAppenderAccessor getAppender(String name) {
+ try {
+ Object appender = MethodUtils.invokeMethod(getTarget(), "getAppender", name);
+ if (appender == null) {
+ List appenders = getAppenders();
+ for (int i = 0; i < appenders.size(); i++) {
+ LogbackAppenderAccessor wrappedAppender = (LogbackAppenderAccessor) appenders.get(i);
+ if (wrappedAppender.getIndex().equals(name)) {
+ return wrappedAppender;
+ }
+ }
+ }
+ return wrapAppender(appender);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getAppender() failed", e);
+ }
+ return null;
+ }
+
+ public boolean isContext() {
+ return false;
+ }
+
+ public boolean isRoot() {
+ return "ROOT".equals(getName());
+ }
+
+ public String getName() {
+ return (String) getProperty(getTarget(), "name", null);
+ }
+
+ /**
+ * Gets the log level of this logger.
+ *
+ * @return the level of this logger
+ */
+ public String getLevel() {
+ try {
+ Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
+ return (String) MethodUtils.invokeMethod(level, "toString", null);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#getLevel() failed", e);
+ }
+ return null;
+ }
+
+ /**
+ * Sets the log level of this logger.
+ *
+ * @param newLevelStr the name of the new level
+ */
+ public void setLevel(String newLevelStr) {
+ try {
+ Object level = MethodUtils.invokeMethod(getTarget(), "getLevel", null);
+ Object newLevel = MethodUtils.invokeMethod(level, "toLevel", newLevelStr);
+ MethodUtils.invokeMethod(getTarget(), "setLevel", newLevel);
+ } catch (Exception e) {
+ log.error(getTarget().getClass().getName() + "#setLevel(\"" + newLevelStr + "\") failed", e);
+ }
+ }
+
+ private List getSiftedAppenders(Object appender) throws Exception {
+ if ("ch.qos.logback.classic.sift.SiftingAppender".equals(appender.getClass().getName())) {
+ Object tracker = MethodUtils.invokeMethod(appender, "getAppenderTracker", null);
+ if (tracker != null) {
+ return (List) MethodUtils.invokeMethod(tracker, "valueList", null);
+ } else {
+ return new ArrayList();
+ }
+ } else {
+ return null;
+ }
+ }
+
+ private void wrapAndAddAppender(Object appender, List appenders) {
+ LogbackAppenderAccessor appenderAccessor = wrapAppender(appender);
+ if (appenderAccessor != null) {
+ appenders.add(appenderAccessor);
+ }
+ }
+
+ private LogbackAppenderAccessor wrapAppender(Object appender) {
+ try {
+ if (appender == null) {
+ throw new IllegalArgumentException("appender is null");
+ }
+ LogbackAppenderAccessor appenderAccessor = new LogbackAppenderAccessor();
+ appenderAccessor.setTarget(appender);
+ appenderAccessor.setLoggerAccessor(this);
+ appenderAccessor.setApplication(getApplication());
+ return appenderAccessor;
+ } catch (Exception e) {
+ log.error("Could not wrap appender: " + appender, e);
+ }
+ return null;
+ }
+
+}
diff --git a/core/src/main/java/com/googlecode/psiprobe/tools/url/URLParser.java b/core/src/main/java/com/googlecode/psiprobe/tools/url/URLParser.java
index 30f3d6f982..ce91adc141 100644
--- a/core/src/main/java/com/googlecode/psiprobe/tools/url/URLParser.java
+++ b/core/src/main/java/com/googlecode/psiprobe/tools/url/URLParser.java
@@ -1,95 +1,95 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools.url;
-
-import java.net.MalformedURLException;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class URLParser {
-
- private String protocol = null;
- private String host = null;
- private int port = -1;
- private String path = null;
-
- public URLParser(String url) throws MalformedURLException {
- if (url != null && url.length() > 0) {
- int ppos = url.indexOf("://");
-
- // get protocol first
- if (ppos >= 0) {
- protocol = url.substring(0, ppos);
- url = url.substring(ppos + 3);
- }
-
- String hostport;
-
- ppos = url.indexOf("/");
- if (ppos >= 0) {
- hostport = url.substring(0, ppos);
- path = url.substring(ppos + 1);
- } else {
- hostport = url;
- }
-
- ppos = hostport.indexOf(":");
- if (ppos >= 0) {
- host = hostport.substring(0, ppos);
- String port = hostport.substring(ppos + 1);
- try {
- this.port = Integer.parseInt(port);
- } catch (NumberFormatException e) {
- throw new MalformedURLException("Invalid port " + port);
- }
- } else {
- host = hostport;
- }
- } else {
- throw new MalformedURLException("Empty URL");
- }
- }
-
- public String getProtocol() {
- return protocol;
- }
-
- public void setProtocol(String protocol) {
- this.protocol = protocol;
- }
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public String getPath() {
- return path;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools.url;
+
+import java.net.MalformedURLException;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class URLParser {
+
+ private String protocol = null;
+ private String host = null;
+ private int port = -1;
+ private String path = null;
+
+ public URLParser(String url) throws MalformedURLException {
+ if (url != null && url.length() > 0) {
+ int ppos = url.indexOf("://");
+
+ // get protocol first
+ if (ppos >= 0) {
+ protocol = url.substring(0, ppos);
+ url = url.substring(ppos + 3);
+ }
+
+ String hostport;
+
+ ppos = url.indexOf("/");
+ if (ppos >= 0) {
+ hostport = url.substring(0, ppos);
+ path = url.substring(ppos + 1);
+ } else {
+ hostport = url;
+ }
+
+ ppos = hostport.indexOf(":");
+ if (ppos >= 0) {
+ host = hostport.substring(0, ppos);
+ String port = hostport.substring(ppos + 1);
+ try {
+ this.port = Integer.parseInt(port);
+ } catch (NumberFormatException e) {
+ throw new MalformedURLException("Invalid port " + port);
+ }
+ } else {
+ host = hostport;
+ }
+ } else {
+ throw new MalformedURLException("Empty URL");
+ }
+ }
+
+ public String getProtocol() {
+ return protocol;
+ }
+
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+}
diff --git a/core/src/test/java/com/googlecode/psiprobe/tools/SizeExpressionTests.java b/core/src/test/java/com/googlecode/psiprobe/tools/SizeExpressionTests.java
index 20ce210477..641252e36c 100644
--- a/core/src/test/java/com/googlecode/psiprobe/tools/SizeExpressionTests.java
+++ b/core/src/test/java/com/googlecode/psiprobe/tools/SizeExpressionTests.java
@@ -1,139 +1,139 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.tools;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.Locale;
-
-/**
- *
- * @author Mark Lewis
- */
-public class SizeExpressionTests {
-
- private Locale defaultLocale;
-
- @Before
- public void setUp() throws Exception {
- this.defaultLocale = Locale.getDefault();
- Locale.setDefault(Locale.US);
- }
-
- @After
- public void tearDown() throws Exception {
- Locale.setDefault(defaultLocale);
- }
-
- @Test
- public void testFormatNoDecimalBase2() {
- Assert.assertEquals("1 B", SizeExpression.format(1, 0, true));
- Assert.assertEquals("10 B", SizeExpression.format(10, 0, true));
- Assert.assertEquals("100 B", SizeExpression.format(100, 0, true));
- Assert.assertEquals("1,000 B", SizeExpression.format(1000, 0, true));
- Assert.assertEquals("1,023 B", SizeExpression.format(1023, 0, true));
- Assert.assertEquals("1 KB", SizeExpression.format(1024, 0, true));
- Assert.assertEquals("10 KB", SizeExpression.format(10240, 0, true));
- Assert.assertEquals("10 KB", SizeExpression.format(10250, 0, true));
- }
-
- @Test
- public void testFormatNoDecimalBase10() {
- Assert.assertEquals("1", SizeExpression.format(1, 0, false));
- Assert.assertEquals("10", SizeExpression.format(10, 0, false));
- Assert.assertEquals("100", SizeExpression.format(100, 0, false));
- Assert.assertEquals("1K", SizeExpression.format(1000, 0, false));
- Assert.assertEquals("1K", SizeExpression.format(1023, 0, false));
- Assert.assertEquals("1K", SizeExpression.format(1024, 0, false));
- Assert.assertEquals("10K", SizeExpression.format(10240, 0, false));
- Assert.assertEquals("10K", SizeExpression.format(10250, 0, false));
- }
-
- @Test
- public void testFormatOneDecimalBase2() {
- Assert.assertEquals("1 B", SizeExpression.format(1, 1, true));
- Assert.assertEquals("10 B", SizeExpression.format(10, 1, true));
- Assert.assertEquals("100 B", SizeExpression.format(100, 1, true));
- Assert.assertEquals("1,000 B", SizeExpression.format(1000, 1, true));
- Assert.assertEquals("1,023 B", SizeExpression.format(1023, 1, true));
- Assert.assertEquals("1.0 KB", SizeExpression.format(1024, 1, true));
- Assert.assertEquals("10.0 KB", SizeExpression.format(10240, 1, true));
- Assert.assertEquals("10.0 KB", SizeExpression.format(10250, 1, true));
- }
-
- @Test
- public void testFormatOneDecimalBase10() {
- Assert.assertEquals("1", SizeExpression.format(1, 1, false));
- Assert.assertEquals("10", SizeExpression.format(10, 1, false));
- Assert.assertEquals("100", SizeExpression.format(100, 1, false));
- Assert.assertEquals("1.0K", SizeExpression.format(1000, 1, false));
- Assert.assertEquals("1.0K", SizeExpression.format(1023, 1, false));
- Assert.assertEquals("1.0K", SizeExpression.format(1024, 1, false));
- Assert.assertEquals("10.2K", SizeExpression.format(10240, 1, false));
- Assert.assertEquals("10.3K", SizeExpression.format(10250, 1, false));
- }
-
- @Test
- public void testFormatAllPrefixesBase2() {
- Assert.assertEquals("1 B", SizeExpression.format(1, 0, true));
- Assert.assertEquals("1 KB", SizeExpression.format(1024, 0, true));
- Assert.assertEquals("1 MB", SizeExpression.format(1048576, 0, true));
- Assert.assertEquals("1 GB", SizeExpression.format(1073741824, 0, true));
- Assert.assertEquals("1 TB", SizeExpression.format(1099511627776L, 0, true));
- Assert.assertEquals("1 PB", SizeExpression.format(1125899906842624L, 0, true));
- }
-
- @Test
- public void testFormatAllPrefixesBase10() {
- Assert.assertEquals("1", SizeExpression.format(1, 0, false));
- Assert.assertEquals("1K", SizeExpression.format(1000, 0, false));
- Assert.assertEquals("1M", SizeExpression.format(1000000, 0, false));
- Assert.assertEquals("1G", SizeExpression.format(1000000000, 0, false));
- Assert.assertEquals("1T", SizeExpression.format(1000000000000L, 0, false));
- Assert.assertEquals("1P", SizeExpression.format(1000000000000000L, 0, false));
- }
-
- @Test
- public void testParseWithUnit() {
- Assert.assertEquals(1, SizeExpression.parse("1B"));
- Assert.assertEquals(10, SizeExpression.parse("10B"));
- Assert.assertEquals(100, SizeExpression.parse("100B"));
- Assert.assertEquals(1000, SizeExpression.parse("1000B"));
- Assert.assertEquals(1023, SizeExpression.parse("1023B"));
- Assert.assertEquals(1024, SizeExpression.parse("1024B"));
- Assert.assertEquals(1024, SizeExpression.parse("1.0KB"));
- Assert.assertEquals(1024, SizeExpression.parse("1KB"));
- Assert.assertEquals(1048576, SizeExpression.parse("1MB"));
- Assert.assertEquals(1073741824, SizeExpression.parse("1GB"));
- Assert.assertEquals(1099511627776L, SizeExpression.parse("1TB"));
- Assert.assertEquals(1125899906842624L, SizeExpression.parse("1PB"));
- }
-
- @Test
- public void testParseWithoutUnit() {
- Assert.assertEquals(1, SizeExpression.parse("1"));
- Assert.assertEquals(10, SizeExpression.parse("10"));
- Assert.assertEquals(100, SizeExpression.parse("100"));
- Assert.assertEquals(1000, SizeExpression.parse("1000"));
- Assert.assertEquals(1023, SizeExpression.parse("1023"));
- Assert.assertEquals(1024, SizeExpression.parse("1024"));
- Assert.assertEquals(1000, SizeExpression.parse("1.0K"));
- Assert.assertEquals(1000, SizeExpression.parse("1K"));
- Assert.assertEquals(1000000, SizeExpression.parse("1M"));
- Assert.assertEquals(1000000000, SizeExpression.parse("1G"));
- Assert.assertEquals(1000000000000L, SizeExpression.parse("1T"));
- Assert.assertEquals(1000000000000000L, SizeExpression.parse("1P"));
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.tools;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Locale;
+
+/**
+ *
+ * @author Mark Lewis
+ */
+public class SizeExpressionTests {
+
+ private Locale defaultLocale;
+
+ @Before
+ public void setUp() throws Exception {
+ this.defaultLocale = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ Locale.setDefault(defaultLocale);
+ }
+
+ @Test
+ public void testFormatNoDecimalBase2() {
+ Assert.assertEquals("1 B", SizeExpression.format(1, 0, true));
+ Assert.assertEquals("10 B", SizeExpression.format(10, 0, true));
+ Assert.assertEquals("100 B", SizeExpression.format(100, 0, true));
+ Assert.assertEquals("1,000 B", SizeExpression.format(1000, 0, true));
+ Assert.assertEquals("1,023 B", SizeExpression.format(1023, 0, true));
+ Assert.assertEquals("1 KB", SizeExpression.format(1024, 0, true));
+ Assert.assertEquals("10 KB", SizeExpression.format(10240, 0, true));
+ Assert.assertEquals("10 KB", SizeExpression.format(10250, 0, true));
+ }
+
+ @Test
+ public void testFormatNoDecimalBase10() {
+ Assert.assertEquals("1", SizeExpression.format(1, 0, false));
+ Assert.assertEquals("10", SizeExpression.format(10, 0, false));
+ Assert.assertEquals("100", SizeExpression.format(100, 0, false));
+ Assert.assertEquals("1K", SizeExpression.format(1000, 0, false));
+ Assert.assertEquals("1K", SizeExpression.format(1023, 0, false));
+ Assert.assertEquals("1K", SizeExpression.format(1024, 0, false));
+ Assert.assertEquals("10K", SizeExpression.format(10240, 0, false));
+ Assert.assertEquals("10K", SizeExpression.format(10250, 0, false));
+ }
+
+ @Test
+ public void testFormatOneDecimalBase2() {
+ Assert.assertEquals("1 B", SizeExpression.format(1, 1, true));
+ Assert.assertEquals("10 B", SizeExpression.format(10, 1, true));
+ Assert.assertEquals("100 B", SizeExpression.format(100, 1, true));
+ Assert.assertEquals("1,000 B", SizeExpression.format(1000, 1, true));
+ Assert.assertEquals("1,023 B", SizeExpression.format(1023, 1, true));
+ Assert.assertEquals("1.0 KB", SizeExpression.format(1024, 1, true));
+ Assert.assertEquals("10.0 KB", SizeExpression.format(10240, 1, true));
+ Assert.assertEquals("10.0 KB", SizeExpression.format(10250, 1, true));
+ }
+
+ @Test
+ public void testFormatOneDecimalBase10() {
+ Assert.assertEquals("1", SizeExpression.format(1, 1, false));
+ Assert.assertEquals("10", SizeExpression.format(10, 1, false));
+ Assert.assertEquals("100", SizeExpression.format(100, 1, false));
+ Assert.assertEquals("1.0K", SizeExpression.format(1000, 1, false));
+ Assert.assertEquals("1.0K", SizeExpression.format(1023, 1, false));
+ Assert.assertEquals("1.0K", SizeExpression.format(1024, 1, false));
+ Assert.assertEquals("10.2K", SizeExpression.format(10240, 1, false));
+ Assert.assertEquals("10.3K", SizeExpression.format(10250, 1, false));
+ }
+
+ @Test
+ public void testFormatAllPrefixesBase2() {
+ Assert.assertEquals("1 B", SizeExpression.format(1, 0, true));
+ Assert.assertEquals("1 KB", SizeExpression.format(1024, 0, true));
+ Assert.assertEquals("1 MB", SizeExpression.format(1048576, 0, true));
+ Assert.assertEquals("1 GB", SizeExpression.format(1073741824, 0, true));
+ Assert.assertEquals("1 TB", SizeExpression.format(1099511627776L, 0, true));
+ Assert.assertEquals("1 PB", SizeExpression.format(1125899906842624L, 0, true));
+ }
+
+ @Test
+ public void testFormatAllPrefixesBase10() {
+ Assert.assertEquals("1", SizeExpression.format(1, 0, false));
+ Assert.assertEquals("1K", SizeExpression.format(1000, 0, false));
+ Assert.assertEquals("1M", SizeExpression.format(1000000, 0, false));
+ Assert.assertEquals("1G", SizeExpression.format(1000000000, 0, false));
+ Assert.assertEquals("1T", SizeExpression.format(1000000000000L, 0, false));
+ Assert.assertEquals("1P", SizeExpression.format(1000000000000000L, 0, false));
+ }
+
+ @Test
+ public void testParseWithUnit() {
+ Assert.assertEquals(1, SizeExpression.parse("1B"));
+ Assert.assertEquals(10, SizeExpression.parse("10B"));
+ Assert.assertEquals(100, SizeExpression.parse("100B"));
+ Assert.assertEquals(1000, SizeExpression.parse("1000B"));
+ Assert.assertEquals(1023, SizeExpression.parse("1023B"));
+ Assert.assertEquals(1024, SizeExpression.parse("1024B"));
+ Assert.assertEquals(1024, SizeExpression.parse("1.0KB"));
+ Assert.assertEquals(1024, SizeExpression.parse("1KB"));
+ Assert.assertEquals(1048576, SizeExpression.parse("1MB"));
+ Assert.assertEquals(1073741824, SizeExpression.parse("1GB"));
+ Assert.assertEquals(1099511627776L, SizeExpression.parse("1TB"));
+ Assert.assertEquals(1125899906842624L, SizeExpression.parse("1PB"));
+ }
+
+ @Test
+ public void testParseWithoutUnit() {
+ Assert.assertEquals(1, SizeExpression.parse("1"));
+ Assert.assertEquals(10, SizeExpression.parse("10"));
+ Assert.assertEquals(100, SizeExpression.parse("100"));
+ Assert.assertEquals(1000, SizeExpression.parse("1000"));
+ Assert.assertEquals(1023, SizeExpression.parse("1023"));
+ Assert.assertEquals(1024, SizeExpression.parse("1024"));
+ Assert.assertEquals(1000, SizeExpression.parse("1.0K"));
+ Assert.assertEquals(1000, SizeExpression.parse("1K"));
+ Assert.assertEquals(1000000, SizeExpression.parse("1M"));
+ Assert.assertEquals(1000000000, SizeExpression.parse("1G"));
+ Assert.assertEquals(1000000000000L, SizeExpression.parse("1T"));
+ Assert.assertEquals(1000000000000000L, SizeExpression.parse("1P"));
+ }
+
+}
diff --git a/ojdbc14-pom.xml b/ojdbc14-pom.xml
index 3aacc2ba75..aca9d9642f 100644
--- a/ojdbc14-pom.xml
+++ b/ojdbc14-pom.xml
@@ -1,19 +1,19 @@
-
-
- 4.0.0
- com.oracle
- ojdbc14
- 10.2.0.1.0
- jar
- Oracle Database 10g Release 2 JDBC Driver
- http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html
-
-
- Oracle Technology Network Development and Distribution License
- http://www.oracle.com/technetwork/licenses/distribution-license-152002.html
- manual
-
-
+
+
+ 4.0.0
+ com.oracle
+ ojdbc14
+ 10.2.0.1.0
+ jar
+ Oracle Database 10g Release 2 JDBC Driver
+ http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html
+
+
+ Oracle Technology Network Development and Distribution License
+ http://www.oracle.com/technetwork/licenses/distribution-license-152002.html
+ manual
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 06226b0d77..0b463ffdd3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,618 +1,618 @@
-
-
- 4.0.0
- com.googlecode.psiprobe
- psi-probe
- 2.4.0-SNAPSHOT
- pom
- PSI Probe
- https://github.com/psi-probe/psi-probe/
-
- Advanced manager and monitor for Tomcat, forked from Lambda Probe
-
-
-
- GNU General Public License, version 2
- http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- manual
-
-
-
- GitHub Issues
- https://github.com/psi-probe/psi-probe/issues/
-
-
-
- PSI Probe Announcements
- psi-probe+subscribe@googlegroups.com
- psi-probe+unsubscribe@googlegroups.com
- http://groups.google.com/group/psi-probe/
-
-
- PSI Probe Discussions
- psi-probe-discuss+subscribe@googlegroups.com
- psi-probe-discuss+unsubscribe@googlegroups.com
- psi-probe-discuss@googlegroups.com
- http://groups.google.com/group/psi-probe-discuss/
-
-
-
- scm:git:ssh://git@github.com:psi-probe/psi-probe.git
- scm:git:ssh://git@github.com:psi-probe/psi-probe.git
- https://github.com/psi-probe/psi-probe/
-
-
- core
- tomcat50adaptor
- tomcat55adaptor
- tomcat60adaptor
- tomcat70adaptor
- tomcat80adaptor
- web
-
-
-
-
-
- false
- never
-
- repository.jboss.org
- repository.jboss.org
- https://repository.jboss.org/nexus/content/repositories/deprecated/
- default
-
-
-
-
- false
- never
-
- code.lds.org
- code.lds.org
- https://code.lds.org/nexus/content/repositories/main-repo/
- default
-
-
-
- 1.4
- 1.4
- 1.5
- 1.5
-
- 2015
-
- UTF-8
- UTF-8
-
-
-
-
- junit
- junit
- 4.12
-
-
- javax.servlet
- servlet-api
- 2.4
-
-
- javax.servlet
- jsp-api
- 2.0
-
-
-
- javax.servlet
- jstl
- 1.1.2
-
-
- javax.mail
- mail
- 1.4.7
-
-
- taglibs
- standard
- 1.1.2
-
-
- log4j
- log4j
- 1.2.17
-
-
-
- com.oracle
- ucp
- 11.2.0.1.0
-
-
- com.oracle
- ojdbc14
- 10.2.0.3
-
-
-
- org.apache.tomcat
- tomcat-jdbc
- 7.0.61
-
-
- org.apache.openejb
- openejb-core
- 4.7.1
-
-
-
- com.jolbox
- bonecp
- 0.8.0.RELEASE
-
-
- commons-beanutils
- commons-beanutils
- 1.8.3
-
-
- commons-collections
- commons-collections
- 3.2.1
-
-
- commons-fileupload
- commons-fileupload
- 1.2.2
-
-
- commons-io
- commons-io
- 1.4
-
-
- commons-lang
- commons-lang
- 2.6
-
-
- commons-logging
- commons-logging
- 1.2
-
-
- commons-modeler
- commons-modeler
- 2.0.1
-
-
- commons-digester
- commons-digester
-
-
- commons-logging
- commons-logging-api
-
-
-
-
- displaytag
- displaytag
- 1.2
-
-
- com.lowagie
- itext
-
-
-
-
- jaxen
- jaxen
- 1.1.6
-
-
- dom4j
- dom4j
-
-
- jdom
- jdom
-
-
- xerces
- xercesImpl
-
-
- xom
- xom
-
-
- xml-apis
- xml-apis
-
-
-
-
- org.springframework
- spring-beans
- 2.5.6.SEC03
-
-
- org.springframework
- spring-context
- 2.5.6.SEC03
-
-
- org.springframework
- spring-webmvc
- 2.5.6.SEC03
-
-
- org.springframework
- spring-tx
- 2.5.6.SEC03
-
-
- org.springframework.security
- spring-security-core
- 2.0.8.RELEASE
-
-
- org.springframework
- spring-core
-
-
- org.springframework
- spring-support
-
-
-
-
- javainetlocator
- inetaddresslocator
- 2.18
-
-
- javax.transaction
- jta
- 1.1
-
-
- opensymphony
- quartz
- 1.6.3
-
-
- opensymphony
- sitemesh
- 2.4.2
-
-
- javax.management
- jmxri
- 1.2.1
-
-
- xpp3
- xpp3_min
- 1.1.4c
-
-
- com.thoughtworks.xstream
- xstream
- 1.4.1
-
-
- com.uwyn
- jhighlight
- 1.0
-
-
- c3p0
- c3p0
- 0.9.1.2
-
-
- commons-dbcp
- commons-dbcp
- 1.3
-
-
- tanukisoft
- wrapper
- 3.2.3
-
-
- org.jfree
- jfreechart
- 1.0.15
-
-
-
-
- package
-
-
-
- org.apache.maven.plugins
- maven-site-plugin
- 3.4
-
-
- org.owasp
- dependency-check-maven
- 1.2.11
-
-
- pl.project13.maven
- git-commit-id-plugin
- 2.1.13
-
- ${git.relative.path}.git
-
-
- true
-
-
-
-
- org.apache.maven.plugins
- maven-changelog-plugin
- 2.3
-
-
- org.apache.maven.plugins
- maven-project-info-reports-plugin
- 2.8
-
-
- org.apache.maven.plugins
- maven-jxr-plugin
- 2.5
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
- 2.15
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18.1
-
-
- **/*Tests.java
-
-
- **/Abstract*.java
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-report-plugin
- 2.18.1
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.3
-
- UTF-8
-
-
-
- org.codehaus.mojo
- findbugs-maven-plugin
- 3.0.1
-
-
- org.apache.maven.plugins
- maven-pmd-plugin
- 3.4
-
-
- com.googlecode.l10n-maven-plugin
- l10n-maven-plugin
- 1.8
-
-
- org.apache.maven.plugins
- maven-resources-plugin
- 2.7
-
- UTF-8
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 2.6
-
-
-
- true
- true
-
-
- ${maven.build.timestamp}
- ${copyright}
- ${git.commit.id}
- ${os.name}
- ${os.arch}
- ${os.version}
- ${maven.compiler.source}
- ${maven.compiler.target}
-
-
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 2.6
-
- **/test/**,**/.git/**
-
-
- ${probe.version}
-
-
- true
- lib/
-
-
-
-
-
- org.codehaus.mojo
- versions-maven-plugin
- 2.2
-
-
- org.jasig.mojo.jspc
- jspc-maven-plugin
- 2.0.0
-
- false
- false
-
-
-
-
- compile
-
-
-
-
-
- org.jasig.mojo.jspc
- jspc-compiler-tomcat5
- 2.0.0
-
-
-
-
- net.revelc.code
- formatter-maven-plugin
- 0.5.2
-
- ${git.relative.path}/eclipse-java-google-style.xml
-
-
-
-
-
-
- net.revelc.code
- formatter-maven-plugin
-
-
- pl.project13.maven
- git-commit-id-plugin
-
-
- git-commit-id
-
- revision
-
- validate
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-changelog-plugin
-
-
- org.apache.maven.plugins
- maven-project-info-reports-plugin
-
- false
- false
-
-
-
- org.codehaus.mojo
- versions-maven-plugin
-
-
- org.apache.maven.plugins
- maven-jxr-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-report-plugin
-
- true
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
-
-
- org.codehaus.mojo
- findbugs-maven-plugin
-
-
- org.apache.maven.plugins
- maven-pmd-plugin
-
- true
-
-
-
- com.googlecode.l10n-maven-plugin
- l10n-maven-plugin
-
- true
-
-
-
-
-
-
- nvd-check
-
-
-
- org.owasp
- dependency-check-maven
-
-
-
- aggregate
-
-
-
-
-
-
-
-
- release
-
- ${project.version}
-
-
-
- development
-
- true
-
-
- ${project.version} (built at ${maven.build.timestamp})
-
-
-
+
+
+ 4.0.0
+ com.googlecode.psiprobe
+ psi-probe
+ 2.4.0-SNAPSHOT
+ pom
+ PSI Probe
+ https://github.com/psi-probe/psi-probe/
+
+ Advanced manager and monitor for Tomcat, forked from Lambda Probe
+
+
+
+ GNU General Public License, version 2
+ http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ manual
+
+
+
+ GitHub Issues
+ https://github.com/psi-probe/psi-probe/issues/
+
+
+
+ PSI Probe Announcements
+ psi-probe+subscribe@googlegroups.com
+ psi-probe+unsubscribe@googlegroups.com
+ http://groups.google.com/group/psi-probe/
+
+
+ PSI Probe Discussions
+ psi-probe-discuss+subscribe@googlegroups.com
+ psi-probe-discuss+unsubscribe@googlegroups.com
+ psi-probe-discuss@googlegroups.com
+ http://groups.google.com/group/psi-probe-discuss/
+
+
+
+ scm:git:ssh://git@github.com:psi-probe/psi-probe.git
+ scm:git:ssh://git@github.com:psi-probe/psi-probe.git
+ https://github.com/psi-probe/psi-probe/
+
+
+ core
+ tomcat50adaptor
+ tomcat55adaptor
+ tomcat60adaptor
+ tomcat70adaptor
+ tomcat80adaptor
+ web
+
+
+
+
+
+ false
+ never
+
+ repository.jboss.org
+ repository.jboss.org
+ https://repository.jboss.org/nexus/content/repositories/deprecated/
+ default
+
+
+
+
+ false
+ never
+
+ code.lds.org
+ code.lds.org
+ https://code.lds.org/nexus/content/repositories/main-repo/
+ default
+
+
+
+ 1.4
+ 1.4
+ 1.5
+ 1.5
+
+ 2015
+
+ UTF-8
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+ javax.servlet
+ servlet-api
+ 2.4
+
+
+ javax.servlet
+ jsp-api
+ 2.0
+
+
+
+ javax.servlet
+ jstl
+ 1.1.2
+
+
+ javax.mail
+ mail
+ 1.4.7
+
+
+ taglibs
+ standard
+ 1.1.2
+
+
+ log4j
+ log4j
+ 1.2.17
+
+
+
+ com.oracle
+ ucp
+ 11.2.0.1.0
+
+
+ com.oracle
+ ojdbc14
+ 10.2.0.3
+
+
+
+ org.apache.tomcat
+ tomcat-jdbc
+ 7.0.61
+
+
+ org.apache.openejb
+ openejb-core
+ 4.7.1
+
+
+
+ com.jolbox
+ bonecp
+ 0.8.0.RELEASE
+
+
+ commons-beanutils
+ commons-beanutils
+ 1.8.3
+
+
+ commons-collections
+ commons-collections
+ 3.2.1
+
+
+ commons-fileupload
+ commons-fileupload
+ 1.2.2
+
+
+ commons-io
+ commons-io
+ 1.4
+
+
+ commons-lang
+ commons-lang
+ 2.6
+
+
+ commons-logging
+ commons-logging
+ 1.2
+
+
+ commons-modeler
+ commons-modeler
+ 2.0.1
+
+
+ commons-digester
+ commons-digester
+
+
+ commons-logging
+ commons-logging-api
+
+
+
+
+ displaytag
+ displaytag
+ 1.2
+
+
+ com.lowagie
+ itext
+
+
+
+
+ jaxen
+ jaxen
+ 1.1.6
+
+
+ dom4j
+ dom4j
+
+
+ jdom
+ jdom
+
+
+ xerces
+ xercesImpl
+
+
+ xom
+ xom
+
+
+ xml-apis
+ xml-apis
+
+
+
+
+ org.springframework
+ spring-beans
+ 2.5.6.SEC03
+
+
+ org.springframework
+ spring-context
+ 2.5.6.SEC03
+
+
+ org.springframework
+ spring-webmvc
+ 2.5.6.SEC03
+
+
+ org.springframework
+ spring-tx
+ 2.5.6.SEC03
+
+
+ org.springframework.security
+ spring-security-core
+ 2.0.8.RELEASE
+
+
+ org.springframework
+ spring-core
+
+
+ org.springframework
+ spring-support
+
+
+
+
+ javainetlocator
+ inetaddresslocator
+ 2.18
+
+
+ javax.transaction
+ jta
+ 1.1
+
+
+ opensymphony
+ quartz
+ 1.6.3
+
+
+ opensymphony
+ sitemesh
+ 2.4.2
+
+
+ javax.management
+ jmxri
+ 1.2.1
+
+
+ xpp3
+ xpp3_min
+ 1.1.4c
+
+
+ com.thoughtworks.xstream
+ xstream
+ 1.4.1
+
+
+ com.uwyn
+ jhighlight
+ 1.0
+
+
+ c3p0
+ c3p0
+ 0.9.1.2
+
+
+ commons-dbcp
+ commons-dbcp
+ 1.3
+
+
+ tanukisoft
+ wrapper
+ 3.2.3
+
+
+ org.jfree
+ jfreechart
+ 1.0.15
+
+
+
+
+ package
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 3.4
+
+
+ org.owasp
+ dependency-check-maven
+ 1.2.11
+
+
+ pl.project13.maven
+ git-commit-id-plugin
+ 2.1.13
+
+ ${git.relative.path}.git
+
+
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-changelog-plugin
+ 2.3
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 2.8
+
+
+ org.apache.maven.plugins
+ maven-jxr-plugin
+ 2.5
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 2.15
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.18.1
+
+
+ **/*Tests.java
+
+
+ **/Abstract*.java
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-report-plugin
+ 2.18.1
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.3
+
+ UTF-8
+
+
+
+ org.codehaus.mojo
+ findbugs-maven-plugin
+ 3.0.1
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ 3.4
+
+
+ com.googlecode.l10n-maven-plugin
+ l10n-maven-plugin
+ 1.8
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 2.7
+
+ UTF-8
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.6
+
+
+
+ true
+ true
+
+
+ ${maven.build.timestamp}
+ ${copyright}
+ ${git.commit.id}
+ ${os.name}
+ ${os.arch}
+ ${os.version}
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 2.6
+
+ **/test/**,**/.git/**
+
+
+ ${probe.version}
+
+
+ true
+ lib/
+
+
+
+
+
+ org.codehaus.mojo
+ versions-maven-plugin
+ 2.2
+
+
+ org.jasig.mojo.jspc
+ jspc-maven-plugin
+ 2.0.0
+
+ false
+ false
+
+
+
+
+ compile
+
+
+
+
+
+ org.jasig.mojo.jspc
+ jspc-compiler-tomcat5
+ 2.0.0
+
+
+
+
+ net.revelc.code
+ formatter-maven-plugin
+ 0.5.2
+
+ ${git.relative.path}/eclipse-java-google-style.xml
+
+
+
+
+
+
+ net.revelc.code
+ formatter-maven-plugin
+
+
+ pl.project13.maven
+ git-commit-id-plugin
+
+
+ git-commit-id
+
+ revision
+
+ validate
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-changelog-plugin
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+
+ false
+ false
+
+
+
+ org.codehaus.mojo
+ versions-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-jxr-plugin
+
+
+ org.apache.maven.plugins
+ maven-surefire-report-plugin
+
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+
+
+ org.codehaus.mojo
+ findbugs-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+
+ true
+
+
+
+ com.googlecode.l10n-maven-plugin
+ l10n-maven-plugin
+
+ true
+
+
+
+
+
+
+ nvd-check
+
+
+
+ org.owasp
+ dependency-check-maven
+
+
+
+ aggregate
+
+
+
+
+
+
+
+
+ release
+
+ ${project.version}
+
+
+
+ development
+
+ true
+
+
+ ${project.version} (built at ${maven.build.timestamp})
+
+
+
\ No newline at end of file
diff --git a/tomcat50adaptor/pom.xml b/tomcat50adaptor/pom.xml
index c0dc709243..5fb4bd8d57 100644
--- a/tomcat50adaptor/pom.xml
+++ b/tomcat50adaptor/pom.xml
@@ -1,56 +1,56 @@
-
-
- 4.0.0
-
- com.googlecode.psiprobe
- psi-probe
- 2.4.0-SNAPSHOT
-
- tomcat50adaptor
- jar
- PSI Probe Tomcat 5.0.x Adaptor
-
- Implementation of features specific to Apache Tomcat 5.0.x
-
-
- scm:git:ssh://git@github.com:psi-probe/psi-probe.git
- scm:git:ssh://git@github.com:psi-probe/psi-probe.git
- https://github.com/psi-probe/psi-probe/
-
-
- ../
-
-
-
- ${project.groupId}
- core
- ${project.version}
- compile
-
-
- javax.servlet
- servlet-api
- provided
-
-
- tomcat
- naming-factory
- 5.0.28
- provided
-
-
- tomcat
- naming-resources
- 5.0.28
- provided
-
-
- tomcat
- catalina
- 5.0.28
- provided
-
-
+
+
+ 4.0.0
+
+ com.googlecode.psiprobe
+ psi-probe
+ 2.4.0-SNAPSHOT
+
+ tomcat50adaptor
+ jar
+ PSI Probe Tomcat 5.0.x Adaptor
+
+ Implementation of features specific to Apache Tomcat 5.0.x
+
+
+ scm:git:ssh://git@github.com:psi-probe/psi-probe.git
+ scm:git:ssh://git@github.com:psi-probe/psi-probe.git
+ https://github.com/psi-probe/psi-probe/
+
+
+ ../
+
+
+
+ ${project.groupId}
+ core
+ ${project.version}
+ compile
+
+
+ javax.servlet
+ servlet-api
+ provided
+
+
+ tomcat
+ naming-factory
+ 5.0.28
+ provided
+
+
+ tomcat
+ naming-resources
+ 5.0.28
+ provided
+
+
+ tomcat
+ catalina
+ 5.0.28
+ provided
+
+
\ No newline at end of file
diff --git a/tomcat50adaptor/src/main/java/com/googlecode/psiprobe/Tomcat50AgentValve.java b/tomcat50adaptor/src/main/java/com/googlecode/psiprobe/Tomcat50AgentValve.java
index a3977c4a03..3363c04e9b 100644
--- a/tomcat50adaptor/src/main/java/com/googlecode/psiprobe/Tomcat50AgentValve.java
+++ b/tomcat50adaptor/src/main/java/com/googlecode/psiprobe/Tomcat50AgentValve.java
@@ -1,53 +1,53 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.model.ApplicationSession;
-import com.googlecode.psiprobe.model.IPInfo;
-
-import org.apache.catalina.Request;
-import org.apache.catalina.Response;
-import org.apache.catalina.Valve;
-import org.apache.catalina.ValveContext;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Tomcat50AgentValve implements Valve {
-
- public String getInfo() {
- return "PSI Probe Agent Valve";
- }
-
- public void invoke(Request request, Response response, ValveContext valveContext)
- throws IOException, ServletException {
-
- valveContext.invokeNext(request, response);
- ServletRequest servletRequest = request.getRequest();
- if (servletRequest instanceof HttpServletRequest) {
- HttpServletRequest hsr = (HttpServletRequest) request;
- HttpSession session = hsr.getSession(false);
- if (session != null) {
- String ip = IPInfo.getClientAddress(hsr);
- session.setAttribute(ApplicationSession.LAST_ACCESSED_BY_IP, ip);
- }
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.model.ApplicationSession;
+import com.googlecode.psiprobe.model.IPInfo;
+
+import org.apache.catalina.Request;
+import org.apache.catalina.Response;
+import org.apache.catalina.Valve;
+import org.apache.catalina.ValveContext;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Tomcat50AgentValve implements Valve {
+
+ public String getInfo() {
+ return "PSI Probe Agent Valve";
+ }
+
+ public void invoke(Request request, Response response, ValveContext valveContext)
+ throws IOException, ServletException {
+
+ valveContext.invokeNext(request, response);
+ ServletRequest servletRequest = request.getRequest();
+ if (servletRequest instanceof HttpServletRequest) {
+ HttpServletRequest hsr = (HttpServletRequest) request;
+ HttpSession session = hsr.getSession(false);
+ if (session != null) {
+ String ip = IPInfo.getClientAddress(hsr);
+ session.setAttribute(ApplicationSession.LAST_ACCESSED_BY_IP, ip);
+ }
+ }
+ }
+
+}
diff --git a/tomcat50adaptor/src/main/java/com/googlecode/psiprobe/Tomcat50ContainerAdaptor.java b/tomcat50adaptor/src/main/java/com/googlecode/psiprobe/Tomcat50ContainerAdaptor.java
index 866d4a29b7..dea7447caa 100644
--- a/tomcat50adaptor/src/main/java/com/googlecode/psiprobe/Tomcat50ContainerAdaptor.java
+++ b/tomcat50adaptor/src/main/java/com/googlecode/psiprobe/Tomcat50ContainerAdaptor.java
@@ -1,366 +1,366 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.model.ApplicationParam;
-import com.googlecode.psiprobe.model.ApplicationResource;
-import com.googlecode.psiprobe.model.FilterInfo;
-import com.googlecode.psiprobe.model.FilterMapping;
-
-import org.apache.catalina.Container;
-import org.apache.catalina.Context;
-import org.apache.catalina.Deployer;
-import org.apache.catalina.Host;
-import org.apache.catalina.Valve;
-import org.apache.catalina.Wrapper;
-import org.apache.catalina.deploy.ApplicationParameter;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.FilterDef;
-import org.apache.catalina.deploy.FilterMap;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.naming.resources.Resource;
-import org.apache.naming.resources.ResourceAttributes;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.naming.NamingException;
-import javax.servlet.ServletContext;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Tomcat50ContainerAdaptor extends AbstractTomcatContainer {
-
- private Deployer deployer;
- private Valve valve = new Tomcat50AgentValve();
-
- public void setWrapper(Wrapper wrapper) {
- if (wrapper != null) {
- this.deployer = (Deployer) wrapper.getParent().getParent();
- ((Host) this.deployer).getPipeline().addValve(valve);
- } else if (deployer != null) {
- ((Host) this.deployer).getPipeline().removeValve(valve);
- }
- }
-
- public boolean canBoundTo(String binding) {
- return binding != null && binding.startsWith("Apache Tomcat/5.0");
- }
-
- protected Context findContextInternal(String name) {
- return deployer.findDeployedApp(name);
- }
-
- public List findContexts() {
- String[] names = deployer.findDeployedApps();
- List result = new ArrayList(names.length);
-
- for (int i = 0; i < names.length; i++) {
- result.add(deployer.findDeployedApp(names[i]));
- }
-
- return result;
- }
-
- public void stop(String name) throws IOException {
- deployer.stop(name);
- }
-
- public void start(String name) throws IOException {
- deployer.start(name);
- }
-
- public void removeInternal(String name) throws IOException {
- deployer.remove(name, true);
- }
-
- public void installContextInternal(String name, File config) throws IOException {
- deployer.install(new URL("file:" + config.getAbsolutePath()), null);
- }
-
- public void installWar(String name, URL url) throws IOException {
- deployer.install(name, url);
- }
-
- public File getAppBase() {
- String strBase = ((Host) deployer).getAppBase();
- File base = new File(strBase);
- if (!base.isAbsolute()) {
- base = new File(System.getProperty("catalina.base"), strBase);
- }
- return base;
- }
-
- public String getConfigBase() {
- return getConfigBase((Container) deployer);
- }
-
- public Object getLogger(Context context) {
- return context.getLogger();
- }
-
- public String getHostName() {
- return deployer.getName();
- }
-
- public String getName() {
- return ((Host) this.deployer).getParent().getName();
- }
-
- public boolean getAvailable(Context context) {
- return context.getAvailable();
- }
-
- public List getApplicationFilterMaps(Context context) {
- FilterMap[] fms = context.findFilterMaps();
- List filterMaps = new ArrayList(fms.length);
- for (int i = 0; i < fms.length; i++) {
- if (fms[i] != null) {
- String dm;
- switch (fms[i].getDispatcherMapping()) {
- case FilterMap.ERROR:
- dm = "ERROR";
- break;
- case FilterMap.FORWARD:
- dm = "FORWARD";
- break;
- case FilterMap.FORWARD_ERROR:
- dm = "FORWARD,ERROR";
- break;
- case FilterMap.INCLUDE:
- dm = "INCLUDE";
- break;
- case FilterMap.INCLUDE_ERROR:
- dm = "INCLUDE,ERROR";
- break;
- case FilterMap.INCLUDE_ERROR_FORWARD:
- dm = "INCLUDE,ERROR,FORWARD";
- break;
- case FilterMap.INCLUDE_FORWARD:
- dm = "INCLUDE,FORWARD";
- break;
- case FilterMap.REQUEST:
- dm = "REQUEST";
- break;
- case FilterMap.REQUEST_ERROR:
- dm = "REQUEST,ERROR";
- break;
- case FilterMap.REQUEST_ERROR_FORWARD:
- dm = "REQUEST,ERROR,FORWARD";
- break;
- case FilterMap.REQUEST_ERROR_FORWARD_INCLUDE:
- dm = "REQUEST,ERROR,FORWARD,INCLUDE";
- break;
- case FilterMap.REQUEST_ERROR_INCLUDE:
- dm = "REQUEST,ERROR,INCLUDE";
- break;
- case FilterMap.REQUEST_FORWARD:
- dm = "REQUEST,FORWARD";
- break;
- case FilterMap.REQUEST_INCLUDE:
- dm = "REQUEST,INCLUDE";
- break;
- case FilterMap.REQUEST_FORWARD_INCLUDE:
- dm = "REQUEST,FORWARD,INCLUDE";
- break;
- default:
- dm = "";
- }
-
- String filterClass = "";
- FilterDef fd = context.findFilterDef(fms[i].getFilterName());
- if (fd != null) {
- filterClass = fd.getFilterClass();
- }
-
- List filterMappings = getFilterMappings(fms[i], dm, filterClass);
- filterMaps.addAll(filterMappings);
- }
- }
- return filterMaps;
- }
-
- /**
- * Converts a {@link FilterMap} into one or more {@link FilterMapping}s.
- *
- *
- * This implementation is for Tomcat 5.0/5.5. {@link FilterMap#getURLPattern()} and
- * {@link FilterMap#getServletName()} were replaced in Tomcat 6 with binary-incompatible methods.
- *
- *
- * @param fmap the FilterMap to analyze
- * @param dm the dispatcher mapping for the given FilterMap. This will be the same for each
- * FilterMapping.
- * @param filterClass the class name of the mapped filter. This will be the same for each
- * FilterMapping.
- * @return a list containing a single {@link FilterMapping} object
- */
- protected List getFilterMappings(FilterMap fmap, String dm, String filterClass) {
- List filterMappings = new ArrayList(1);
- FilterMapping fm = new FilterMapping();
- fm.setUrl(fmap.getURLPattern());
- fm.setServletName(fmap.getServletName());
- fm.setFilterName(fmap.getFilterName());
- fm.setDispatcherMap(dm);
- fm.setFilterClass(filterClass);
- filterMappings.add(fm);
- return filterMappings;
- }
-
- public void addContextResourceLink(Context context, List resourceList, boolean contextBound) {
- ContextResourceLink[] resourceLinks = context.getNamingResources().findResourceLinks();
- for (int i = 0; i < resourceLinks.length; i++) {
- ContextResourceLink link = resourceLinks[i];
-
- ApplicationResource resource = new ApplicationResource();
- logger.debug("reading resourceLink: " + link.getName());
- resource.setApplicationName(context.getName());
- resource.setName(link.getName());
- resource.setType(link.getType());
- resource.setLinkTo(link.getGlobal());
-
- // lookupResource(resource, contextBound, false);
-
- resourceList.add(resource);
- }
- }
-
- public void addContextResource(Context context, List resourceList, boolean contextBound) {
- NamingResources namingResources = context.getNamingResources();
- ContextResource[] resources = namingResources.findResources();
-
- for (int i = 0; i < resources.length; i++) {
- ContextResource contextResource = resources[i];
- ApplicationResource resource = new ApplicationResource();
-
- logger.info("reading resource: " + contextResource.getName());
- resource.setApplicationName(context.getName());
- resource.setName(contextResource.getName());
- resource.setType(contextResource.getType());
- resource.setScope(contextResource.getScope());
- resource.setAuth(contextResource.getAuth());
- resource.setDescription(contextResource.getDescription());
-
- // lookupResource(resource, contextBound, false);
-
- resourceList.add(resource);
- }
- }
-
- public List getApplicationFilters(Context context) {
- FilterDef[] fds = context.findFilterDefs();
- List filterDefs = new ArrayList(fds.length);
- for (int i = 0; i < fds.length; i++) {
- if (fds[i] != null) {
- FilterInfo fi = getFilterInfo(fds[i]);
- filterDefs.add(fi);
- }
- }
- return filterDefs;
- }
-
- private static FilterInfo getFilterInfo(FilterDef fd) {
- FilterInfo fi = new FilterInfo();
- fi.setFilterName(fd.getFilterName());
- fi.setFilterClass(fd.getFilterClass());
- fi.setFilterDesc(fd.getDescription());
- return fi;
- }
-
- public List getApplicationInitParams(Context context) {
- /*
- * We'll try to determine if a parameter value comes from a deployment descriptor or a context
- * descriptor.
- *
- * Assumption: context.findParameter() returns only values of parameters that are declared in a
- * deployment descriptor.
- *
- * If a parameter is declared in a context descriptor with override=false and redeclared in a
- * deployment descriptor, context.findParameter() still returns its value, even though the value
- * is taken from a context descriptor.
- *
- * context.findApplicationParameters() returns all parameters that are declared in a context
- * descriptor regardless of whether they are overridden in a deployment descriptor or not or
- * not.
- */
-
- /*
- * creating a set of parameter names that are declared in a context descriptor and can not be
- * ovevridden in a deployment descriptor.
- */
- Set nonOverridableParams = new HashSet();
- ApplicationParameter[] appParams = context.findApplicationParameters();
- for (int i = 0; i < appParams.length; i++) {
- if (appParams[i] != null && !appParams[i].getOverride()) {
- nonOverridableParams.add(appParams[i].getName());
- }
- }
-
- List initParams = new ArrayList();
- ServletContext servletCtx = context.getServletContext();
- for (Enumeration e = servletCtx.getInitParameterNames(); e.hasMoreElements();) {
- String paramName = (String) e.nextElement();
-
- ApplicationParam param = new ApplicationParam();
- param.setName(paramName);
- param.setValue(servletCtx.getInitParameter(paramName));
- /*
- * if the parameter is declared in a deployment descriptor and it is not declared in a context
- * descriptor with override=false, the value comes from the deployment descriptor
- */
- param.setFromDeplDescr(context.findParameter(paramName) != null
- && !nonOverridableParams.contains(paramName));
- initParams.add(param);
- }
-
- return initParams;
-
- }
-
- public boolean resourceExists(String name, Context context) {
- try {
- return context.getResources().lookup(name) != null;
- } catch (NamingException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- public InputStream getResourceStream(String name, Context context) throws IOException {
- try {
- return ((Resource) context.getResources().lookup(name)).streamContent();
- } catch (NamingException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- public Long[] getResourceAttributes(String name, Context context) {
- Long result[] = new Long[2];
- try {
- ResourceAttributes resource = (ResourceAttributes) context.getResources().getAttributes(name);
- result[0] = Long.valueOf(resource.getContentLength());
- result[1] = Long.valueOf(resource.getLastModified());
- } catch (NamingException e) {
- // Don't care.
- }
- return result;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.model.ApplicationParam;
+import com.googlecode.psiprobe.model.ApplicationResource;
+import com.googlecode.psiprobe.model.FilterInfo;
+import com.googlecode.psiprobe.model.FilterMapping;
+
+import org.apache.catalina.Container;
+import org.apache.catalina.Context;
+import org.apache.catalina.Deployer;
+import org.apache.catalina.Host;
+import org.apache.catalina.Valve;
+import org.apache.catalina.Wrapper;
+import org.apache.catalina.deploy.ApplicationParameter;
+import org.apache.catalina.deploy.ContextResource;
+import org.apache.catalina.deploy.ContextResourceLink;
+import org.apache.catalina.deploy.FilterDef;
+import org.apache.catalina.deploy.FilterMap;
+import org.apache.catalina.deploy.NamingResources;
+import org.apache.naming.resources.Resource;
+import org.apache.naming.resources.ResourceAttributes;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.naming.NamingException;
+import javax.servlet.ServletContext;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Tomcat50ContainerAdaptor extends AbstractTomcatContainer {
+
+ private Deployer deployer;
+ private Valve valve = new Tomcat50AgentValve();
+
+ public void setWrapper(Wrapper wrapper) {
+ if (wrapper != null) {
+ this.deployer = (Deployer) wrapper.getParent().getParent();
+ ((Host) this.deployer).getPipeline().addValve(valve);
+ } else if (deployer != null) {
+ ((Host) this.deployer).getPipeline().removeValve(valve);
+ }
+ }
+
+ public boolean canBoundTo(String binding) {
+ return binding != null && binding.startsWith("Apache Tomcat/5.0");
+ }
+
+ protected Context findContextInternal(String name) {
+ return deployer.findDeployedApp(name);
+ }
+
+ public List findContexts() {
+ String[] names = deployer.findDeployedApps();
+ List result = new ArrayList(names.length);
+
+ for (int i = 0; i < names.length; i++) {
+ result.add(deployer.findDeployedApp(names[i]));
+ }
+
+ return result;
+ }
+
+ public void stop(String name) throws IOException {
+ deployer.stop(name);
+ }
+
+ public void start(String name) throws IOException {
+ deployer.start(name);
+ }
+
+ public void removeInternal(String name) throws IOException {
+ deployer.remove(name, true);
+ }
+
+ public void installContextInternal(String name, File config) throws IOException {
+ deployer.install(new URL("file:" + config.getAbsolutePath()), null);
+ }
+
+ public void installWar(String name, URL url) throws IOException {
+ deployer.install(name, url);
+ }
+
+ public File getAppBase() {
+ String strBase = ((Host) deployer).getAppBase();
+ File base = new File(strBase);
+ if (!base.isAbsolute()) {
+ base = new File(System.getProperty("catalina.base"), strBase);
+ }
+ return base;
+ }
+
+ public String getConfigBase() {
+ return getConfigBase((Container) deployer);
+ }
+
+ public Object getLogger(Context context) {
+ return context.getLogger();
+ }
+
+ public String getHostName() {
+ return deployer.getName();
+ }
+
+ public String getName() {
+ return ((Host) this.deployer).getParent().getName();
+ }
+
+ public boolean getAvailable(Context context) {
+ return context.getAvailable();
+ }
+
+ public List getApplicationFilterMaps(Context context) {
+ FilterMap[] fms = context.findFilterMaps();
+ List filterMaps = new ArrayList(fms.length);
+ for (int i = 0; i < fms.length; i++) {
+ if (fms[i] != null) {
+ String dm;
+ switch (fms[i].getDispatcherMapping()) {
+ case FilterMap.ERROR:
+ dm = "ERROR";
+ break;
+ case FilterMap.FORWARD:
+ dm = "FORWARD";
+ break;
+ case FilterMap.FORWARD_ERROR:
+ dm = "FORWARD,ERROR";
+ break;
+ case FilterMap.INCLUDE:
+ dm = "INCLUDE";
+ break;
+ case FilterMap.INCLUDE_ERROR:
+ dm = "INCLUDE,ERROR";
+ break;
+ case FilterMap.INCLUDE_ERROR_FORWARD:
+ dm = "INCLUDE,ERROR,FORWARD";
+ break;
+ case FilterMap.INCLUDE_FORWARD:
+ dm = "INCLUDE,FORWARD";
+ break;
+ case FilterMap.REQUEST:
+ dm = "REQUEST";
+ break;
+ case FilterMap.REQUEST_ERROR:
+ dm = "REQUEST,ERROR";
+ break;
+ case FilterMap.REQUEST_ERROR_FORWARD:
+ dm = "REQUEST,ERROR,FORWARD";
+ break;
+ case FilterMap.REQUEST_ERROR_FORWARD_INCLUDE:
+ dm = "REQUEST,ERROR,FORWARD,INCLUDE";
+ break;
+ case FilterMap.REQUEST_ERROR_INCLUDE:
+ dm = "REQUEST,ERROR,INCLUDE";
+ break;
+ case FilterMap.REQUEST_FORWARD:
+ dm = "REQUEST,FORWARD";
+ break;
+ case FilterMap.REQUEST_INCLUDE:
+ dm = "REQUEST,INCLUDE";
+ break;
+ case FilterMap.REQUEST_FORWARD_INCLUDE:
+ dm = "REQUEST,FORWARD,INCLUDE";
+ break;
+ default:
+ dm = "";
+ }
+
+ String filterClass = "";
+ FilterDef fd = context.findFilterDef(fms[i].getFilterName());
+ if (fd != null) {
+ filterClass = fd.getFilterClass();
+ }
+
+ List filterMappings = getFilterMappings(fms[i], dm, filterClass);
+ filterMaps.addAll(filterMappings);
+ }
+ }
+ return filterMaps;
+ }
+
+ /**
+ * Converts a {@link FilterMap} into one or more {@link FilterMapping}s.
+ *
+ *
+ * This implementation is for Tomcat 5.0/5.5. {@link FilterMap#getURLPattern()} and
+ * {@link FilterMap#getServletName()} were replaced in Tomcat 6 with binary-incompatible methods.
+ *
+ *
+ * @param fmap the FilterMap to analyze
+ * @param dm the dispatcher mapping for the given FilterMap. This will be the same for each
+ * FilterMapping.
+ * @param filterClass the class name of the mapped filter. This will be the same for each
+ * FilterMapping.
+ * @return a list containing a single {@link FilterMapping} object
+ */
+ protected List getFilterMappings(FilterMap fmap, String dm, String filterClass) {
+ List filterMappings = new ArrayList(1);
+ FilterMapping fm = new FilterMapping();
+ fm.setUrl(fmap.getURLPattern());
+ fm.setServletName(fmap.getServletName());
+ fm.setFilterName(fmap.getFilterName());
+ fm.setDispatcherMap(dm);
+ fm.setFilterClass(filterClass);
+ filterMappings.add(fm);
+ return filterMappings;
+ }
+
+ public void addContextResourceLink(Context context, List resourceList, boolean contextBound) {
+ ContextResourceLink[] resourceLinks = context.getNamingResources().findResourceLinks();
+ for (int i = 0; i < resourceLinks.length; i++) {
+ ContextResourceLink link = resourceLinks[i];
+
+ ApplicationResource resource = new ApplicationResource();
+ logger.debug("reading resourceLink: " + link.getName());
+ resource.setApplicationName(context.getName());
+ resource.setName(link.getName());
+ resource.setType(link.getType());
+ resource.setLinkTo(link.getGlobal());
+
+ // lookupResource(resource, contextBound, false);
+
+ resourceList.add(resource);
+ }
+ }
+
+ public void addContextResource(Context context, List resourceList, boolean contextBound) {
+ NamingResources namingResources = context.getNamingResources();
+ ContextResource[] resources = namingResources.findResources();
+
+ for (int i = 0; i < resources.length; i++) {
+ ContextResource contextResource = resources[i];
+ ApplicationResource resource = new ApplicationResource();
+
+ logger.info("reading resource: " + contextResource.getName());
+ resource.setApplicationName(context.getName());
+ resource.setName(contextResource.getName());
+ resource.setType(contextResource.getType());
+ resource.setScope(contextResource.getScope());
+ resource.setAuth(contextResource.getAuth());
+ resource.setDescription(contextResource.getDescription());
+
+ // lookupResource(resource, contextBound, false);
+
+ resourceList.add(resource);
+ }
+ }
+
+ public List getApplicationFilters(Context context) {
+ FilterDef[] fds = context.findFilterDefs();
+ List filterDefs = new ArrayList(fds.length);
+ for (int i = 0; i < fds.length; i++) {
+ if (fds[i] != null) {
+ FilterInfo fi = getFilterInfo(fds[i]);
+ filterDefs.add(fi);
+ }
+ }
+ return filterDefs;
+ }
+
+ private static FilterInfo getFilterInfo(FilterDef fd) {
+ FilterInfo fi = new FilterInfo();
+ fi.setFilterName(fd.getFilterName());
+ fi.setFilterClass(fd.getFilterClass());
+ fi.setFilterDesc(fd.getDescription());
+ return fi;
+ }
+
+ public List getApplicationInitParams(Context context) {
+ /*
+ * We'll try to determine if a parameter value comes from a deployment descriptor or a context
+ * descriptor.
+ *
+ * Assumption: context.findParameter() returns only values of parameters that are declared in a
+ * deployment descriptor.
+ *
+ * If a parameter is declared in a context descriptor with override=false and redeclared in a
+ * deployment descriptor, context.findParameter() still returns its value, even though the value
+ * is taken from a context descriptor.
+ *
+ * context.findApplicationParameters() returns all parameters that are declared in a context
+ * descriptor regardless of whether they are overridden in a deployment descriptor or not or
+ * not.
+ */
+
+ /*
+ * creating a set of parameter names that are declared in a context descriptor and can not be
+ * ovevridden in a deployment descriptor.
+ */
+ Set nonOverridableParams = new HashSet();
+ ApplicationParameter[] appParams = context.findApplicationParameters();
+ for (int i = 0; i < appParams.length; i++) {
+ if (appParams[i] != null && !appParams[i].getOverride()) {
+ nonOverridableParams.add(appParams[i].getName());
+ }
+ }
+
+ List initParams = new ArrayList();
+ ServletContext servletCtx = context.getServletContext();
+ for (Enumeration e = servletCtx.getInitParameterNames(); e.hasMoreElements();) {
+ String paramName = (String) e.nextElement();
+
+ ApplicationParam param = new ApplicationParam();
+ param.setName(paramName);
+ param.setValue(servletCtx.getInitParameter(paramName));
+ /*
+ * if the parameter is declared in a deployment descriptor and it is not declared in a context
+ * descriptor with override=false, the value comes from the deployment descriptor
+ */
+ param.setFromDeplDescr(context.findParameter(paramName) != null
+ && !nonOverridableParams.contains(paramName));
+ initParams.add(param);
+ }
+
+ return initParams;
+
+ }
+
+ public boolean resourceExists(String name, Context context) {
+ try {
+ return context.getResources().lookup(name) != null;
+ } catch (NamingException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public InputStream getResourceStream(String name, Context context) throws IOException {
+ try {
+ return ((Resource) context.getResources().lookup(name)).streamContent();
+ } catch (NamingException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public Long[] getResourceAttributes(String name, Context context) {
+ Long result[] = new Long[2];
+ try {
+ ResourceAttributes resource = (ResourceAttributes) context.getResources().getAttributes(name);
+ result[0] = Long.valueOf(resource.getContentLength());
+ result[1] = Long.valueOf(resource.getLastModified());
+ } catch (NamingException e) {
+ // Don't care.
+ }
+ return result;
+ }
+
+}
diff --git a/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/Tomcat55AgentValve.java b/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/Tomcat55AgentValve.java
index 0d4f1b0574..bdc052067b 100644
--- a/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/Tomcat55AgentValve.java
+++ b/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/Tomcat55AgentValve.java
@@ -1,47 +1,47 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.model.ApplicationSession;
-import com.googlecode.psiprobe.model.IPInfo;
-
-import org.apache.catalina.connector.Request;
-import org.apache.catalina.connector.Response;
-import org.apache.catalina.valves.ValveBase;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Tomcat55AgentValve extends ValveBase {
-
- public String getInfo() {
- return info;
- }
-
- public void invoke(Request request, Response response) throws IOException, ServletException {
- getNext().invoke(request, response);
-
- HttpServletRequest servletRequest = request.getRequest();
- HttpSession session = servletRequest.getSession(false);
- if (session != null) {
- String ip = IPInfo.getClientAddress(servletRequest);
- session.setAttribute(ApplicationSession.LAST_ACCESSED_BY_IP, ip);
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.model.ApplicationSession;
+import com.googlecode.psiprobe.model.IPInfo;
+
+import org.apache.catalina.connector.Request;
+import org.apache.catalina.connector.Response;
+import org.apache.catalina.valves.ValveBase;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Tomcat55AgentValve extends ValveBase {
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void invoke(Request request, Response response) throws IOException, ServletException {
+ getNext().invoke(request, response);
+
+ HttpServletRequest servletRequest = request.getRequest();
+ HttpSession session = servletRequest.getSession(false);
+ if (session != null) {
+ String ip = IPInfo.getClientAddress(servletRequest);
+ session.setAttribute(ApplicationSession.LAST_ACCESSED_BY_IP, ip);
+ }
+ }
+
+}
diff --git a/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/Tomcat55ContainerAdaptor.java b/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/Tomcat55ContainerAdaptor.java
index ed9ef3bd04..7c4539b639 100644
--- a/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/Tomcat55ContainerAdaptor.java
+++ b/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/Tomcat55ContainerAdaptor.java
@@ -1,396 +1,396 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.model.ApplicationParam;
-import com.googlecode.psiprobe.model.ApplicationResource;
-import com.googlecode.psiprobe.model.FilterInfo;
-import com.googlecode.psiprobe.model.FilterMapping;
-
-import org.apache.catalina.Container;
-import org.apache.catalina.Context;
-import org.apache.catalina.Host;
-import org.apache.catalina.Lifecycle;
-import org.apache.catalina.Valve;
-import org.apache.catalina.Wrapper;
-import org.apache.catalina.deploy.ApplicationParameter;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.FilterDef;
-import org.apache.catalina.deploy.FilterMap;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.commons.modeler.Registry;
-import org.apache.naming.resources.Resource;
-import org.apache.naming.resources.ResourceAttributes;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.naming.NamingException;
-import javax.servlet.ServletContext;
-
-/**
- *
- * @author Vlad Ilyushchenko
- */
-public class Tomcat55ContainerAdaptor extends AbstractTomcatContainer {
-
- private Host host;
- private ObjectName deployerOName;
- private MBeanServer mBeanServer;
- private Valve valve = new Tomcat55AgentValve();
-
- public void setWrapper(Wrapper wrapper) {
- if (wrapper != null) {
- host = (Host) wrapper.getParent().getParent();
- try {
- deployerOName =
- new ObjectName(host.getParent().getName() + ":type=Deployer,host=" + host.getName());
- } catch (MalformedObjectNameException e) {
- // do nothing here
- }
- host.getPipeline().addValve(valve);
- mBeanServer = Registry.getRegistry(null, null).getMBeanServer();
- } else if (host != null) {
- host.getPipeline().removeValve(valve);
- }
- }
-
- public boolean canBoundTo(String binding) {
- return binding != null && (binding.startsWith("Apache Tomcat/5.5"));
- }
-
- protected Context findContextInternal(String name) {
- return (Context) host.findChild(name);
- }
-
- public List findContexts() {
- Container[] containers = host.findChildren();
- return Arrays.asList(containers);
- }
-
- public void stop(String name) throws Exception {
- Context ctx = findContext(name);
- if (ctx != null) {
- ((Lifecycle) ctx).stop();
- }
- }
-
- public void start(String name) throws Exception {
- Context ctx = findContext(name);
- if (ctx != null) {
- ((Lifecycle) ctx).start();
- }
- }
-
- private void checkChanges(String name) throws Exception {
- Boolean result =
- (Boolean) mBeanServer.invoke(deployerOName, "isServiced", new String[] {name},
- new String[] {"java.lang.String"});
- if (!result.booleanValue()) {
- mBeanServer.invoke(deployerOName, "addServiced", new String[] {name},
- new String[] {"java.lang.String"});
- try {
- mBeanServer.invoke(deployerOName, "check", new String[] {name},
- new String[] {"java.lang.String"});
- } finally {
- mBeanServer.invoke(deployerOName, "removeServiced", new String[] {name},
- new String[] {"java.lang.String"});
- }
- }
- }
-
- public void removeInternal(String name) throws Exception {
- checkChanges(name);
- }
-
- public void installWar(String name, URL url) throws Exception {
- checkChanges(name);
- }
-
- public void installContextInternal(String name, File config) throws Exception {
- checkChanges(name);
- }
-
- public File getAppBase() {
- File base = new File(host.getAppBase());
- if (!base.isAbsolute()) {
- base = new File(System.getProperty("catalina.base"), host.getAppBase());
- }
- return base;
- }
-
- public String getConfigBase() {
- return getConfigBase(host);
- }
-
- public Object getLogger(Context context) {
- return context.getLogger();
- }
-
- public String getHostName() {
- return host.getName();
- }
-
- public String getName() {
- return host.getParent().getName();
- }
-
- public boolean getAvailable(Context context) {
- return context.getAvailable();
- }
-
- public List getApplicationFilterMaps(Context context) {
- FilterMap[] fms = context.findFilterMaps();
- List filterMaps = new ArrayList(fms.length);
- for (int i = 0; i < fms.length; i++) {
- if (fms[i] != null) {
- String dm;
- switch (fms[i].getDispatcherMapping()) {
- case FilterMap.ERROR:
- dm = "ERROR";
- break;
- case FilterMap.FORWARD:
- dm = "FORWARD";
- break;
- case FilterMap.FORWARD_ERROR:
- dm = "FORWARD,ERROR";
- break;
- case FilterMap.INCLUDE:
- dm = "INCLUDE";
- break;
- case FilterMap.INCLUDE_ERROR:
- dm = "INCLUDE,ERROR";
- break;
- case FilterMap.INCLUDE_ERROR_FORWARD:
- dm = "INCLUDE,ERROR,FORWARD";
- break;
- case FilterMap.INCLUDE_FORWARD:
- dm = "INCLUDE,FORWARD";
- break;
- case FilterMap.REQUEST:
- dm = "REQUEST";
- break;
- case FilterMap.REQUEST_ERROR:
- dm = "REQUEST,ERROR";
- break;
- case FilterMap.REQUEST_ERROR_FORWARD:
- dm = "REQUEST,ERROR,FORWARD";
- break;
- case FilterMap.REQUEST_ERROR_FORWARD_INCLUDE:
- dm = "REQUEST,ERROR,FORWARD,INCLUDE";
- break;
- case FilterMap.REQUEST_ERROR_INCLUDE:
- dm = "REQUEST,ERROR,INCLUDE";
- break;
- case FilterMap.REQUEST_FORWARD:
- dm = "REQUEST,FORWARD";
- break;
- case FilterMap.REQUEST_INCLUDE:
- dm = "REQUEST,INCLUDE";
- break;
- case FilterMap.REQUEST_FORWARD_INCLUDE:
- dm = "REQUEST,FORWARD,INCLUDE";
- break;
- default:
- dm = "";
- }
-
- String filterClass = "";
- FilterDef fd = context.findFilterDef(fms[i].getFilterName());
- if (fd != null) {
- filterClass = fd.getFilterClass();
- }
-
- List filterMappings = getFilterMappings(fms[i], dm, filterClass);
- filterMaps.addAll(filterMappings);
- }
- }
- return filterMaps;
- }
-
- /**
- * Converts a {@link FilterMap} into one or more {@link FilterMapping}s.
- *
- *
- * This implementation is for Tomcat 5.0/5.5. {@link FilterMap#getURLPattern()} and
- * {@link FilterMap#getServletName()} were replaced in Tomcat 6 with binary-incompatible methods.
- *
- *
- * @param fmap the FilterMap to analyze
- * @param dm the dispatcher mapping for the given FilterMap. This will be the same for each
- * FilterMapping.
- * @param filterClass the class name of the mapped filter. This will be the same for each
- * FilterMapping.
- * @return a list containing a single {@link FilterMapping} object
- */
- protected List getFilterMappings(FilterMap fmap, String dm, String filterClass) {
- List filterMappings = new ArrayList(1);
- FilterMapping fm = new FilterMapping();
- fm.setUrl(fmap.getURLPattern());
- fm.setServletName(fmap.getServletName());
- fm.setFilterName(fmap.getFilterName());
- fm.setDispatcherMap(dm);
- fm.setFilterClass(filterClass);
- filterMappings.add(fm);
- return filterMappings;
- }
-
- public void addContextResourceLink(Context context, List resourceList, boolean contextBound) {
- ContextResourceLink[] resourceLinks = context.getNamingResources().findResourceLinks();
- for (int i = 0; i < resourceLinks.length; i++) {
- ContextResourceLink link = resourceLinks[i];
-
- ApplicationResource resource = new ApplicationResource();
- logger.debug("reading resourceLink: " + link.getName());
- resource.setApplicationName(context.getName());
- resource.setName(link.getName());
- resource.setType(link.getType());
- resource.setLinkTo(link.getGlobal());
-
- // lookupResource(resource, contextBound, false);
-
- resourceList.add(resource);
- }
- }
-
- public void addContextResource(Context context, List resourceList, boolean contextBound) {
- NamingResources namingResources = context.getNamingResources();
- ContextResource[] resources = namingResources.findResources();
-
- for (int i = 0; i < resources.length; i++) {
- ContextResource contextResource = resources[i];
- ApplicationResource resource = new ApplicationResource();
-
- logger.info("reading resource: " + contextResource.getName());
- resource.setApplicationName(context.getName());
- resource.setName(contextResource.getName());
- resource.setType(contextResource.getType());
- resource.setScope(contextResource.getScope());
- resource.setAuth(contextResource.getAuth());
- resource.setDescription(contextResource.getDescription());
-
- // lookupResource(resource, contextBound, false);
-
- resourceList.add(resource);
- }
- }
-
- public List getApplicationFilters(Context context) {
- FilterDef[] fds = context.findFilterDefs();
- List filterDefs = new ArrayList(fds.length);
- for (int i = 0; i < fds.length; i++) {
- if (fds[i] != null) {
- FilterInfo fi = getFilterInfo(fds[i]);
- filterDefs.add(fi);
- }
- }
- return filterDefs;
- }
-
- private static FilterInfo getFilterInfo(FilterDef fd) {
- FilterInfo fi = new FilterInfo();
- fi.setFilterName(fd.getFilterName());
- fi.setFilterClass(fd.getFilterClass());
- fi.setFilterDesc(fd.getDescription());
- return fi;
- }
-
- public List getApplicationInitParams(Context context) {
- /*
- * We'll try to determine if a parameter value comes from a deployment descriptor or a context
- * descriptor.
- *
- * Assumption: context.findParameter() returns only values of parameters that are declared in a
- * deployment descriptor.
- *
- * If a parameter is declared in a context descriptor with override=false and redeclared in a
- * deployment descriptor, context.findParameter() still returns its value, even though the value
- * is taken from a context descriptor.
- *
- * context.findApplicationParameters() returns all parameters that are declared in a context
- * descriptor regardless of whether they are overridden in a deployment descriptor or not or
- * not.
- */
-
- /*
- * creating a set of parameter names that are declared in a context descriptor and can not be
- * ovevridden in a deployment descriptor.
- */
- Set nonOverridableParams = new HashSet();
- ApplicationParameter[] appParams = context.findApplicationParameters();
- for (int i = 0; i < appParams.length; i++) {
- if (appParams[i] != null && !appParams[i].getOverride()) {
- nonOverridableParams.add(appParams[i].getName());
- }
- }
-
- List initParams = new ArrayList();
- ServletContext servletCtx = context.getServletContext();
- for (Enumeration e = servletCtx.getInitParameterNames(); e.hasMoreElements();) {
- String paramName = (String) e.nextElement();
-
- ApplicationParam param = new ApplicationParam();
- param.setName(paramName);
- param.setValue(servletCtx.getInitParameter(paramName));
- /*
- * if the parameter is declared in a deployment descriptor and it is not declared in a context
- * descriptor with override=false, the value comes from the deployment descriptor
- */
- param.setFromDeplDescr(context.findParameter(paramName) != null
- && !nonOverridableParams.contains(paramName));
- initParams.add(param);
- }
-
- return initParams;
-
- }
-
- public boolean resourceExists(String name, Context context) {
- try {
- return context.getResources().lookup(name) != null;
- } catch (NamingException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- public InputStream getResourceStream(String name, Context context) throws IOException {
- try {
- return ((Resource) context.getResources().lookup(name)).streamContent();
- } catch (NamingException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- public Long[] getResourceAttributes(String name, Context context) {
- Long result[] = new Long[2];
- try {
- ResourceAttributes resource = (ResourceAttributes) context.getResources().getAttributes(name);
- result[0] = Long.valueOf(resource.getContentLength());
- result[1] = Long.valueOf(resource.getLastModified());
- } catch (NamingException e) {
- // Don't care.
- }
- return result;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.model.ApplicationParam;
+import com.googlecode.psiprobe.model.ApplicationResource;
+import com.googlecode.psiprobe.model.FilterInfo;
+import com.googlecode.psiprobe.model.FilterMapping;
+
+import org.apache.catalina.Container;
+import org.apache.catalina.Context;
+import org.apache.catalina.Host;
+import org.apache.catalina.Lifecycle;
+import org.apache.catalina.Valve;
+import org.apache.catalina.Wrapper;
+import org.apache.catalina.deploy.ApplicationParameter;
+import org.apache.catalina.deploy.ContextResource;
+import org.apache.catalina.deploy.ContextResourceLink;
+import org.apache.catalina.deploy.FilterDef;
+import org.apache.catalina.deploy.FilterMap;
+import org.apache.catalina.deploy.NamingResources;
+import org.apache.commons.modeler.Registry;
+import org.apache.naming.resources.Resource;
+import org.apache.naming.resources.ResourceAttributes;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.naming.NamingException;
+import javax.servlet.ServletContext;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ */
+public class Tomcat55ContainerAdaptor extends AbstractTomcatContainer {
+
+ private Host host;
+ private ObjectName deployerOName;
+ private MBeanServer mBeanServer;
+ private Valve valve = new Tomcat55AgentValve();
+
+ public void setWrapper(Wrapper wrapper) {
+ if (wrapper != null) {
+ host = (Host) wrapper.getParent().getParent();
+ try {
+ deployerOName =
+ new ObjectName(host.getParent().getName() + ":type=Deployer,host=" + host.getName());
+ } catch (MalformedObjectNameException e) {
+ // do nothing here
+ }
+ host.getPipeline().addValve(valve);
+ mBeanServer = Registry.getRegistry(null, null).getMBeanServer();
+ } else if (host != null) {
+ host.getPipeline().removeValve(valve);
+ }
+ }
+
+ public boolean canBoundTo(String binding) {
+ return binding != null && (binding.startsWith("Apache Tomcat/5.5"));
+ }
+
+ protected Context findContextInternal(String name) {
+ return (Context) host.findChild(name);
+ }
+
+ public List findContexts() {
+ Container[] containers = host.findChildren();
+ return Arrays.asList(containers);
+ }
+
+ public void stop(String name) throws Exception {
+ Context ctx = findContext(name);
+ if (ctx != null) {
+ ((Lifecycle) ctx).stop();
+ }
+ }
+
+ public void start(String name) throws Exception {
+ Context ctx = findContext(name);
+ if (ctx != null) {
+ ((Lifecycle) ctx).start();
+ }
+ }
+
+ private void checkChanges(String name) throws Exception {
+ Boolean result =
+ (Boolean) mBeanServer.invoke(deployerOName, "isServiced", new String[] {name},
+ new String[] {"java.lang.String"});
+ if (!result.booleanValue()) {
+ mBeanServer.invoke(deployerOName, "addServiced", new String[] {name},
+ new String[] {"java.lang.String"});
+ try {
+ mBeanServer.invoke(deployerOName, "check", new String[] {name},
+ new String[] {"java.lang.String"});
+ } finally {
+ mBeanServer.invoke(deployerOName, "removeServiced", new String[] {name},
+ new String[] {"java.lang.String"});
+ }
+ }
+ }
+
+ public void removeInternal(String name) throws Exception {
+ checkChanges(name);
+ }
+
+ public void installWar(String name, URL url) throws Exception {
+ checkChanges(name);
+ }
+
+ public void installContextInternal(String name, File config) throws Exception {
+ checkChanges(name);
+ }
+
+ public File getAppBase() {
+ File base = new File(host.getAppBase());
+ if (!base.isAbsolute()) {
+ base = new File(System.getProperty("catalina.base"), host.getAppBase());
+ }
+ return base;
+ }
+
+ public String getConfigBase() {
+ return getConfigBase(host);
+ }
+
+ public Object getLogger(Context context) {
+ return context.getLogger();
+ }
+
+ public String getHostName() {
+ return host.getName();
+ }
+
+ public String getName() {
+ return host.getParent().getName();
+ }
+
+ public boolean getAvailable(Context context) {
+ return context.getAvailable();
+ }
+
+ public List getApplicationFilterMaps(Context context) {
+ FilterMap[] fms = context.findFilterMaps();
+ List filterMaps = new ArrayList(fms.length);
+ for (int i = 0; i < fms.length; i++) {
+ if (fms[i] != null) {
+ String dm;
+ switch (fms[i].getDispatcherMapping()) {
+ case FilterMap.ERROR:
+ dm = "ERROR";
+ break;
+ case FilterMap.FORWARD:
+ dm = "FORWARD";
+ break;
+ case FilterMap.FORWARD_ERROR:
+ dm = "FORWARD,ERROR";
+ break;
+ case FilterMap.INCLUDE:
+ dm = "INCLUDE";
+ break;
+ case FilterMap.INCLUDE_ERROR:
+ dm = "INCLUDE,ERROR";
+ break;
+ case FilterMap.INCLUDE_ERROR_FORWARD:
+ dm = "INCLUDE,ERROR,FORWARD";
+ break;
+ case FilterMap.INCLUDE_FORWARD:
+ dm = "INCLUDE,FORWARD";
+ break;
+ case FilterMap.REQUEST:
+ dm = "REQUEST";
+ break;
+ case FilterMap.REQUEST_ERROR:
+ dm = "REQUEST,ERROR";
+ break;
+ case FilterMap.REQUEST_ERROR_FORWARD:
+ dm = "REQUEST,ERROR,FORWARD";
+ break;
+ case FilterMap.REQUEST_ERROR_FORWARD_INCLUDE:
+ dm = "REQUEST,ERROR,FORWARD,INCLUDE";
+ break;
+ case FilterMap.REQUEST_ERROR_INCLUDE:
+ dm = "REQUEST,ERROR,INCLUDE";
+ break;
+ case FilterMap.REQUEST_FORWARD:
+ dm = "REQUEST,FORWARD";
+ break;
+ case FilterMap.REQUEST_INCLUDE:
+ dm = "REQUEST,INCLUDE";
+ break;
+ case FilterMap.REQUEST_FORWARD_INCLUDE:
+ dm = "REQUEST,FORWARD,INCLUDE";
+ break;
+ default:
+ dm = "";
+ }
+
+ String filterClass = "";
+ FilterDef fd = context.findFilterDef(fms[i].getFilterName());
+ if (fd != null) {
+ filterClass = fd.getFilterClass();
+ }
+
+ List filterMappings = getFilterMappings(fms[i], dm, filterClass);
+ filterMaps.addAll(filterMappings);
+ }
+ }
+ return filterMaps;
+ }
+
+ /**
+ * Converts a {@link FilterMap} into one or more {@link FilterMapping}s.
+ *
+ *
+ * This implementation is for Tomcat 5.0/5.5. {@link FilterMap#getURLPattern()} and
+ * {@link FilterMap#getServletName()} were replaced in Tomcat 6 with binary-incompatible methods.
+ *
+ *
+ * @param fmap the FilterMap to analyze
+ * @param dm the dispatcher mapping for the given FilterMap. This will be the same for each
+ * FilterMapping.
+ * @param filterClass the class name of the mapped filter. This will be the same for each
+ * FilterMapping.
+ * @return a list containing a single {@link FilterMapping} object
+ */
+ protected List getFilterMappings(FilterMap fmap, String dm, String filterClass) {
+ List filterMappings = new ArrayList(1);
+ FilterMapping fm = new FilterMapping();
+ fm.setUrl(fmap.getURLPattern());
+ fm.setServletName(fmap.getServletName());
+ fm.setFilterName(fmap.getFilterName());
+ fm.setDispatcherMap(dm);
+ fm.setFilterClass(filterClass);
+ filterMappings.add(fm);
+ return filterMappings;
+ }
+
+ public void addContextResourceLink(Context context, List resourceList, boolean contextBound) {
+ ContextResourceLink[] resourceLinks = context.getNamingResources().findResourceLinks();
+ for (int i = 0; i < resourceLinks.length; i++) {
+ ContextResourceLink link = resourceLinks[i];
+
+ ApplicationResource resource = new ApplicationResource();
+ logger.debug("reading resourceLink: " + link.getName());
+ resource.setApplicationName(context.getName());
+ resource.setName(link.getName());
+ resource.setType(link.getType());
+ resource.setLinkTo(link.getGlobal());
+
+ // lookupResource(resource, contextBound, false);
+
+ resourceList.add(resource);
+ }
+ }
+
+ public void addContextResource(Context context, List resourceList, boolean contextBound) {
+ NamingResources namingResources = context.getNamingResources();
+ ContextResource[] resources = namingResources.findResources();
+
+ for (int i = 0; i < resources.length; i++) {
+ ContextResource contextResource = resources[i];
+ ApplicationResource resource = new ApplicationResource();
+
+ logger.info("reading resource: " + contextResource.getName());
+ resource.setApplicationName(context.getName());
+ resource.setName(contextResource.getName());
+ resource.setType(contextResource.getType());
+ resource.setScope(contextResource.getScope());
+ resource.setAuth(contextResource.getAuth());
+ resource.setDescription(contextResource.getDescription());
+
+ // lookupResource(resource, contextBound, false);
+
+ resourceList.add(resource);
+ }
+ }
+
+ public List getApplicationFilters(Context context) {
+ FilterDef[] fds = context.findFilterDefs();
+ List filterDefs = new ArrayList(fds.length);
+ for (int i = 0; i < fds.length; i++) {
+ if (fds[i] != null) {
+ FilterInfo fi = getFilterInfo(fds[i]);
+ filterDefs.add(fi);
+ }
+ }
+ return filterDefs;
+ }
+
+ private static FilterInfo getFilterInfo(FilterDef fd) {
+ FilterInfo fi = new FilterInfo();
+ fi.setFilterName(fd.getFilterName());
+ fi.setFilterClass(fd.getFilterClass());
+ fi.setFilterDesc(fd.getDescription());
+ return fi;
+ }
+
+ public List getApplicationInitParams(Context context) {
+ /*
+ * We'll try to determine if a parameter value comes from a deployment descriptor or a context
+ * descriptor.
+ *
+ * Assumption: context.findParameter() returns only values of parameters that are declared in a
+ * deployment descriptor.
+ *
+ * If a parameter is declared in a context descriptor with override=false and redeclared in a
+ * deployment descriptor, context.findParameter() still returns its value, even though the value
+ * is taken from a context descriptor.
+ *
+ * context.findApplicationParameters() returns all parameters that are declared in a context
+ * descriptor regardless of whether they are overridden in a deployment descriptor or not or
+ * not.
+ */
+
+ /*
+ * creating a set of parameter names that are declared in a context descriptor and can not be
+ * ovevridden in a deployment descriptor.
+ */
+ Set nonOverridableParams = new HashSet();
+ ApplicationParameter[] appParams = context.findApplicationParameters();
+ for (int i = 0; i < appParams.length; i++) {
+ if (appParams[i] != null && !appParams[i].getOverride()) {
+ nonOverridableParams.add(appParams[i].getName());
+ }
+ }
+
+ List initParams = new ArrayList();
+ ServletContext servletCtx = context.getServletContext();
+ for (Enumeration e = servletCtx.getInitParameterNames(); e.hasMoreElements();) {
+ String paramName = (String) e.nextElement();
+
+ ApplicationParam param = new ApplicationParam();
+ param.setName(paramName);
+ param.setValue(servletCtx.getInitParameter(paramName));
+ /*
+ * if the parameter is declared in a deployment descriptor and it is not declared in a context
+ * descriptor with override=false, the value comes from the deployment descriptor
+ */
+ param.setFromDeplDescr(context.findParameter(paramName) != null
+ && !nonOverridableParams.contains(paramName));
+ initParams.add(param);
+ }
+
+ return initParams;
+
+ }
+
+ public boolean resourceExists(String name, Context context) {
+ try {
+ return context.getResources().lookup(name) != null;
+ } catch (NamingException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public InputStream getResourceStream(String name, Context context) throws IOException {
+ try {
+ return ((Resource) context.getResources().lookup(name)).streamContent();
+ } catch (NamingException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public Long[] getResourceAttributes(String name, Context context) {
+ Long result[] = new Long[2];
+ try {
+ ResourceAttributes resource = (ResourceAttributes) context.getResources().getAttributes(name);
+ result[0] = Long.valueOf(resource.getContentLength());
+ result[1] = Long.valueOf(resource.getLastModified());
+ } catch (NamingException e) {
+ // Don't care.
+ }
+ return result;
+ }
+
+}
diff --git a/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/beans/TomcatDbcpDatasourceAccessor.java b/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/beans/TomcatDbcpDatasourceAccessor.java
index f6e3331e6a..204a604429 100644
--- a/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/beans/TomcatDbcpDatasourceAccessor.java
+++ b/tomcat55adaptor/src/main/java/com/googlecode/psiprobe/beans/TomcatDbcpDatasourceAccessor.java
@@ -1,49 +1,49 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe.beans;
-
-import com.googlecode.psiprobe.model.DataSourceInfo;
-
-import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class TomcatDbcpDatasourceAccessor implements DatasourceAccessor {
-
- public DataSourceInfo getInfo(Object resource) throws Exception {
- DataSourceInfo dataSourceInfo = null;
- if (canMap(resource)) {
- BasicDataSource source = (BasicDataSource) resource;
- dataSourceInfo = new DataSourceInfo();
- dataSourceInfo.setBusyConnections(source.getNumActive());
- dataSourceInfo.setEstablishedConnections(source.getNumIdle() + source.getNumActive());
- dataSourceInfo.setMaxConnections(source.getMaxActive());
- dataSourceInfo.setJdbcURL(source.getUrl());
- dataSourceInfo.setUsername(source.getUsername());
- dataSourceInfo.setResettable(false);
- dataSourceInfo.setType("tomcat-dbcp");
- }
- return dataSourceInfo;
- }
-
- public boolean reset(Object resource) throws Exception {
- return false;
- }
-
- public boolean canMap(Object resource) {
- return "org.apache.tomcat.dbcp.dbcp.BasicDataSource".equals(resource.getClass().getName())
- && resource instanceof BasicDataSource;
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe.beans;
+
+import com.googlecode.psiprobe.model.DataSourceInfo;
+
+import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class TomcatDbcpDatasourceAccessor implements DatasourceAccessor {
+
+ public DataSourceInfo getInfo(Object resource) throws Exception {
+ DataSourceInfo dataSourceInfo = null;
+ if (canMap(resource)) {
+ BasicDataSource source = (BasicDataSource) resource;
+ dataSourceInfo = new DataSourceInfo();
+ dataSourceInfo.setBusyConnections(source.getNumActive());
+ dataSourceInfo.setEstablishedConnections(source.getNumIdle() + source.getNumActive());
+ dataSourceInfo.setMaxConnections(source.getMaxActive());
+ dataSourceInfo.setJdbcURL(source.getUrl());
+ dataSourceInfo.setUsername(source.getUsername());
+ dataSourceInfo.setResettable(false);
+ dataSourceInfo.setType("tomcat-dbcp");
+ }
+ return dataSourceInfo;
+ }
+
+ public boolean reset(Object resource) throws Exception {
+ return false;
+ }
+
+ public boolean canMap(Object resource) {
+ return "org.apache.tomcat.dbcp.dbcp.BasicDataSource".equals(resource.getClass().getName())
+ && resource instanceof BasicDataSource;
+ }
+
+}
diff --git a/tomcat60adaptor/src/main/java/com/googlecode/psiprobe/Tomcat60AgentValve.java b/tomcat60adaptor/src/main/java/com/googlecode/psiprobe/Tomcat60AgentValve.java
index 3dbc90e553..554f56f139 100644
--- a/tomcat60adaptor/src/main/java/com/googlecode/psiprobe/Tomcat60AgentValve.java
+++ b/tomcat60adaptor/src/main/java/com/googlecode/psiprobe/Tomcat60AgentValve.java
@@ -1,48 +1,48 @@
-/*
- * Licensed under the GPL License. You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-package com.googlecode.psiprobe;
-
-import com.googlecode.psiprobe.model.ApplicationSession;
-import com.googlecode.psiprobe.model.IPInfo;
-
-import org.apache.catalina.connector.Request;
-import org.apache.catalina.connector.Response;
-import org.apache.catalina.valves.ValveBase;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-/**
- *
- * @author Vlad Ilyushchenko
- * @author Mark Lewis
- */
-public class Tomcat60AgentValve extends ValveBase {
-
- public String getInfo() {
- return info;
- }
-
- public void invoke(Request request, Response response) throws IOException, ServletException {
- getNext().invoke(request, response);
-
- HttpServletRequest servletRequest = request.getRequest();
- HttpSession session = servletRequest.getSession(false);
- if (session != null) {
- String ip = IPInfo.getClientAddress(servletRequest);
- session.setAttribute(ApplicationSession.LAST_ACCESSED_BY_IP, ip);
- }
- }
-
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+package com.googlecode.psiprobe;
+
+import com.googlecode.psiprobe.model.ApplicationSession;
+import com.googlecode.psiprobe.model.IPInfo;
+
+import org.apache.catalina.connector.Request;
+import org.apache.catalina.connector.Response;
+import org.apache.catalina.valves.ValveBase;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+/**
+ *
+ * @author Vlad Ilyushchenko
+ * @author Mark Lewis
+ */
+public class Tomcat60AgentValve extends ValveBase {
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void invoke(Request request, Response response) throws IOException, ServletException {
+ getNext().invoke(request, response);
+
+ HttpServletRequest servletRequest = request.getRequest();
+ HttpSession session = servletRequest.getSession(false);
+ if (session != null) {
+ String ip = IPInfo.getClientAddress(servletRequest);
+ session.setAttribute(ApplicationSession.LAST_ACCESSED_BY_IP, ip);
+ }
+ }
+
+}
diff --git a/ucp-pom.xml b/ucp-pom.xml
index d710199018..bfce98be4e 100644
--- a/ucp-pom.xml
+++ b/ucp-pom.xml
@@ -1,19 +1,19 @@
-
-
- 4.0.0
- com.oracle
- ucp
- 11.2.0.1.0
- jar
- Oracle Database Universal Connection Pool
- http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html
-
-
- Oracle Technology Network Development and Distribution License
- http://www.oracle.com/technetwork/licenses/distribution-license-152002.html
- manual
-
-
+
+
+ 4.0.0
+ com.oracle
+ ucp
+ 11.2.0.1.0
+ jar
+ Oracle Database Universal Connection Pool
+ http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html
+
+
+ Oracle Technology Network Development and Distribution License
+ http://www.oracle.com/technetwork/licenses/distribution-license-152002.html
+ manual
+
+
\ No newline at end of file
diff --git a/web/pom.xml b/web/pom.xml
index 2d00b1c3ee..769471426b 100644
--- a/web/pom.xml
+++ b/web/pom.xml
@@ -1,152 +1,152 @@
-
-
- 4.0.0
-
- com.googlecode.psiprobe
- psi-probe
- 2.4.0-SNAPSHOT
-
- web
- war
- PSI Probe Web Application
-
- Web view, message resources, and configuration
-
-
- scm:git:ssh://git@github.com:psi-probe/psi-probe.git
- scm:git:ssh://git@github.com:psi-probe/psi-probe.git
- https://github.com/psi-probe/psi-probe/
-
-
- ../
-
-
-
- ${project.groupId}
- core
- ${project.version}
-
-
- ${project.groupId}
- tomcat50adaptor
- ${project.version}
-
-
- ${project.groupId}
- tomcat55adaptor
- ${project.version}
-
-
- ${project.groupId}
- tomcat60adaptor
- ${project.version}
-
-
- ${project.groupId}
- tomcat70adaptor
- ${project.version}
-
-
- ${project.groupId}
- tomcat80adaptor
- ${project.version}
-
-
- javax.servlet
- servlet-api
- provided
-
-
- javax.servlet
- jsp-api
- provided
-
-
- javax.servlet
- jstl
- jar
-
-
- taglibs
- standard
- jar
-
-
- displaytag
- displaytag
-
-
- jaxen
- jaxen
- runtime
-
-
-
-
-
- org.jasig.mojo.jspc
- jspc-maven-plugin
-
-
-
- org.slf4j
- jcl104-over-slf4j
- 1.4.2
-
-
-
- org.slf4j
- slf4j-nop
- 1.4.2
-
-
- ${project.groupId}
- core
- ${project.version}
-
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
-
-
-
- src/main/conf
- true
-
-
-
- src/main/conf/META-INF
-
- context.xml
-
- WEB-INF
- false
-
-
- target/war_exploded
- probe
-
-
-
-
-
-
-
- true
-
-
- ${catalina.base}/logs
-
-
-
- jboss
-
- ${jboss.server.log.dir}
-
-
-
-
+
+
+ 4.0.0
+
+ com.googlecode.psiprobe
+ psi-probe
+ 2.4.0-SNAPSHOT
+
+ web
+ war
+ PSI Probe Web Application
+
+ Web view, message resources, and configuration
+
+
+ scm:git:ssh://git@github.com:psi-probe/psi-probe.git
+ scm:git:ssh://git@github.com:psi-probe/psi-probe.git
+ https://github.com/psi-probe/psi-probe/
+
+
+ ../
+
+
+
+ ${project.groupId}
+ core
+ ${project.version}
+
+
+ ${project.groupId}
+ tomcat50adaptor
+ ${project.version}
+
+
+ ${project.groupId}
+ tomcat55adaptor
+ ${project.version}
+
+
+ ${project.groupId}
+ tomcat60adaptor
+ ${project.version}
+
+
+ ${project.groupId}
+ tomcat70adaptor
+ ${project.version}
+
+
+ ${project.groupId}
+ tomcat80adaptor
+ ${project.version}
+
+
+ javax.servlet
+ servlet-api
+ provided
+
+
+ javax.servlet
+ jsp-api
+ provided
+
+
+ javax.servlet
+ jstl
+ jar
+
+
+ taglibs
+ standard
+ jar
+
+
+ displaytag
+ displaytag
+
+
+ jaxen
+ jaxen
+ runtime
+
+
+
+
+
+ org.jasig.mojo.jspc
+ jspc-maven-plugin
+
+
+
+ org.slf4j
+ jcl104-over-slf4j
+ 1.4.2
+
+
+
+ org.slf4j
+ slf4j-nop
+ 1.4.2
+
+
+ ${project.groupId}
+ core
+ ${project.version}
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+
+ src/main/conf
+ true
+
+
+
+ src/main/conf/META-INF
+
+ context.xml
+
+ WEB-INF
+ false
+
+
+ target/war_exploded
+ probe
+
+
+
+
+
+
+
+ true
+
+
+ ${catalina.base}/logs
+
+
+
+ jboss
+
+ ${jboss.server.log.dir}
+
+
+
+
diff --git a/web/src/main/conf/META-INF/context.xml b/web/src/main/conf/META-INF/context.xml
index b57f02aae6..c126f464ce 100644
--- a/web/src/main/conf/META-INF/context.xml
+++ b/web/src/main/conf/META-INF/context.xml
@@ -1,2 +1,2 @@
-
+
\ No newline at end of file
diff --git a/web/src/main/conf/WEB-INF/messages.properties b/web/src/main/conf/WEB-INF/messages.properties
index b8ba85237f..519311077d 100644
--- a/web/src/main/conf/WEB-INF/messages.properties
+++ b/web/src/main/conf/WEB-INF/messages.properties
@@ -1,718 +1,718 @@
-#
-# Licensed under the GPL License. You may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-#
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-
-#
-probe.jsp.i18n.credit=
-probe.jsp.icons.credit="Silk" icons from famfamfam.com.
-
-probe.jsp.generic.no=no
-probe.jsp.generic.yes=yes
-probe.jsp.generic.abbreviations=What are those abbreviations?
-
-probe.jsp.app.attributes.col.delete=Remove attribute
-probe.jsp.app.attributes.col.delete.title=Remove attribute
-probe.jsp.app.attributes.col.name=Name
-probe.jsp.app.attributes.col.type=Type
-probe.jsp.app.attributes.col.value=Value
-probe.jsp.app.attributes.h3.attributes=Servlet context attributes
-probe.jsp.app.attributes.noattributes=There are no attributes in this servlet context
-
-probe.jsp.applications.alt.reload=reload
-probe.jsp.applications.alt.undeploy=Undeploy
-probe.jsp.applications.col.contextAttributeCount=C.Attr
-probe.jsp.applications.col.description=Description
-probe.jsp.applications.col.distributable=Clstred.?
-probe.jsp.applications.col.jdbcUsage=Jdbc Usage
-probe.jsp.applications.col.jsp=JSP
-probe.jsp.applications.col.name=Name
-probe.jsp.applications.col.serializable=Ser.?
-probe.jsp.applications.col.sessionAttributeCount=S.Attr
-probe.jsp.applications.col.sessionCount=Sess.
-probe.jsp.applications.col.sessionTimeout=Sess.Timeout
-probe.jsp.applications.col.size=Size
-probe.jsp.applications.col.status=Status
-probe.jsp.applications.col.requestCount=Req.
-probe.jsp.applications.help.contextAttributeCount=total number of ServletContext attributes
-probe.jsp.applications.help.distributable=application is "distributable"
-probe.jsp.applications.help.requestCount=total number of requests processed by servlets
-probe.jsp.applications.help.serializable=all session attributes implement java.io.Serializable
-probe.jsp.applications.help.sessionAttributeCount=total number of session attributes
-probe.jsp.applications.help.sessionCount=number of sessions
-probe.jsp.applications.hidesize=hide sessions size
-probe.jsp.applications.jdbcUsage.title=Max.conn.usage {0}%
-probe.jsp.applications.jsp.view=view
-probe.jsp.applications.serializable.no=NO
-probe.jsp.applications.serializable.yes=yes
-probe.jsp.applications.showsize=estimate sessions size (could be slow)
-probe.jsp.applications.status.down=down
-probe.jsp.applications.status.down.title=Start {0}
-probe.jsp.applications.status.up=running
-probe.jsp.applications.title.reload=Reload {0}
-probe.jsp.applications.title.status.up=Stop {0}
-probe.jsp.applications.title.undeploy=Undeploy {0}
-probe.jsp.applications.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
-
-probe.jsp.connectors.information=Traffic information for all available connectors. The feed is LIVE and the charts are automatically updated. Please note that you do not have to stay on this page for the charts to update.
-probe.jsp.connectors.processor.errorCount=Error count:
-probe.jsp.connectors.processor.maxTime=Max time:
-probe.jsp.connectors.processor.processingTime=Processing time:
-probe.jsp.connectors.processor.received=Received:
-probe.jsp.connectors.processor.requestCount=Request count:
-probe.jsp.connectors.processor.sent=Sent:
-probe.jsp.connectors.proc_time.title=Processing time (ms) in each interval
-probe.jsp.connectors.requests.title=Number of requests each interval
-probe.jsp.connectors.traffic.title=Traffic volume (bytes) in each interval
-probe.jsp.connectors.wrk.col.in=IN
-probe.jsp.connectors.wrk.col.out=OUT
-probe.jsp.connectors.wrk.col.processingTime=Proc.time
-probe.jsp.connectors.wrk.col.remoteAddr=Remote IP
-probe.jsp.connectors.wrk.col.stage=stage
-probe.jsp.connectors.wrk.col.url=URL
-probe.jsp.connectors.wrk.col.thread=Thread
-probe.jsp.connectors.wrk.empty=No processors
-probe.jsp.connectors.wrk.stage.endInput=EndInput
-probe.jsp.connectors.wrk.stage.endOutput=EndOutput
-probe.jsp.connectors.wrk.stage.ended=Ended
-probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
-probe.jsp.connectors.wrk.stage.new=New
-probe.jsp.connectors.wrk.stage.parse=Parse
-probe.jsp.connectors.wrk.stage.prepare=Prepare
-probe.jsp.connectors.wrk.stage.service=Service
-
-probe.jsp.cluster.chart.requests=Requests in {0}-second intervals
-probe.jsp.cluster.chart.traffic=Traffic in {0}-second intervals
-probe.jsp.cluster.h3.info=Cluster information
-probe.jsp.cluster.h3.members=Cluster members
-probe.jsp.cluster.heartbeatFreq=Heartbeat freq.:
-probe.jsp.cluster.heartbeatTimeout=Heartbeat timeout:
-probe.jsp.cluster.info=Info:
-probe.jsp.cluster.manager=Manager:
-probe.jsp.cluster.mcastAddress=Mcast address:
-probe.jsp.cluster.mcastBindAddress=Mcast bind address:
-probe.jsp.cluster.mcastBindAddress.all=all
-probe.jsp.cluster.mcastTTL=Mcast TTL
-probe.jsp.cluster.members.col.address=Address
-probe.jsp.cluster.members.col.avgMsgSize=AvgSz
-probe.jsp.cluster.members.col.closes=Closes
-probe.jsp.cluster.members.col.connectCount=CC
-probe.jsp.cluster.members.col.connected=Conn.?
-probe.jsp.cluster.members.col.disconnectCount=DC
-probe.jsp.cluster.members.col.failures=Failures
-probe.jsp.cluster.members.col.inQueueCounter=InQ
-probe.jsp.cluster.members.col.keepAlive=Keep Alive
-probe.jsp.cluster.members.col.openFailures=Open fails
-probe.jsp.cluster.members.col.opens=Opens
-probe.jsp.cluster.members.col.outQueueCounter=OutQ
-probe.jsp.cluster.members.col.queueSize=QSz
-probe.jsp.cluster.members.col.queueSizeBytes=QSzB
-probe.jsp.cluster.members.col.requests=Req.
-probe.jsp.cluster.members.col.resends=Resends
-probe.jsp.cluster.members.col.sent=Sent
-probe.jsp.cluster.members.col.socketLimit=Socket Limit
-probe.jsp.cluster.members.failing.alt=failing
-probe.jsp.cluster.members.failing.title=The member is suspected to be failing
-probe.jsp.cluster.members.healthy.alt=healthy
-probe.jsp.cluster.members.healthy.title=The member is healthy
-probe.jsp.cluster.mode=Replication mode:
-probe.jsp.cluster.name=Name:
-probe.jsp.cluster.noMembers=There are no active cluster members known to this node
-probe.jsp.cluster.notAvailable=Cluster information is only available to Tomcat 5.5.x with enabled cluster support.
-probe.jsp.cluster.received=received
-probe.jsp.cluster.receiverAddress=Receiver address:
-probe.jsp.cluster.receiverPort=Receiver port:
-probe.jsp.cluster.sent=sent
-
-probe.jsp.copyright=Copyright 2009-${copyright}. Do you have any questions or suggestions? Visit us at https://github.com/psi-probe/psi-probe
-
-probe.jsp.dataSourceGroups.empty=There are no properly configured data sources available to this instance
-probe.jsp.dataSourceGroups.information=The table below contains total numbers of currently opened and potentially allowed database connection grouped by jdbc url. This information can help you estimate how many connections to a particular database can be opened by jdbc resources configured within the container.
-probe.jsp.dataSourceGroups.jdbcUsage.title=Max.conn.usage {0}%
-probe.jsp.dataSourceGroups.list.col.busy=Total busy
-probe.jsp.dataSourceGroups.list.col.established=Total estab.
-probe.jsp.dataSourceGroups.list.col.max=Total max.
-probe.jsp.dataSourceGroups.list.col.resourceCount=Resource count
-probe.jsp.dataSourceGroups.list.col.url=URL
-probe.jsp.dataSourceGroups.list.col.usage=Usage
-probe.jsp.dataSourceGroups.menu.back=Back to data source list
-
-probe.jsp.datasources.h3.global=Global Resources
-probe.jsp.datasources.h3.app=Application Resources
-probe.jsp.datasources.global.empty=There are no server-level data sources configured for this Tomcat instance
-probe.jsp.datasources.app.empty=There are no application-level data sources configured for this Tomcat instance
-probe.jsp.datasources.empty=There are no data sources configured for this Tomcat instance
-probe.jsp.datasources.help.max=maximum number of connections in the pool
-probe.jsp.datasources.help.established=number of established connections that can be reused
-probe.jsp.datasources.help.busy=number of busy connections cannot be reused
-probe.jsp.datasources.list.col.application=App
-probe.jsp.datasources.list.col.auth=Auth
-probe.jsp.datasources.list.col.busy=B
-probe.jsp.datasources.list.col.description=Description
-probe.jsp.datasources.list.col.established=E
-probe.jsp.datasources.list.col.linkTo=Lnk
-probe.jsp.datasources.list.col.max=M
-probe.jsp.datasources.list.col.reset.alt=reset
-probe.jsp.datasources.list.col.resource=Resource
-probe.jsp.datasources.list.col.type=Type
-probe.jsp.datasources.list.col.url=URL
-probe.jsp.datasources.list.col.usage=Usage
-probe.jsp.datasources.list.col.user=User
-probe.jsp.datasources.list.misconfigured.alt=error
-probe.jsp.datasources.opt.groupByJdbcUrl=group by jdbc url
-
-probe.jsp.deployment.war.success={0} has been deployed
-probe.jsp.deployment.compilationDetails=View compilation details
-probe.jsp.deployment.s1.compile.label=Precompile JSP pages after application is deployed (could take few minutes)
-probe.jsp.deployment.s1.description=Upload a .war file to the server. If context name is not specified the file name will be used. When uploading .war files with META-INF/context.xml please make sure that the context has the same "path" attribute as the war context you are deploying, otherwise it will confuse the hell out of Tomcat 5.0.x
-probe.jsp.deployment.s1.discard.label=Discard "work" directory if exists
-probe.jsp.deployment.s1.file.label=Select a .war file to upload
-probe.jsp.deployment.s1.submit=Deploy
-probe.jsp.deployment.s1.title=Upload application (basic)
-probe.jsp.deployment.s1.update.label=Update the application if it is already deployed
-probe.jsp.deployment.s2.context.label=Context name (ex. /dummy)
-probe.jsp.deployment.s2.description=Use this option if you have already created context .xml file in %CATALINA_BASE%/conf/Catalina/localhost/. It is assumed that the context name is the name of the .xml file. For example context "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml. NOTE: Tomcat 5.0.x would require the .xml file to have "path" attribute!
-probe.jsp.deployment.s2.title=Deploy context name (advanced)
-
-probe.jsp.follow.h3.fileContent=File content
-probe.jsp.follow.h3.fileInfo=File information
-probe.jsp.follow.h3.sources=Logging sources
-probe.jsp.follow.loading=Loading...
-probe.jsp.follow.menu.back=back to log files list
-probe.jsp.follow.menu.clear=clear buffer
-probe.jsp.follow.menu.download=download
-probe.jsp.follow.menu.nowrap=nowrap
-probe.jsp.follow.menu.pause=pause tailing
-probe.jsp.follow.menu.resume=resume tailing
-probe.jsp.follow.menu.wrap=wrap lines
-probe.jsp.follow.menu.zoomin=zoom in
-probe.jsp.follow.menu.zoomout=zoom out
-probe.jsp.followed_file_info.fileName=File name:
-probe.jsp.followed_file_info.lastModified=Last modified:
-probe.jsp.followed_file_info.size=Size:
-
-probe.jsp.jsps.col.lastmodified=Last modified
-probe.jsp.jsps.col.message=Message
-probe.jsp.jsps.col.name=JSP Name
-probe.jsp.jsps.col.size=Size
-probe.jsp.jsps.col.status=Status
-probe.jsp.jsps.notfound=This application does not have JSP files
-probe.jsp.jsps.opt.compile=Compile selected
-probe.jsp.jsps.opt.compileall=Compile all
-probe.jsp.jsps.opt.discardscratch=discard "work" dir
-probe.jsp.jsps.opt.toggleall=Toggle all
-probe.jsp.jsps.status.compiled=Compiled
-probe.jsp.jsps.status.failed=FAILED
-probe.jsp.jsps.status.outdated=Out dated
-
-probe.jsp.logs.col.app=App
-probe.jsp.logs.col.class=Class
-probe.jsp.logs.col.file=File name
-probe.jsp.logs.col.level=Level
-probe.jsp.logs.col.modified=Modified
-probe.jsp.logs.col.name=Name
-probe.jsp.logs.col.size=Size
-probe.jsp.logs.col.type=Type
-probe.jsp.logs.download.alt=download
-probe.jsp.logs.hideapps=show existing only
-probe.jsp.logs.showapps=show all
-probe.jsp.logs_notSupported.message=Your Java Virtual Machine {0} {1} does not fully support SUN reflection API - sun.reflect.ReflectionFactory. Log browsing functionality is disabled.
-
-probe.jsp.memory.advise.finalization=Advise Finalization
-probe.jsp.memory.advise.gc=Advise GC
-probe.jsp.memory.col.committed=Committed
-probe.jsp.memory.col.group=Group
-probe.jsp.memory.col.initial=Initial
-probe.jsp.memory.col.max=Maximum
-probe.jsp.memory.col.name=Name
-probe.jsp.memory.col.plot=Plot
-probe.jsp.memory.col.usageScore=Usage score
-probe.jsp.memory.col.used=Used
-probe.jsp.memory.h3.charts=Memory usage history
-probe.jsp.memory.h3.table=Current memory usage
-probe.jsp.memory.loading=Loading...
-probe.jsp.memory.usage.title=Usage {0}%
-probe.jsp.memory.notAvailable=This page requires Java5 with enabled JMX Agent. To enable the JXM Agent please add "-Dcom.sun.management.jmxremote" to java command line or $JAVA_OPTS environment variable. If you are an IBM JDK user please add these properties: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
-
-probe.jsp.menu.applications=Applications
-probe.jsp.menu.cluster=Cluster
-probe.jsp.menu.connectors=Connectors
-probe.jsp.menu.datasources=Data Sources
-probe.jsp.menu.deployment=Deployment
-probe.jsp.menu.logs=Logs
-probe.jsp.menu.memory=Memory
-probe.jsp.menu.quickcheck=Quick check
-probe.jsp.menu.sysinfo=System
-probe.jsp.menu.threads=Threads
-
-probe.jsp.noaccess=You do not have sufficient privileges to access this page. Please use the navigation bar to choose another area or click "back" button in your browser.
-probe.jsp.noaccess.ajax=You do not have sufficient privileges to access this functionality.
-probe.jsp.noaccess.title=403 Forbidden
-probe.jsp.notfound=The page you requested does not exist on this server. Please use the navigation bar to locate the area you require.
-probe.jsp.notfound.title=404 Not Found
-
-probe.jsp.resources.col.auth=Authentication
-probe.jsp.resources.col.linkTo=Link to
-probe.jsp.resources.col.name=Name
-probe.jsp.resources.col.type=Type
-probe.jsp.resources.empty=There are no resources defined for this application
-probe.jsp.resources.info.busy=Busy:
-probe.jsp.resources.info.connectionUsage.alt=Conn.usage {0}%
-probe.jsp.resources.info.established=Established:
-probe.jsp.resources.info.max=Max:
-probe.jsp.resources.info.misconfigured=This resource is misconfigured and runtime information is not available
-probe.jsp.resources.info.misconfigured.alt=exclamation sign
-probe.jsp.resources.info.reset=
-probe.jsp.resources.info.reset.alt=reset
-probe.jsp.resources.info.title=Additional info:
-
-probe.jsp.servlet_source.h3.source=Auto generated servlet code
-probe.jsp.servlet_source.opt.jsp=view JSP
-
-probe.jsp.sessionAttibutes.card.age=Age:
-probe.jsp.sessionAttibutes.card.application=Application:
-probe.jsp.sessionAttibutes.card.created=Created:
-probe.jsp.sessionAttibutes.card.expiryTime=Expiry time:
-probe.jsp.sessionAttibutes.card.id=ID:
-probe.jsp.sessionAttibutes.card.idleTime=Idle time:
-probe.jsp.sessionAttibutes.card.info=Info:
-probe.jsp.sessionAttibutes.card.lastAccessed=Last accessed:
-probe.jsp.sessionAttibutes.card.manager=Manager type:
-probe.jsp.sessionAttibutes.card.maxIdleTime=Max idle time:
-probe.jsp.sessionAttibutes.card.serializable=Serializable:
-probe.jsp.sessionAttibutes.card.serializable.no=NO
-probe.jsp.sessionAttibutes.card.serializable.yes=yes
-probe.jsp.sessionAttibutes.card.size=Size:
-probe.jsp.sessionAttibutes.col.delete=remove
-probe.jsp.sessionAttibutes.col.delete.title=Remove attribute
-probe.jsp.sessionAttibutes.col.name=Name
-probe.jsp.sessionAttibutes.col.serializable=Ser.?
-probe.jsp.sessionAttibutes.col.size=Size
-probe.jsp.sessionAttibutes.col.type=Type
-probe.jsp.sessionAttibutes.col.value=Value
-probe.jsp.sessionAttibutes.h3.attributes=Session attributes
-probe.jsp.sessionAttibutes.h3.card=Session card
-probe.jsp.sessionAttibutes.invalidSid=Session ID is invalid or the session has expired
-probe.jsp.sessionAttibutes.menu.back=Back to session list
-probe.jsp.sessionAttibutes.menu.destroy=Destroy this session
-probe.jsp.sessionAttibutes.noattributes=This session does not have attributes
-
-probe.jsp.sessions.col.age=Age
-probe.jsp.sessions.col.creationTime=Creation time
-probe.jsp.sessions.col.expiryTime=Expiry time
-probe.jsp.sessions.col.id=Session ID
-probe.jsp.sessions.col.applicationName=App
-probe.jsp.sessions.col.idleTime=Idle time
-probe.jsp.sessions.col.lastAccessTime=Last Access Time
-probe.jsp.sessions.col.objectCount=Object Count
-probe.jsp.sessions.col.serializable=Ser.
-probe.jsp.sessions.col.size=Size
-probe.jsp.sessions.col.lastIP=Last IP
-probe.jsp.sessions.unknown.ip=unknown
-probe.jsp.sessions.empty=There are no sessions
-probe.jsp.sessions.menu.expire=Expire
-probe.jsp.sessions.menu.toggle=Toggle
-probe.jsp.sessions.status.no=NO
-probe.jsp.sessions.status.yes=yes
-probe.jsp.sessions.opt.all=Show all
-probe.jsp.showsize=estimate sizes
-probe.jsp.hidesize=hide size
-
-probe.jsp.sysinfo.col.name=Property name
-probe.jsp.sysinfo.col.value=Property value
-probe.jsp.sysinfo.container.title=Container information
-probe.jsp.sysinfo.memory.adviseGC=Advise Garbage Collection
-probe.jsp.sysinfo.memory.free=Free:
-probe.jsp.sysinfo.memory.max=Max:
-probe.jsp.sysinfo.memory.title=Memory utilization
-probe.jsp.sysinfo.memory.total=Total:
-probe.jsp.sysinfo.memory.usage=Current memory usage is
-probe.jsp.sysinfo.memory.usage.alt=Memory usage bar
-probe.jsp.sysinfo.os.applicationBase=Application base:
-probe.jsp.sysinfo.os.catalinaBase=catalina.base:
-probe.jsp.sysinfo.os.catalinaHome=catalina.home:
-probe.jsp.sysinfo.os.configBase=Configuration base:
-probe.jsp.sysinfo.os.container=Container:
-probe.jsp.sysinfo.os.currentTime=Current time:
-probe.jsp.sysinfo.os.jvm=JVM:
-probe.jsp.sysinfo.os.name=OS:
-probe.jsp.sysinfo.os.processors=Processors:
-probe.jsp.sysinfo.os.title=OS information
-probe.jsp.sysinfo.os.workingDir=Working dir:
-probe.jsp.sysinfo.sysproperties.title=System properties
-
-probe.jsp.threadpools.currentThreadCount=Current thread count
-probe.jsp.threadpools.currentThreadsBusy=Current threads busy
-probe.jsp.threadpools.maxSpareThreads=Max spare threads
-probe.jsp.threadpools.maxThreads=Max threads
-probe.jsp.threadpools.menu.threads=Running threads
-probe.jsp.threadpools.minSpareThreads=Min spare threads
-probe.jsp.threadpools.name=Name
-
-probe.jsp.threads.col.application=App
-probe.jsp.threads.col.classLoader=Class loader
-probe.jsp.threads.col.daemon=D
-probe.jsp.threads.col.groupName=Group
-probe.jsp.threads.col.interrupted=I
-probe.jsp.threads.col.name=Name
-probe.jsp.threads.col.priority=P
-probe.jsp.threads.col.runnableClass=Runnable
-probe.jsp.threads.col.threadClass=Thread class
-probe.jsp.threads.col.id=ID
-probe.jsp.threads.col.execPoint=Exec. point
-probe.jsp.threads.col.state=State
-probe.jsp.threads.col.inNative=In.Native
-probe.jsp.threads.col.suspended=Susp.
-probe.jsp.threads.col.waitedCount=WC
-probe.jsp.threads.col.blockedCount=BC
-probe.jsp.threads.help.priority=thread priority, the higher the number the higher the priority
-probe.jsp.threads.help.daemon=thread is a daemon
-probe.jsp.threads.help.interrupted=thread has been interrupted
-probe.jsp.threads.help.inNative=true if thread is executing native code
-probe.jsp.threads.help.suspended=thread is suspended
-probe.jsp.threads.help.waitedCount="wait count" - number of times thread has been waiting on something
-probe.jsp.threads.help.blockedCount="blocked count" - number of times thread has been blocked
-probe.jsp.threads.info.loading=Loading...
-probe.jsp.threads.info.unavailable=URL information is not available
-probe.jsp.threads.killmsg=Killing threads indiscriminantly may destabilize JVM. Are you sure you want to stop {0}?
-probe.jsp.threads.menu.threadpools=Threads Pools
-probe.jsp.threads.stop.alt=stop
-
-probe.jsp.title.app.attributes={0} - context attributes
-probe.jsp.title.applications=Installed applications
-probe.jsp.title.cluster=Cluster status
-probe.jsp.title.connectors=Connectors
-probe.jsp.title.dataSourceGroups=Data sources grouped by jdbc url
-probe.jsp.title.datasources=Available Data Sources
-probe.jsp.title.deployment=Application deployment
-probe.jsp.title.follow=Tailing log
-probe.jsp.title.jsps={0} - deployed JSPs
-probe.jsp.title.logs=Logs
-probe.jsp.title.logs_notSupported=Not supported
-probe.jsp.title.memory=JVM memory usage
-probe.jsp.title.quickcheck=Quick check
-probe.jsp.title.resources={0} - resources
-probe.jsp.title.servlet_source=Generated servlet source
-probe.jsp.title.sessionAttibutes=Session attributes
-probe.jsp.title.sessions={0} - sessions
-probe.jsp.title.sessions.all=Sessions
-probe.jsp.title.sysinfo=System information
-probe.jsp.title.threadpools=Threads Pools
-probe.jsp.title.threads=Running threads
-probe.jsp.title.viewsource={0} - View source
-probe.jsp.uptime=UP for {0} days {1} hours {2} minutes
-probe.jsp.version=Version {0} running on {1}
-
-probe.jsp.viewsource.appname=Application name:
-probe.jsp.viewsource.encoding=Encoding:
-probe.jsp.viewsource.filename=File name:
-probe.jsp.viewsource.h3.info=JSP information
-probe.jsp.viewsource.h3.source=JSP source code
-probe.jsp.viewsource.lastmodified=Last modified:
-probe.jsp.viewsource.notfound=Unfortunately you cannot view contents of this file. Please go back and select the file from the list.
-probe.jsp.viewsource.opt.back=back to JSP list
-probe.jsp.viewsource.opt.compile=compile
-probe.jsp.viewsource.opt.viewServlet=view generated servlet
-probe.jsp.viewsource.size=Size:
-probe.jsp.viewsource.state=State:
-
-probe.jsp.wrongparams=You have passed wrong parameters to this page.
-probe.jsp.wrongsvrversion=This feature is not implemented for {0}
-probe.jsp.zoomedchart.back=Back to chart groups
-probe.jsp.zoomedchart.information=You can use the slider to resize the image according to your display resolution. The information is LIVE and the chart would be refreshed automatically every {0} seconds.
-
-probe.src.contextAction.cannotActOnSelf=Cannot stop/start/undeploy this application
-probe.src.contextDoesntExist=Context {0} does not exist
-probe.src.deploy.context.failure=Failed to deploy {0}
-probe.src.deploy.context.success=Deployed application from {0}
-probe.src.deploy.exploded.success={0} has been successfully installed at {1}
-probe.src.deploy.war.alreadyExists=Context {0} is already in use
-probe.src.deploy.war.failure=There was an error thrown by Tomcat during deployment: "{0}". This however may not mean that you application failed to deploy. Please check the status in the application list
-probe.src.deploy.war.notWar.failure=Deployment failed. File name must end with .war
-probe.src.deploy.war.notinstalled={0} was not installed
-probe.src.deploy.war.uploadfailure=There was a problem uploading the file: {0}
-probe.src.reset.datasource.c3p0=This datasource cannot be reset
-probe.src.reset.datasource.notfound=Resource {0} does not exist
-
-probe.jsp.title.wrapper=Java Service Wrapper
-probe.jsp.wrapper.not_available=This JVM is not controlled by Java Service Wrapper
-probe.jsp.wrapper.menu.restart=restart JVM
-probe.jsp.wrapper.menu.stop=stop JVM
-probe.jsp.wrapper.menu.thread_dump=Request thread dump
-probe.jsp.wrapper.h3.info=Wrapper information
-probe.jsp.wrapper.h3.props=Wrapper properties
-probe.jsp.wrapper.confirm.restart=Are you sure you want to restart JVM?
-probe.jsp.wrapper.confirm.stop=JVM cannot be started again from Probe. Are you sure you want to stop JVM?
-probe.jsp.wrapper.jvm.stopping=JVM shutdown is now in progress. If you need to start it up again you would have to do it via the console.
-probe.jsp.wrapper.jvm.restarting=JVM restart is now in progress. This may take a few minutes.
-probe.jsp.wrapper.jvm.thread_dump=JMV Thread Dump has been requested. You can normally find it in the Wrapper log file.
-
-probe.jsp.wrapper.user=User:
-probe.jsp.wrapper.interactive_user=Interactive user:
-probe.jsp.wrapper.java_pid=Java PID:
-probe.jsp.wrapper.pid=Wrapper PID:
-probe.jsp.wrapper.service=Running as service:
-probe.jsp.wrapper.debug=Debug enabled:
-probe.jsp.wrapper.version=Wrapper version:
-
-probe.jsp.decorator.system.title=System
-probe.jsp.decorator.system.overview=Overview
-probe.jsp.decorator.system.memory=Memory utilization
-probe.jsp.decorator.system.props=System properties
-probe.jsp.decorator.system.os=OS information
-probe.jsp.decorator.system.wrapper=Wrapper control
-
-probe.jsp.os.h3.information=OS information
-probe.jsp.os.h3.charts=Historical charts
-probe.jsp.os.chart.cpu=JVM CPU utilization (%)
-probe.jsp.os.chart.cpu.alt=JVM CPU utilization chart
-probe.jsp.os.chart.cpu.legend=CPU usage
-probe.jsp.os.chart.memory=OS & JVM memory usage (KB)
-probe.jsp.os.chart.memory.alt=OS and JVM physical memory usage chart
-probe.jsp.os.chart.memory.legend.total=total used
-probe.jsp.os.chart.memory.legend.jvm=used by JVM
-probe.jsp.os.chart.swap=Swap usage (KB)
-probe.jsp.os.chart.swap.alt=Swap usage chart
-probe.jsp.os.chart.swap.legend=swap used
-probe.jsp.os.chart.fd=File descriptors
-probe.jsp.os.chart.fd.alt=File descriptors chart
-probe.jsp.os.chart.fd.legend.open=open file descriptors
-probe.jsp.os.chart.fd.legend.max=max file descriptors
-probe.jsp.os.card.name=OS Name:
-probe.jsp.os.card.version=OS Version:
-probe.jsp.os.card.processors=Processors:
-probe.jsp.os.card.totalMemory=Total RAM:
-probe.jsp.os.card.freeMemory=Free RAM:
-probe.jsp.os.card.committedVirtualMemory=Committed JVM memory:
-probe.jsp.os.card.totalSwap=Total swap:
-probe.jsp.os.card.freeSwap=Free swap:
-
-probe.jsp.title.testDataSource={0} -> {1}
-probe.src.dataSourceTest.resource.lookup.failure=Data source {0} does not exist
-probe.src.dataSourceTest.connection.failure=Cannot establish a database connection. {0}
-probe.src.dataSourceTest.connection.success=Successfully connected to the database
-probe.src.dataSourceTest.sql.required=Sql query text is required
-probe.src.dataSourceTest.sql.failure=Error encountered while executing the query. {0}
-probe.src.dataSourceTest.sql.null=NULL
-probe.src.dataSourceTest.cachedResultSet.failure=Cannot retrieve a cached result set
-probe.jsp.dataSourceTest.help=This screen can help you to test your data source database connectivity.\
-Test connection checks if a database connection can be established and displays some database information.\
-Execute SQL executes an SQL query you enter against the database.\
-You can see a database operation output or an error message at the bottom of the screen.\
-Show history displays a list of queries you have executed.\
-Please consider using Show options to limit the number of records returned by you query for not to waste your system resources.
-probe.jsp.dataSourceTest.menu.back=Back to data sources
-probe.jsp.dataSourceTest.menu.connect=Test connection
-probe.jsp.dataSourceTest.menu.execute=Execute sql (Ctrl+Enter)
-probe.jsp.dataSourceTest.menu.showHistory=Show history (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.hideHistory=Hide history (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.showOptions=Show options (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.hideOptions=Hide options (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.wrap=Wrap lines
-probe.jsp.dataSourceTest.menu.nowrap=Don't wrap lines
-probe.jsp.dataSourceTest.menu.abbreviations=Help!
-probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit enabled)
-probe.jsp.dataSourceTest.sqlForm.maxRows.label=Records to retrieve
-probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Records per page
-probe.jsp.dataSourceTest.sqlForm.historySize.label=History size
-probe.jsp.dataSourceTest.h3.results=Query results
-probe.jsp.dataSourceTest.results.rowcount={0} record(s) affected.
-probe.jsp.dataSourceTest.h3.metaData=Database Info
-probe.jsp.dataSourceTest.chart.usage.title=Datasource usage
-probe.jsp.dataSourceTest.dbMetaData.col.propName=Property Name
-probe.jsp.dataSourceTest.dbMetaData.col.propValue=Property Value
-probe.jsp.dataSourceTest.dbMetaData.dbProdName=Database Product Name
-probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Database Product Version
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=JDBC Driver Name
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=JDBC Driver Version
-probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=JDBC Version
-probe.jsp.dataSourceTest.results.paging.banner.item_name=record
-probe.jsp.dataSourceTest.results.paging.banner.items_name=records
-probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
-probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Displaying one {0}.
-probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Displaying all {2}.
-probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Displaying {2} to {3}.
-probe.jsp.dataSourceTest.results.paging.banner.first=First
-probe.jsp.dataSourceTest.results.paging.banner.prev=Prev
-probe.jsp.dataSourceTest.results.paging.banner.next=Next
-probe.jsp.dataSourceTest.results.paging.banner.last=Last
-probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Go to page {0}
-probe.jsp.dataSourceTest.sql.completed=Statement completed.
-probe.jsp.dataSourceTest.h3.queryHistory=Query history
-probe.jsp.dataSourceTest.queryHistory.empty=The history list is empty
-
-probe.jsp.whois.timeout=Could not completed WHOIS query. Check if WHOIS is blocked by your network.
-
-probe.jsp.threadstack.native=native code
-probe.jsp.threadstack.unknown=unknown source
-probe.jsp.threadstack.unavailable=Trace stack is unavailable for this thread
-
-probe.jsp.tooltip.close=close
-
-probe.jsp.sessions.h3=Sessions
-probe.jsp.sessions.search.h3=Session search criteria
-probe.jsp.sessions.menu.showSearch=Session search
-probe.jsp.sessions.menu.applySearch=Apply search
-probe.jsp.sessions.menu.clearSearch=Clear search
-probe.jsp.sessions.menu.searchHelp=Help
-probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
-Whether Session Id matches a regular expression.\
-Whether Last IP contains a substring.\
-Whether Idle Time falls into a range specified in seconds.\
-Whether Age falls into a range specified in seconds.\
-Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
-This condition allows finding a session with an attribute A and/or an attribute B set.
-probe.jsp.sessions.search.sessionId=Session id (RE)
-probe.jsp.sessions.search.attrName=Attribute names (RE list)
-probe.jsp.sessions.search.ageFrom=Age from (sec)
-probe.jsp.sessions.search.ageTo=to
-probe.jsp.sessions.search.idleTimeFrom=Idle time from (sec)
-probe.jsp.sessions.search.idleTimeTo=to
-probe.jsp.sessions.search.lastIP=Last IP (substring)
-probe.jsp.sessions.search.results.h3=Session search results
-probe.src.sessions.search.empty=Search criteria is empty
-probe.src.sessions.search.results.empty=No sessions have matched the search criteria
-probe.src.sessions.search.invalid=Search criteria is invalid
-probe.src.sessions.search.invalid.sessionId=Session id regular expression is invalid. {0}
-probe.src.sessions.search.invalid.attrName=Attribute name regular expression is invalid. {0}
-probe.src.sessions.search.invalid.ageFrom=Age from value is invalid
-probe.src.sessions.search.invalid.ageTo=Age to value is invalid
-probe.src.sessions.search.invalid.idleTimeFrom=Idle time from value is invalid
-probe.src.sessions.search.invalid.idleTimeTo=Idle time to value is invalid
-probe.src.sessions.search.invalid.lastIP=Last IP regular expression is invalid. {0}
-
-probe.jsp.app.nav.title=Application
-probe.jsp.app.nav.summary=Summary
-probe.jsp.app.nav.sessions=Sessions
-probe.jsp.app.nav.attributes=Attributes
-probe.jsp.app.nav.jsps=JSPs
-probe.jsp.app.nav.resources=Resources
-probe.jsp.app.nav.initParams=Parameters
-probe.jsp.app.nav.webxml=Deployment descriptor
-probe.jsp.app.nav.contextxml=Context descriptor
-probe.jsp.app.nav.filters=Filters
-probe.jsp.app.nav.servlets=Servlets
-
-probe.jsp.title.app.initParams={0} - initialization parameters
-probe.jsp.app.initParams.h3.params=Context initialization parameters
-probe.jsp.app.initParams.col.name=Name
-probe.jsp.app.initParams.col.value=Value
-probe.jsp.app.initParams.col.source=Source
-probe.jsp.app.initParams.source.deplDescr=web.xml
-probe.jsp.app.initParams.source.context=context
-probe.jsp.app.initParams.empty=There are no context initialization parameters defined for this application
-
-probe.jsp.title.app.viewXMLConf={0} - {1}
-probe.jsp.app.viewXMLConf.notfound= Cannot find {0} of this application
-probe.jsp.app.viewXMLConf.h3.scr={0} source
-probe.src.app.viewxmlconf.webxml.desc=deployment descriptor
-probe.src.app.viewxmlconf.contextxml.desc=context descriptor
-
-probe.jsp.title.app.filters={0} - filters
-probe.jsp.title.app.filtermaps={0} - filter mappings
-probe.jsp.app.filtermaps.opt.defs=Filter definitions
-probe.jsp.app.filters.opt.maps=Filter mappings
-probe.jsp.app.filters.h3.defs=Filters
-probe.jsp.app.filtermaps.h3.maps=Filter mappings
-probe.jsp.app.filters.col.filterName=Name
-probe.jsp.app.filters.col.filterClass=Class
-probe.jsp.app.filters.col.filterDesc=Description
-probe.jsp.app.filtermaps.col.url=Url
-probe.jsp.app.filtermaps.col.filterName=Filter name
-probe.jsp.app.filtermaps.col.servletName=Servlet name
-probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
-probe.jsp.app.filters.empty=There are no filters defined for this application
-probe.jsp.app.filtermaps.empty=There are no filter mappings defined for this application
-
-probe.jsp.title.servlets.all=Servlets
-probe.jsp.title.servlets.app={0} - servlets
-probe.jsp.title.servletmaps.all=Servlet mappings
-probe.jsp.title.servletmaps.app={0} - servlet mappings
-probe.jsp.servletmaps.opt.defs=Servlets
-probe.jsp.servletmaps.opt.all=Show all
-probe.jsp.servlets.opt.maps=Servlet mappings
-probe.jsp.servlets.opt.all=Show all
-probe.jsp.servlets.h3.defs=Servlets
-probe.jsp.servletmaps.h3.maps=Servlet mappings
-probe.jsp.servletmaps.col.url=Url
-probe.jsp.servletmaps.col.servletName=Servlet name
-probe.jsp.servlets.col.applicationName=App
-probe.jsp.servlets.col.servletName=Name
-probe.jsp.servletmaps.col.servletClass=Servlet class
-probe.jsp.servlets.col.available=Avail
-probe.jsp.servlets.col.loadOnStartup=Startup
-probe.jsp.servlets.empty=There are no servlets defined
-probe.jsp.servletmaps.empty=There are no servlet mappings defined
-probe.jsp.servlets.col.minTime=Min time
-probe.jsp.servlets.col.maxTime=Max time
-probe.jsp.servlets.col.processingTime=Proc time
-probe.jsp.servlets.col.loadTime=Load time
-probe.jsp.servlets.col.multiThreaded=Mult Thrd
-probe.jsp.servlets.col.requestCount=Req
-probe.jsp.servlets.col.errorCount=Err
-
-probe.jsp.title.app.summary={0} - application summary
-probe.jsp.app.summary.application=Application name:
-probe.jsp.app.summary.description=Description:
-probe.jsp.app.summary.distributable=Clustered:
-probe.jsp.app.summary.docBase=Doc. base:
-probe.jsp.app.summary.servletVersion=Servlet version:
-probe.jsp.app.summary.sessionTimeout=Session timeout:
-probe.jsp.app.summary.servletCount=Servlet count:
-probe.jsp.app.summary.status=This application is
-probe.jsp.app.summary.requestCount=Request count:
-probe.jsp.app.summary.sessionCount=Sessions
-probe.jsp.app.summary.sessionAttributeCount=Session attrs.
-probe.jsp.app.summary.sessionSize=Session size
-probe.jsp.app.summary.contextAttributeCount=Context attrs.
-probe.jsp.app.summary.serializable=Ser.
-probe.jsp.app.summary.errorCount=Error count:
-probe.jsp.app.summary.processingTime=Processing time:
-probe.jsp.app.summary.minTime=Min time:
-probe.jsp.app.summary.maxTime=Max time:
-probe.jsp.app.summary.avgTime=Avg response time:
-probe.jsp.app.summary.h3.static=Application information
-probe.jsp.app.summary.h3.runtime=Runtime information
-probe.jsp.app.summary.invalidApp=The application is invalid
-probe.jsp.app.summary.runtime.unavailable=This application is not running, runtime information is unavailable
-probe.jsp.app.summary.menu.start=Start
-probe.jsp.app.summary.menu.stop=Stop
-probe.jsp.app.summary.menu.reload=Reload
-probe.jsp.app.summary.menu.undeploy=Undeploy
-probe.jsp.app.summary.menu.goTo=Go to
-probe.jsp.app.summary.menu.startStats=Start collecting stats
-probe.jsp.app.summary.menu.stopStats=Stop collecting stats
-probe.jsp.app.summary.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
-probe.jsp.app.summary.dataSourceUsageScore=Datasource usage
-probe.jsp.app.summary.jdbcUsage.title=Max.conn.usage {0}%
-probe.jsp.app.summary.h3.charts=Statistics charts
-probe.jsp.app.summary.charts.requests.title=Number of requests
-probe.jsp.app.summary.charts.avgProcTime.title=Average response time (ms)
-probe.jsp.app.summary.charts.requests.legend=Requests
-probe.jsp.app.summary.charts.errors.legend=Errors
-probe.jsp.app.summary.charts.avgProcTime.legend=Avg. response time
-
-probe.jsp.title.allappstats=Application statistics
-probe.jsp.allappstats.charts.totalAvgProcTime.legend=Avg. response time
-probe.jsp.allappstats.charts.totalReq.legend=Requests
-probe.jsp.allappstats.charts.totalAvgProcTime.title=Cumulative avg. response time (ms)
-probe.jsp.allappstats.charts.allAppAvgProcTime.title=Avg. response time by app (ms)
-probe.jsp.allappstats.charts.totalReq.title=Cumulative requests
-probe.jsp.allappstats.charts.allAppReq.title=Requests by app (ms)
-probe.jsp.allappstats.h3.charts=Statistics charts
-
-probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
-probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
-probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
-probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
-
-probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
-probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
+#
+# Licensed under the GPL License. You may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+#
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+#
+probe.jsp.i18n.credit=
+probe.jsp.icons.credit="Silk" icons from famfamfam.com.
+
+probe.jsp.generic.no=no
+probe.jsp.generic.yes=yes
+probe.jsp.generic.abbreviations=What are those abbreviations?
+
+probe.jsp.app.attributes.col.delete=Remove attribute
+probe.jsp.app.attributes.col.delete.title=Remove attribute
+probe.jsp.app.attributes.col.name=Name
+probe.jsp.app.attributes.col.type=Type
+probe.jsp.app.attributes.col.value=Value
+probe.jsp.app.attributes.h3.attributes=Servlet context attributes
+probe.jsp.app.attributes.noattributes=There are no attributes in this servlet context
+
+probe.jsp.applications.alt.reload=reload
+probe.jsp.applications.alt.undeploy=Undeploy
+probe.jsp.applications.col.contextAttributeCount=C.Attr
+probe.jsp.applications.col.description=Description
+probe.jsp.applications.col.distributable=Clstred.?
+probe.jsp.applications.col.jdbcUsage=Jdbc Usage
+probe.jsp.applications.col.jsp=JSP
+probe.jsp.applications.col.name=Name
+probe.jsp.applications.col.serializable=Ser.?
+probe.jsp.applications.col.sessionAttributeCount=S.Attr
+probe.jsp.applications.col.sessionCount=Sess.
+probe.jsp.applications.col.sessionTimeout=Sess.Timeout
+probe.jsp.applications.col.size=Size
+probe.jsp.applications.col.status=Status
+probe.jsp.applications.col.requestCount=Req.
+probe.jsp.applications.help.contextAttributeCount=total number of ServletContext attributes
+probe.jsp.applications.help.distributable=application is "distributable"
+probe.jsp.applications.help.requestCount=total number of requests processed by servlets
+probe.jsp.applications.help.serializable=all session attributes implement java.io.Serializable
+probe.jsp.applications.help.sessionAttributeCount=total number of session attributes
+probe.jsp.applications.help.sessionCount=number of sessions
+probe.jsp.applications.hidesize=hide sessions size
+probe.jsp.applications.jdbcUsage.title=Max.conn.usage {0}%
+probe.jsp.applications.jsp.view=view
+probe.jsp.applications.serializable.no=NO
+probe.jsp.applications.serializable.yes=yes
+probe.jsp.applications.showsize=estimate sessions size (could be slow)
+probe.jsp.applications.status.down=down
+probe.jsp.applications.status.down.title=Start {0}
+probe.jsp.applications.status.up=running
+probe.jsp.applications.title.reload=Reload {0}
+probe.jsp.applications.title.status.up=Stop {0}
+probe.jsp.applications.title.undeploy=Undeploy {0}
+probe.jsp.applications.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
+
+probe.jsp.connectors.information=Traffic information for all available connectors. The feed is LIVE and the charts are automatically updated. Please note that you do not have to stay on this page for the charts to update.
+probe.jsp.connectors.processor.errorCount=Error count:
+probe.jsp.connectors.processor.maxTime=Max time:
+probe.jsp.connectors.processor.processingTime=Processing time:
+probe.jsp.connectors.processor.received=Received:
+probe.jsp.connectors.processor.requestCount=Request count:
+probe.jsp.connectors.processor.sent=Sent:
+probe.jsp.connectors.proc_time.title=Processing time (ms) in each interval
+probe.jsp.connectors.requests.title=Number of requests each interval
+probe.jsp.connectors.traffic.title=Traffic volume (bytes) in each interval
+probe.jsp.connectors.wrk.col.in=IN
+probe.jsp.connectors.wrk.col.out=OUT
+probe.jsp.connectors.wrk.col.processingTime=Proc.time
+probe.jsp.connectors.wrk.col.remoteAddr=Remote IP
+probe.jsp.connectors.wrk.col.stage=stage
+probe.jsp.connectors.wrk.col.url=URL
+probe.jsp.connectors.wrk.col.thread=Thread
+probe.jsp.connectors.wrk.empty=No processors
+probe.jsp.connectors.wrk.stage.endInput=EndInput
+probe.jsp.connectors.wrk.stage.endOutput=EndOutput
+probe.jsp.connectors.wrk.stage.ended=Ended
+probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
+probe.jsp.connectors.wrk.stage.new=New
+probe.jsp.connectors.wrk.stage.parse=Parse
+probe.jsp.connectors.wrk.stage.prepare=Prepare
+probe.jsp.connectors.wrk.stage.service=Service
+
+probe.jsp.cluster.chart.requests=Requests in {0}-second intervals
+probe.jsp.cluster.chart.traffic=Traffic in {0}-second intervals
+probe.jsp.cluster.h3.info=Cluster information
+probe.jsp.cluster.h3.members=Cluster members
+probe.jsp.cluster.heartbeatFreq=Heartbeat freq.:
+probe.jsp.cluster.heartbeatTimeout=Heartbeat timeout:
+probe.jsp.cluster.info=Info:
+probe.jsp.cluster.manager=Manager:
+probe.jsp.cluster.mcastAddress=Mcast address:
+probe.jsp.cluster.mcastBindAddress=Mcast bind address:
+probe.jsp.cluster.mcastBindAddress.all=all
+probe.jsp.cluster.mcastTTL=Mcast TTL
+probe.jsp.cluster.members.col.address=Address
+probe.jsp.cluster.members.col.avgMsgSize=AvgSz
+probe.jsp.cluster.members.col.closes=Closes
+probe.jsp.cluster.members.col.connectCount=CC
+probe.jsp.cluster.members.col.connected=Conn.?
+probe.jsp.cluster.members.col.disconnectCount=DC
+probe.jsp.cluster.members.col.failures=Failures
+probe.jsp.cluster.members.col.inQueueCounter=InQ
+probe.jsp.cluster.members.col.keepAlive=Keep Alive
+probe.jsp.cluster.members.col.openFailures=Open fails
+probe.jsp.cluster.members.col.opens=Opens
+probe.jsp.cluster.members.col.outQueueCounter=OutQ
+probe.jsp.cluster.members.col.queueSize=QSz
+probe.jsp.cluster.members.col.queueSizeBytes=QSzB
+probe.jsp.cluster.members.col.requests=Req.
+probe.jsp.cluster.members.col.resends=Resends
+probe.jsp.cluster.members.col.sent=Sent
+probe.jsp.cluster.members.col.socketLimit=Socket Limit
+probe.jsp.cluster.members.failing.alt=failing
+probe.jsp.cluster.members.failing.title=The member is suspected to be failing
+probe.jsp.cluster.members.healthy.alt=healthy
+probe.jsp.cluster.members.healthy.title=The member is healthy
+probe.jsp.cluster.mode=Replication mode:
+probe.jsp.cluster.name=Name:
+probe.jsp.cluster.noMembers=There are no active cluster members known to this node
+probe.jsp.cluster.notAvailable=Cluster information is only available to Tomcat 5.5.x with enabled cluster support.
+probe.jsp.cluster.received=received
+probe.jsp.cluster.receiverAddress=Receiver address:
+probe.jsp.cluster.receiverPort=Receiver port:
+probe.jsp.cluster.sent=sent
+
+probe.jsp.copyright=Copyright 2009-${copyright}. Do you have any questions or suggestions? Visit us at https://github.com/psi-probe/psi-probe
+
+probe.jsp.dataSourceGroups.empty=There are no properly configured data sources available to this instance
+probe.jsp.dataSourceGroups.information=The table below contains total numbers of currently opened and potentially allowed database connection grouped by jdbc url. This information can help you estimate how many connections to a particular database can be opened by jdbc resources configured within the container.
+probe.jsp.dataSourceGroups.jdbcUsage.title=Max.conn.usage {0}%
+probe.jsp.dataSourceGroups.list.col.busy=Total busy
+probe.jsp.dataSourceGroups.list.col.established=Total estab.
+probe.jsp.dataSourceGroups.list.col.max=Total max.
+probe.jsp.dataSourceGroups.list.col.resourceCount=Resource count
+probe.jsp.dataSourceGroups.list.col.url=URL
+probe.jsp.dataSourceGroups.list.col.usage=Usage
+probe.jsp.dataSourceGroups.menu.back=Back to data source list
+
+probe.jsp.datasources.h3.global=Global Resources
+probe.jsp.datasources.h3.app=Application Resources
+probe.jsp.datasources.global.empty=There are no server-level data sources configured for this Tomcat instance
+probe.jsp.datasources.app.empty=There are no application-level data sources configured for this Tomcat instance
+probe.jsp.datasources.empty=There are no data sources configured for this Tomcat instance
+probe.jsp.datasources.help.max=maximum number of connections in the pool
+probe.jsp.datasources.help.established=number of established connections that can be reused
+probe.jsp.datasources.help.busy=number of busy connections cannot be reused
+probe.jsp.datasources.list.col.application=App
+probe.jsp.datasources.list.col.auth=Auth
+probe.jsp.datasources.list.col.busy=B
+probe.jsp.datasources.list.col.description=Description
+probe.jsp.datasources.list.col.established=E
+probe.jsp.datasources.list.col.linkTo=Lnk
+probe.jsp.datasources.list.col.max=M
+probe.jsp.datasources.list.col.reset.alt=reset
+probe.jsp.datasources.list.col.resource=Resource
+probe.jsp.datasources.list.col.type=Type
+probe.jsp.datasources.list.col.url=URL
+probe.jsp.datasources.list.col.usage=Usage
+probe.jsp.datasources.list.col.user=User
+probe.jsp.datasources.list.misconfigured.alt=error
+probe.jsp.datasources.opt.groupByJdbcUrl=group by jdbc url
+
+probe.jsp.deployment.war.success={0} has been deployed
+probe.jsp.deployment.compilationDetails=View compilation details
+probe.jsp.deployment.s1.compile.label=Precompile JSP pages after application is deployed (could take few minutes)
+probe.jsp.deployment.s1.description=Upload a .war file to the server. If context name is not specified the file name will be used. When uploading .war files with META-INF/context.xml please make sure that the context has the same "path" attribute as the war context you are deploying, otherwise it will confuse the hell out of Tomcat 5.0.x
+probe.jsp.deployment.s1.discard.label=Discard "work" directory if exists
+probe.jsp.deployment.s1.file.label=Select a .war file to upload
+probe.jsp.deployment.s1.submit=Deploy
+probe.jsp.deployment.s1.title=Upload application (basic)
+probe.jsp.deployment.s1.update.label=Update the application if it is already deployed
+probe.jsp.deployment.s2.context.label=Context name (ex. /dummy)
+probe.jsp.deployment.s2.description=Use this option if you have already created context .xml file in %CATALINA_BASE%/conf/Catalina/localhost/. It is assumed that the context name is the name of the .xml file. For example context "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml. NOTE: Tomcat 5.0.x would require the .xml file to have "path" attribute!
+probe.jsp.deployment.s2.title=Deploy context name (advanced)
+
+probe.jsp.follow.h3.fileContent=File content
+probe.jsp.follow.h3.fileInfo=File information
+probe.jsp.follow.h3.sources=Logging sources
+probe.jsp.follow.loading=Loading...
+probe.jsp.follow.menu.back=back to log files list
+probe.jsp.follow.menu.clear=clear buffer
+probe.jsp.follow.menu.download=download
+probe.jsp.follow.menu.nowrap=nowrap
+probe.jsp.follow.menu.pause=pause tailing
+probe.jsp.follow.menu.resume=resume tailing
+probe.jsp.follow.menu.wrap=wrap lines
+probe.jsp.follow.menu.zoomin=zoom in
+probe.jsp.follow.menu.zoomout=zoom out
+probe.jsp.followed_file_info.fileName=File name:
+probe.jsp.followed_file_info.lastModified=Last modified:
+probe.jsp.followed_file_info.size=Size:
+
+probe.jsp.jsps.col.lastmodified=Last modified
+probe.jsp.jsps.col.message=Message
+probe.jsp.jsps.col.name=JSP Name
+probe.jsp.jsps.col.size=Size
+probe.jsp.jsps.col.status=Status
+probe.jsp.jsps.notfound=This application does not have JSP files
+probe.jsp.jsps.opt.compile=Compile selected
+probe.jsp.jsps.opt.compileall=Compile all
+probe.jsp.jsps.opt.discardscratch=discard "work" dir
+probe.jsp.jsps.opt.toggleall=Toggle all
+probe.jsp.jsps.status.compiled=Compiled
+probe.jsp.jsps.status.failed=FAILED
+probe.jsp.jsps.status.outdated=Out dated
+
+probe.jsp.logs.col.app=App
+probe.jsp.logs.col.class=Class
+probe.jsp.logs.col.file=File name
+probe.jsp.logs.col.level=Level
+probe.jsp.logs.col.modified=Modified
+probe.jsp.logs.col.name=Name
+probe.jsp.logs.col.size=Size
+probe.jsp.logs.col.type=Type
+probe.jsp.logs.download.alt=download
+probe.jsp.logs.hideapps=show existing only
+probe.jsp.logs.showapps=show all
+probe.jsp.logs_notSupported.message=Your Java Virtual Machine {0} {1} does not fully support SUN reflection API - sun.reflect.ReflectionFactory. Log browsing functionality is disabled.
+
+probe.jsp.memory.advise.finalization=Advise Finalization
+probe.jsp.memory.advise.gc=Advise GC
+probe.jsp.memory.col.committed=Committed
+probe.jsp.memory.col.group=Group
+probe.jsp.memory.col.initial=Initial
+probe.jsp.memory.col.max=Maximum
+probe.jsp.memory.col.name=Name
+probe.jsp.memory.col.plot=Plot
+probe.jsp.memory.col.usageScore=Usage score
+probe.jsp.memory.col.used=Used
+probe.jsp.memory.h3.charts=Memory usage history
+probe.jsp.memory.h3.table=Current memory usage
+probe.jsp.memory.loading=Loading...
+probe.jsp.memory.usage.title=Usage {0}%
+probe.jsp.memory.notAvailable=This page requires Java5 with enabled JMX Agent. To enable the JXM Agent please add "-Dcom.sun.management.jmxremote" to java command line or $JAVA_OPTS environment variable. If you are an IBM JDK user please add these properties: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
+
+probe.jsp.menu.applications=Applications
+probe.jsp.menu.cluster=Cluster
+probe.jsp.menu.connectors=Connectors
+probe.jsp.menu.datasources=Data Sources
+probe.jsp.menu.deployment=Deployment
+probe.jsp.menu.logs=Logs
+probe.jsp.menu.memory=Memory
+probe.jsp.menu.quickcheck=Quick check
+probe.jsp.menu.sysinfo=System
+probe.jsp.menu.threads=Threads
+
+probe.jsp.noaccess=You do not have sufficient privileges to access this page. Please use the navigation bar to choose another area or click "back" button in your browser.
+probe.jsp.noaccess.ajax=You do not have sufficient privileges to access this functionality.
+probe.jsp.noaccess.title=403 Forbidden
+probe.jsp.notfound=The page you requested does not exist on this server. Please use the navigation bar to locate the area you require.
+probe.jsp.notfound.title=404 Not Found
+
+probe.jsp.resources.col.auth=Authentication
+probe.jsp.resources.col.linkTo=Link to
+probe.jsp.resources.col.name=Name
+probe.jsp.resources.col.type=Type
+probe.jsp.resources.empty=There are no resources defined for this application
+probe.jsp.resources.info.busy=Busy:
+probe.jsp.resources.info.connectionUsage.alt=Conn.usage {0}%
+probe.jsp.resources.info.established=Established:
+probe.jsp.resources.info.max=Max:
+probe.jsp.resources.info.misconfigured=This resource is misconfigured and runtime information is not available
+probe.jsp.resources.info.misconfigured.alt=exclamation sign
+probe.jsp.resources.info.reset=
+probe.jsp.resources.info.reset.alt=reset
+probe.jsp.resources.info.title=Additional info:
+
+probe.jsp.servlet_source.h3.source=Auto generated servlet code
+probe.jsp.servlet_source.opt.jsp=view JSP
+
+probe.jsp.sessionAttibutes.card.age=Age:
+probe.jsp.sessionAttibutes.card.application=Application:
+probe.jsp.sessionAttibutes.card.created=Created:
+probe.jsp.sessionAttibutes.card.expiryTime=Expiry time:
+probe.jsp.sessionAttibutes.card.id=ID:
+probe.jsp.sessionAttibutes.card.idleTime=Idle time:
+probe.jsp.sessionAttibutes.card.info=Info:
+probe.jsp.sessionAttibutes.card.lastAccessed=Last accessed:
+probe.jsp.sessionAttibutes.card.manager=Manager type:
+probe.jsp.sessionAttibutes.card.maxIdleTime=Max idle time:
+probe.jsp.sessionAttibutes.card.serializable=Serializable:
+probe.jsp.sessionAttibutes.card.serializable.no=NO
+probe.jsp.sessionAttibutes.card.serializable.yes=yes
+probe.jsp.sessionAttibutes.card.size=Size:
+probe.jsp.sessionAttibutes.col.delete=remove
+probe.jsp.sessionAttibutes.col.delete.title=Remove attribute
+probe.jsp.sessionAttibutes.col.name=Name
+probe.jsp.sessionAttibutes.col.serializable=Ser.?
+probe.jsp.sessionAttibutes.col.size=Size
+probe.jsp.sessionAttibutes.col.type=Type
+probe.jsp.sessionAttibutes.col.value=Value
+probe.jsp.sessionAttibutes.h3.attributes=Session attributes
+probe.jsp.sessionAttibutes.h3.card=Session card
+probe.jsp.sessionAttibutes.invalidSid=Session ID is invalid or the session has expired
+probe.jsp.sessionAttibutes.menu.back=Back to session list
+probe.jsp.sessionAttibutes.menu.destroy=Destroy this session
+probe.jsp.sessionAttibutes.noattributes=This session does not have attributes
+
+probe.jsp.sessions.col.age=Age
+probe.jsp.sessions.col.creationTime=Creation time
+probe.jsp.sessions.col.expiryTime=Expiry time
+probe.jsp.sessions.col.id=Session ID
+probe.jsp.sessions.col.applicationName=App
+probe.jsp.sessions.col.idleTime=Idle time
+probe.jsp.sessions.col.lastAccessTime=Last Access Time
+probe.jsp.sessions.col.objectCount=Object Count
+probe.jsp.sessions.col.serializable=Ser.
+probe.jsp.sessions.col.size=Size
+probe.jsp.sessions.col.lastIP=Last IP
+probe.jsp.sessions.unknown.ip=unknown
+probe.jsp.sessions.empty=There are no sessions
+probe.jsp.sessions.menu.expire=Expire
+probe.jsp.sessions.menu.toggle=Toggle
+probe.jsp.sessions.status.no=NO
+probe.jsp.sessions.status.yes=yes
+probe.jsp.sessions.opt.all=Show all
+probe.jsp.showsize=estimate sizes
+probe.jsp.hidesize=hide size
+
+probe.jsp.sysinfo.col.name=Property name
+probe.jsp.sysinfo.col.value=Property value
+probe.jsp.sysinfo.container.title=Container information
+probe.jsp.sysinfo.memory.adviseGC=Advise Garbage Collection
+probe.jsp.sysinfo.memory.free=Free:
+probe.jsp.sysinfo.memory.max=Max:
+probe.jsp.sysinfo.memory.title=Memory utilization
+probe.jsp.sysinfo.memory.total=Total:
+probe.jsp.sysinfo.memory.usage=Current memory usage is
+probe.jsp.sysinfo.memory.usage.alt=Memory usage bar
+probe.jsp.sysinfo.os.applicationBase=Application base:
+probe.jsp.sysinfo.os.catalinaBase=catalina.base:
+probe.jsp.sysinfo.os.catalinaHome=catalina.home:
+probe.jsp.sysinfo.os.configBase=Configuration base:
+probe.jsp.sysinfo.os.container=Container:
+probe.jsp.sysinfo.os.currentTime=Current time:
+probe.jsp.sysinfo.os.jvm=JVM:
+probe.jsp.sysinfo.os.name=OS:
+probe.jsp.sysinfo.os.processors=Processors:
+probe.jsp.sysinfo.os.title=OS information
+probe.jsp.sysinfo.os.workingDir=Working dir:
+probe.jsp.sysinfo.sysproperties.title=System properties
+
+probe.jsp.threadpools.currentThreadCount=Current thread count
+probe.jsp.threadpools.currentThreadsBusy=Current threads busy
+probe.jsp.threadpools.maxSpareThreads=Max spare threads
+probe.jsp.threadpools.maxThreads=Max threads
+probe.jsp.threadpools.menu.threads=Running threads
+probe.jsp.threadpools.minSpareThreads=Min spare threads
+probe.jsp.threadpools.name=Name
+
+probe.jsp.threads.col.application=App
+probe.jsp.threads.col.classLoader=Class loader
+probe.jsp.threads.col.daemon=D
+probe.jsp.threads.col.groupName=Group
+probe.jsp.threads.col.interrupted=I
+probe.jsp.threads.col.name=Name
+probe.jsp.threads.col.priority=P
+probe.jsp.threads.col.runnableClass=Runnable
+probe.jsp.threads.col.threadClass=Thread class
+probe.jsp.threads.col.id=ID
+probe.jsp.threads.col.execPoint=Exec. point
+probe.jsp.threads.col.state=State
+probe.jsp.threads.col.inNative=In.Native
+probe.jsp.threads.col.suspended=Susp.
+probe.jsp.threads.col.waitedCount=WC
+probe.jsp.threads.col.blockedCount=BC
+probe.jsp.threads.help.priority=thread priority, the higher the number the higher the priority
+probe.jsp.threads.help.daemon=thread is a daemon
+probe.jsp.threads.help.interrupted=thread has been interrupted
+probe.jsp.threads.help.inNative=true if thread is executing native code
+probe.jsp.threads.help.suspended=thread is suspended
+probe.jsp.threads.help.waitedCount="wait count" - number of times thread has been waiting on something
+probe.jsp.threads.help.blockedCount="blocked count" - number of times thread has been blocked
+probe.jsp.threads.info.loading=Loading...
+probe.jsp.threads.info.unavailable=URL information is not available
+probe.jsp.threads.killmsg=Killing threads indiscriminantly may destabilize JVM. Are you sure you want to stop {0}?
+probe.jsp.threads.menu.threadpools=Threads Pools
+probe.jsp.threads.stop.alt=stop
+
+probe.jsp.title.app.attributes={0} - context attributes
+probe.jsp.title.applications=Installed applications
+probe.jsp.title.cluster=Cluster status
+probe.jsp.title.connectors=Connectors
+probe.jsp.title.dataSourceGroups=Data sources grouped by jdbc url
+probe.jsp.title.datasources=Available Data Sources
+probe.jsp.title.deployment=Application deployment
+probe.jsp.title.follow=Tailing log
+probe.jsp.title.jsps={0} - deployed JSPs
+probe.jsp.title.logs=Logs
+probe.jsp.title.logs_notSupported=Not supported
+probe.jsp.title.memory=JVM memory usage
+probe.jsp.title.quickcheck=Quick check
+probe.jsp.title.resources={0} - resources
+probe.jsp.title.servlet_source=Generated servlet source
+probe.jsp.title.sessionAttibutes=Session attributes
+probe.jsp.title.sessions={0} - sessions
+probe.jsp.title.sessions.all=Sessions
+probe.jsp.title.sysinfo=System information
+probe.jsp.title.threadpools=Threads Pools
+probe.jsp.title.threads=Running threads
+probe.jsp.title.viewsource={0} - View source
+probe.jsp.uptime=UP for {0} days {1} hours {2} minutes
+probe.jsp.version=Version {0} running on {1}
+
+probe.jsp.viewsource.appname=Application name:
+probe.jsp.viewsource.encoding=Encoding:
+probe.jsp.viewsource.filename=File name:
+probe.jsp.viewsource.h3.info=JSP information
+probe.jsp.viewsource.h3.source=JSP source code
+probe.jsp.viewsource.lastmodified=Last modified:
+probe.jsp.viewsource.notfound=Unfortunately you cannot view contents of this file. Please go back and select the file from the list.
+probe.jsp.viewsource.opt.back=back to JSP list
+probe.jsp.viewsource.opt.compile=compile
+probe.jsp.viewsource.opt.viewServlet=view generated servlet
+probe.jsp.viewsource.size=Size:
+probe.jsp.viewsource.state=State:
+
+probe.jsp.wrongparams=You have passed wrong parameters to this page.
+probe.jsp.wrongsvrversion=This feature is not implemented for {0}
+probe.jsp.zoomedchart.back=Back to chart groups
+probe.jsp.zoomedchart.information=You can use the slider to resize the image according to your display resolution. The information is LIVE and the chart would be refreshed automatically every {0} seconds.
+
+probe.src.contextAction.cannotActOnSelf=Cannot stop/start/undeploy this application
+probe.src.contextDoesntExist=Context {0} does not exist
+probe.src.deploy.context.failure=Failed to deploy {0}
+probe.src.deploy.context.success=Deployed application from {0}
+probe.src.deploy.exploded.success={0} has been successfully installed at {1}
+probe.src.deploy.war.alreadyExists=Context {0} is already in use
+probe.src.deploy.war.failure=There was an error thrown by Tomcat during deployment: "{0}". This however may not mean that you application failed to deploy. Please check the status in the application list
+probe.src.deploy.war.notWar.failure=Deployment failed. File name must end with .war
+probe.src.deploy.war.notinstalled={0} was not installed
+probe.src.deploy.war.uploadfailure=There was a problem uploading the file: {0}
+probe.src.reset.datasource.c3p0=This datasource cannot be reset
+probe.src.reset.datasource.notfound=Resource {0} does not exist
+
+probe.jsp.title.wrapper=Java Service Wrapper
+probe.jsp.wrapper.not_available=This JVM is not controlled by Java Service Wrapper
+probe.jsp.wrapper.menu.restart=restart JVM
+probe.jsp.wrapper.menu.stop=stop JVM
+probe.jsp.wrapper.menu.thread_dump=Request thread dump
+probe.jsp.wrapper.h3.info=Wrapper information
+probe.jsp.wrapper.h3.props=Wrapper properties
+probe.jsp.wrapper.confirm.restart=Are you sure you want to restart JVM?
+probe.jsp.wrapper.confirm.stop=JVM cannot be started again from Probe. Are you sure you want to stop JVM?
+probe.jsp.wrapper.jvm.stopping=JVM shutdown is now in progress. If you need to start it up again you would have to do it via the console.
+probe.jsp.wrapper.jvm.restarting=JVM restart is now in progress. This may take a few minutes.
+probe.jsp.wrapper.jvm.thread_dump=JMV Thread Dump has been requested. You can normally find it in the Wrapper log file.
+
+probe.jsp.wrapper.user=User:
+probe.jsp.wrapper.interactive_user=Interactive user:
+probe.jsp.wrapper.java_pid=Java PID:
+probe.jsp.wrapper.pid=Wrapper PID:
+probe.jsp.wrapper.service=Running as service:
+probe.jsp.wrapper.debug=Debug enabled:
+probe.jsp.wrapper.version=Wrapper version:
+
+probe.jsp.decorator.system.title=System
+probe.jsp.decorator.system.overview=Overview
+probe.jsp.decorator.system.memory=Memory utilization
+probe.jsp.decorator.system.props=System properties
+probe.jsp.decorator.system.os=OS information
+probe.jsp.decorator.system.wrapper=Wrapper control
+
+probe.jsp.os.h3.information=OS information
+probe.jsp.os.h3.charts=Historical charts
+probe.jsp.os.chart.cpu=JVM CPU utilization (%)
+probe.jsp.os.chart.cpu.alt=JVM CPU utilization chart
+probe.jsp.os.chart.cpu.legend=CPU usage
+probe.jsp.os.chart.memory=OS & JVM memory usage (KB)
+probe.jsp.os.chart.memory.alt=OS and JVM physical memory usage chart
+probe.jsp.os.chart.memory.legend.total=total used
+probe.jsp.os.chart.memory.legend.jvm=used by JVM
+probe.jsp.os.chart.swap=Swap usage (KB)
+probe.jsp.os.chart.swap.alt=Swap usage chart
+probe.jsp.os.chart.swap.legend=swap used
+probe.jsp.os.chart.fd=File descriptors
+probe.jsp.os.chart.fd.alt=File descriptors chart
+probe.jsp.os.chart.fd.legend.open=open file descriptors
+probe.jsp.os.chart.fd.legend.max=max file descriptors
+probe.jsp.os.card.name=OS Name:
+probe.jsp.os.card.version=OS Version:
+probe.jsp.os.card.processors=Processors:
+probe.jsp.os.card.totalMemory=Total RAM:
+probe.jsp.os.card.freeMemory=Free RAM:
+probe.jsp.os.card.committedVirtualMemory=Committed JVM memory:
+probe.jsp.os.card.totalSwap=Total swap:
+probe.jsp.os.card.freeSwap=Free swap:
+
+probe.jsp.title.testDataSource={0} -> {1}
+probe.src.dataSourceTest.resource.lookup.failure=Data source {0} does not exist
+probe.src.dataSourceTest.connection.failure=Cannot establish a database connection. {0}
+probe.src.dataSourceTest.connection.success=Successfully connected to the database
+probe.src.dataSourceTest.sql.required=Sql query text is required
+probe.src.dataSourceTest.sql.failure=Error encountered while executing the query. {0}
+probe.src.dataSourceTest.sql.null=NULL
+probe.src.dataSourceTest.cachedResultSet.failure=Cannot retrieve a cached result set
+probe.jsp.dataSourceTest.help=This screen can help you to test your data source database connectivity.\
+Test connection checks if a database connection can be established and displays some database information.\
+Execute SQL executes an SQL query you enter against the database.\
+You can see a database operation output or an error message at the bottom of the screen.\
+Show history displays a list of queries you have executed.\
+Please consider using Show options to limit the number of records returned by you query for not to waste your system resources.
+probe.jsp.dataSourceTest.menu.back=Back to data sources
+probe.jsp.dataSourceTest.menu.connect=Test connection
+probe.jsp.dataSourceTest.menu.execute=Execute sql (Ctrl+Enter)
+probe.jsp.dataSourceTest.menu.showHistory=Show history (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.hideHistory=Hide history (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.showOptions=Show options (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.hideOptions=Hide options (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.wrap=Wrap lines
+probe.jsp.dataSourceTest.menu.nowrap=Don't wrap lines
+probe.jsp.dataSourceTest.menu.abbreviations=Help!
+probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit enabled)
+probe.jsp.dataSourceTest.sqlForm.maxRows.label=Records to retrieve
+probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Records per page
+probe.jsp.dataSourceTest.sqlForm.historySize.label=History size
+probe.jsp.dataSourceTest.h3.results=Query results
+probe.jsp.dataSourceTest.results.rowcount={0} record(s) affected.
+probe.jsp.dataSourceTest.h3.metaData=Database Info
+probe.jsp.dataSourceTest.chart.usage.title=Datasource usage
+probe.jsp.dataSourceTest.dbMetaData.col.propName=Property Name
+probe.jsp.dataSourceTest.dbMetaData.col.propValue=Property Value
+probe.jsp.dataSourceTest.dbMetaData.dbProdName=Database Product Name
+probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Database Product Version
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=JDBC Driver Name
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=JDBC Driver Version
+probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=JDBC Version
+probe.jsp.dataSourceTest.results.paging.banner.item_name=record
+probe.jsp.dataSourceTest.results.paging.banner.items_name=records
+probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
+probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Displaying one {0}.
+probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Displaying all {2}.
+probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Displaying {2} to {3}.
+probe.jsp.dataSourceTest.results.paging.banner.first=First
+probe.jsp.dataSourceTest.results.paging.banner.prev=Prev
+probe.jsp.dataSourceTest.results.paging.banner.next=Next
+probe.jsp.dataSourceTest.results.paging.banner.last=Last
+probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Go to page {0}
+probe.jsp.dataSourceTest.sql.completed=Statement completed.
+probe.jsp.dataSourceTest.h3.queryHistory=Query history
+probe.jsp.dataSourceTest.queryHistory.empty=The history list is empty
+
+probe.jsp.whois.timeout=Could not completed WHOIS query. Check if WHOIS is blocked by your network.
+
+probe.jsp.threadstack.native=native code
+probe.jsp.threadstack.unknown=unknown source
+probe.jsp.threadstack.unavailable=Trace stack is unavailable for this thread
+
+probe.jsp.tooltip.close=close
+
+probe.jsp.sessions.h3=Sessions
+probe.jsp.sessions.search.h3=Session search criteria
+probe.jsp.sessions.menu.showSearch=Session search
+probe.jsp.sessions.menu.applySearch=Apply search
+probe.jsp.sessions.menu.clearSearch=Clear search
+probe.jsp.sessions.menu.searchHelp=Help
+probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
+Whether Session Id matches a regular expression.\
+Whether Last IP contains a substring.\
+Whether Idle Time falls into a range specified in seconds.\
+Whether Age falls into a range specified in seconds.\
+Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
+This condition allows finding a session with an attribute A and/or an attribute B set.
+probe.jsp.sessions.search.sessionId=Session id (RE)
+probe.jsp.sessions.search.attrName=Attribute names (RE list)
+probe.jsp.sessions.search.ageFrom=Age from (sec)
+probe.jsp.sessions.search.ageTo=to
+probe.jsp.sessions.search.idleTimeFrom=Idle time from (sec)
+probe.jsp.sessions.search.idleTimeTo=to
+probe.jsp.sessions.search.lastIP=Last IP (substring)
+probe.jsp.sessions.search.results.h3=Session search results
+probe.src.sessions.search.empty=Search criteria is empty
+probe.src.sessions.search.results.empty=No sessions have matched the search criteria
+probe.src.sessions.search.invalid=Search criteria is invalid
+probe.src.sessions.search.invalid.sessionId=Session id regular expression is invalid. {0}
+probe.src.sessions.search.invalid.attrName=Attribute name regular expression is invalid. {0}
+probe.src.sessions.search.invalid.ageFrom=Age from value is invalid
+probe.src.sessions.search.invalid.ageTo=Age to value is invalid
+probe.src.sessions.search.invalid.idleTimeFrom=Idle time from value is invalid
+probe.src.sessions.search.invalid.idleTimeTo=Idle time to value is invalid
+probe.src.sessions.search.invalid.lastIP=Last IP regular expression is invalid. {0}
+
+probe.jsp.app.nav.title=Application
+probe.jsp.app.nav.summary=Summary
+probe.jsp.app.nav.sessions=Sessions
+probe.jsp.app.nav.attributes=Attributes
+probe.jsp.app.nav.jsps=JSPs
+probe.jsp.app.nav.resources=Resources
+probe.jsp.app.nav.initParams=Parameters
+probe.jsp.app.nav.webxml=Deployment descriptor
+probe.jsp.app.nav.contextxml=Context descriptor
+probe.jsp.app.nav.filters=Filters
+probe.jsp.app.nav.servlets=Servlets
+
+probe.jsp.title.app.initParams={0} - initialization parameters
+probe.jsp.app.initParams.h3.params=Context initialization parameters
+probe.jsp.app.initParams.col.name=Name
+probe.jsp.app.initParams.col.value=Value
+probe.jsp.app.initParams.col.source=Source
+probe.jsp.app.initParams.source.deplDescr=web.xml
+probe.jsp.app.initParams.source.context=context
+probe.jsp.app.initParams.empty=There are no context initialization parameters defined for this application
+
+probe.jsp.title.app.viewXMLConf={0} - {1}
+probe.jsp.app.viewXMLConf.notfound= Cannot find {0} of this application
+probe.jsp.app.viewXMLConf.h3.scr={0} source
+probe.src.app.viewxmlconf.webxml.desc=deployment descriptor
+probe.src.app.viewxmlconf.contextxml.desc=context descriptor
+
+probe.jsp.title.app.filters={0} - filters
+probe.jsp.title.app.filtermaps={0} - filter mappings
+probe.jsp.app.filtermaps.opt.defs=Filter definitions
+probe.jsp.app.filters.opt.maps=Filter mappings
+probe.jsp.app.filters.h3.defs=Filters
+probe.jsp.app.filtermaps.h3.maps=Filter mappings
+probe.jsp.app.filters.col.filterName=Name
+probe.jsp.app.filters.col.filterClass=Class
+probe.jsp.app.filters.col.filterDesc=Description
+probe.jsp.app.filtermaps.col.url=Url
+probe.jsp.app.filtermaps.col.filterName=Filter name
+probe.jsp.app.filtermaps.col.servletName=Servlet name
+probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
+probe.jsp.app.filters.empty=There are no filters defined for this application
+probe.jsp.app.filtermaps.empty=There are no filter mappings defined for this application
+
+probe.jsp.title.servlets.all=Servlets
+probe.jsp.title.servlets.app={0} - servlets
+probe.jsp.title.servletmaps.all=Servlet mappings
+probe.jsp.title.servletmaps.app={0} - servlet mappings
+probe.jsp.servletmaps.opt.defs=Servlets
+probe.jsp.servletmaps.opt.all=Show all
+probe.jsp.servlets.opt.maps=Servlet mappings
+probe.jsp.servlets.opt.all=Show all
+probe.jsp.servlets.h3.defs=Servlets
+probe.jsp.servletmaps.h3.maps=Servlet mappings
+probe.jsp.servletmaps.col.url=Url
+probe.jsp.servletmaps.col.servletName=Servlet name
+probe.jsp.servlets.col.applicationName=App
+probe.jsp.servlets.col.servletName=Name
+probe.jsp.servletmaps.col.servletClass=Servlet class
+probe.jsp.servlets.col.available=Avail
+probe.jsp.servlets.col.loadOnStartup=Startup
+probe.jsp.servlets.empty=There are no servlets defined
+probe.jsp.servletmaps.empty=There are no servlet mappings defined
+probe.jsp.servlets.col.minTime=Min time
+probe.jsp.servlets.col.maxTime=Max time
+probe.jsp.servlets.col.processingTime=Proc time
+probe.jsp.servlets.col.loadTime=Load time
+probe.jsp.servlets.col.multiThreaded=Mult Thrd
+probe.jsp.servlets.col.requestCount=Req
+probe.jsp.servlets.col.errorCount=Err
+
+probe.jsp.title.app.summary={0} - application summary
+probe.jsp.app.summary.application=Application name:
+probe.jsp.app.summary.description=Description:
+probe.jsp.app.summary.distributable=Clustered:
+probe.jsp.app.summary.docBase=Doc. base:
+probe.jsp.app.summary.servletVersion=Servlet version:
+probe.jsp.app.summary.sessionTimeout=Session timeout:
+probe.jsp.app.summary.servletCount=Servlet count:
+probe.jsp.app.summary.status=This application is
+probe.jsp.app.summary.requestCount=Request count:
+probe.jsp.app.summary.sessionCount=Sessions
+probe.jsp.app.summary.sessionAttributeCount=Session attrs.
+probe.jsp.app.summary.sessionSize=Session size
+probe.jsp.app.summary.contextAttributeCount=Context attrs.
+probe.jsp.app.summary.serializable=Ser.
+probe.jsp.app.summary.errorCount=Error count:
+probe.jsp.app.summary.processingTime=Processing time:
+probe.jsp.app.summary.minTime=Min time:
+probe.jsp.app.summary.maxTime=Max time:
+probe.jsp.app.summary.avgTime=Avg response time:
+probe.jsp.app.summary.h3.static=Application information
+probe.jsp.app.summary.h3.runtime=Runtime information
+probe.jsp.app.summary.invalidApp=The application is invalid
+probe.jsp.app.summary.runtime.unavailable=This application is not running, runtime information is unavailable
+probe.jsp.app.summary.menu.start=Start
+probe.jsp.app.summary.menu.stop=Stop
+probe.jsp.app.summary.menu.reload=Reload
+probe.jsp.app.summary.menu.undeploy=Undeploy
+probe.jsp.app.summary.menu.goTo=Go to
+probe.jsp.app.summary.menu.startStats=Start collecting stats
+probe.jsp.app.summary.menu.stopStats=Stop collecting stats
+probe.jsp.app.summary.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
+probe.jsp.app.summary.dataSourceUsageScore=Datasource usage
+probe.jsp.app.summary.jdbcUsage.title=Max.conn.usage {0}%
+probe.jsp.app.summary.h3.charts=Statistics charts
+probe.jsp.app.summary.charts.requests.title=Number of requests
+probe.jsp.app.summary.charts.avgProcTime.title=Average response time (ms)
+probe.jsp.app.summary.charts.requests.legend=Requests
+probe.jsp.app.summary.charts.errors.legend=Errors
+probe.jsp.app.summary.charts.avgProcTime.legend=Avg. response time
+
+probe.jsp.title.allappstats=Application statistics
+probe.jsp.allappstats.charts.totalAvgProcTime.legend=Avg. response time
+probe.jsp.allappstats.charts.totalReq.legend=Requests
+probe.jsp.allappstats.charts.totalAvgProcTime.title=Cumulative avg. response time (ms)
+probe.jsp.allappstats.charts.allAppAvgProcTime.title=Avg. response time by app (ms)
+probe.jsp.allappstats.charts.totalReq.title=Cumulative requests
+probe.jsp.allappstats.charts.allAppReq.title=Requests by app (ms)
+probe.jsp.allappstats.h3.charts=Statistics charts
+
+probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
+probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
+probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
+probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
+
+probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
+probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
diff --git a/web/src/main/conf/WEB-INF/messages_es.properties b/web/src/main/conf/WEB-INF/messages_es.properties
index 7b58f61500..7cd703fa9f 100644
--- a/web/src/main/conf/WEB-INF/messages_es.properties
+++ b/web/src/main/conf/WEB-INF/messages_es.properties
@@ -1,718 +1,718 @@
-#
-# Licensed under the GPL License. You may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-#
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-
-#
-probe.jsp.i18n.credit=Traducido por JaimeSan y 51114u9
-probe.jsp.icons.credit=Iconos \u00abSilk\u00bb de famfamfam.com.
-
-probe.jsp.generic.no=no
-probe.jsp.generic.yes=si
-probe.jsp.generic.abbreviations=\u00bfQu\u00e9 son estas abreviaciones?
-
-probe.jsp.app.attributes.col.delete=Eliminar atributo
-probe.jsp.app.attributes.col.delete.title=Eliminar atributo
-probe.jsp.app.attributes.col.name=Nombre
-probe.jsp.app.attributes.col.type=Tipo
-probe.jsp.app.attributes.col.value=Valor
-probe.jsp.app.attributes.h3.attributes=Atributos de contexto servlet
-probe.jsp.app.attributes.noattributes=No hay atributos en este contexto servlet
-
-probe.jsp.applications.alt.reload=recargar
-probe.jsp.applications.alt.undeploy=Replegar
-probe.jsp.applications.col.contextAttributeCount=Atrib. Ctx.
-probe.jsp.applications.col.description=Descripci\u00f3n
-probe.jsp.applications.col.distributable=Clstred.?
-probe.jsp.applications.col.jdbcUsage=Uso jdbc
-probe.jsp.applications.col.jsp=JSP
-probe.jsp.applications.col.name=Nombre
-probe.jsp.applications.col.serializable=Ser.?
-probe.jsp.applications.col.sessionAttributeCount=Atrib. Ses.
-probe.jsp.applications.col.sessionCount=Ses.
-probe.jsp.applications.col.sessionTimeout=Exp. Ses.
-probe.jsp.applications.col.size=Tama\u00f1o
-probe.jsp.applications.col.status=Estado
-probe.jsp.applications.col.requestCount=Pet.
-probe.jsp.applications.help.contextAttributeCount=n\u00famero total de atributos del ServletContext
-probe.jsp.applications.help.distributable=la aplicaci\u00f3n es \u00abdistributable\u00bb
-probe.jsp.applications.help.requestCount=n\u00famero total de peticiones procesadas por servlets
-probe.jsp.applications.help.serializable=todos los atributos de sesi\u00f3n que implementan java.io.Serializable
-probe.jsp.applications.help.sessionAttributeCount=n\u00famero total de atributos de sesi\u00f3n
-probe.jsp.applications.help.sessionCount=n\u00famero de sesiones
-probe.jsp.applications.hidesize=ocultar el tama\u00f1o de sesiones
-probe.jsp.applications.jdbcUsage.title=Uso m\u00e1x. con. {0}%
-probe.jsp.applications.jsp.view=ver
-probe.jsp.applications.serializable.no=NO
-probe.jsp.applications.serializable.yes=si
-probe.jsp.applications.showsize=Estimar tama\u00f1o de sesiones (podr\u00eda ser lento)
-probe.jsp.applications.status.down=detenido
-probe.jsp.applications.status.down.title=Iniciar {0}
-probe.jsp.applications.status.up=ejecutando
-probe.jsp.applications.title.reload=Recargar {0}
-probe.jsp.applications.title.status.up=Detener {0}
-probe.jsp.applications.title.undeploy=Replegar {0}
-probe.jsp.applications.undeploy.confirm=Esta operaci\u00f3n no puede revertirse. \u00bfEst\u00e1 seguro que quiere ELIMINAR {0}?
-
-probe.jsp.connectors.information=Informaci\u00f3n sobre el tr\u00e1fico para todos los conectores disponibles. La alimentaci\u00f3n es EN VIVO y los gr\u00e1ficos se actualizan autom\u00e1ticamente. Tenga en cuenta que usted no tiene que permanecer en esta p\u00e1gina para que los gr\u00e1ficos se actualicen.
-probe.jsp.connectors.processor.errorCount=Nro. de errores:
-probe.jsp.connectors.processor.maxTime=Tiempo m\u00e1x.:
-probe.jsp.connectors.processor.processingTime=Tiempo procesado:
-probe.jsp.connectors.processor.received=Recibido:
-probe.jsp.connectors.processor.requestCount=Nro. de peticiones:
-probe.jsp.connectors.processor.sent=Enviado:
-probe.jsp.connectors.proc_time.title=Tiempo de proc. (ms) en cada int\u00e9rvalo
-probe.jsp.connectors.requests.title=N\u00famero de peticiones en cada int\u00e9rvalo
-probe.jsp.connectors.traffic.title=Vol\u00famen de tr\u00e1fico (bytes) en cada int\u00e9rvalo
-probe.jsp.connectors.wrk.col.in=ENTRADA
-probe.jsp.connectors.wrk.col.out=SALIDA
-probe.jsp.connectors.wrk.col.processingTime=Tiempo proc.
-probe.jsp.connectors.wrk.col.remoteAddr=IP remoto
-probe.jsp.connectors.wrk.col.stage=etapa
-probe.jsp.connectors.wrk.col.url=URL
-probe.jsp.connectors.wrk.col.thread=Hilo
-probe.jsp.connectors.wrk.empty=Sin procesadores
-probe.jsp.connectors.wrk.stage.endInput=FinEntrada
-probe.jsp.connectors.wrk.stage.endOutput=FinSalida
-probe.jsp.connectors.wrk.stage.ended=Finalizado
-probe.jsp.connectors.wrk.stage.keepAlive=Vigente
-probe.jsp.connectors.wrk.stage.new=Nuevo
-probe.jsp.connectors.wrk.stage.parse=An\u00e1lisis
-probe.jsp.connectors.wrk.stage.prepare=Preparar
-probe.jsp.connectors.wrk.stage.service=Servicio
-
-probe.jsp.cluster.chart.requests=Peticiones en {0}-int\u00e9rvalos de segundo
-probe.jsp.cluster.chart.traffic=Tr\u00e1fico en {0}-int\u00e9rvalos de segundo
-probe.jsp.cluster.h3.info=Informaci\u00f3n del cl\u00faster
-probe.jsp.cluster.h3.members=Miembros del cl\u00faster
-probe.jsp.cluster.heartbeatFreq=Frec. pulsaci\u00f3n:
-probe.jsp.cluster.heartbeatTimeout=Exp. pulsaci\u00f3n:
-probe.jsp.cluster.info=Informaci\u00f3n:
-probe.jsp.cluster.manager=Administrador:
-probe.jsp.cluster.mcastAddress=Direcci\u00f3n Mcast:
-probe.jsp.cluster.mcastBindAddress=Direcci\u00f3n enlace Mcast:
-probe.jsp.cluster.mcastBindAddress.all=todo
-probe.jsp.cluster.mcastTTL=Mcast TTL
-probe.jsp.cluster.members.col.address=Direcci\u00f3n
-probe.jsp.cluster.members.col.avgMsgSize=TamProm
-probe.jsp.cluster.members.col.closes=Cerrado
-probe.jsp.cluster.members.col.connectCount=CC
-probe.jsp.cluster.members.col.connected=Con.?
-probe.jsp.cluster.members.col.disconnectCount=CD
-probe.jsp.cluster.members.col.failures=Fallas
-probe.jsp.cluster.members.col.inQueueCounter=EntC
-probe.jsp.cluster.members.col.keepAlive=Vigente
-probe.jsp.cluster.members.col.openFailures=Fallas abiertas
-probe.jsp.cluster.members.col.opens=Abiertas
-probe.jsp.cluster.members.col.outQueueCounter=SalC
-probe.jsp.cluster.members.col.queueSize=TamC
-probe.jsp.cluster.members.col.queueSizeBytes=TamCB
-probe.jsp.cluster.members.col.requests=Pet.
-probe.jsp.cluster.members.col.resends=Reenv\u00edos
-probe.jsp.cluster.members.col.sent=Env\u00edo
-probe.jsp.cluster.members.col.socketLimit=L\u00edmite socket
-probe.jsp.cluster.members.failing.alt=fallando
-probe.jsp.cluster.members.failing.title=El miembro es sospechoso de estar fallando
-probe.jsp.cluster.members.healthy.alt=saludable
-probe.jsp.cluster.members.healthy.title=El miembro est\u00e1 saludable
-probe.jsp.cluster.mode=Modo de replicaci\u00f3n:
-probe.jsp.cluster.name=Nombre:
-probe.jsp.cluster.noMembers=No hay miembros activos conocidos del cl\u00faster para este nodo
-probe.jsp.cluster.notAvailable=La informaci\u00f3n del cl\u00faster est\u00e1 s\u00f3lo disponible para Tomcat 5.5.x con el soporte para cl\u00faster habilitado.
-probe.jsp.cluster.received=recibido
-probe.jsp.cluster.receiverAddress=Direcci\u00f3n receptor:
-probe.jsp.cluster.receiverPort=Puerto receptor:
-probe.jsp.cluster.sent=enviado
-
-probe.jsp.copyright=Derechos reservados 2009-${copyright}. \u00bfVd. tiene algunas preguntas o sugerencias? Vis\u00edtenos en https://github.com/psi-probe/psi-probe
-
-probe.jsp.dataSourceGroups.empty=No hay origenes de datos correctamente configurados y disponibles para esta instancia
-probe.jsp.dataSourceGroups.information=La siguiente tabla contiene el n\u00famero total de conexiones a base de datos actualmente abiertos y potencialmente permitidos agrupados por la url jdbc. Esta informaci\u00f3n puede ayudarle a estimar el n\u00famero de conexiones que pueden ser abiertas a una base de datos en particular por los recursos jdbc configurados en el contenedor.
-probe.jsp.dataSourceGroups.jdbcUsage.title=Uso m\u00e1x. con. {0}%
-probe.jsp.dataSourceGroups.list.col.busy=Total ocupado
-probe.jsp.dataSourceGroups.list.col.established=Total estab.
-probe.jsp.dataSourceGroups.list.col.max=Total m\u00e1x.
-probe.jsp.dataSourceGroups.list.col.resourceCount=Nro. recurso
-probe.jsp.dataSourceGroups.list.col.url=URL
-probe.jsp.dataSourceGroups.list.col.usage=Uso
-probe.jsp.dataSourceGroups.menu.back=Regresar a la lista de fuente de datos
-
-probe.jsp.datasources.h3.global=Recursos globales
-probe.jsp.datasources.h3.app=Recursos de la aplicaci\u00f3n
-probe.jsp.datasources.global.empty=No hay fuentes de datos a nivel servidor configurados para esta instancia Tomcat
-probe.jsp.datasources.app.empty=No hay fuentes de datos a nivel aplicaci\u00f3n configurados para esta instancia Tomcat
-probe.jsp.datasources.empty=No hay fuentes de datos configurados para esta instancia Tomcat
-probe.jsp.datasources.help.max=n\u00famero m\u00e1ximo de conexiones en el pool
-probe.jsp.datasources.help.established=n\u00famero de conexiones establecidas que pueden ser reutilizadas
-probe.jsp.datasources.help.busy=n\u00famero de conexiones ocupadas que no pueden ser reutilizadas
-probe.jsp.datasources.list.col.application=Apl
-probe.jsp.datasources.list.col.auth=Aut
-probe.jsp.datasources.list.col.busy=O
-probe.jsp.datasources.list.col.description=Descripci\u00f3n
-probe.jsp.datasources.list.col.established=E
-probe.jsp.datasources.list.col.linkTo=Enl
-probe.jsp.datasources.list.col.max=M
-probe.jsp.datasources.list.col.reset.alt=reinicializar
-probe.jsp.datasources.list.col.resource=Recurso
-probe.jsp.datasources.list.col.type=Tipo
-probe.jsp.datasources.list.col.url=URL
-probe.jsp.datasources.list.col.usage=Uso
-probe.jsp.datasources.list.col.user=Usuario
-probe.jsp.datasources.list.misconfigured.alt=error
-probe.jsp.datasources.opt.groupByJdbcUrl=agrupado por la url jdbc
-
-probe.jsp.deployment.war.success={0} ha sido desplegado
-probe.jsp.deployment.compilationDetails=Ver detalles de la compilaci\u00f3n
-probe.jsp.deployment.s1.compile.label=Precompilar p\u00e1ginas JSP despu\u00e9s del despliegue (puede tomar algunos minutos)
-probe.jsp.deployment.s1.description=Subir un archivo .war en el servidor. Si el nombre del contexto no es especificado se usar\u00e1 el nombre del archivo. Al subir archivos .war con META-INF/context.xml aseg\u00farese que el contexto tenga el mismo valor del atributo \u00abpath\u00bb como el contexto war que esta desplegando, de lo contrario Tomcat 5.0.x se confundir\u00e1
-probe.jsp.deployment.s1.discard.label=Descartar el directorio \u00abwork\u00bb si existe
-probe.jsp.deployment.s1.file.label=Seleccione un archivo .war a subir
-probe.jsp.deployment.s1.submit=Desplegar
-probe.jsp.deployment.s1.title=Subir una aplicaci\u00f3n (b\u00e1sico)
-probe.jsp.deployment.s1.update.label=Actualizar la aplicaci\u00f3n si ya fue desplegada
-probe.jsp.deployment.s2.context.label=Nombre del contexto (ej. /tonto)
-probe.jsp.deployment.s2.description=Use esta opci\u00f3n si ya ha creado el archivo context.xml en %CATALINA_BASE%/conf/Catalina/localhost/. Se supone que el nombre de contexto es el mismo nombre del archivo .xml. Por ejemplo el contexto /joedog = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml. NOTA: Tomcat 5.0.x podr\u00eda requerir que el archivo .xml tenga el atributo \u00abpath\u00bb!
-probe.jsp.deployment.s2.title=Desplegar nombre del contexto (avanzado)
-
-probe.jsp.follow.h3.fileContent=Contenido del archivo
-probe.jsp.follow.h3.fileInfo=Informaci\u00f3n del archivo
-probe.jsp.follow.h3.sources=Fuentes del log
-probe.jsp.follow.loading=Cargando...
-probe.jsp.follow.menu.back=volver a lista de archivos log
-probe.jsp.follow.menu.clear=limpiar buffer
-probe.jsp.follow.menu.download=Descargar
-probe.jsp.follow.menu.nowrap=no ajustar
-probe.jsp.follow.menu.pause=pausar cola
-probe.jsp.follow.menu.resume=reanudar cola
-probe.jsp.follow.menu.wrap=ajustar l\u00edneas
-probe.jsp.follow.menu.zoomin=ampliar
-probe.jsp.follow.menu.zoomout=alejar
-probe.jsp.followed_file_info.fileName=Nombre del archivo:
-probe.jsp.followed_file_info.lastModified=\u00daltima modificaci\u00f3n:
-probe.jsp.followed_file_info.size=Tama\u00f1o:
-
-probe.jsp.jsps.col.lastmodified=\u00daltima modificaci\u00f3n
-probe.jsp.jsps.col.message=Mensaje
-probe.jsp.jsps.col.name=Nombre JSP
-probe.jsp.jsps.col.size=Tama\u00f1o
-probe.jsp.jsps.col.status=Estado
-probe.jsp.jsps.notfound=Esta aplicaci\u00f3n no tiene archivos JSP
-probe.jsp.jsps.opt.compile=Compilar seleccionados
-probe.jsp.jsps.opt.compileall=Compilar todo
-probe.jsp.jsps.opt.discardscratch=Descartar directorio \u00abwork\u00bb
-probe.jsp.jsps.opt.toggleall=Alternar todo
-probe.jsp.jsps.status.compiled=Compilado
-probe.jsp.jsps.status.failed=FALL\u00d3
-probe.jsp.jsps.status.outdated=Desactualizado
-
-probe.jsp.logs.col.app=Apl
-probe.jsp.logs.col.class=Clase
-probe.jsp.logs.col.file=Nombre del archivo
-probe.jsp.logs.col.level=Nivel
-probe.jsp.logs.col.modified=Modificado
-probe.jsp.logs.col.name=Nombre
-probe.jsp.logs.col.size=Tama\u00f1o
-probe.jsp.logs.col.type=Tipo
-probe.jsp.logs.download.alt=descargar
-probe.jsp.logs.hideapps=ver s\u00f3lo existentes
-probe.jsp.logs.showapps=mostrar todo
-probe.jsp.logs_notSupported.message=Su m\u00e1quina virtual de java {0} {1} no es totalmente compatible con la API de reflexi\u00f3n SUN - sun.reflect.ReflectionFactory. La funcionalidad de b\u00fasqueda de registro est\u00e1 desactivada.
-
-probe.jsp.memory.advise.finalization=Sugerir finalizaci\u00f3n
-probe.jsp.memory.advise.gc=Sugerir GC
-probe.jsp.memory.col.committed=Entregado
-probe.jsp.memory.col.group=Grupo
-probe.jsp.memory.col.initial=Inicial
-probe.jsp.memory.col.max=M\u00e1ximo
-probe.jsp.memory.col.name=Nombre
-probe.jsp.memory.col.plot=Graficar
-probe.jsp.memory.col.usageScore=Nivel de uso
-probe.jsp.memory.col.used=Usado
-probe.jsp.memory.h3.charts=Uso de memoria hist\u00f3rica
-probe.jsp.memory.h3.table=Uso de memoria actual
-probe.jsp.memory.loading=Cargando...
-probe.jsp.memory.usage.title=Uso {0}%
-probe.jsp.memory.notAvailable=Esta p\u00e1gina requiere Java5 con el agente JMX habilitado. Para activar el agente JXM adicione \u00ab-Dcom.sun.management.jmxremote\u00bb a la l\u00ednea de comando java o en la varible de ambiente $JAVA_OPTS. Si es un usuario del JDK de IBM adicione estas propiedades: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
-
-probe.jsp.menu.applications=Aplicaciones
-probe.jsp.menu.cluster=Cl\u00faster
-probe.jsp.menu.connectors=Conectores
-probe.jsp.menu.datasources=Fuentes de datos
-probe.jsp.menu.deployment=Despliegue
-probe.jsp.menu.logs=Logs
-probe.jsp.menu.memory=Memoria
-probe.jsp.menu.quickcheck=Prueba r\u00e1pida
-probe.jsp.menu.sysinfo=Sistema
-probe.jsp.menu.threads=Hilos
-
-probe.jsp.noaccess=No tiene los privilegios suficientes para acceder a esta p\u00e1gina. Use la barra de navegaci\u00f3n para seleccionar otra opci\u00f3n o haga click en el bot\u00f3n "atr\u00e1s" de su navegador.
-probe.jsp.noaccess.ajax=No tiene los privilegios suficientes para acceder a esta funcionalidad.
-probe.jsp.noaccess.title=403 Prohibido
-probe.jsp.notfound=La p\u00e1gina que solicit\u00f3 no existe en este servidor. Use la barra de navegaci\u00f3n para encontrar la funcionalidad requerida.
-probe.jsp.notfound.title=404 No encontrado
-
-probe.jsp.resources.col.auth=Autenticaci\u00f3n
-probe.jsp.resources.col.linkTo=Enlace a
-probe.jsp.resources.col.name=Nombre
-probe.jsp.resources.col.type=Tipo
-probe.jsp.resources.empty=No hay recursos definidos para esta aplicaci\u00f3n
-probe.jsp.resources.info.busy=Ocupado:
-probe.jsp.resources.info.connectionUsage.alt=Uso con. {0}%
-probe.jsp.resources.info.established=Establecido:
-probe.jsp.resources.info.max=M\u00e1x.:
-probe.jsp.resources.info.misconfigured=Este recurso est\u00e1 mal configurado y la informaci\u00f3n en tiempo de ejecuci\u00f3n no est\u00e1 disponible
-probe.jsp.resources.info.misconfigured.alt=signo de exclamaci\u00f3n
-probe.jsp.resources.info.reset=
-probe.jsp.resources.info.reset.alt=reinicializar
-probe.jsp.resources.info.title=Informaci\u00f3n adicional:
-
-probe.jsp.servlet_source.h3.source=C\u00f3digo del servlet auto generado
-probe.jsp.servlet_source.opt.jsp=Ver JSP
-
-probe.jsp.sessionAttibutes.card.age=Edad:
-probe.jsp.sessionAttibutes.card.application=Aplicaci\u00f3n:
-probe.jsp.sessionAttibutes.card.created=Creado:
-probe.jsp.sessionAttibutes.card.expiryTime=Expira:
-probe.jsp.sessionAttibutes.card.id=ID:
-probe.jsp.sessionAttibutes.card.idleTime=Tiempo inactivo:
-probe.jsp.sessionAttibutes.card.info=Informaci\u00f3n:
-probe.jsp.sessionAttibutes.card.lastAccessed=\u00daltimo acceso:
-probe.jsp.sessionAttibutes.card.manager=Tipo de administrador:
-probe.jsp.sessionAttibutes.card.maxIdleTime=M\u00e1x. tiempo inactivo:
-probe.jsp.sessionAttibutes.card.serializable=Serializable:
-probe.jsp.sessionAttibutes.card.serializable.no=NO
-probe.jsp.sessionAttibutes.card.serializable.yes=si
-probe.jsp.sessionAttibutes.card.size=Tama\u00f1o:
-probe.jsp.sessionAttibutes.col.delete=eliminar
-probe.jsp.sessionAttibutes.col.delete.title=Eliminar atributo
-probe.jsp.sessionAttibutes.col.name=Nombre
-probe.jsp.sessionAttibutes.col.serializable=Ser.?
-probe.jsp.sessionAttibutes.col.size=Tama\u00f1o
-probe.jsp.sessionAttibutes.col.type=Tipo
-probe.jsp.sessionAttibutes.col.value=Valor
-probe.jsp.sessionAttibutes.h3.attributes=Atributos de la sesi\u00f3n
-probe.jsp.sessionAttibutes.h3.card=Tarjeta de sesi\u00f3n
-probe.jsp.sessionAttibutes.invalidSid=El ID sesi\u00f3n no es v\u00e1lido o la sesi\u00f3n ha expirado
-probe.jsp.sessionAttibutes.menu.back=Volver a la lista de sesiones
-probe.jsp.sessionAttibutes.menu.destroy=Destruir esta sesi\u00f3n
-probe.jsp.sessionAttibutes.noattributes=Esta sesi\u00f3n no tiene atributos
-
-probe.jsp.sessions.col.age=Edad
-probe.jsp.sessions.col.creationTime=Hora de creaci\u00f3n
-probe.jsp.sessions.col.expiryTime=Expira
-probe.jsp.sessions.col.id=ID sesi\u00f3n
-probe.jsp.sessions.col.applicationName=Apl
-probe.jsp.sessions.col.idleTime=Tiempo inactivo
-probe.jsp.sessions.col.lastAccessTime=\u00daltima hora de acceso
-probe.jsp.sessions.col.objectCount=Nro. de objetos
-probe.jsp.sessions.col.serializable=Ser.
-probe.jsp.sessions.col.size=Tama\u00f1o
-probe.jsp.sessions.col.lastIP=\u00daltima IP
-probe.jsp.sessions.unknown.ip=desconocido
-probe.jsp.sessions.empty=No hay sesiones
-probe.jsp.sessions.menu.expire=Expirar
-probe.jsp.sessions.menu.toggle=Alternar
-probe.jsp.sessions.status.no=NO
-probe.jsp.sessions.status.yes=si
-probe.jsp.sessions.opt.all=Mostrar todo
-probe.jsp.showsize=Estimar tama\u00f1os
-probe.jsp.hidesize=ocultar tama\u00f1o
-
-probe.jsp.sysinfo.col.name=Nombre de la propiedad
-probe.jsp.sysinfo.col.value=Valor de la propiedad
-probe.jsp.sysinfo.container.title=Informaci\u00f3n del contenedor
-probe.jsp.sysinfo.memory.adviseGC=Sugerir recolecci\u00f3n de basura (GC)
-probe.jsp.sysinfo.memory.free=Libre:
-probe.jsp.sysinfo.memory.max=M\u00e1x.:
-probe.jsp.sysinfo.memory.title=Uso de memoria
-probe.jsp.sysinfo.memory.total=Total:
-probe.jsp.sysinfo.memory.usage=Uso actual de memoria es
-probe.jsp.sysinfo.memory.usage.alt=Barra de uso de memoria
-probe.jsp.sysinfo.os.applicationBase=Aplication base:
-probe.jsp.sysinfo.os.catalinaBase=catalina.base:
-probe.jsp.sysinfo.os.catalinaHome=catalina.home:
-probe.jsp.sysinfo.os.configBase=Configuration base:
-probe.jsp.sysinfo.os.container=Container:
-probe.jsp.sysinfo.os.currentTime=Hora actual:
-probe.jsp.sysinfo.os.jvm=JVM:
-probe.jsp.sysinfo.os.name=SO:
-probe.jsp.sysinfo.os.processors=Procesadores:
-probe.jsp.sysinfo.os.title=Informaci\u00f3n del SO
-probe.jsp.sysinfo.os.workingDir=Directorio de trabajo:
-probe.jsp.sysinfo.sysproperties.title=Propiedades del sistema
-
-probe.jsp.threadpools.currentThreadCount=N\u00famero de hilos actual
-probe.jsp.threadpools.currentThreadsBusy=Hilos ocupados actualmente
-probe.jsp.threadpools.maxSpareThreads=M\u00e1x. hilos de respaldo
-probe.jsp.threadpools.maxThreads=M\u00e1x. hilos
-probe.jsp.threadpools.menu.threads=Hilos en ejecuci\u00f3n
-probe.jsp.threadpools.minSpareThreads=M\u00edn. hilos de respaldo
-probe.jsp.threadpools.name=Nombre
-
-probe.jsp.threads.col.application=Apl
-probe.jsp.threads.col.classLoader=Cargador de clases
-probe.jsp.threads.col.daemon=D
-probe.jsp.threads.col.groupName=Grupo
-probe.jsp.threads.col.interrupted=I
-probe.jsp.threads.col.name=Nombre
-probe.jsp.threads.col.priority=P
-probe.jsp.threads.col.runnableClass=Ejecutable
-probe.jsp.threads.col.threadClass=Clase hilo
-probe.jsp.threads.col.id=ID
-probe.jsp.threads.col.execPoint=Punto de ejec.
-probe.jsp.threads.col.state=Estado
-probe.jsp.threads.col.inNative=Nativo?
-probe.jsp.threads.col.suspended=Susp.?
-probe.jsp.threads.col.waitedCount=CE
-probe.jsp.threads.col.blockedCount=CB
-probe.jsp.threads.help.priority=prioridad del hilo, a mayor n\u00famero mayor la prioridad
-probe.jsp.threads.help.daemon=el hilo es un demonio
-probe.jsp.threads.help.interrupted=el hilo ha sido interrumpido
-probe.jsp.threads.help.inNative=true si el hilo se est\u00e1 ejecutando en c\u00f3digo nativo
-probe.jsp.threads.help.suspended=Hilo suspendido
-probe.jsp.threads.help.waitedCount=\u00abconteo de espera\u00bb - n\u00famero de veces que el hilo ha estado esperando algo
-probe.jsp.threads.help.blockedCount=\u00abconteo de bloqueo\u00bb - n\u00famero de veces que el hilo ha sido bloqueado
-probe.jsp.threads.info.loading=Cargando...
-probe.jsp.threads.info.unavailable=La informaci\u00f3n de la URL no est\u00e1 disponible
-probe.jsp.threads.killmsg=Matar hilos indiscriminadamente puede desestabilizar la JVM. \u00bfEst\u00e1 seguro que quiere detener {0}?
-probe.jsp.threads.menu.threadpools=Pools de hilos
-probe.jsp.threads.stop.alt=detener
-
-probe.jsp.title.app.attributes={0} - atributos de contexto
-probe.jsp.title.applications=Aplicaciones instaladas
-probe.jsp.title.cluster=Estado del cl\u00faster
-probe.jsp.title.connectors=Conectores
-probe.jsp.title.dataSourceGroups=Fuentes de datos agrupados por la url jdbc
-probe.jsp.title.datasources=Fuentes de datos disponible
-probe.jsp.title.deployment=Despliegue de la aplicaci\u00f3n
-probe.jsp.title.follow=Encolar log
-probe.jsp.title.jsps={0} - JSPs desplegados
-probe.jsp.title.logs=Logs
-probe.jsp.title.logs_notSupported=No soportado
-probe.jsp.title.memory=Uso de memoria por la JVM
-probe.jsp.title.quickcheck=Prueba r\u00e1pida
-probe.jsp.title.resources={0} - recursos
-probe.jsp.title.servlet_source=C\u00f3digo del servlet generado
-probe.jsp.title.sessionAttibutes=Atributos de la sesi\u00f3n
-probe.jsp.title.sessions={0} - sesiones
-probe.jsp.title.sessions.all=Sesiones
-probe.jsp.title.sysinfo=Informaci\u00f3n del sistema
-probe.jsp.title.threadpools=Pools de hilos
-probe.jsp.title.threads=Hilos en ejecuci\u00f3n
-probe.jsp.title.viewsource={0} - Ver el c\u00f3digo fuente
-probe.jsp.uptime=EN EJECUCI\u00d3N durante {0} d\u00edas {1} horas {2} minutos
-probe.jsp.version=Versi\u00f3n {0} instalado en {1}
-
-probe.jsp.viewsource.appname=Nombre de la aplicaci\u00f3n:
-probe.jsp.viewsource.encoding=Codificaci\u00f3n:
-probe.jsp.viewsource.filename=Nombre del archivo:
-probe.jsp.viewsource.h3.info=Informaci\u00f3n JSP
-probe.jsp.viewsource.h3.source=C\u00f3digo fuente JSP
-probe.jsp.viewsource.lastmodified=\u00daltima modificaci\u00f3n:
-probe.jsp.viewsource.notfound=Lamentablemente no se puede ver el contenido de este archivo. Vuelva y seleccione el archivo de la lista.
-probe.jsp.viewsource.opt.back=volver a la lista JSP
-probe.jsp.viewsource.opt.compile=compilar
-probe.jsp.viewsource.opt.viewServlet=ver servlet generado
-probe.jsp.viewsource.size=Tama\u00f1o:
-probe.jsp.viewsource.state=Estado:
-
-probe.jsp.wrongparams=Haz pasado par\u00e1metros incorrectos a esta p\u00e1gina.
-probe.jsp.wrongsvrversion=Esta caracter\u00edstica no est\u00e1 implementada en {0}
-probe.jsp.zoomedchart.back=Volver a grupos de gr\u00e1ficos
-probe.jsp.zoomedchart.information=Puede usar el control deslizante para cambiar el tama\u00f1o de la imagen seg\u00fan su resoluci\u00f3n de pantalla. La informaci\u00f3n es en VIVO y el gr\u00e1fico deber\u00eda refrescarse autom\u00e1ticamente cada {0} segundos.
-
-probe.src.contextAction.cannotActOnSelf=No se puede detener/iniciar/replegar esta aplicaci\u00f3n
-probe.src.contextDoesntExist=El contexto {0} no existe
-probe.src.deploy.context.failure=Fall\u00f3 al desplegar {0}
-probe.src.deploy.context.success=Aplicaci\u00f3n desplegada para {0}
-probe.src.deploy.exploded.success={0} ha sido desplegada con \u00e9xtio en {1}
-probe.src.deploy.war.alreadyExists=El contexto {0} ya est\u00e1 en uso
-probe.src.deploy.war.failure=Se produjo un error reportado por Tomcat durante el despliegue: \u00ab{0}\u00bb. Sin embargo, esto no significa que su aplicaci\u00f3n no se despleg\u00f3. Compruebe el estado en la lista de aplicaciones
-probe.src.deploy.war.notWar.failure=Despliegue fallido. El archivo deber\u00eda acabar con .war
-probe.src.deploy.war.notinstalled={0} no fue instalado
-probe.src.deploy.war.uploadfailure=Se produjo un problema cargando el archivo: {0}
-probe.src.reset.datasource.c3p0=Este fuente de datos no puede ser reinicializada
-probe.src.reset.datasource.notfound=El recurso {0} no existe
-
-probe.jsp.title.wrapper=Servicio wrapper java
-probe.jsp.wrapper.not_available=Esta JVM no est\u00e1 controlada por el servicio wrapper java
-probe.jsp.wrapper.menu.restart=reiniciar la JVM
-probe.jsp.wrapper.menu.stop=detener la JVM
-probe.jsp.wrapper.menu.thread_dump=Solicitar respaldo de hilos
-probe.jsp.wrapper.h3.info=Informaci\u00f3n del wrapper
-probe.jsp.wrapper.h3.props=Propiedades del wrapper
-probe.jsp.wrapper.confirm.restart=\u00bfEst\u00e1 seguro que quiere reiniciar la JVM?
-probe.jsp.wrapper.confirm.stop=La JVM no puede ser iniciada desde Probe. \u00bfEst\u00e1 seguro que quiere detener la JVM?
-probe.jsp.wrapper.jvm.stopping=El apagado de la JVM est\u00e1 en progreso. Si necesita iniciarla otra vez deber\u00e1 hacerlo a trav\u00e9s de la consola.
-probe.jsp.wrapper.jvm.restarting=El reinicio de la JVM est\u00e1 en progreso. Esto puede tamar unos pocos minutos.
-probe.jsp.wrapper.jvm.thread_dump=El respaldo de hilos de la JMV ha sido solicitada. Usted puede normalmente encontrarlo en el archivo log del wrapper.
-
-probe.jsp.wrapper.user=Usuario:
-probe.jsp.wrapper.interactive_user=Usuario interactivo:
-probe.jsp.wrapper.java_pid=Java PID:
-probe.jsp.wrapper.pid=Wrapper PID:
-probe.jsp.wrapper.service=Ejecutando como servicio:
-probe.jsp.wrapper.debug=Depurador habilitado:
-probe.jsp.wrapper.version=Versi\u00f3n del wrapper:
-
-probe.jsp.decorator.system.title=Sistema
-probe.jsp.decorator.system.overview=Informaci\u00f3n general
-probe.jsp.decorator.system.memory=Uso de memoria
-probe.jsp.decorator.system.props=Propiedades del sistema
-probe.jsp.decorator.system.os=Informaci\u00f3n del SO
-probe.jsp.decorator.system.wrapper=Control del wrapper
-
-probe.jsp.os.h3.information=Informaci\u00f3n del SO
-probe.jsp.os.h3.charts=Gr\u00e1ficos hist\u00f3ricos
-probe.jsp.os.chart.cpu=Uso de CPU por la JVM (%)
-probe.jsp.os.chart.cpu.alt=Gr\u00e1fico de uso de CPU de la JVM
-probe.jsp.os.chart.cpu.legend=Uso de CPU
-probe.jsp.os.chart.memory=Uso de memoria del SO y JVM (KB)
-probe.jsp.os.chart.memory.alt=Gr\u00e1fico de uso de memoria f\u00edsica del SO y JVM
-probe.jsp.os.chart.memory.legend.total=Total usado
-probe.jsp.os.chart.memory.legend.jvm=Usado por la JVM
-probe.jsp.os.chart.swap=Uso swap (KB)
-probe.jsp.os.chart.swap.alt=Gr\u00e1fico de uso de la swap
-probe.jsp.os.chart.swap.legend=Swap usado
-#probe.jsp.os.chart.fd=File descriptors
-#probe.jsp.os.chart.fd.alt=File descriptors chart
-#probe.jsp.os.chart.fd.legend.open=open file descriptors
-#probe.jsp.os.chart.fd.legend.max=max file descriptors
-probe.jsp.os.card.name=Nombre del SO:
-probe.jsp.os.card.version=Versi\u00f3n del SO:
-probe.jsp.os.card.processors=Procesadores:
-probe.jsp.os.card.totalMemory=RAM total:
-probe.jsp.os.card.freeMemory=RAM libre:
-probe.jsp.os.card.committedVirtualMemory=Memoria entregada por la JVM:
-probe.jsp.os.card.totalSwap=Swap total:
-probe.jsp.os.card.freeSwap=Swap libre:
-
-probe.jsp.title.testDataSource={0} -> {1}
-probe.src.dataSourceTest.resource.lookup.failure=Fuente de datos {0} no existe
-probe.src.dataSourceTest.connection.failure=No se puede establecer una conexi\u00f3n a la base de datos. {0}
-probe.src.dataSourceTest.connection.success=Conectado con \u00e9xito a la base de datos
-probe.src.dataSourceTest.sql.required=El texto de la consulta sql es requerida
-probe.src.dataSourceTest.sql.failure=Se encontr\u00f3 un error al ejecutar la consulta. {0}
-probe.src.dataSourceTest.sql.null=NULL
-probe.src.dataSourceTest.cachedResultSet.failure=No se puede recuperar un conjunto de resultados almacenados en cach\u00e9.
-probe.jsp.dataSourceTest.help=Esta pantalla puede ayudarte a probar la conectividad a la fuente de datos de base de datos.\
-Probar conexi\u00f3n verifica si una conexi\u00f3n de base de datos puede establecerse y mostrar alguna informaci\u00f3n de la base de datos.\
-Ejecutar SQL ejecuta una consulta SQL que ingresa en la base de datos.\
-Puede ver una salida de la operaci\u00f3n en la base de datos o un mensaje de error en la parte inferior de la pantalla.\
-Mostrar hist\u00f3rico muestra una lista de consultas que se han ejecutado.\
-Considere usar Mostrar opciones para limitar el n\u00famero de registros retornados por su consulta para no afectar los recursos de su sistema.
-probe.jsp.dataSourceTest.menu.back=Volver a las fuentes de datos
-probe.jsp.dataSourceTest.menu.connect=Probar conexi\u00f3n
-probe.jsp.dataSourceTest.menu.execute=Ejecutar sql (Ctrl+Enter)
-probe.jsp.dataSourceTest.menu.showHistory=Mostrar hist\u00f3rico (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.hideHistory=Ocultar hist\u00f3rico (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.showOptions=Mostrar opciones (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.hideOptions=Ocultar opciones (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.wrap=Ajustar l\u00edneas
-probe.jsp.dataSourceTest.menu.nowrap=No ajustar l\u00edneas
-probe.jsp.dataSourceTest.menu.abbreviations=Ayuda!
-probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit habilitado)
-probe.jsp.dataSourceTest.sqlForm.maxRows.label=Registros a retornar
-probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Registros por p\u00e1gina
-probe.jsp.dataSourceTest.sqlForm.historySize.label=Tama\u00f1o del hist\u00f3rico
-probe.jsp.dataSourceTest.h3.results=Resultados de la consulta
-probe.jsp.dataSourceTest.results.rowcount={0} registro(s) afectado(s).
-probe.jsp.dataSourceTest.h3.metaData=Informaci\u00f3n de la base de datos
-probe.jsp.dataSourceTest.chart.usage.title=Uso de la fuente de datos
-probe.jsp.dataSourceTest.dbMetaData.col.propName=Nombre de la propiedad
-probe.jsp.dataSourceTest.dbMetaData.col.propValue=Valor de la propiedad
-probe.jsp.dataSourceTest.dbMetaData.dbProdName=Nombre de la base de datos
-probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Versi\u00f3n de la base de datos
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=Nombre del controlador JDBC
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=Versi\u00f3n del controlador JDBC
-probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=Versi\u00f3n JDBC
-probe.jsp.dataSourceTest.results.paging.banner.item_name=registro
-probe.jsp.dataSourceTest.results.paging.banner.items_name=registros
-probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
-probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Mostrando uno {0}.
-probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Mostrando todo {2}.
-probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Mostrando {2} a {3}.
-probe.jsp.dataSourceTest.results.paging.banner.first=Primero
-probe.jsp.dataSourceTest.results.paging.banner.prev=Ant
-probe.jsp.dataSourceTest.results.paging.banner.next=Sig
-probe.jsp.dataSourceTest.results.paging.banner.last=\u00daltimo
-probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Ir a la p\u00e1gina {0}
-probe.jsp.dataSourceTest.sql.completed=Instrucci\u00f3n completada.
-probe.jsp.dataSourceTest.h3.queryHistory=Historial de consulta
-probe.jsp.dataSourceTest.queryHistory.empty=La lista hist\u00f3rica esta vac\u00eda
-
-probe.jsp.whois.timeout=No se pudo completar la consulta WHOIS. Verifique si WHOIS esta bloquedo por su red.
-
-probe.jsp.threadstack.native=c\u00f3digo nativo
-probe.jsp.threadstack.unknown=fuente desconocido
-probe.jsp.threadstack.unavailable=La traza de la pila no est\u00e1 disponible para este hilo
-
-probe.jsp.tooltip.close=cerrar
-
-probe.jsp.sessions.h3=Sesiones
-probe.jsp.sessions.search.h3=Crit\u00e9rio de b\u00fasqueda de sesi\u00f3n
-probe.jsp.sessions.menu.showSearch=Buscar sesi\u00f3n
-probe.jsp.sessions.menu.applySearch=Aplicar b\u00fasqueda
-probe.jsp.sessions.menu.clearSearch=Limpiar b\u00fasqueda
-probe.jsp.sessions.menu.searchHelp=Ayuda
-probe.jsp.sessions.search.help=Las siguientes condiciones de b\u00fasqueda est\u00e1n disponibles para filtrar la lista de sesiones.\
-Si Id sesi\u00f3n coincide con una expresi\u00f3n regular.\
-Si la \u00daltima IP contiene una subcadena.\
-Si el Tiempo inactivo esta dentro del rango especificado de segundos.\
-Si la Edad esta dentro del rango especificado de segundos.\
-Si el Nombre de atributo coincide con al menos una expresi\u00f3n regular de una lista de expresiones regulares separadas por comas.\
-Esta condici\u00f3n permite buscar una sesi\u00f3n con un atributo A y/o un conjunto de atributos B.
-probe.jsp.sessions.search.sessionId=Id sesi\u00f3n (Regex)
-probe.jsp.sessions.search.attrName=Nombres de atributo (lista Regex)
-probe.jsp.sessions.search.ageFrom=Edad desde (seg)
-probe.jsp.sessions.search.ageTo=hasta
-probe.jsp.sessions.search.idleTimeFrom=Tiempo inactivo desde (seg)
-probe.jsp.sessions.search.idleTimeTo=hasta
-probe.jsp.sessions.search.lastIP=\u00daltima IP (subcadena)
-probe.jsp.sessions.search.results.h3=Resultados de la b\u00fasqueda de sesi\u00f3n
-probe.src.sessions.search.empty=El criterio de b\u00fasqueda est\u00e1 vac\u00edo
-probe.src.sessions.search.results.empty=No hay sesiones que coincidan con los criterios de b\u00fasqueda
-probe.src.sessions.search.invalid=El criterio de b\u00fasqueda no es v\u00e1lido
-probe.src.sessions.search.invalid.sessionId=La expresi\u00f3n regular para \u00abId sesi\u00f3n\u00bb no es v\u00e1lida. {0}
-probe.src.sessions.search.invalid.attrName=La expresi\u00f3n regular para \u00abNombre de atributo\u00bb no es v\u00e1lida. {0}
-probe.src.sessions.search.invalid.ageFrom=El valor para \u00abEdad desde\u00bb no es v\u00e1lida
-probe.src.sessions.search.invalid.ageTo=El valor para \u00abEdad hasta\u00bb no es v\u00e1lida
-probe.src.sessions.search.invalid.idleTimeFrom=El valor del \u00abTiempo inactivo desde\u00bb no es v\u00e1lido
-probe.src.sessions.search.invalid.idleTimeTo=El valor del \u00abTiempo inactivo hasta\u00bb no es v\u00e1lido
-probe.src.sessions.search.invalid.lastIP=La expresi\u00f3n regular para \u00ab\u00daltima IP\u00bb no es v\u00e1lida. {0}
-
-probe.jsp.app.nav.title=Aplicaci\u00f3n
-probe.jsp.app.nav.summary=Resumen
-probe.jsp.app.nav.sessions=Sesiones
-probe.jsp.app.nav.attributes=Atributos
-probe.jsp.app.nav.jsps=JSPs
-probe.jsp.app.nav.resources=Recursos
-probe.jsp.app.nav.initParams=Par\u00e1metros
-probe.jsp.app.nav.webxml=Descriptor despliegue
-probe.jsp.app.nav.contextxml=Descriptor contexto
-probe.jsp.app.nav.filters=Filtros
-probe.jsp.app.nav.servlets=Servlets
-
-probe.jsp.title.app.initParams={0} - par\u00e1metros de inicializaci\u00f3n
-probe.jsp.app.initParams.h3.params=Par\u00e1metros de inicializaci\u00f3n del contexto
-probe.jsp.app.initParams.col.name=Nombre
-probe.jsp.app.initParams.col.value=Valor
-probe.jsp.app.initParams.col.source=Fuente
-probe.jsp.app.initParams.source.deplDescr=web.xml
-probe.jsp.app.initParams.source.context=contexto
-probe.jsp.app.initParams.empty=No se han definido par\u00e1metros de inicializaci\u00f3n de contexto para esta aplicaci\u00f3n
-
-probe.jsp.title.app.viewXMLConf={0} - {1}
-probe.jsp.app.viewXMLConf.notfound= No se puede encontrar {0} de esta aplicaci\u00f3n
-probe.jsp.app.viewXMLConf.h3.scr={0} fuente
-probe.src.app.viewxmlconf.webxml.desc=descriptor de despliegue
-probe.src.app.viewxmlconf.contextxml.desc=descriptor de contexto
-
-probe.jsp.title.app.filters={0} - filtros
-probe.jsp.title.app.filtermaps={0} - mapeos de filtros
-probe.jsp.app.filtermaps.opt.defs=Definiciones de filtros
-probe.jsp.app.filters.opt.maps=Mapeos de filtros
-probe.jsp.app.filters.h3.defs=Filtros
-probe.jsp.app.filtermaps.h3.maps=Mapeos de filtros
-probe.jsp.app.filters.col.filterName=Nombre
-probe.jsp.app.filters.col.filterClass=Clase
-probe.jsp.app.filters.col.filterDesc=Descripci\u00f3n
-probe.jsp.app.filtermaps.col.url=Url
-probe.jsp.app.filtermaps.col.filterName=Nombre del filtro
-probe.jsp.app.filtermaps.col.servletName=Nombre del servlet
-probe.jsp.app.filtermaps.col.dispatcherMap=Despachador
-probe.jsp.app.filters.empty=No hay filtros definidos para esta aplicaci\u00f3n
-probe.jsp.app.filtermaps.empty=No hay mapeos de filtros definidos para esta aplicaci\u00f3n
-
-probe.jsp.title.servlets.all=Servlets
-probe.jsp.title.servlets.app={0} - servlets
-probe.jsp.title.servletmaps.all=Mapeos servlet
-probe.jsp.title.servletmaps.app={0} - mapeos servlet
-probe.jsp.servletmaps.opt.defs=Servlets
-probe.jsp.servletmaps.opt.all=Mostrar todo
-probe.jsp.servlets.opt.maps=Mapeos servlet
-probe.jsp.servlets.opt.all=Mostrar todo
-probe.jsp.servlets.h3.defs=Servlets
-probe.jsp.servletmaps.h3.maps=Mapeos servlet
-probe.jsp.servletmaps.col.url=Url
-probe.jsp.servletmaps.col.servletName=Nombre del servlet
-probe.jsp.servlets.col.applicationName=Apl
-probe.jsp.servlets.col.servletName=Nombre
-probe.jsp.servletmaps.col.servletClass=Clase servlet
-probe.jsp.servlets.col.available=Disp
-probe.jsp.servlets.col.loadOnStartup=Al inicio
-probe.jsp.servlets.empty=No hay servlets definidos
-probe.jsp.servletmaps.empty=No hay mapeos servlets definidos
-probe.jsp.servlets.col.minTime=Tiempo m\u00edn.
-probe.jsp.servlets.col.maxTime=Tiempo m\u00e1x.
-probe.jsp.servlets.col.processingTime=Tiempo proc.
-probe.jsp.servlets.col.loadTime=Tiempo cargado
-probe.jsp.servlets.col.multiThreaded=Multi hilado
-probe.jsp.servlets.col.requestCount=Pet
-probe.jsp.servlets.col.errorCount=Err
-
-probe.jsp.title.app.summary={0} - resumen de la aplicaci\u00f3n
-probe.jsp.app.summary.application=Nombre aplicaci\u00f3n:
-probe.jsp.app.summary.description=Descripci\u00f3n:
-probe.jsp.app.summary.distributable=Clustered:
-probe.jsp.app.summary.docBase=Doc. base:
-probe.jsp.app.summary.servletVersion=Versi\u00f3n del servlet:
-probe.jsp.app.summary.sessionTimeout=Tiempo espera sesi\u00f3n:
-probe.jsp.app.summary.servletCount=Nro. de servlets:
-probe.jsp.app.summary.status=Esta aplicaci\u00f3n est\u00e1
-probe.jsp.app.summary.requestCount=Nro. de peticiones:
-probe.jsp.app.summary.sessionCount=Sesiones
-probe.jsp.app.summary.sessionAttributeCount=Atrib. de sesi\u00f3n
-probe.jsp.app.summary.sessionSize=Tama\u00f1o de sesi\u00f3n
-probe.jsp.app.summary.contextAttributeCount=Atrib. de contexto
-probe.jsp.app.summary.serializable=Ser.
-probe.jsp.app.summary.errorCount=Nro. de errores:
-probe.jsp.app.summary.processingTime=Tiempo procesado:
-probe.jsp.app.summary.minTime=Tiempo m\u00edn.:
-probe.jsp.app.summary.maxTime=Tiempo m\u00e1x.:
-probe.jsp.app.summary.avgTime=Tiempo prom. de respuesta:
-probe.jsp.app.summary.h3.static=Informaci\u00f3n de la aplicaci\u00f3n
-probe.jsp.app.summary.h3.runtime=Informaci\u00f3n de la ejecuci\u00f3n
-probe.jsp.app.summary.invalidApp=La aplicaci\u00f3n no es v\u00e1lida
-probe.jsp.app.summary.runtime.unavailable=Esta aplicaci\u00f3n no se est\u00e1 ejecutando, la informaci\u00f3n en tiempo de ejecuci\u00f3n no est\u00e1 disponible
-probe.jsp.app.summary.menu.start=Iniciar
-probe.jsp.app.summary.menu.stop=Detener
-probe.jsp.app.summary.menu.reload=Recargar
-probe.jsp.app.summary.menu.undeploy=Replegar
-probe.jsp.app.summary.menu.goTo=Ir a
-probe.jsp.app.summary.menu.startStats=Iniciar recolecci\u00f3n de estad\u00edsticas
-probe.jsp.app.summary.menu.stopStats=Detener recolecci\u00f3n de estad\u00edsticas
-probe.jsp.app.summary.undeploy.confirm=Esta operaci\u00f3n no puede ser revertida. \u00bfEst\u00e1 seguro que quiere ELIMINAR {0}?
-probe.jsp.app.summary.dataSourceUsageScore=Uso de la fuente de datos
-probe.jsp.app.summary.jdbcUsage.title=Uso m\u00e1x. con. {0}%
-probe.jsp.app.summary.h3.charts=Gr\u00e1ficos estad\u00edsticos
-probe.jsp.app.summary.charts.requests.title=N\u00famero de peticiones
-probe.jsp.app.summary.charts.avgProcTime.title=Tiempo prom. de respuesta (ms)
-probe.jsp.app.summary.charts.requests.legend=Peticiones
-probe.jsp.app.summary.charts.errors.legend=Errores
-probe.jsp.app.summary.charts.avgProcTime.legend=Tiempo prom. de respuesta
-
-probe.jsp.title.allappstats=Estad\u00edsticas de la aplicaci\u00f3n
-probe.jsp.allappstats.charts.totalAvgProcTime.legend=Tiempo prom. de respuesta
-probe.jsp.allappstats.charts.totalReq.legend=Peticiones
-probe.jsp.allappstats.charts.totalAvgProcTime.title=Tiempo prom. de respuesta acumulado (ms)
-probe.jsp.allappstats.charts.allAppAvgProcTime.title=Tiempo prom. de respuesta por aplicaci\u00f3n (ms)
-probe.jsp.allappstats.charts.totalReq.title=Peticiones acumuladas
-probe.jsp.allappstats.charts.allAppReq.title=Peticiones por aplicaci\u00f3n (ms)
-probe.jsp.allappstats.h3.charts=Gr\u00e1ficos estad\u00edsticos
-
-probe.src.stats.listener.memory.pool.aboveThreshold.subject=ADVERTENCIA{0} - La memoria pool \u00ab{1}\u00bb est\u00e1 por encima del umbral
-probe.src.stats.listener.memory.pool.aboveThreshold.body={0}El tama\u00f1o de la memoria pool \u00ab{1}\u00bb aument\u00f3 por encima del umbral.\n\nTama\u00f1o actual: {2} bytes.\nUmbral: {3} bytes.
-probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - La memoria pool \u00ab{1}\u00bb est\u00e1 por debajo del umbral
-probe.src.stats.listener.memory.pool.belowThreshold.body={0}El tama\u00f1o de la memoria pool \u00ab{1}\u00bb disminuy\u00f3 por debajo del umbral.\n\nTama\u00f1o actual: {2} bytes.\nUmbral: {3} bytes.
-probe.src.stats.listener.memory.pool.flappingStart.subject=Aleteo{0} - La memoria pool \u00ab{1}\u00bb ha suprimido los mensajes
-probe.src.stats.listener.memory.pool.flappingStart.body={0}El tama\u00f1o de la memoria pool \u00ab{1}\u00bb est\u00e1 oscilando por encima y por debajo del umbral (\u00abaleteo\u00bb). Para evitar el env\u00edo de muchos correos electr\u00f3nicos, los futuros mensajes ser\u00e1n suprimidos hasta que se estabilice.
-
-probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
-probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* Este valor ya no esta aleteando. Los mensajes ser\u00e1n reanudados.\n\n
+#
+# Licensed under the GPL License. You may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+#
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+#
+probe.jsp.i18n.credit=Traducido por JaimeSan y 51114u9
+probe.jsp.icons.credit=Iconos \u00abSilk\u00bb de famfamfam.com.
+
+probe.jsp.generic.no=no
+probe.jsp.generic.yes=si
+probe.jsp.generic.abbreviations=\u00bfQu\u00e9 son estas abreviaciones?
+
+probe.jsp.app.attributes.col.delete=Eliminar atributo
+probe.jsp.app.attributes.col.delete.title=Eliminar atributo
+probe.jsp.app.attributes.col.name=Nombre
+probe.jsp.app.attributes.col.type=Tipo
+probe.jsp.app.attributes.col.value=Valor
+probe.jsp.app.attributes.h3.attributes=Atributos de contexto servlet
+probe.jsp.app.attributes.noattributes=No hay atributos en este contexto servlet
+
+probe.jsp.applications.alt.reload=recargar
+probe.jsp.applications.alt.undeploy=Replegar
+probe.jsp.applications.col.contextAttributeCount=Atrib. Ctx.
+probe.jsp.applications.col.description=Descripci\u00f3n
+probe.jsp.applications.col.distributable=Clstred.?
+probe.jsp.applications.col.jdbcUsage=Uso jdbc
+probe.jsp.applications.col.jsp=JSP
+probe.jsp.applications.col.name=Nombre
+probe.jsp.applications.col.serializable=Ser.?
+probe.jsp.applications.col.sessionAttributeCount=Atrib. Ses.
+probe.jsp.applications.col.sessionCount=Ses.
+probe.jsp.applications.col.sessionTimeout=Exp. Ses.
+probe.jsp.applications.col.size=Tama\u00f1o
+probe.jsp.applications.col.status=Estado
+probe.jsp.applications.col.requestCount=Pet.
+probe.jsp.applications.help.contextAttributeCount=n\u00famero total de atributos del ServletContext
+probe.jsp.applications.help.distributable=la aplicaci\u00f3n es \u00abdistributable\u00bb
+probe.jsp.applications.help.requestCount=n\u00famero total de peticiones procesadas por servlets
+probe.jsp.applications.help.serializable=todos los atributos de sesi\u00f3n que implementan java.io.Serializable
+probe.jsp.applications.help.sessionAttributeCount=n\u00famero total de atributos de sesi\u00f3n
+probe.jsp.applications.help.sessionCount=n\u00famero de sesiones
+probe.jsp.applications.hidesize=ocultar el tama\u00f1o de sesiones
+probe.jsp.applications.jdbcUsage.title=Uso m\u00e1x. con. {0}%
+probe.jsp.applications.jsp.view=ver
+probe.jsp.applications.serializable.no=NO
+probe.jsp.applications.serializable.yes=si
+probe.jsp.applications.showsize=Estimar tama\u00f1o de sesiones (podr\u00eda ser lento)
+probe.jsp.applications.status.down=detenido
+probe.jsp.applications.status.down.title=Iniciar {0}
+probe.jsp.applications.status.up=ejecutando
+probe.jsp.applications.title.reload=Recargar {0}
+probe.jsp.applications.title.status.up=Detener {0}
+probe.jsp.applications.title.undeploy=Replegar {0}
+probe.jsp.applications.undeploy.confirm=Esta operaci\u00f3n no puede revertirse. \u00bfEst\u00e1 seguro que quiere ELIMINAR {0}?
+
+probe.jsp.connectors.information=Informaci\u00f3n sobre el tr\u00e1fico para todos los conectores disponibles. La alimentaci\u00f3n es EN VIVO y los gr\u00e1ficos se actualizan autom\u00e1ticamente. Tenga en cuenta que usted no tiene que permanecer en esta p\u00e1gina para que los gr\u00e1ficos se actualicen.
+probe.jsp.connectors.processor.errorCount=Nro. de errores:
+probe.jsp.connectors.processor.maxTime=Tiempo m\u00e1x.:
+probe.jsp.connectors.processor.processingTime=Tiempo procesado:
+probe.jsp.connectors.processor.received=Recibido:
+probe.jsp.connectors.processor.requestCount=Nro. de peticiones:
+probe.jsp.connectors.processor.sent=Enviado:
+probe.jsp.connectors.proc_time.title=Tiempo de proc. (ms) en cada int\u00e9rvalo
+probe.jsp.connectors.requests.title=N\u00famero de peticiones en cada int\u00e9rvalo
+probe.jsp.connectors.traffic.title=Vol\u00famen de tr\u00e1fico (bytes) en cada int\u00e9rvalo
+probe.jsp.connectors.wrk.col.in=ENTRADA
+probe.jsp.connectors.wrk.col.out=SALIDA
+probe.jsp.connectors.wrk.col.processingTime=Tiempo proc.
+probe.jsp.connectors.wrk.col.remoteAddr=IP remoto
+probe.jsp.connectors.wrk.col.stage=etapa
+probe.jsp.connectors.wrk.col.url=URL
+probe.jsp.connectors.wrk.col.thread=Hilo
+probe.jsp.connectors.wrk.empty=Sin procesadores
+probe.jsp.connectors.wrk.stage.endInput=FinEntrada
+probe.jsp.connectors.wrk.stage.endOutput=FinSalida
+probe.jsp.connectors.wrk.stage.ended=Finalizado
+probe.jsp.connectors.wrk.stage.keepAlive=Vigente
+probe.jsp.connectors.wrk.stage.new=Nuevo
+probe.jsp.connectors.wrk.stage.parse=An\u00e1lisis
+probe.jsp.connectors.wrk.stage.prepare=Preparar
+probe.jsp.connectors.wrk.stage.service=Servicio
+
+probe.jsp.cluster.chart.requests=Peticiones en {0}-int\u00e9rvalos de segundo
+probe.jsp.cluster.chart.traffic=Tr\u00e1fico en {0}-int\u00e9rvalos de segundo
+probe.jsp.cluster.h3.info=Informaci\u00f3n del cl\u00faster
+probe.jsp.cluster.h3.members=Miembros del cl\u00faster
+probe.jsp.cluster.heartbeatFreq=Frec. pulsaci\u00f3n:
+probe.jsp.cluster.heartbeatTimeout=Exp. pulsaci\u00f3n:
+probe.jsp.cluster.info=Informaci\u00f3n:
+probe.jsp.cluster.manager=Administrador:
+probe.jsp.cluster.mcastAddress=Direcci\u00f3n Mcast:
+probe.jsp.cluster.mcastBindAddress=Direcci\u00f3n enlace Mcast:
+probe.jsp.cluster.mcastBindAddress.all=todo
+probe.jsp.cluster.mcastTTL=Mcast TTL
+probe.jsp.cluster.members.col.address=Direcci\u00f3n
+probe.jsp.cluster.members.col.avgMsgSize=TamProm
+probe.jsp.cluster.members.col.closes=Cerrado
+probe.jsp.cluster.members.col.connectCount=CC
+probe.jsp.cluster.members.col.connected=Con.?
+probe.jsp.cluster.members.col.disconnectCount=CD
+probe.jsp.cluster.members.col.failures=Fallas
+probe.jsp.cluster.members.col.inQueueCounter=EntC
+probe.jsp.cluster.members.col.keepAlive=Vigente
+probe.jsp.cluster.members.col.openFailures=Fallas abiertas
+probe.jsp.cluster.members.col.opens=Abiertas
+probe.jsp.cluster.members.col.outQueueCounter=SalC
+probe.jsp.cluster.members.col.queueSize=TamC
+probe.jsp.cluster.members.col.queueSizeBytes=TamCB
+probe.jsp.cluster.members.col.requests=Pet.
+probe.jsp.cluster.members.col.resends=Reenv\u00edos
+probe.jsp.cluster.members.col.sent=Env\u00edo
+probe.jsp.cluster.members.col.socketLimit=L\u00edmite socket
+probe.jsp.cluster.members.failing.alt=fallando
+probe.jsp.cluster.members.failing.title=El miembro es sospechoso de estar fallando
+probe.jsp.cluster.members.healthy.alt=saludable
+probe.jsp.cluster.members.healthy.title=El miembro est\u00e1 saludable
+probe.jsp.cluster.mode=Modo de replicaci\u00f3n:
+probe.jsp.cluster.name=Nombre:
+probe.jsp.cluster.noMembers=No hay miembros activos conocidos del cl\u00faster para este nodo
+probe.jsp.cluster.notAvailable=La informaci\u00f3n del cl\u00faster est\u00e1 s\u00f3lo disponible para Tomcat 5.5.x con el soporte para cl\u00faster habilitado.
+probe.jsp.cluster.received=recibido
+probe.jsp.cluster.receiverAddress=Direcci\u00f3n receptor:
+probe.jsp.cluster.receiverPort=Puerto receptor:
+probe.jsp.cluster.sent=enviado
+
+probe.jsp.copyright=Derechos reservados 2009-${copyright}. \u00bfVd. tiene algunas preguntas o sugerencias? Vis\u00edtenos en https://github.com/psi-probe/psi-probe
+
+probe.jsp.dataSourceGroups.empty=No hay origenes de datos correctamente configurados y disponibles para esta instancia
+probe.jsp.dataSourceGroups.information=La siguiente tabla contiene el n\u00famero total de conexiones a base de datos actualmente abiertos y potencialmente permitidos agrupados por la url jdbc. Esta informaci\u00f3n puede ayudarle a estimar el n\u00famero de conexiones que pueden ser abiertas a una base de datos en particular por los recursos jdbc configurados en el contenedor.
+probe.jsp.dataSourceGroups.jdbcUsage.title=Uso m\u00e1x. con. {0}%
+probe.jsp.dataSourceGroups.list.col.busy=Total ocupado
+probe.jsp.dataSourceGroups.list.col.established=Total estab.
+probe.jsp.dataSourceGroups.list.col.max=Total m\u00e1x.
+probe.jsp.dataSourceGroups.list.col.resourceCount=Nro. recurso
+probe.jsp.dataSourceGroups.list.col.url=URL
+probe.jsp.dataSourceGroups.list.col.usage=Uso
+probe.jsp.dataSourceGroups.menu.back=Regresar a la lista de fuente de datos
+
+probe.jsp.datasources.h3.global=Recursos globales
+probe.jsp.datasources.h3.app=Recursos de la aplicaci\u00f3n
+probe.jsp.datasources.global.empty=No hay fuentes de datos a nivel servidor configurados para esta instancia Tomcat
+probe.jsp.datasources.app.empty=No hay fuentes de datos a nivel aplicaci\u00f3n configurados para esta instancia Tomcat
+probe.jsp.datasources.empty=No hay fuentes de datos configurados para esta instancia Tomcat
+probe.jsp.datasources.help.max=n\u00famero m\u00e1ximo de conexiones en el pool
+probe.jsp.datasources.help.established=n\u00famero de conexiones establecidas que pueden ser reutilizadas
+probe.jsp.datasources.help.busy=n\u00famero de conexiones ocupadas que no pueden ser reutilizadas
+probe.jsp.datasources.list.col.application=Apl
+probe.jsp.datasources.list.col.auth=Aut
+probe.jsp.datasources.list.col.busy=O
+probe.jsp.datasources.list.col.description=Descripci\u00f3n
+probe.jsp.datasources.list.col.established=E
+probe.jsp.datasources.list.col.linkTo=Enl
+probe.jsp.datasources.list.col.max=M
+probe.jsp.datasources.list.col.reset.alt=reinicializar
+probe.jsp.datasources.list.col.resource=Recurso
+probe.jsp.datasources.list.col.type=Tipo
+probe.jsp.datasources.list.col.url=URL
+probe.jsp.datasources.list.col.usage=Uso
+probe.jsp.datasources.list.col.user=Usuario
+probe.jsp.datasources.list.misconfigured.alt=error
+probe.jsp.datasources.opt.groupByJdbcUrl=agrupado por la url jdbc
+
+probe.jsp.deployment.war.success={0} ha sido desplegado
+probe.jsp.deployment.compilationDetails=Ver detalles de la compilaci\u00f3n
+probe.jsp.deployment.s1.compile.label=Precompilar p\u00e1ginas JSP despu\u00e9s del despliegue (puede tomar algunos minutos)
+probe.jsp.deployment.s1.description=Subir un archivo .war en el servidor. Si el nombre del contexto no es especificado se usar\u00e1 el nombre del archivo. Al subir archivos .war con META-INF/context.xml aseg\u00farese que el contexto tenga el mismo valor del atributo \u00abpath\u00bb como el contexto war que esta desplegando, de lo contrario Tomcat 5.0.x se confundir\u00e1
+probe.jsp.deployment.s1.discard.label=Descartar el directorio \u00abwork\u00bb si existe
+probe.jsp.deployment.s1.file.label=Seleccione un archivo .war a subir
+probe.jsp.deployment.s1.submit=Desplegar
+probe.jsp.deployment.s1.title=Subir una aplicaci\u00f3n (b\u00e1sico)
+probe.jsp.deployment.s1.update.label=Actualizar la aplicaci\u00f3n si ya fue desplegada
+probe.jsp.deployment.s2.context.label=Nombre del contexto (ej. /tonto)
+probe.jsp.deployment.s2.description=Use esta opci\u00f3n si ya ha creado el archivo context.xml en %CATALINA_BASE%/conf/Catalina/localhost/. Se supone que el nombre de contexto es el mismo nombre del archivo .xml. Por ejemplo el contexto /joedog = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml. NOTA: Tomcat 5.0.x podr\u00eda requerir que el archivo .xml tenga el atributo \u00abpath\u00bb!
+probe.jsp.deployment.s2.title=Desplegar nombre del contexto (avanzado)
+
+probe.jsp.follow.h3.fileContent=Contenido del archivo
+probe.jsp.follow.h3.fileInfo=Informaci\u00f3n del archivo
+probe.jsp.follow.h3.sources=Fuentes del log
+probe.jsp.follow.loading=Cargando...
+probe.jsp.follow.menu.back=volver a lista de archivos log
+probe.jsp.follow.menu.clear=limpiar buffer
+probe.jsp.follow.menu.download=Descargar
+probe.jsp.follow.menu.nowrap=no ajustar
+probe.jsp.follow.menu.pause=pausar cola
+probe.jsp.follow.menu.resume=reanudar cola
+probe.jsp.follow.menu.wrap=ajustar l\u00edneas
+probe.jsp.follow.menu.zoomin=ampliar
+probe.jsp.follow.menu.zoomout=alejar
+probe.jsp.followed_file_info.fileName=Nombre del archivo:
+probe.jsp.followed_file_info.lastModified=\u00daltima modificaci\u00f3n:
+probe.jsp.followed_file_info.size=Tama\u00f1o:
+
+probe.jsp.jsps.col.lastmodified=\u00daltima modificaci\u00f3n
+probe.jsp.jsps.col.message=Mensaje
+probe.jsp.jsps.col.name=Nombre JSP
+probe.jsp.jsps.col.size=Tama\u00f1o
+probe.jsp.jsps.col.status=Estado
+probe.jsp.jsps.notfound=Esta aplicaci\u00f3n no tiene archivos JSP
+probe.jsp.jsps.opt.compile=Compilar seleccionados
+probe.jsp.jsps.opt.compileall=Compilar todo
+probe.jsp.jsps.opt.discardscratch=Descartar directorio \u00abwork\u00bb
+probe.jsp.jsps.opt.toggleall=Alternar todo
+probe.jsp.jsps.status.compiled=Compilado
+probe.jsp.jsps.status.failed=FALL\u00d3
+probe.jsp.jsps.status.outdated=Desactualizado
+
+probe.jsp.logs.col.app=Apl
+probe.jsp.logs.col.class=Clase
+probe.jsp.logs.col.file=Nombre del archivo
+probe.jsp.logs.col.level=Nivel
+probe.jsp.logs.col.modified=Modificado
+probe.jsp.logs.col.name=Nombre
+probe.jsp.logs.col.size=Tama\u00f1o
+probe.jsp.logs.col.type=Tipo
+probe.jsp.logs.download.alt=descargar
+probe.jsp.logs.hideapps=ver s\u00f3lo existentes
+probe.jsp.logs.showapps=mostrar todo
+probe.jsp.logs_notSupported.message=Su m\u00e1quina virtual de java {0} {1} no es totalmente compatible con la API de reflexi\u00f3n SUN - sun.reflect.ReflectionFactory. La funcionalidad de b\u00fasqueda de registro est\u00e1 desactivada.
+
+probe.jsp.memory.advise.finalization=Sugerir finalizaci\u00f3n
+probe.jsp.memory.advise.gc=Sugerir GC
+probe.jsp.memory.col.committed=Entregado
+probe.jsp.memory.col.group=Grupo
+probe.jsp.memory.col.initial=Inicial
+probe.jsp.memory.col.max=M\u00e1ximo
+probe.jsp.memory.col.name=Nombre
+probe.jsp.memory.col.plot=Graficar
+probe.jsp.memory.col.usageScore=Nivel de uso
+probe.jsp.memory.col.used=Usado
+probe.jsp.memory.h3.charts=Uso de memoria hist\u00f3rica
+probe.jsp.memory.h3.table=Uso de memoria actual
+probe.jsp.memory.loading=Cargando...
+probe.jsp.memory.usage.title=Uso {0}%
+probe.jsp.memory.notAvailable=Esta p\u00e1gina requiere Java5 con el agente JMX habilitado. Para activar el agente JXM adicione \u00ab-Dcom.sun.management.jmxremote\u00bb a la l\u00ednea de comando java o en la varible de ambiente $JAVA_OPTS. Si es un usuario del JDK de IBM adicione estas propiedades: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
+
+probe.jsp.menu.applications=Aplicaciones
+probe.jsp.menu.cluster=Cl\u00faster
+probe.jsp.menu.connectors=Conectores
+probe.jsp.menu.datasources=Fuentes de datos
+probe.jsp.menu.deployment=Despliegue
+probe.jsp.menu.logs=Logs
+probe.jsp.menu.memory=Memoria
+probe.jsp.menu.quickcheck=Prueba r\u00e1pida
+probe.jsp.menu.sysinfo=Sistema
+probe.jsp.menu.threads=Hilos
+
+probe.jsp.noaccess=No tiene los privilegios suficientes para acceder a esta p\u00e1gina. Use la barra de navegaci\u00f3n para seleccionar otra opci\u00f3n o haga click en el bot\u00f3n "atr\u00e1s" de su navegador.
+probe.jsp.noaccess.ajax=No tiene los privilegios suficientes para acceder a esta funcionalidad.
+probe.jsp.noaccess.title=403 Prohibido
+probe.jsp.notfound=La p\u00e1gina que solicit\u00f3 no existe en este servidor. Use la barra de navegaci\u00f3n para encontrar la funcionalidad requerida.
+probe.jsp.notfound.title=404 No encontrado
+
+probe.jsp.resources.col.auth=Autenticaci\u00f3n
+probe.jsp.resources.col.linkTo=Enlace a
+probe.jsp.resources.col.name=Nombre
+probe.jsp.resources.col.type=Tipo
+probe.jsp.resources.empty=No hay recursos definidos para esta aplicaci\u00f3n
+probe.jsp.resources.info.busy=Ocupado:
+probe.jsp.resources.info.connectionUsage.alt=Uso con. {0}%
+probe.jsp.resources.info.established=Establecido:
+probe.jsp.resources.info.max=M\u00e1x.:
+probe.jsp.resources.info.misconfigured=Este recurso est\u00e1 mal configurado y la informaci\u00f3n en tiempo de ejecuci\u00f3n no est\u00e1 disponible
+probe.jsp.resources.info.misconfigured.alt=signo de exclamaci\u00f3n
+probe.jsp.resources.info.reset=
+probe.jsp.resources.info.reset.alt=reinicializar
+probe.jsp.resources.info.title=Informaci\u00f3n adicional:
+
+probe.jsp.servlet_source.h3.source=C\u00f3digo del servlet auto generado
+probe.jsp.servlet_source.opt.jsp=Ver JSP
+
+probe.jsp.sessionAttibutes.card.age=Edad:
+probe.jsp.sessionAttibutes.card.application=Aplicaci\u00f3n:
+probe.jsp.sessionAttibutes.card.created=Creado:
+probe.jsp.sessionAttibutes.card.expiryTime=Expira:
+probe.jsp.sessionAttibutes.card.id=ID:
+probe.jsp.sessionAttibutes.card.idleTime=Tiempo inactivo:
+probe.jsp.sessionAttibutes.card.info=Informaci\u00f3n:
+probe.jsp.sessionAttibutes.card.lastAccessed=\u00daltimo acceso:
+probe.jsp.sessionAttibutes.card.manager=Tipo de administrador:
+probe.jsp.sessionAttibutes.card.maxIdleTime=M\u00e1x. tiempo inactivo:
+probe.jsp.sessionAttibutes.card.serializable=Serializable:
+probe.jsp.sessionAttibutes.card.serializable.no=NO
+probe.jsp.sessionAttibutes.card.serializable.yes=si
+probe.jsp.sessionAttibutes.card.size=Tama\u00f1o:
+probe.jsp.sessionAttibutes.col.delete=eliminar
+probe.jsp.sessionAttibutes.col.delete.title=Eliminar atributo
+probe.jsp.sessionAttibutes.col.name=Nombre
+probe.jsp.sessionAttibutes.col.serializable=Ser.?
+probe.jsp.sessionAttibutes.col.size=Tama\u00f1o
+probe.jsp.sessionAttibutes.col.type=Tipo
+probe.jsp.sessionAttibutes.col.value=Valor
+probe.jsp.sessionAttibutes.h3.attributes=Atributos de la sesi\u00f3n
+probe.jsp.sessionAttibutes.h3.card=Tarjeta de sesi\u00f3n
+probe.jsp.sessionAttibutes.invalidSid=El ID sesi\u00f3n no es v\u00e1lido o la sesi\u00f3n ha expirado
+probe.jsp.sessionAttibutes.menu.back=Volver a la lista de sesiones
+probe.jsp.sessionAttibutes.menu.destroy=Destruir esta sesi\u00f3n
+probe.jsp.sessionAttibutes.noattributes=Esta sesi\u00f3n no tiene atributos
+
+probe.jsp.sessions.col.age=Edad
+probe.jsp.sessions.col.creationTime=Hora de creaci\u00f3n
+probe.jsp.sessions.col.expiryTime=Expira
+probe.jsp.sessions.col.id=ID sesi\u00f3n
+probe.jsp.sessions.col.applicationName=Apl
+probe.jsp.sessions.col.idleTime=Tiempo inactivo
+probe.jsp.sessions.col.lastAccessTime=\u00daltima hora de acceso
+probe.jsp.sessions.col.objectCount=Nro. de objetos
+probe.jsp.sessions.col.serializable=Ser.
+probe.jsp.sessions.col.size=Tama\u00f1o
+probe.jsp.sessions.col.lastIP=\u00daltima IP
+probe.jsp.sessions.unknown.ip=desconocido
+probe.jsp.sessions.empty=No hay sesiones
+probe.jsp.sessions.menu.expire=Expirar
+probe.jsp.sessions.menu.toggle=Alternar
+probe.jsp.sessions.status.no=NO
+probe.jsp.sessions.status.yes=si
+probe.jsp.sessions.opt.all=Mostrar todo
+probe.jsp.showsize=Estimar tama\u00f1os
+probe.jsp.hidesize=ocultar tama\u00f1o
+
+probe.jsp.sysinfo.col.name=Nombre de la propiedad
+probe.jsp.sysinfo.col.value=Valor de la propiedad
+probe.jsp.sysinfo.container.title=Informaci\u00f3n del contenedor
+probe.jsp.sysinfo.memory.adviseGC=Sugerir recolecci\u00f3n de basura (GC)
+probe.jsp.sysinfo.memory.free=Libre:
+probe.jsp.sysinfo.memory.max=M\u00e1x.:
+probe.jsp.sysinfo.memory.title=Uso de memoria
+probe.jsp.sysinfo.memory.total=Total:
+probe.jsp.sysinfo.memory.usage=Uso actual de memoria es
+probe.jsp.sysinfo.memory.usage.alt=Barra de uso de memoria
+probe.jsp.sysinfo.os.applicationBase=Aplication base:
+probe.jsp.sysinfo.os.catalinaBase=catalina.base:
+probe.jsp.sysinfo.os.catalinaHome=catalina.home:
+probe.jsp.sysinfo.os.configBase=Configuration base:
+probe.jsp.sysinfo.os.container=Container:
+probe.jsp.sysinfo.os.currentTime=Hora actual:
+probe.jsp.sysinfo.os.jvm=JVM:
+probe.jsp.sysinfo.os.name=SO:
+probe.jsp.sysinfo.os.processors=Procesadores:
+probe.jsp.sysinfo.os.title=Informaci\u00f3n del SO
+probe.jsp.sysinfo.os.workingDir=Directorio de trabajo:
+probe.jsp.sysinfo.sysproperties.title=Propiedades del sistema
+
+probe.jsp.threadpools.currentThreadCount=N\u00famero de hilos actual
+probe.jsp.threadpools.currentThreadsBusy=Hilos ocupados actualmente
+probe.jsp.threadpools.maxSpareThreads=M\u00e1x. hilos de respaldo
+probe.jsp.threadpools.maxThreads=M\u00e1x. hilos
+probe.jsp.threadpools.menu.threads=Hilos en ejecuci\u00f3n
+probe.jsp.threadpools.minSpareThreads=M\u00edn. hilos de respaldo
+probe.jsp.threadpools.name=Nombre
+
+probe.jsp.threads.col.application=Apl
+probe.jsp.threads.col.classLoader=Cargador de clases
+probe.jsp.threads.col.daemon=D
+probe.jsp.threads.col.groupName=Grupo
+probe.jsp.threads.col.interrupted=I
+probe.jsp.threads.col.name=Nombre
+probe.jsp.threads.col.priority=P
+probe.jsp.threads.col.runnableClass=Ejecutable
+probe.jsp.threads.col.threadClass=Clase hilo
+probe.jsp.threads.col.id=ID
+probe.jsp.threads.col.execPoint=Punto de ejec.
+probe.jsp.threads.col.state=Estado
+probe.jsp.threads.col.inNative=Nativo?
+probe.jsp.threads.col.suspended=Susp.?
+probe.jsp.threads.col.waitedCount=CE
+probe.jsp.threads.col.blockedCount=CB
+probe.jsp.threads.help.priority=prioridad del hilo, a mayor n\u00famero mayor la prioridad
+probe.jsp.threads.help.daemon=el hilo es un demonio
+probe.jsp.threads.help.interrupted=el hilo ha sido interrumpido
+probe.jsp.threads.help.inNative=true si el hilo se est\u00e1 ejecutando en c\u00f3digo nativo
+probe.jsp.threads.help.suspended=Hilo suspendido
+probe.jsp.threads.help.waitedCount=\u00abconteo de espera\u00bb - n\u00famero de veces que el hilo ha estado esperando algo
+probe.jsp.threads.help.blockedCount=\u00abconteo de bloqueo\u00bb - n\u00famero de veces que el hilo ha sido bloqueado
+probe.jsp.threads.info.loading=Cargando...
+probe.jsp.threads.info.unavailable=La informaci\u00f3n de la URL no est\u00e1 disponible
+probe.jsp.threads.killmsg=Matar hilos indiscriminadamente puede desestabilizar la JVM. \u00bfEst\u00e1 seguro que quiere detener {0}?
+probe.jsp.threads.menu.threadpools=Pools de hilos
+probe.jsp.threads.stop.alt=detener
+
+probe.jsp.title.app.attributes={0} - atributos de contexto
+probe.jsp.title.applications=Aplicaciones instaladas
+probe.jsp.title.cluster=Estado del cl\u00faster
+probe.jsp.title.connectors=Conectores
+probe.jsp.title.dataSourceGroups=Fuentes de datos agrupados por la url jdbc
+probe.jsp.title.datasources=Fuentes de datos disponible
+probe.jsp.title.deployment=Despliegue de la aplicaci\u00f3n
+probe.jsp.title.follow=Encolar log
+probe.jsp.title.jsps={0} - JSPs desplegados
+probe.jsp.title.logs=Logs
+probe.jsp.title.logs_notSupported=No soportado
+probe.jsp.title.memory=Uso de memoria por la JVM
+probe.jsp.title.quickcheck=Prueba r\u00e1pida
+probe.jsp.title.resources={0} - recursos
+probe.jsp.title.servlet_source=C\u00f3digo del servlet generado
+probe.jsp.title.sessionAttibutes=Atributos de la sesi\u00f3n
+probe.jsp.title.sessions={0} - sesiones
+probe.jsp.title.sessions.all=Sesiones
+probe.jsp.title.sysinfo=Informaci\u00f3n del sistema
+probe.jsp.title.threadpools=Pools de hilos
+probe.jsp.title.threads=Hilos en ejecuci\u00f3n
+probe.jsp.title.viewsource={0} - Ver el c\u00f3digo fuente
+probe.jsp.uptime=EN EJECUCI\u00d3N durante {0} d\u00edas {1} horas {2} minutos
+probe.jsp.version=Versi\u00f3n {0} instalado en {1}
+
+probe.jsp.viewsource.appname=Nombre de la aplicaci\u00f3n:
+probe.jsp.viewsource.encoding=Codificaci\u00f3n:
+probe.jsp.viewsource.filename=Nombre del archivo:
+probe.jsp.viewsource.h3.info=Informaci\u00f3n JSP
+probe.jsp.viewsource.h3.source=C\u00f3digo fuente JSP
+probe.jsp.viewsource.lastmodified=\u00daltima modificaci\u00f3n:
+probe.jsp.viewsource.notfound=Lamentablemente no se puede ver el contenido de este archivo. Vuelva y seleccione el archivo de la lista.
+probe.jsp.viewsource.opt.back=volver a la lista JSP
+probe.jsp.viewsource.opt.compile=compilar
+probe.jsp.viewsource.opt.viewServlet=ver servlet generado
+probe.jsp.viewsource.size=Tama\u00f1o:
+probe.jsp.viewsource.state=Estado:
+
+probe.jsp.wrongparams=Haz pasado par\u00e1metros incorrectos a esta p\u00e1gina.
+probe.jsp.wrongsvrversion=Esta caracter\u00edstica no est\u00e1 implementada en {0}
+probe.jsp.zoomedchart.back=Volver a grupos de gr\u00e1ficos
+probe.jsp.zoomedchart.information=Puede usar el control deslizante para cambiar el tama\u00f1o de la imagen seg\u00fan su resoluci\u00f3n de pantalla. La informaci\u00f3n es en VIVO y el gr\u00e1fico deber\u00eda refrescarse autom\u00e1ticamente cada {0} segundos.
+
+probe.src.contextAction.cannotActOnSelf=No se puede detener/iniciar/replegar esta aplicaci\u00f3n
+probe.src.contextDoesntExist=El contexto {0} no existe
+probe.src.deploy.context.failure=Fall\u00f3 al desplegar {0}
+probe.src.deploy.context.success=Aplicaci\u00f3n desplegada para {0}
+probe.src.deploy.exploded.success={0} ha sido desplegada con \u00e9xtio en {1}
+probe.src.deploy.war.alreadyExists=El contexto {0} ya est\u00e1 en uso
+probe.src.deploy.war.failure=Se produjo un error reportado por Tomcat durante el despliegue: \u00ab{0}\u00bb. Sin embargo, esto no significa que su aplicaci\u00f3n no se despleg\u00f3. Compruebe el estado en la lista de aplicaciones
+probe.src.deploy.war.notWar.failure=Despliegue fallido. El archivo deber\u00eda acabar con .war
+probe.src.deploy.war.notinstalled={0} no fue instalado
+probe.src.deploy.war.uploadfailure=Se produjo un problema cargando el archivo: {0}
+probe.src.reset.datasource.c3p0=Este fuente de datos no puede ser reinicializada
+probe.src.reset.datasource.notfound=El recurso {0} no existe
+
+probe.jsp.title.wrapper=Servicio wrapper java
+probe.jsp.wrapper.not_available=Esta JVM no est\u00e1 controlada por el servicio wrapper java
+probe.jsp.wrapper.menu.restart=reiniciar la JVM
+probe.jsp.wrapper.menu.stop=detener la JVM
+probe.jsp.wrapper.menu.thread_dump=Solicitar respaldo de hilos
+probe.jsp.wrapper.h3.info=Informaci\u00f3n del wrapper
+probe.jsp.wrapper.h3.props=Propiedades del wrapper
+probe.jsp.wrapper.confirm.restart=\u00bfEst\u00e1 seguro que quiere reiniciar la JVM?
+probe.jsp.wrapper.confirm.stop=La JVM no puede ser iniciada desde Probe. \u00bfEst\u00e1 seguro que quiere detener la JVM?
+probe.jsp.wrapper.jvm.stopping=El apagado de la JVM est\u00e1 en progreso. Si necesita iniciarla otra vez deber\u00e1 hacerlo a trav\u00e9s de la consola.
+probe.jsp.wrapper.jvm.restarting=El reinicio de la JVM est\u00e1 en progreso. Esto puede tamar unos pocos minutos.
+probe.jsp.wrapper.jvm.thread_dump=El respaldo de hilos de la JMV ha sido solicitada. Usted puede normalmente encontrarlo en el archivo log del wrapper.
+
+probe.jsp.wrapper.user=Usuario:
+probe.jsp.wrapper.interactive_user=Usuario interactivo:
+probe.jsp.wrapper.java_pid=Java PID:
+probe.jsp.wrapper.pid=Wrapper PID:
+probe.jsp.wrapper.service=Ejecutando como servicio:
+probe.jsp.wrapper.debug=Depurador habilitado:
+probe.jsp.wrapper.version=Versi\u00f3n del wrapper:
+
+probe.jsp.decorator.system.title=Sistema
+probe.jsp.decorator.system.overview=Informaci\u00f3n general
+probe.jsp.decorator.system.memory=Uso de memoria
+probe.jsp.decorator.system.props=Propiedades del sistema
+probe.jsp.decorator.system.os=Informaci\u00f3n del SO
+probe.jsp.decorator.system.wrapper=Control del wrapper
+
+probe.jsp.os.h3.information=Informaci\u00f3n del SO
+probe.jsp.os.h3.charts=Gr\u00e1ficos hist\u00f3ricos
+probe.jsp.os.chart.cpu=Uso de CPU por la JVM (%)
+probe.jsp.os.chart.cpu.alt=Gr\u00e1fico de uso de CPU de la JVM
+probe.jsp.os.chart.cpu.legend=Uso de CPU
+probe.jsp.os.chart.memory=Uso de memoria del SO y JVM (KB)
+probe.jsp.os.chart.memory.alt=Gr\u00e1fico de uso de memoria f\u00edsica del SO y JVM
+probe.jsp.os.chart.memory.legend.total=Total usado
+probe.jsp.os.chart.memory.legend.jvm=Usado por la JVM
+probe.jsp.os.chart.swap=Uso swap (KB)
+probe.jsp.os.chart.swap.alt=Gr\u00e1fico de uso de la swap
+probe.jsp.os.chart.swap.legend=Swap usado
+#probe.jsp.os.chart.fd=File descriptors
+#probe.jsp.os.chart.fd.alt=File descriptors chart
+#probe.jsp.os.chart.fd.legend.open=open file descriptors
+#probe.jsp.os.chart.fd.legend.max=max file descriptors
+probe.jsp.os.card.name=Nombre del SO:
+probe.jsp.os.card.version=Versi\u00f3n del SO:
+probe.jsp.os.card.processors=Procesadores:
+probe.jsp.os.card.totalMemory=RAM total:
+probe.jsp.os.card.freeMemory=RAM libre:
+probe.jsp.os.card.committedVirtualMemory=Memoria entregada por la JVM:
+probe.jsp.os.card.totalSwap=Swap total:
+probe.jsp.os.card.freeSwap=Swap libre:
+
+probe.jsp.title.testDataSource={0} -> {1}
+probe.src.dataSourceTest.resource.lookup.failure=Fuente de datos {0} no existe
+probe.src.dataSourceTest.connection.failure=No se puede establecer una conexi\u00f3n a la base de datos. {0}
+probe.src.dataSourceTest.connection.success=Conectado con \u00e9xito a la base de datos
+probe.src.dataSourceTest.sql.required=El texto de la consulta sql es requerida
+probe.src.dataSourceTest.sql.failure=Se encontr\u00f3 un error al ejecutar la consulta. {0}
+probe.src.dataSourceTest.sql.null=NULL
+probe.src.dataSourceTest.cachedResultSet.failure=No se puede recuperar un conjunto de resultados almacenados en cach\u00e9.
+probe.jsp.dataSourceTest.help=Esta pantalla puede ayudarte a probar la conectividad a la fuente de datos de base de datos.\
+Probar conexi\u00f3n verifica si una conexi\u00f3n de base de datos puede establecerse y mostrar alguna informaci\u00f3n de la base de datos.\
+Ejecutar SQL ejecuta una consulta SQL que ingresa en la base de datos.\
+Puede ver una salida de la operaci\u00f3n en la base de datos o un mensaje de error en la parte inferior de la pantalla.\
+Mostrar hist\u00f3rico muestra una lista de consultas que se han ejecutado.\
+Considere usar Mostrar opciones para limitar el n\u00famero de registros retornados por su consulta para no afectar los recursos de su sistema.
+probe.jsp.dataSourceTest.menu.back=Volver a las fuentes de datos
+probe.jsp.dataSourceTest.menu.connect=Probar conexi\u00f3n
+probe.jsp.dataSourceTest.menu.execute=Ejecutar sql (Ctrl+Enter)
+probe.jsp.dataSourceTest.menu.showHistory=Mostrar hist\u00f3rico (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.hideHistory=Ocultar hist\u00f3rico (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.showOptions=Mostrar opciones (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.hideOptions=Ocultar opciones (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.wrap=Ajustar l\u00edneas
+probe.jsp.dataSourceTest.menu.nowrap=No ajustar l\u00edneas
+probe.jsp.dataSourceTest.menu.abbreviations=Ayuda!
+probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit habilitado)
+probe.jsp.dataSourceTest.sqlForm.maxRows.label=Registros a retornar
+probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Registros por p\u00e1gina
+probe.jsp.dataSourceTest.sqlForm.historySize.label=Tama\u00f1o del hist\u00f3rico
+probe.jsp.dataSourceTest.h3.results=Resultados de la consulta
+probe.jsp.dataSourceTest.results.rowcount={0} registro(s) afectado(s).
+probe.jsp.dataSourceTest.h3.metaData=Informaci\u00f3n de la base de datos
+probe.jsp.dataSourceTest.chart.usage.title=Uso de la fuente de datos
+probe.jsp.dataSourceTest.dbMetaData.col.propName=Nombre de la propiedad
+probe.jsp.dataSourceTest.dbMetaData.col.propValue=Valor de la propiedad
+probe.jsp.dataSourceTest.dbMetaData.dbProdName=Nombre de la base de datos
+probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Versi\u00f3n de la base de datos
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=Nombre del controlador JDBC
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=Versi\u00f3n del controlador JDBC
+probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=Versi\u00f3n JDBC
+probe.jsp.dataSourceTest.results.paging.banner.item_name=registro
+probe.jsp.dataSourceTest.results.paging.banner.items_name=registros
+probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
+probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Mostrando uno {0}.
+probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Mostrando todo {2}.
+probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Mostrando {2} a {3}.
+probe.jsp.dataSourceTest.results.paging.banner.first=Primero
+probe.jsp.dataSourceTest.results.paging.banner.prev=Ant
+probe.jsp.dataSourceTest.results.paging.banner.next=Sig
+probe.jsp.dataSourceTest.results.paging.banner.last=\u00daltimo
+probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Ir a la p\u00e1gina {0}
+probe.jsp.dataSourceTest.sql.completed=Instrucci\u00f3n completada.
+probe.jsp.dataSourceTest.h3.queryHistory=Historial de consulta
+probe.jsp.dataSourceTest.queryHistory.empty=La lista hist\u00f3rica esta vac\u00eda
+
+probe.jsp.whois.timeout=No se pudo completar la consulta WHOIS. Verifique si WHOIS esta bloquedo por su red.
+
+probe.jsp.threadstack.native=c\u00f3digo nativo
+probe.jsp.threadstack.unknown=fuente desconocido
+probe.jsp.threadstack.unavailable=La traza de la pila no est\u00e1 disponible para este hilo
+
+probe.jsp.tooltip.close=cerrar
+
+probe.jsp.sessions.h3=Sesiones
+probe.jsp.sessions.search.h3=Crit\u00e9rio de b\u00fasqueda de sesi\u00f3n
+probe.jsp.sessions.menu.showSearch=Buscar sesi\u00f3n
+probe.jsp.sessions.menu.applySearch=Aplicar b\u00fasqueda
+probe.jsp.sessions.menu.clearSearch=Limpiar b\u00fasqueda
+probe.jsp.sessions.menu.searchHelp=Ayuda
+probe.jsp.sessions.search.help=Las siguientes condiciones de b\u00fasqueda est\u00e1n disponibles para filtrar la lista de sesiones.\
+Si Id sesi\u00f3n coincide con una expresi\u00f3n regular.\
+Si la \u00daltima IP contiene una subcadena.\
+Si el Tiempo inactivo esta dentro del rango especificado de segundos.\
+Si la Edad esta dentro del rango especificado de segundos.\
+Si el Nombre de atributo coincide con al menos una expresi\u00f3n regular de una lista de expresiones regulares separadas por comas.\
+Esta condici\u00f3n permite buscar una sesi\u00f3n con un atributo A y/o un conjunto de atributos B.
+probe.jsp.sessions.search.sessionId=Id sesi\u00f3n (Regex)
+probe.jsp.sessions.search.attrName=Nombres de atributo (lista Regex)
+probe.jsp.sessions.search.ageFrom=Edad desde (seg)
+probe.jsp.sessions.search.ageTo=hasta
+probe.jsp.sessions.search.idleTimeFrom=Tiempo inactivo desde (seg)
+probe.jsp.sessions.search.idleTimeTo=hasta
+probe.jsp.sessions.search.lastIP=\u00daltima IP (subcadena)
+probe.jsp.sessions.search.results.h3=Resultados de la b\u00fasqueda de sesi\u00f3n
+probe.src.sessions.search.empty=El criterio de b\u00fasqueda est\u00e1 vac\u00edo
+probe.src.sessions.search.results.empty=No hay sesiones que coincidan con los criterios de b\u00fasqueda
+probe.src.sessions.search.invalid=El criterio de b\u00fasqueda no es v\u00e1lido
+probe.src.sessions.search.invalid.sessionId=La expresi\u00f3n regular para \u00abId sesi\u00f3n\u00bb no es v\u00e1lida. {0}
+probe.src.sessions.search.invalid.attrName=La expresi\u00f3n regular para \u00abNombre de atributo\u00bb no es v\u00e1lida. {0}
+probe.src.sessions.search.invalid.ageFrom=El valor para \u00abEdad desde\u00bb no es v\u00e1lida
+probe.src.sessions.search.invalid.ageTo=El valor para \u00abEdad hasta\u00bb no es v\u00e1lida
+probe.src.sessions.search.invalid.idleTimeFrom=El valor del \u00abTiempo inactivo desde\u00bb no es v\u00e1lido
+probe.src.sessions.search.invalid.idleTimeTo=El valor del \u00abTiempo inactivo hasta\u00bb no es v\u00e1lido
+probe.src.sessions.search.invalid.lastIP=La expresi\u00f3n regular para \u00ab\u00daltima IP\u00bb no es v\u00e1lida. {0}
+
+probe.jsp.app.nav.title=Aplicaci\u00f3n
+probe.jsp.app.nav.summary=Resumen
+probe.jsp.app.nav.sessions=Sesiones
+probe.jsp.app.nav.attributes=Atributos
+probe.jsp.app.nav.jsps=JSPs
+probe.jsp.app.nav.resources=Recursos
+probe.jsp.app.nav.initParams=Par\u00e1metros
+probe.jsp.app.nav.webxml=Descriptor despliegue
+probe.jsp.app.nav.contextxml=Descriptor contexto
+probe.jsp.app.nav.filters=Filtros
+probe.jsp.app.nav.servlets=Servlets
+
+probe.jsp.title.app.initParams={0} - par\u00e1metros de inicializaci\u00f3n
+probe.jsp.app.initParams.h3.params=Par\u00e1metros de inicializaci\u00f3n del contexto
+probe.jsp.app.initParams.col.name=Nombre
+probe.jsp.app.initParams.col.value=Valor
+probe.jsp.app.initParams.col.source=Fuente
+probe.jsp.app.initParams.source.deplDescr=web.xml
+probe.jsp.app.initParams.source.context=contexto
+probe.jsp.app.initParams.empty=No se han definido par\u00e1metros de inicializaci\u00f3n de contexto para esta aplicaci\u00f3n
+
+probe.jsp.title.app.viewXMLConf={0} - {1}
+probe.jsp.app.viewXMLConf.notfound= No se puede encontrar {0} de esta aplicaci\u00f3n
+probe.jsp.app.viewXMLConf.h3.scr={0} fuente
+probe.src.app.viewxmlconf.webxml.desc=descriptor de despliegue
+probe.src.app.viewxmlconf.contextxml.desc=descriptor de contexto
+
+probe.jsp.title.app.filters={0} - filtros
+probe.jsp.title.app.filtermaps={0} - mapeos de filtros
+probe.jsp.app.filtermaps.opt.defs=Definiciones de filtros
+probe.jsp.app.filters.opt.maps=Mapeos de filtros
+probe.jsp.app.filters.h3.defs=Filtros
+probe.jsp.app.filtermaps.h3.maps=Mapeos de filtros
+probe.jsp.app.filters.col.filterName=Nombre
+probe.jsp.app.filters.col.filterClass=Clase
+probe.jsp.app.filters.col.filterDesc=Descripci\u00f3n
+probe.jsp.app.filtermaps.col.url=Url
+probe.jsp.app.filtermaps.col.filterName=Nombre del filtro
+probe.jsp.app.filtermaps.col.servletName=Nombre del servlet
+probe.jsp.app.filtermaps.col.dispatcherMap=Despachador
+probe.jsp.app.filters.empty=No hay filtros definidos para esta aplicaci\u00f3n
+probe.jsp.app.filtermaps.empty=No hay mapeos de filtros definidos para esta aplicaci\u00f3n
+
+probe.jsp.title.servlets.all=Servlets
+probe.jsp.title.servlets.app={0} - servlets
+probe.jsp.title.servletmaps.all=Mapeos servlet
+probe.jsp.title.servletmaps.app={0} - mapeos servlet
+probe.jsp.servletmaps.opt.defs=Servlets
+probe.jsp.servletmaps.opt.all=Mostrar todo
+probe.jsp.servlets.opt.maps=Mapeos servlet
+probe.jsp.servlets.opt.all=Mostrar todo
+probe.jsp.servlets.h3.defs=Servlets
+probe.jsp.servletmaps.h3.maps=Mapeos servlet
+probe.jsp.servletmaps.col.url=Url
+probe.jsp.servletmaps.col.servletName=Nombre del servlet
+probe.jsp.servlets.col.applicationName=Apl
+probe.jsp.servlets.col.servletName=Nombre
+probe.jsp.servletmaps.col.servletClass=Clase servlet
+probe.jsp.servlets.col.available=Disp
+probe.jsp.servlets.col.loadOnStartup=Al inicio
+probe.jsp.servlets.empty=No hay servlets definidos
+probe.jsp.servletmaps.empty=No hay mapeos servlets definidos
+probe.jsp.servlets.col.minTime=Tiempo m\u00edn.
+probe.jsp.servlets.col.maxTime=Tiempo m\u00e1x.
+probe.jsp.servlets.col.processingTime=Tiempo proc.
+probe.jsp.servlets.col.loadTime=Tiempo cargado
+probe.jsp.servlets.col.multiThreaded=Multi hilado
+probe.jsp.servlets.col.requestCount=Pet
+probe.jsp.servlets.col.errorCount=Err
+
+probe.jsp.title.app.summary={0} - resumen de la aplicaci\u00f3n
+probe.jsp.app.summary.application=Nombre aplicaci\u00f3n:
+probe.jsp.app.summary.description=Descripci\u00f3n:
+probe.jsp.app.summary.distributable=Clustered:
+probe.jsp.app.summary.docBase=Doc. base:
+probe.jsp.app.summary.servletVersion=Versi\u00f3n del servlet:
+probe.jsp.app.summary.sessionTimeout=Tiempo espera sesi\u00f3n:
+probe.jsp.app.summary.servletCount=Nro. de servlets:
+probe.jsp.app.summary.status=Esta aplicaci\u00f3n est\u00e1
+probe.jsp.app.summary.requestCount=Nro. de peticiones:
+probe.jsp.app.summary.sessionCount=Sesiones
+probe.jsp.app.summary.sessionAttributeCount=Atrib. de sesi\u00f3n
+probe.jsp.app.summary.sessionSize=Tama\u00f1o de sesi\u00f3n
+probe.jsp.app.summary.contextAttributeCount=Atrib. de contexto
+probe.jsp.app.summary.serializable=Ser.
+probe.jsp.app.summary.errorCount=Nro. de errores:
+probe.jsp.app.summary.processingTime=Tiempo procesado:
+probe.jsp.app.summary.minTime=Tiempo m\u00edn.:
+probe.jsp.app.summary.maxTime=Tiempo m\u00e1x.:
+probe.jsp.app.summary.avgTime=Tiempo prom. de respuesta:
+probe.jsp.app.summary.h3.static=Informaci\u00f3n de la aplicaci\u00f3n
+probe.jsp.app.summary.h3.runtime=Informaci\u00f3n de la ejecuci\u00f3n
+probe.jsp.app.summary.invalidApp=La aplicaci\u00f3n no es v\u00e1lida
+probe.jsp.app.summary.runtime.unavailable=Esta aplicaci\u00f3n no se est\u00e1 ejecutando, la informaci\u00f3n en tiempo de ejecuci\u00f3n no est\u00e1 disponible
+probe.jsp.app.summary.menu.start=Iniciar
+probe.jsp.app.summary.menu.stop=Detener
+probe.jsp.app.summary.menu.reload=Recargar
+probe.jsp.app.summary.menu.undeploy=Replegar
+probe.jsp.app.summary.menu.goTo=Ir a
+probe.jsp.app.summary.menu.startStats=Iniciar recolecci\u00f3n de estad\u00edsticas
+probe.jsp.app.summary.menu.stopStats=Detener recolecci\u00f3n de estad\u00edsticas
+probe.jsp.app.summary.undeploy.confirm=Esta operaci\u00f3n no puede ser revertida. \u00bfEst\u00e1 seguro que quiere ELIMINAR {0}?
+probe.jsp.app.summary.dataSourceUsageScore=Uso de la fuente de datos
+probe.jsp.app.summary.jdbcUsage.title=Uso m\u00e1x. con. {0}%
+probe.jsp.app.summary.h3.charts=Gr\u00e1ficos estad\u00edsticos
+probe.jsp.app.summary.charts.requests.title=N\u00famero de peticiones
+probe.jsp.app.summary.charts.avgProcTime.title=Tiempo prom. de respuesta (ms)
+probe.jsp.app.summary.charts.requests.legend=Peticiones
+probe.jsp.app.summary.charts.errors.legend=Errores
+probe.jsp.app.summary.charts.avgProcTime.legend=Tiempo prom. de respuesta
+
+probe.jsp.title.allappstats=Estad\u00edsticas de la aplicaci\u00f3n
+probe.jsp.allappstats.charts.totalAvgProcTime.legend=Tiempo prom. de respuesta
+probe.jsp.allappstats.charts.totalReq.legend=Peticiones
+probe.jsp.allappstats.charts.totalAvgProcTime.title=Tiempo prom. de respuesta acumulado (ms)
+probe.jsp.allappstats.charts.allAppAvgProcTime.title=Tiempo prom. de respuesta por aplicaci\u00f3n (ms)
+probe.jsp.allappstats.charts.totalReq.title=Peticiones acumuladas
+probe.jsp.allappstats.charts.allAppReq.title=Peticiones por aplicaci\u00f3n (ms)
+probe.jsp.allappstats.h3.charts=Gr\u00e1ficos estad\u00edsticos
+
+probe.src.stats.listener.memory.pool.aboveThreshold.subject=ADVERTENCIA{0} - La memoria pool \u00ab{1}\u00bb est\u00e1 por encima del umbral
+probe.src.stats.listener.memory.pool.aboveThreshold.body={0}El tama\u00f1o de la memoria pool \u00ab{1}\u00bb aument\u00f3 por encima del umbral.\n\nTama\u00f1o actual: {2} bytes.\nUmbral: {3} bytes.
+probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - La memoria pool \u00ab{1}\u00bb est\u00e1 por debajo del umbral
+probe.src.stats.listener.memory.pool.belowThreshold.body={0}El tama\u00f1o de la memoria pool \u00ab{1}\u00bb disminuy\u00f3 por debajo del umbral.\n\nTama\u00f1o actual: {2} bytes.\nUmbral: {3} bytes.
+probe.src.stats.listener.memory.pool.flappingStart.subject=Aleteo{0} - La memoria pool \u00ab{1}\u00bb ha suprimido los mensajes
+probe.src.stats.listener.memory.pool.flappingStart.body={0}El tama\u00f1o de la memoria pool \u00ab{1}\u00bb est\u00e1 oscilando por encima y por debajo del umbral (\u00abaleteo\u00bb). Para evitar el env\u00edo de muchos correos electr\u00f3nicos, los futuros mensajes ser\u00e1n suprimidos hasta que se estabilice.
+
+probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
+probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* Este valor ya no esta aleteando. Los mensajes ser\u00e1n reanudados.\n\n
diff --git a/web/src/main/conf/WEB-INF/messages_fr.properties b/web/src/main/conf/WEB-INF/messages_fr.properties
index 0dc9169735..55842896cb 100644
--- a/web/src/main/conf/WEB-INF/messages_fr.properties
+++ b/web/src/main/conf/WEB-INF/messages_fr.properties
@@ -1,718 +1,718 @@
-#
-# Licensed under the GPL License. You may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-#
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-
-# French translation by Bruno Haleblian (BHa - bruno.haleblian@online.fr) and Thomas Guilleminot (thomasguilleminot@gmail.com)
-probe.jsp.i18n.credit=Traduction en fran\u00e7ais par Bruno Haleblian et Thomas Guilleminot.
-probe.jsp.icons.credit="Silk" icons de famfamfam.com.
-
-probe.jsp.generic.no=non
-probe.jsp.generic.yes=oui
-probe.jsp.generic.abbreviations=Que sont ces abr\u00e9viations?
-
-probe.jsp.app.attributes.col.delete=Supprimer attribut
-probe.jsp.app.attributes.col.delete.title=Supprimer attribut
-probe.jsp.app.attributes.col.name=Nom
-probe.jsp.app.attributes.col.type=Type
-probe.jsp.app.attributes.col.value=Valeur
-probe.jsp.app.attributes.h3.attributes=Attributs du contexte de servlet
-probe.jsp.app.attributes.noattributes=Ce contexte de servlet n'a pas d'attribut
-
-probe.jsp.applications.alt.reload=relire
-probe.jsp.applications.alt.undeploy=Ind\u00e9ployer
-probe.jsp.applications.col.contextAttributeCount=C.Attr
-probe.jsp.applications.col.description=Description
-probe.jsp.applications.col.distributable=Cluster.?
-probe.jsp.applications.col.jdbcUsage=Jdbc Usage
-probe.jsp.applications.col.jsp=JSP
-probe.jsp.applications.col.name=Nom
-probe.jsp.applications.col.serializable=Ser.?
-probe.jsp.applications.col.sessionAttributeCount=S.Attr
-probe.jsp.applications.col.sessionCount=Sess.
-probe.jsp.applications.col.sessionTimeout=Sess.Timeout
-probe.jsp.applications.col.size=Larg.
-probe.jsp.applications.col.status=Status
-probe.jsp.applications.col.requestCount=Req.
-probe.jsp.applications.help.contextAttributeCount=nombre total des attributs de ServletContext
-probe.jsp.applications.help.distributable=application "distribuable"
-probe.jsp.applications.help.requestCount=nombre total de requ\u00eates trait\u00e9es par les servlets
-probe.jsp.applications.help.serializable=tous les attributs de session implementent java.io.Serializable
-probe.jsp.applications.help.sessionAttributeCount=nombre total des attributs de session
-probe.jsp.applications.help.sessionCount=nombre de sessions
-probe.jsp.applications.hidesize=cacher taille sess.
-probe.jsp.applications.jdbcUsage.title=Max.conn.usage {0}%
-probe.jsp.applications.jsp.view=vue
-probe.jsp.applications.serializable.no=NON
-probe.jsp.applications.serializable.yes=oui
-probe.jsp.applications.showsize=estimer taille sessions (peut \u00eatre long)
-probe.jsp.applications.status.down=arr\u00eat
-probe.jsp.applications.status.down.title=Lance {0}
-probe.jsp.applications.status.up=running
-probe.jsp.applications.title.reload=Relire {0}
-probe.jsp.applications.title.status.up=Stop {0}
-probe.jsp.applications.title.undeploy=Undeploy {0}
-probe.jsp.applications.undeploy.confirm=Cette operation est irr\u00e9versible. Vraiment SUPPRIMER {0}?
-
-probe.jsp.connectors.information=Donn\u00e9es de trafic pour tous les connecteurs. Les donn\u00e9es est continu et les courbes sont mis \u00e0 jour automatiquement. Il n'est pas n\u00e9cessaire de rester sur cette page pour que les courbes s'actualisent.
-probe.jsp.connectors.processor.errorCount=Nb Erreurs:
-probe.jsp.connectors.processor.maxTime=Tps max:
-probe.jsp.connectors.processor.processingTime=Temps actif:
-probe.jsp.connectors.processor.received=Re\u00e7us:
-probe.jsp.connectors.processor.requestCount=Nb Requ\u00eates:
-probe.jsp.connectors.processor.sent=Emis:
-probe.jsp.connectors.proc_time.title=Temps actif (ms) par intervalle
-probe.jsp.connectors.requests.title=Nb de requ\u00eates par intervalle
-probe.jsp.connectors.traffic.title=Volume \u00e9chang\u00e9 (octets) par intervalle
-probe.jsp.connectors.wrk.col.in=IN
-probe.jsp.connectors.wrk.col.out=OUT
-probe.jsp.connectors.wrk.col.processingTime=Tps CPU
-probe.jsp.connectors.wrk.col.remoteAddr=IP Dist.
-probe.jsp.connectors.wrk.col.stage=niveau
-probe.jsp.connectors.wrk.col.url=URL
-probe.jsp.connectors.wrk.col.thread=Thread
-probe.jsp.connectors.wrk.empty=Pas de workers mod_jk
-probe.jsp.connectors.wrk.stage.endInput=EndInput
-probe.jsp.connectors.wrk.stage.endOutput=EndOutput
-probe.jsp.connectors.wrk.stage.ended=Fini
-probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
-probe.jsp.connectors.wrk.stage.new=Nouv.
-probe.jsp.connectors.wrk.stage.parse=Parse
-probe.jsp.connectors.wrk.stage.prepare=Pr\u00e9pare
-probe.jsp.connectors.wrk.stage.service=Service
-
-probe.jsp.cluster.chart.requests=Requ\u00eates par intervalle de {0} secondes
-probe.jsp.cluster.chart.traffic=Trafic par intervalle de {0} secondes
-probe.jsp.cluster.h3.info=Donn\u00e9es cluster
-probe.jsp.cluster.h3.members=Membres du cluster
-probe.jsp.cluster.heartbeatFreq=Fr\u00e9q. Actual.Cl:
-probe.jsp.cluster.heartbeatTimeout=Timeout Actual.Cl.:
-probe.jsp.cluster.info=Info:
-probe.jsp.cluster.manager=Manager:
-probe.jsp.cluster.mcastAddress=Adresse Mcast:
-probe.jsp.cluster.mcastBindAddress=Bind Adresse Mcast:
-probe.jsp.cluster.mcastBindAddress.all=tous
-probe.jsp.cluster.mcastTTL=Mcast TTL
-probe.jsp.cluster.members.col.address=Adresse
-probe.jsp.cluster.members.col.avgMsgSize=T.Moy.
-probe.jsp.cluster.members.col.closes=Ferm\u00e9s
-probe.jsp.cluster.members.col.connectCount=NC
-probe.jsp.cluster.members.col.connected=Conn.?
-probe.jsp.cluster.members.col.disconnectCount=ND
-probe.jsp.cluster.members.col.failures=Echecs
-probe.jsp.cluster.members.col.inQueueCounter=InQ
-probe.jsp.cluster.members.col.keepAlive=Keep Alive
-probe.jsp.cluster.members.col.openFailures=Err Ouv.
-probe.jsp.cluster.members.col.opens=Ouv.
-probe.jsp.cluster.members.col.outQueueCounter=OutQ
-probe.jsp.cluster.members.col.queueSize=QSz
-probe.jsp.cluster.members.col.queueSizeBytes=QSzB
-probe.jsp.cluster.members.col.requests=Req.
-probe.jsp.cluster.members.col.resends=R\u00e9emiss
-probe.jsp.cluster.members.col.sent=Emis
-probe.jsp.cluster.members.col.socketLimit=Max Socket
-probe.jsp.cluster.members.failing.alt=D\u00e9faut
-probe.jsp.cluster.members.failing.title=Le membre semble d\u00e9fectueux
-probe.jsp.cluster.members.healthy.alt=OK
-probe.jsp.cluster.members.healthy.title=Le membre est OK
-probe.jsp.cluster.mode=Mode de r\u00e9plication:
-probe.jsp.cluster.name=Nom:
-probe.jsp.cluster.noMembers=Ce noeud semble n'avoir aucun membre actif
-probe.jsp.cluster.notAvailable=Les donn\u00e9es cluster sont disponibles pour Tomcat 5.5.x avec support cluster activ\u00e9.
-probe.jsp.cluster.received=re\u00e7u
-probe.jsp.cluster.receiverAddress=Addresse r\u00e9cepteur:
-probe.jsp.cluster.receiverPort=Port r\u00e9cepteur:
-probe.jsp.cluster.sent=\u00e9mis
-
-probe.jsp.copyright=Copyright 2009-${copyright}. Des questions? Des suggestions? Venez sur https://github.com/psi-probe/psi-probe
-
-probe.jsp.dataSourceGroups.empty=Aucune source de donn\u00e9es correctement configur\u00e9e sur cette instance
-probe.jsp.dataSourceGroups.information=La table ci-dessous contient le total des connexions ouvertes et potentiellement autoris\u00e9es group\u00e9es par url jdbc. Cette information permet d'estimer combien de connexions \u0085 une base de donn\u00e9es peuvent \u00eatre ouvertes par les ressources JDBC configur\u00e9es pour ce conteneur.
-probe.jsp.dataSourceGroups.jdbcUsage.title=Pic d''utilisation {0}%
-probe.jsp.dataSourceGroups.list.col.busy=Actives
-probe.jsp.dataSourceGroups.list.col.established=Total \u00e9tablies.
-probe.jsp.dataSourceGroups.list.col.max=Total max.
-probe.jsp.dataSourceGroups.list.col.resourceCount=Nb ressources
-probe.jsp.dataSourceGroups.list.col.url=URL
-probe.jsp.dataSourceGroups.list.col.usage=Usage
-probe.jsp.dataSourceGroups.menu.back=Retour \u00e0 la liste
-
-probe.jsp.datasources.h3.global=Ressources Globales
-probe.jsp.datasources.h3.app=Ressources Applicatives
-probe.jsp.datasources.global.empty=Aucune source de donn\u00e9es configur\u00e9e au niveau du serveur pour cette instance Tomcat
-probe.jsp.datasources.app.empty=Aucune source de donn\u00e9es configur\u00e9e au niveau de l'application pour cette instance Tomcat
-probe.jsp.datasources.empty=Aucune source de donn\u00e9es configur\u00e9e pour cette instance Tomcat
-probe.jsp.datasources.help.max=nombre maximum de connexions dans le pool
-probe.jsp.datasources.help.established=nombre de connexions \u00e9tablies r\u00e9utilisables
-probe.jsp.datasources.help.busy=nombre de connexions actives non r\u00e9utilisables
-probe.jsp.datasources.list.col.application=App
-probe.jsp.datasources.list.col.auth=Auth
-probe.jsp.datasources.list.col.busy=A
-probe.jsp.datasources.list.col.description=Description
-probe.jsp.datasources.list.col.established=E
-probe.jsp.datasources.list.col.linkTo=Lien
-probe.jsp.datasources.list.col.max=M
-probe.jsp.datasources.list.col.reset.alt=Reset
-probe.jsp.datasources.list.col.resource=Ressource
-probe.jsp.datasources.list.col.type=Type
-probe.jsp.datasources.list.col.url=URL
-probe.jsp.datasources.list.col.usage=Usage
-probe.jsp.datasources.list.col.user=User
-probe.jsp.datasources.list.misconfigured.alt=Erreur
-probe.jsp.datasources.opt.groupByJdbcUrl=grouper par URL JDBC
-
-probe.jsp.deployment.war.success={0} est d\u00e9ploy\u00e9e
-probe.jsp.deployment.compilationDetails=D\u00e9tails de compilation
-probe.jsp.deployment.s1.compile.label=Pr\u00e9compiler le pages JSP au d\u00e9ploiement(peut durer qq minutes)
-probe.jsp.deployment.s1.description=Transf\u00e9rer un fichier .war au serveur. Si le nom du contexte n'est pas specifi\u00e9, le nom du fichier sera utilis\u00e9. En transf\u00e9rant un fichier .war META-INF/context.xml bien s'assurer que le contexte a le m\u00eame attribut "path" que le contexte du .war d\u00e9ploy\u00e9, sinon c'est tout le Tomcat 5.0.x qui sera sur le dos.
-probe.jsp.deployment.s1.discard.label=Supprimer le r\u00e9pertoire "work" existant
-probe.jsp.deployment.s1.file.label=Choisir le fichier .war \u00e0 transf\u00e9rer
-probe.jsp.deployment.s1.submit=D\u00e9ployer
-probe.jsp.deployment.s1.title=Transf\u00e9rer une application (basique)
-probe.jsp.deployment.s1.update.label=Ecraser l'application d\u00e9j\u00e0 d\u00e9ploy\u00e9e
-probe.jsp.deployment.s2.context.label=Nom du contexte (ex. /monappli)
-probe.jsp.deployment.s2.description=Utiliser cette option s'l existe un context.xml dans %CATALINA_BASE%/conf/Catalina/localhost/. On suppose que le nom du contexte est celui du fichier .xml. Par exemple que le contexte "/toto" = %CATALINA_BASE%/conf/Catalina/localhost/toto.xml. NOTE: Tomcat 5.0.x oblige le fichier .xml \u00e0 avoir un attribut "path"!
-probe.jsp.deployment.s2.title=D\u00e9ployer le nom de contexte (avanc\u00e9)
-
-probe.jsp.follow.h3.fileContent=Contenu du fichier
-probe.jsp.follow.h3.fileInfo=Information
-probe.jsp.follow.h3.sources=Enregistrement des Sources
-probe.jsp.follow.loading=Chargement...
-probe.jsp.follow.menu.back=Retour \u00e0 la liste des logs
-probe.jsp.follow.menu.clear=Vider le buffer
-probe.jsp.follow.menu.download=t\u00e9l\u00e9charger
-probe.jsp.follow.menu.nowrap=1 ligne
-probe.jsp.follow.menu.pause=pause
-probe.jsp.follow.menu.resume=reprendre
-probe.jsp.follow.menu.wrap=multilignes
-probe.jsp.follow.menu.zoomin=zoom +
-probe.jsp.follow.menu.zoomout=zoom -
-probe.jsp.followed_file_info.fileName=nom de fichier:
-probe.jsp.followed_file_info.lastModified=Derni\u00e8re modif:
-probe.jsp.followed_file_info.size=Taille:
-
-probe.jsp.jsps.col.lastmodified=Derni\u00e8re modif
-probe.jsp.jsps.col.message=Message
-probe.jsp.jsps.col.name=Nom de JSP
-probe.jsp.jsps.col.size=Taille
-probe.jsp.jsps.col.status=Etat
-probe.jsp.jsps.notfound=Cette application ne contient pas de fichier JSP
-probe.jsp.jsps.opt.compile=Compilation activ\u00e9e
-probe.jsp.jsps.opt.compileall=Compiler tout
-probe.jsp.jsps.opt.discardscratch=supprimer r\u00e9p. "work"
-probe.jsp.jsps.opt.toggleall=Inverse tout
-probe.jsp.jsps.status.compiled=Compil\u00e9
-probe.jsp.jsps.status.failed=ECHEC
-probe.jsp.jsps.status.outdated=Osol\u00e8tes
-
-probe.jsp.logs.col.app=App
-probe.jsp.logs.col.class=Classe
-probe.jsp.logs.col.file=Nom Fic.
-probe.jsp.logs.col.level=Niveau
-probe.jsp.logs.col.modified=Modifi\u00e9
-probe.jsp.logs.col.name=Nom
-probe.jsp.logs.col.size=Taille
-probe.jsp.logs.col.type=Type
-probe.jsp.logs.download.alt=t\u00e9l\u00e9charger
-probe.jsp.logs.hideapps=existants seult.
-probe.jsp.logs.showapps=montrer tout
-probe.jsp.logs_notSupported.message=Votre JVM {0} {1} ne supporte pas compl\u00e8tement l''API SUN reflection - sun.reflect.ReflectionFactory. La fonction de suivi des logs est d\u00e9sactiv\u00e9e.
-
-probe.jsp.memory.advise.finalization=Sugg\u00e8re la "Finalization"
-probe.jsp.memory.advise.gc=Sugg\u00e8re le GC
-probe.jsp.memory.col.committed=Valid\u00e9
-probe.jsp.memory.col.group=Groupe
-probe.jsp.memory.col.initial=Initial
-probe.jsp.memory.col.max=Maximum
-probe.jsp.memory.col.name=Nom
-probe.jsp.memory.col.plot=Trace
-probe.jsp.memory.col.usageScore=Taux d'utilisation
-probe.jsp.memory.col.used=Utilis\u00e9
-probe.jsp.memory.h3.charts=Memory usage history
-probe.jsp.memory.h3.table=Utilisation m\u00e9moire
-probe.jsp.memory.loading=Chargement...
-probe.jsp.memory.usage.title=Utilisation {0}%
-probe.jsp.memory.notAvailable=Cette page requiert Java5 avec un agent JMX. Pour activer un agent JMX, ajouter "-Dcom.sun.management.jmxremote" \u00e0 la ligne de commande ou \u00e0 la variable $JAVA_OPTS. POur le JDK d'IBM ajouter ces propri\u00e9t\u00e9s: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
-
-probe.jsp.menu.applications=Applications
-probe.jsp.menu.cluster=Cluster
-probe.jsp.menu.connectors=Connecteurs
-probe.jsp.menu.datasources=Data Sources
-probe.jsp.menu.deployment=D\u00e9ploiement
-probe.jsp.menu.logs=Logs
-probe.jsp.menu.memory=M\u00e9moire
-probe.jsp.menu.quickcheck=R\u00e9sum\u00e9
-probe.jsp.menu.sysinfo=Syst\u00e8me
-probe.jsp.menu.threads=Threads
-
-probe.jsp.noaccess=Vous n'avez pas les privil\u00e8ges requis pour cette page. Utiliser le bouton "Retour" de votre navigateur ou cliquez "retour" .
-probe.jsp.noaccess.ajax=Vous n'avez pas les privil\u00e8ges requis pour l'acc\u00e8s \u00e0 cette fonction.
-probe.jsp.noaccess.title=403 Interdit
-probe.jsp.notfound=La page demand\u00e9e n'existe pas sur ce serveur. Utiliser la barre de navigation.
-probe.jsp.notfound.title=404 Non trouv\u00e9
-
-probe.jsp.resources.col.auth=Authentification
-probe.jsp.resources.col.linkTo=Lien vers
-probe.jsp.resources.col.name=Nom
-probe.jsp.resources.col.type=Type
-probe.jsp.resources.empty=Pas de ressources d\u00e9finies pour cette application
-probe.jsp.resources.info.busy=Actif:
-probe.jsp.resources.info.connectionUsage.alt=Tx Utilis. {0}%
-probe.jsp.resources.info.established=Etablies:
-probe.jsp.resources.info.max=Max:
-probe.jsp.resources.info.misconfigured=Cette ressource est mal configur\u00e9e les donn\u00e9es sont indisponibles.
-probe.jsp.resources.info.misconfigured.alt=Point d'exclamation
-probe.jsp.resources.info.reset=
-probe.jsp.resources.info.reset.alt=reset
-probe.jsp.resources.info.title=Donn\u00e9es suppl\u00e9mentaires:
-
-probe.jsp.servlet_source.h3.source=Code de servlet auto-g\u00e9n\u00e9r\u00e9
-probe.jsp.servlet_source.opt.jsp=vue JSP
-
-probe.jsp.sessionAttibutes.card.age=Age:
-probe.jsp.sessionAttibutes.card.application=Application:
-probe.jsp.sessionAttibutes.card.created=Cr\u00e9ation:
-probe.jsp.sessionAttibutes.card.expiryTime=Expiration:
-probe.jsp.sessionAttibutes.card.id=ID:
-probe.jsp.sessionAttibutes.card.idleTime=Inactivit\u00e9:
-probe.jsp.sessionAttibutes.card.info=Info:
-probe.jsp.sessionAttibutes.card.lastAccessed=Dernier acc\u00e8s:
-probe.jsp.sessionAttibutes.card.manager=Type gestion:
-probe.jsp.sessionAttibutes.card.maxIdleTime=Inactivit\u00e9 Max:
-probe.jsp.sessionAttibutes.card.serializable=S\u00e9rialisable:
-probe.jsp.sessionAttibutes.card.serializable.no=NON
-probe.jsp.sessionAttibutes.card.serializable.yes=oui
-probe.jsp.sessionAttibutes.card.size=Taille:
-probe.jsp.sessionAttibutes.col.delete=supprimer
-probe.jsp.sessionAttibutes.col.delete.title=Supprimer attribut
-probe.jsp.sessionAttibutes.col.name=Nom
-probe.jsp.sessionAttibutes.col.serializable=Ser.?
-probe.jsp.sessionAttibutes.col.size=Taille
-probe.jsp.sessionAttibutes.col.type=Type
-probe.jsp.sessionAttibutes.col.value=Valeur
-probe.jsp.sessionAttibutes.h3.attributes=Attributs de session
-probe.jsp.sessionAttibutes.h3.card=Carte de session
-probe.jsp.sessionAttibutes.invalidSid=ID de session invalide ou session expir\u00e9e
-probe.jsp.sessionAttibutes.menu.back=Retour \u00e0 la liste de session
-probe.jsp.sessionAttibutes.menu.destroy=D\u00e9truire cette session
-probe.jsp.sessionAttibutes.noattributes=Cette session n'a pas d'attributs
-
-probe.jsp.sessions.col.age=Age
-probe.jsp.sessions.col.creationTime=Cr\u00e9ation
-probe.jsp.sessions.col.expiryTime=Expiration
-probe.jsp.sessions.col.id=ID session
-probe.jsp.sessions.col.applicationName=App
-probe.jsp.sessions.col.idleTime=Inactivit\u00e9
-probe.jsp.sessions.col.lastAccessTime=Dernier acc\u00e8s
-probe.jsp.sessions.col.objectCount=Nb Objets
-probe.jsp.sessions.col.serializable=Ser.
-probe.jsp.sessions.col.size=Taille
-probe.jsp.sessions.col.lastIP=Dern. IP
-probe.jsp.sessions.unknown.ip=inconnu
-probe.jsp.sessions.empty=Pas de session dans cette application
-probe.jsp.sessions.menu.expire=Expire
-probe.jsp.sessions.menu.toggle=Inverse
-probe.jsp.sessions.status.no=Non
-probe.jsp.sessions.status.yes=Oui
-probe.jsp.sessions.opt.all=Montrer Tout
-probe.jsp.showsize=taille estim\u00e9e
-probe.jsp.hidesize=cacher taille
-
-probe.jsp.sysinfo.col.name=Nom propri\u00e9t\u00e9
-probe.jsp.sysinfo.col.value=Val. propri\u00e9t\u00e9
-probe.jsp.sysinfo.container.title=Info conteneur
-probe.jsp.sysinfo.memory.adviseGC=Sugg\u00e8re le GC
-probe.jsp.sysinfo.memory.free=Libre:
-probe.jsp.sysinfo.memory.max=Max:
-probe.jsp.sysinfo.memory.title=Util M\u00e9m.
-probe.jsp.sysinfo.memory.total=Total:
-probe.jsp.sysinfo.memory.usage=Util M\u00e9m. actuelle
-probe.jsp.sysinfo.memory.usage.alt=Jauge M\u00e9moire
-probe.jsp.sysinfo.os.applicationBase=Application base:
-probe.jsp.sysinfo.os.catalinaBase=catalina.base:
-probe.jsp.sysinfo.os.catalinaHome=catalina.home:
-probe.jsp.sysinfo.os.configBase=Configuration de Base:
-probe.jsp.sysinfo.os.container=Conteneur:
-probe.jsp.sysinfo.os.currentTime=Heure:
-probe.jsp.sysinfo.os.jvm=JVM:
-probe.jsp.sysinfo.os.name=OS:
-probe.jsp.sysinfo.os.processors=CPUs:
-probe.jsp.sysinfo.os.title=OS info
-probe.jsp.sysinfo.os.workingDir=R\u00e9p travail:
-probe.jsp.sysinfo.sysproperties.title=Propri\u00e9t\u00e9s Syst.
-
-probe.jsp.threadpools.currentThreadCount=Nbre de threads
-probe.jsp.threadpools.currentThreadsBusy=Threads actifs
-probe.jsp.threadpools.maxSpareThreads=Max threads de secours
-probe.jsp.threadpools.maxThreads=Max threads
-probe.jsp.threadpools.menu.threads=Threads actifs
-probe.jsp.threadpools.minSpareThreads=Min threads de secours
-probe.jsp.threadpools.name=Nom
-
-probe.jsp.threads.col.application=App
-probe.jsp.threads.col.classLoader=Class loader
-probe.jsp.threads.col.daemon=D
-probe.jsp.threads.col.groupName=Groupe
-probe.jsp.threads.col.interrupted=I
-probe.jsp.threads.col.name=Nom
-probe.jsp.threads.col.priority=P
-probe.jsp.threads.col.runnableClass=Runnable
-probe.jsp.threads.col.threadClass=Thread class
-probe.jsp.threads.col.id=ID
-probe.jsp.threads.col.execPoint=Point Exec
-probe.jsp.threads.col.state=Etat
-probe.jsp.threads.col.inNative=Ex.natif
-probe.jsp.threads.col.suspended=Susp.
-probe.jsp.threads.col.waitedCount=WC
-probe.jsp.threads.col.blockedCount=BC
-probe.jsp.threads.help.priority=valeur de la priorit\u00e9 du thread
-probe.jsp.threads.help.daemon=le thread est-il un daemon
-probe.jsp.threads.help.interrupted=le thread a \u00e9t\u00e9 interrompu
-probe.jsp.threads.help.inNative=vrai si le thread ex\u00e9cude du code natif
-probe.jsp.threads.help.suspended=le thread est suspendu
-probe.jsp.threads.help.waitedCount="wait count" - nombre de fois que le thread a \u00e9t\u00e9 mis en attente
-probe.jsp.threads.help.blockedCount="blocked count" - nombre de fois que le thread a \u00e9t\u00e9 bloqu\u00e9
-probe.jsp.threads.info.loading=Charge...
-probe.jsp.threads.info.unavailable=URL information indisponible
-probe.jsp.threads.killmsg=Tuer des threads risque de destabiliser la JVM. \u00eates-vous sur {0}?
-probe.jsp.threads.menu.threadpools=Pools de threads
-probe.jsp.threads.stop.alt=stop
-
-probe.jsp.title.app.attributes={0} - attributs de contexte
-probe.jsp.title.applications=Applications install\u00e9es
-probe.jsp.title.cluster=Etat des clustes
-probe.jsp.title.connectors=Connecteurs
-probe.jsp.title.dataSourceGroups=Sources de donn\u00e9es group\u00e9es par URL JDBC
-probe.jsp.title.datasources=Sources de donn\u00e9es disponibles
-probe.jsp.title.deployment=D\u00e9ploiement d'application
-probe.jsp.title.follow=Suivi de log
-probe.jsp.title.jsps={0} - JSPs d\u00e9ploy\u00e9es
-probe.jsp.title.logs=Logs
-probe.jsp.title.logs_notSupported=Non support\u00e9
-probe.jsp.title.memory=Util M\u00e9m. JVM
-probe.jsp.title.quickcheck=Check bref
-probe.jsp.title.resources={0} - ressources
-probe.jsp.title.servlet_source=Sources de servlet g\u00e9n\u00e9r\u00e9es
-probe.jsp.title.sessionAttibutes=Attributs de session
-probe.jsp.title.sessions={0} - sessions
-probe.jsp.title.sessions.all=Sessions
-probe.jsp.title.sysinfo=Infos syst\u00e8mes
-probe.jsp.title.threadpools=Pools de threads
-probe.jsp.title.threads=Threads actifs
-probe.jsp.title.viewsource={0} - Source
-probe.jsp.uptime=Actif depuis {0} jours {1} heures {2} minutes
-probe.jsp.version=Version {0} sur {1}
-
-probe.jsp.viewsource.appname=Nom de l'application:
-probe.jsp.viewsource.encoding=Encodage:
-probe.jsp.viewsource.filename=Nom du fichier:
-probe.jsp.viewsource.h3.info=Infos JSP
-probe.jsp.viewsource.h3.source=Source JSP
-probe.jsp.viewsource.lastmodified=Derni\u00e8re modif:
-probe.jsp.viewsource.notfound=Vous ne pouvez pas visualiserle contenu de ce fichier. S\u00e9lectionnez-le dans la liste.
-probe.jsp.viewsource.opt.back=Retour \u00e0 la liste des JSP
-probe.jsp.viewsource.opt.compile=compiler
-probe.jsp.viewsource.opt.viewServlet=voir la servlet g\u00e9n\u00e9r\u00e9e
-probe.jsp.viewsource.size=Taille:
-probe.jsp.viewsource.state=Etat:
-
-probe.jsp.wrongparams=Vous avez pass\u00e9 des param\u00e8tres incorrects \u00e0 cette page.
-probe.jsp.wrongsvrversion=Cette fonction n''est pas implement\u00e9e pour {0}
-probe.jsp.zoomedchart.back=Retour aux groupes des graphes
-probe.jsp.zoomedchart.information=Vous pouvez utiliser le curseur pour redimentionner l'image. L'info est actualis\u00e9ee autamatiquement. La courbe sera rafraichie toutes les {0} secondes.
-
-probe.src.contextAction.cannotActOnSelf=Impossible de stopper/d\u00e9marrer/ind\u00e9ployer cette application
-probe.src.contextDoesntExist=Contexte {0} inexistant
-probe.src.deploy.context.failure=Echec de d\u00e9ploiement de {0}
-probe.src.deploy.context.success=Application d\u00e9ploy\u00e9e de {0}
-probe.src.deploy.exploded.success={0} correctement install\u00e9e sur {1}
-probe.src.deploy.war.alreadyExists=Contexte {0} d\u00e9j\u00e0 utilis\u00e9
-probe.src.deploy.war.failure=Une erreur a \u00e9t\u00e9 signal\u00e9e par Tomcat pendant le deploiement: "{0}". L'application a cependant peut-\u00eatre \u00e9t\u00e9 d\u00e9ploy\u00e9e. V\u00e9rifier l''\u00e9tat dans la liste des applications
-probe.src.deploy.war.notWar.failure=Le d\u00e9ploiement a \u00e9chou\u00e9. Le fichier doit \u00eatre un .war
-probe.src.deploy.war.notinstalled={0} n'a pas \u00e9t\u00e9 install\u00e9(e)
-probe.src.deploy.war.uploadfailure=Probl\u00e8me pendant le transfert de: {0}
-probe.src.reset.datasource.c3p0=Cette source de donn\u00e9es ne peut \u00eatre r\u00e9initialis\u00e9e
-probe.src.reset.datasource.notfound=La ressource {0} n''existe pas
-
-probe.jsp.title.wrapper=Java Service Wrapper
-probe.jsp.wrapper.not_available=Cette JVM n'est pas control\u00e9e par Java Service Wrapper
-probe.jsp.wrapper.menu.restart=relancer JVM
-probe.jsp.wrapper.menu.stop=arr\u00eater JVM
-probe.jsp.wrapper.menu.thread_dump=Demander un dump du thread
-probe.jsp.wrapper.h3.info=Wrapper information
-probe.jsp.wrapper.h3.props=Propri\u00e9t\u00e9s du Wrapper
-probe.jsp.wrapper.confirm.restart=Etes-vous sur de vouloir red\u00e9marrer la JVM?
-probe.jsp.wrapper.confirm.stop=La JVM ne pourra pas \u00eatre relanc\u00e9e par Probe. Etes-vous sur de vouloir arr\u00e9ter la JVM?
-probe.jsp.wrapper.jvm.stopping=La JVM est en cours d'arr\u00eat. Pour la red\u00e9marrer, vous devrez utiliser la console.
-probe.jsp.wrapper.jvm.restarting=La JVM est en cours de red\u00e9marrage. Peut prendre plusieurs minutes.
-probe.jsp.wrapper.jvm.thread_dump=Le dump de thread de la JMV est demand\u00e9. Il se trouve dans la log du Wrapper.
-
-probe.jsp.wrapper.user=User:
-probe.jsp.wrapper.interactive_user=User interactif:
-probe.jsp.wrapper.java_pid=PID Java:
-probe.jsp.wrapper.pid=PID Wrapper:
-probe.jsp.wrapper.service=Lanc\u00e9 comme service:
-probe.jsp.wrapper.debug=Debug activ\u00e9:
-probe.jsp.wrapper.version=Version du Wrapper:
-
-probe.jsp.decorator.system.title=Syst\u00e8me
-probe.jsp.decorator.system.overview=R\u00e9sum\u00e9
-probe.jsp.decorator.system.memory=Util. m\u00e9moire
-probe.jsp.decorator.system.props=Propri\u00e9t\u00e9s syst\u00e8me
-probe.jsp.decorator.system.os=Infos OS
-probe.jsp.decorator.system.wrapper=Contr\u00f4le du Wrapper
-
-probe.jsp.os.h3.information=Infos OS
-probe.jsp.os.h3.charts=Histogrammes
-probe.jsp.os.chart.cpu=Util. CPU JVM (%)
-probe.jsp.os.chart.cpu.alt=Graphes d'utilisation CPU de la JVM
-probe.jsp.os.chart.cpu.legend=Utilisation CPU
-probe.jsp.os.chart.memory=Util. m\u00e9moire de l'OS & la JVM (KB)
-probe.jsp.os.chart.memory.alt=Graphe d'util. m\u00e9moire RAM de l'OS et de la JVM
-probe.jsp.os.chart.memory.legend.total=total utilis\u00e9
-probe.jsp.os.chart.memory.legend.jvm=utilis\u00e9 par la JVM
-probe.jsp.os.chart.swap=Utilisation du swap (KB)
-probe.jsp.os.chart.swap.alt=Graphe d'utilisation du swap
-probe.jsp.os.chart.swap.legend=swap utilis\u00e9
-#probe.jsp.os.chart.fd=File descriptors
-#probe.jsp.os.chart.fd.alt=File descriptors chart
-#probe.jsp.os.chart.fd.legend.open=open file descriptors
-#probe.jsp.os.chart.fd.legend.max=max file descriptors
-probe.jsp.os.card.name=Nom de l'OS:
-probe.jsp.os.card.version=Version d'OS:
-probe.jsp.os.card.processors=Processors:
-probe.jsp.os.card.totalMemory=RAM Totale:
-probe.jsp.os.card.freeMemory=RAM Libre:
-probe.jsp.os.card.committedVirtualMemory=M\u00e9moire JVM valid\u00e9e:
-probe.jsp.os.card.totalSwap=Swap total:
-probe.jsp.os.card.freeSwap=Swap libre:
-
-probe.jsp.title.testDataSource={0} -> {1}
-probe.src.dataSourceTest.resource.lookup.failure=La source de donn\u00e9es {0} n''existe pas
-probe.src.dataSourceTest.connection.failure=Impossible de se connecter \u00e0 la base {0}
-probe.src.dataSourceTest.connection.success=Connect\u00e9 \u00e0 la base de donn\u00e9es
-probe.src.dataSourceTest.sql.required=Texte de requ\u00eate SQL obligatoire
-probe.src.dataSourceTest.sql.failure=Erreur pendant l''ex\u00e9cution de la requ\u00eate. {0}
-probe.src.dataSourceTest.sql.null=NULL
-probe.src.dataSourceTest.cachedResultSet.failure=Echec de lecture du result set en cache
-probe.jsp.dataSourceTest.help=Cet \u00e9cran permet de tester vos sources de donn\u00e9es.\
-Tester connexion v\u00e9rifie si la connexion peut \u00eatre \u00e9tablie et affiche des infos sur la base.\
-Ex\u00e9cuter SQL ex\u00e9cute la requ\u00eate SQL saisie.\
-Voir le message en bas de l'\u00e9cran ainsi que le r\u00e9sultat ou les donn\u00e9es issues de l'ex\u00e9cution.\
-Avec l'historique affiche la liste des requ\u00eates d\u00e9j\u00e0 ex\u00e9cut\u00e9es.\
-Utiliser Avec les options pour limiter le nombre de lignes renvoy\u00e9es par votre requ\u00eate afin de limiter la consommation de ressources.
-probe.jsp.dataSourceTest.menu.back=Retour aux sources de donn\u00e9es
-probe.jsp.dataSourceTest.menu.connect=Tester connexion
-probe.jsp.dataSourceTest.menu.execute=Ex\u00e9cuter SQL (Ctrl+Enter)
-probe.jsp.dataSourceTest.menu.showHistory=Avec l'historique (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.hideHistory=Sans l'historique (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.showOptions=Avec les options (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.hideOptions=Sans les options (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.wrap=Retour ligne
-probe.jsp.dataSourceTest.menu.nowrap=1 ligne
-probe.jsp.dataSourceTest.menu.abbreviations=Help!
-probe.jsp.dataSourceTest.sqlForm.sql.label=SQL (auto-commit actif)
-probe.jsp.dataSourceTest.sqlForm.maxRows.label=Enregistrements \u00e0 r\u00e9cup\u00e9rer
-probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Enregistrements par page
-probe.jsp.dataSourceTest.sqlForm.historySize.label=Taille de l'historique
-probe.jsp.dataSourceTest.h3.results=R\u00e9sultat requ\u00eate
-probe.jsp.dataSourceTest.results.rowcount={0} enregistrement(s) impact\u00e9s.
-probe.jsp.dataSourceTest.h3.metaData=Infos base de donn\u00e9es
-probe.jsp.dataSourceTest.chart.usage.title=Utilisation de la source de donn\u00e9es
-probe.jsp.dataSourceTest.dbMetaData.col.propName=Nom de la propri\u00e9t\u00e9
-probe.jsp.dataSourceTest.dbMetaData.col.propValue=Valeur de la propri\u00e9t\u00e9
-probe.jsp.dataSourceTest.dbMetaData.dbProdName=Type de base de donn\u00e9es
-probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Version de base de donn\u00e9es
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=Nom du driver JDBC
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=Version du driver JDBC
-probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=Version JDBC
-probe.jsp.dataSourceTest.results.paging.banner.item_name=enregistrement
-probe.jsp.dataSourceTest.results.paging.banner.items_name=enregistrements
-probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
-probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Afficher un {0}.
-probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Afficher tous {2}.
-probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Afficher {2} de {3}.
-probe.jsp.dataSourceTest.results.paging.banner.first=Premier
-probe.jsp.dataSourceTest.results.paging.banner.prev=Pr\u00e9c\u00e9d.
-probe.jsp.dataSourceTest.results.paging.banner.next=Suivt.
-probe.jsp.dataSourceTest.results.paging.banner.last=Dern.
-probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Aller \u00e0 page n {0}
-probe.jsp.dataSourceTest.sql.completed=Ordre ex\u00e9cut\u00e9.
-probe.jsp.dataSourceTest.h3.queryHistory=Historique de requ\u00eates
-probe.jsp.dataSourceTest.queryHistory.empty=L'historique est vide
-
-probe.jsp.whois.timeout=Impossible d'ex\u00e9cuter la requ\u00eate WHOIS. V\u00e9rifier que WHOIS n'est pas filtr\u00e9 sur votre r\u00e9seau.
-
-probe.jsp.threadstack.native=code natif
-probe.jsp.threadstack.unknown=source inconnue
-probe.jsp.threadstack.unavailable=Trace stack indisponible pour ce thread
-
-probe.jsp.tooltip.close=fermer
-
-probe.jsp.sessions.h3=Sessions
-probe.jsp.sessions.search.h3=Crit\u00e8res de recherche de session
-probe.jsp.sessions.menu.showSearch=Recherche de session
-probe.jsp.sessions.menu.applySearch=Appliquer crit\u00e8res
-probe.jsp.sessions.menu.clearSearch=Effacer crit\u00e8res
-probe.jsp.sessions.menu.searchHelp=Help
-probe.jsp.sessions.search.help=Les conditions de recherche suivantes sont disponibles pour filtrer la liste des sessions.\
-Si Identifiant Session corresponds \u00e0 une expression r\u00e9guli\u00e8re.\
-Si Derni\u00e8re IP contient une sous-chaine.\
-Si Idle Time est inclu dans un interval sp\u00e9cifi\u00e9 en secondes.\
-Si Age est inclu dans un interval sp\u00e9cifi\u00e9 en secondes.\
-Si Nom d'attribut corresponds \u00e0 au moins une expression r\u00e9guli\u00e8re dans une liste d'expressions r\u00e9guli\u00e8res s\u00e9par\u00e9es par des virgules.\
-Cette condition permet de trouver une session avec un attribut A et/o\u00f9 un attribut B positionn\u00e9.
-probe.jsp.sessions.search.sessionId=ID de session (RE)
-probe.jsp.sessions.search.attrName=Attributs (liste RE)
-probe.jsp.sessions.search.ageFrom=Age depuis (sec)
-probe.jsp.sessions.search.ageTo=\u00e0
-probe.jsp.sessions.search.idleTimeFrom=Inactive depuis (sec)
-probe.jsp.sessions.search.idleTimeTo=\u00e0
-probe.jsp.sessions.search.lastIP=Dernier IP (extrait)
-probe.jsp.sessions.search.results.h3=R\u00e9sultats de recherche de session
-probe.src.sessions.search.empty=Crit\u00e8res de recherche vides
-probe.src.sessions.search.results.empty=Aucune session ne correspond aux crit\u00e8res
-probe.src.sessions.search.invalid=Crit\u00e8res de recherche invalides
-probe.src.sessions.search.invalid.sessionId=RegExp d''ID de session invalide. {0}
-probe.src.sessions.search.invalid.attrName=RegExp de nom d''attribut invalide. {0}
-probe.src.sessions.search.invalid.ageFrom=Valeur "Age depuis" invalide
-probe.src.sessions.search.invalid.ageTo=Valeur "Age \u00e0" invalide
-probe.src.sessions.search.invalid.idleTimeFrom=Valeur "Inactive depuis" invalide
-probe.src.sessions.search.invalid.idleTimeTo=Valeur "Inactive \u00e0" invalide
-probe.src.sessions.search.invalid.lastIP=RegExp "Dernier IP" invalide. {0}
-
-probe.jsp.app.nav.title=Application
-probe.jsp.app.nav.summary=R\u00e9sum\u00e9
-probe.jsp.app.nav.sessions=Sessions
-probe.jsp.app.nav.attributes=Attributs
-probe.jsp.app.nav.jsps=JSPs
-probe.jsp.app.nav.resources=Ressources
-probe.jsp.app.nav.initParams=Param\u00e8tres
-probe.jsp.app.nav.webxml=Descripteur de d\u00e9ploiement
-probe.jsp.app.nav.contextxml=Descripteur de contexte
-probe.jsp.app.nav.filters=Filtres
-probe.jsp.app.nav.servlets=Servlets
-
-probe.jsp.title.app.initParams={0} - param\u00e8tres d''initialisation
-probe.jsp.app.initParams.h3.params=Param\u00e8tres d'initialisation de contexte
-probe.jsp.app.initParams.col.name=Nom
-probe.jsp.app.initParams.col.value=Valeur
-probe.jsp.app.initParams.col.source=Source
-probe.jsp.app.initParams.source.deplDescr=web.xml
-probe.jsp.app.initParams.source.context=contexte
-probe.jsp.app.initParams.empty=Il n'y a pas de param\u00e8tres d'initialisation de contexte d\u00e9finis pour cette application
-
-probe.jsp.title.app.viewXMLConf={0} - {1}
-probe.jsp.app.viewXMLConf.notfound= {0} introuvable pour cette application
-probe.jsp.app.viewXMLConf.h3.scr={0} source
-probe.src.app.viewxmlconf.webxml.desc=descripteur de deploiement
-probe.src.app.viewxmlconf.contextxml.desc=descripteur de contexte
-
-probe.jsp.title.app.filters={0} - filtres
-probe.jsp.title.app.filtermaps={0} - mappings de filtres
-probe.jsp.app.filtermaps.opt.defs=D\u00e9finitions de filtres
-probe.jsp.app.filters.opt.maps=Mappings de filtres
-probe.jsp.app.filters.h3.defs=Filtres
-probe.jsp.app.filtermaps.h3.maps=Mappings de filtres
-probe.jsp.app.filters.col.filterName=Nom
-probe.jsp.app.filters.col.filterClass=Classe
-probe.jsp.app.filters.col.filterDesc=Description
-probe.jsp.app.filtermaps.col.url=URL
-probe.jsp.app.filtermaps.col.filterName=Nom du filtre
-probe.jsp.app.filtermaps.col.servletName=Nom de la servlet
-probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
-probe.jsp.app.filters.empty=Il n'y a pas de filtres d\u00e9finis pour cette application
-probe.jsp.app.filtermaps.empty=Il n'y a pas de mappings de filtres d\u00e9finis pour cette application
-
-probe.jsp.title.servlets.all=Servlets
-probe.jsp.title.servlets.app={0} - servlets
-probe.jsp.title.servletmaps.all=Mappings de servlets
-probe.jsp.title.servletmaps.app={0} - mappings de servlets
-probe.jsp.servletmaps.opt.defs=Servlets
-probe.jsp.servletmaps.opt.all=Montrer Tout
-probe.jsp.servlets.opt.maps=Mappings de servlet
-probe.jsp.servlets.opt.all=Montrer Tout
-probe.jsp.servlets.h3.defs=Servlets
-probe.jsp.servletmaps.h3.maps=Mappings de servlet
-probe.jsp.servletmaps.col.url=URL
-probe.jsp.servletmaps.col.servletName=Nom de servlet
-probe.jsp.servlets.col.applicationName=App
-probe.jsp.servlets.col.servletName=Nom
-probe.jsp.servletmaps.col.servletClass=Classe
-probe.jsp.servlets.col.available=Dispo
-probe.jsp.servlets.col.loadOnStartup=Lanc.
-probe.jsp.servlets.empty=Il n'y a pas de servlets d\u00e9finies pour cette application
-probe.jsp.servletmaps.empty=Il n'y a pas de mappings de servlets d\u00e9finis pour cette application
-probe.jsp.servlets.col.minTime=Tps min
-probe.jsp.servlets.col.maxTime=Tps max
-probe.jsp.servlets.col.processingTime=Tps Trait.
-probe.jsp.servlets.col.loadTime=Tps Charg.
-probe.jsp.servlets.col.multiThreaded=Mult Thrd
-probe.jsp.servlets.col.requestCount=N.Rq
-probe.jsp.servlets.col.errorCount=Err
-
-probe.jsp.title.app.summary={0} - r\u00e9sum\u00e9 de l''application
-probe.jsp.app.summary.application=Nom de l'appli
-probe.jsp.app.summary.description=Description:
-probe.jsp.app.summary.distributable=Cluster:
-probe.jsp.app.summary.docBase=Doc. base:
-probe.jsp.app.summary.servletVersion=Version Servlet:
-probe.jsp.app.summary.sessionTimeout=Session timeout:
-probe.jsp.app.summary.servletCount=Nb Servlets:
-probe.jsp.app.summary.status=Cette application est
-probe.jsp.app.summary.requestCount=Nb Requ\u00eates:
-probe.jsp.app.summary.sessionCount=Sessions
-probe.jsp.app.summary.sessionAttributeCount=Attrs. session
-probe.jsp.app.summary.sessionSize=Taille session
-probe.jsp.app.summary.contextAttributeCount=Attrs. contexte
-probe.jsp.app.summary.serializable=S\u00e9rialisable
-probe.jsp.app.summary.errorCount=Nb Erreurs:
-probe.jsp.app.summary.processingTime=Tps de Trait.:
-probe.jsp.app.summary.minTime=Tps min:
-probe.jsp.app.summary.maxTime=Tps max:
-probe.jsp.app.summary.avgTime=Temps de r\u00e9ponse moyen
-probe.jsp.app.summary.h3.static=Infos application
-probe.jsp.app.summary.h3.runtime=Information environnement
-probe.jsp.app.summary.invalidApp=L'application est invalide
-probe.jsp.app.summary.runtime.unavailable=Les informations ne sont pas disponibles car l'application n'est pas en cours de fonctionnement
-probe.jsp.app.summary.menu.start=Lanc.
-probe.jsp.app.summary.menu.stop=Stop
-probe.jsp.app.summary.menu.reload=Recharg.
-probe.jsp.app.summary.menu.undeploy=Ind\u00e9ploie
-probe.jsp.app.summary.menu.goTo=Aller \u00e0
-probe.jsp.app.summary.menu.startStats=D\u00e9marrer la r\u00e9colte des statistiques
-probe.jsp.app.summary.menu.stopStats=Arr\u00eater la r\u00e9colte des statistiques
-probe.jsp.app.summary.undeploy.confirm=Cette op\u00e9ration est irr\u00e9versible. Etes-vous sur de SUPPRIMER {0}?
-probe.jsp.app.summary.dataSourceUsageScore=Utilisation de la source de donn\u00e9es
-probe.jsp.app.summary.jdbcUsage.title=Util.Max.conn. {0}%
-probe.jsp.app.summary.h3.charts=Graphique des Statistiques
-probe.jsp.app.summary.charts.requests.title=Nombre de Requ\u00eates
-probe.jsp.app.summary.charts.avgProcTime.title=Temps de r\u00e9ponse moyen (ms)
-probe.jsp.app.summary.charts.requests.legend=Requ\u00eates
-probe.jsp.app.summary.charts.errors.legend=Erreurs
-probe.jsp.app.summary.charts.avgProcTime.legend=Temps de r\u00e9ponse moyen
-
-probe.jsp.title.allappstats=Statistiques de l'application
-probe.jsp.allappstats.charts.totalAvgProcTime.legend=Temps de r\u00e9ponse moyen
-probe.jsp.allappstats.charts.totalReq.legend=Requ\u00eates
-probe.jsp.allappstats.charts.totalAvgProcTime.title=Temps de r\u00e9ponse moyen cumul\u00e9 (ms)
-probe.jsp.allappstats.charts.allAppAvgProcTime.title=Temps de r\u00e9ponse moyen par application (ms)
-probe.jsp.allappstats.charts.totalReq.title=Requ\u00eates cumul\u00e9es
-probe.jsp.allappstats.charts.allAppReq.title=Requ\u00eates par application (ms)
-probe.jsp.allappstats.h3.charts=Graphiques de statistiques
-
-#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
-#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
-#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
-#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
-
-#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
-#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
+#
+# Licensed under the GPL License. You may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+#
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+# French translation by Bruno Haleblian (BHa - bruno.haleblian@online.fr) and Thomas Guilleminot (thomasguilleminot@gmail.com)
+probe.jsp.i18n.credit=Traduction en fran\u00e7ais par Bruno Haleblian et Thomas Guilleminot.
+probe.jsp.icons.credit="Silk" icons de famfamfam.com.
+
+probe.jsp.generic.no=non
+probe.jsp.generic.yes=oui
+probe.jsp.generic.abbreviations=Que sont ces abr\u00e9viations?
+
+probe.jsp.app.attributes.col.delete=Supprimer attribut
+probe.jsp.app.attributes.col.delete.title=Supprimer attribut
+probe.jsp.app.attributes.col.name=Nom
+probe.jsp.app.attributes.col.type=Type
+probe.jsp.app.attributes.col.value=Valeur
+probe.jsp.app.attributes.h3.attributes=Attributs du contexte de servlet
+probe.jsp.app.attributes.noattributes=Ce contexte de servlet n'a pas d'attribut
+
+probe.jsp.applications.alt.reload=relire
+probe.jsp.applications.alt.undeploy=Ind\u00e9ployer
+probe.jsp.applications.col.contextAttributeCount=C.Attr
+probe.jsp.applications.col.description=Description
+probe.jsp.applications.col.distributable=Cluster.?
+probe.jsp.applications.col.jdbcUsage=Jdbc Usage
+probe.jsp.applications.col.jsp=JSP
+probe.jsp.applications.col.name=Nom
+probe.jsp.applications.col.serializable=Ser.?
+probe.jsp.applications.col.sessionAttributeCount=S.Attr
+probe.jsp.applications.col.sessionCount=Sess.
+probe.jsp.applications.col.sessionTimeout=Sess.Timeout
+probe.jsp.applications.col.size=Larg.
+probe.jsp.applications.col.status=Status
+probe.jsp.applications.col.requestCount=Req.
+probe.jsp.applications.help.contextAttributeCount=nombre total des attributs de ServletContext
+probe.jsp.applications.help.distributable=application "distribuable"
+probe.jsp.applications.help.requestCount=nombre total de requ\u00eates trait\u00e9es par les servlets
+probe.jsp.applications.help.serializable=tous les attributs de session implementent java.io.Serializable
+probe.jsp.applications.help.sessionAttributeCount=nombre total des attributs de session
+probe.jsp.applications.help.sessionCount=nombre de sessions
+probe.jsp.applications.hidesize=cacher taille sess.
+probe.jsp.applications.jdbcUsage.title=Max.conn.usage {0}%
+probe.jsp.applications.jsp.view=vue
+probe.jsp.applications.serializable.no=NON
+probe.jsp.applications.serializable.yes=oui
+probe.jsp.applications.showsize=estimer taille sessions (peut \u00eatre long)
+probe.jsp.applications.status.down=arr\u00eat
+probe.jsp.applications.status.down.title=Lance {0}
+probe.jsp.applications.status.up=running
+probe.jsp.applications.title.reload=Relire {0}
+probe.jsp.applications.title.status.up=Stop {0}
+probe.jsp.applications.title.undeploy=Undeploy {0}
+probe.jsp.applications.undeploy.confirm=Cette operation est irr\u00e9versible. Vraiment SUPPRIMER {0}?
+
+probe.jsp.connectors.information=Donn\u00e9es de trafic pour tous les connecteurs. Les donn\u00e9es est continu et les courbes sont mis \u00e0 jour automatiquement. Il n'est pas n\u00e9cessaire de rester sur cette page pour que les courbes s'actualisent.
+probe.jsp.connectors.processor.errorCount=Nb Erreurs:
+probe.jsp.connectors.processor.maxTime=Tps max:
+probe.jsp.connectors.processor.processingTime=Temps actif:
+probe.jsp.connectors.processor.received=Re\u00e7us:
+probe.jsp.connectors.processor.requestCount=Nb Requ\u00eates:
+probe.jsp.connectors.processor.sent=Emis:
+probe.jsp.connectors.proc_time.title=Temps actif (ms) par intervalle
+probe.jsp.connectors.requests.title=Nb de requ\u00eates par intervalle
+probe.jsp.connectors.traffic.title=Volume \u00e9chang\u00e9 (octets) par intervalle
+probe.jsp.connectors.wrk.col.in=IN
+probe.jsp.connectors.wrk.col.out=OUT
+probe.jsp.connectors.wrk.col.processingTime=Tps CPU
+probe.jsp.connectors.wrk.col.remoteAddr=IP Dist.
+probe.jsp.connectors.wrk.col.stage=niveau
+probe.jsp.connectors.wrk.col.url=URL
+probe.jsp.connectors.wrk.col.thread=Thread
+probe.jsp.connectors.wrk.empty=Pas de workers mod_jk
+probe.jsp.connectors.wrk.stage.endInput=EndInput
+probe.jsp.connectors.wrk.stage.endOutput=EndOutput
+probe.jsp.connectors.wrk.stage.ended=Fini
+probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
+probe.jsp.connectors.wrk.stage.new=Nouv.
+probe.jsp.connectors.wrk.stage.parse=Parse
+probe.jsp.connectors.wrk.stage.prepare=Pr\u00e9pare
+probe.jsp.connectors.wrk.stage.service=Service
+
+probe.jsp.cluster.chart.requests=Requ\u00eates par intervalle de {0} secondes
+probe.jsp.cluster.chart.traffic=Trafic par intervalle de {0} secondes
+probe.jsp.cluster.h3.info=Donn\u00e9es cluster
+probe.jsp.cluster.h3.members=Membres du cluster
+probe.jsp.cluster.heartbeatFreq=Fr\u00e9q. Actual.Cl:
+probe.jsp.cluster.heartbeatTimeout=Timeout Actual.Cl.:
+probe.jsp.cluster.info=Info:
+probe.jsp.cluster.manager=Manager:
+probe.jsp.cluster.mcastAddress=Adresse Mcast:
+probe.jsp.cluster.mcastBindAddress=Bind Adresse Mcast:
+probe.jsp.cluster.mcastBindAddress.all=tous
+probe.jsp.cluster.mcastTTL=Mcast TTL
+probe.jsp.cluster.members.col.address=Adresse
+probe.jsp.cluster.members.col.avgMsgSize=T.Moy.
+probe.jsp.cluster.members.col.closes=Ferm\u00e9s
+probe.jsp.cluster.members.col.connectCount=NC
+probe.jsp.cluster.members.col.connected=Conn.?
+probe.jsp.cluster.members.col.disconnectCount=ND
+probe.jsp.cluster.members.col.failures=Echecs
+probe.jsp.cluster.members.col.inQueueCounter=InQ
+probe.jsp.cluster.members.col.keepAlive=Keep Alive
+probe.jsp.cluster.members.col.openFailures=Err Ouv.
+probe.jsp.cluster.members.col.opens=Ouv.
+probe.jsp.cluster.members.col.outQueueCounter=OutQ
+probe.jsp.cluster.members.col.queueSize=QSz
+probe.jsp.cluster.members.col.queueSizeBytes=QSzB
+probe.jsp.cluster.members.col.requests=Req.
+probe.jsp.cluster.members.col.resends=R\u00e9emiss
+probe.jsp.cluster.members.col.sent=Emis
+probe.jsp.cluster.members.col.socketLimit=Max Socket
+probe.jsp.cluster.members.failing.alt=D\u00e9faut
+probe.jsp.cluster.members.failing.title=Le membre semble d\u00e9fectueux
+probe.jsp.cluster.members.healthy.alt=OK
+probe.jsp.cluster.members.healthy.title=Le membre est OK
+probe.jsp.cluster.mode=Mode de r\u00e9plication:
+probe.jsp.cluster.name=Nom:
+probe.jsp.cluster.noMembers=Ce noeud semble n'avoir aucun membre actif
+probe.jsp.cluster.notAvailable=Les donn\u00e9es cluster sont disponibles pour Tomcat 5.5.x avec support cluster activ\u00e9.
+probe.jsp.cluster.received=re\u00e7u
+probe.jsp.cluster.receiverAddress=Addresse r\u00e9cepteur:
+probe.jsp.cluster.receiverPort=Port r\u00e9cepteur:
+probe.jsp.cluster.sent=\u00e9mis
+
+probe.jsp.copyright=Copyright 2009-${copyright}. Des questions? Des suggestions? Venez sur https://github.com/psi-probe/psi-probe
+
+probe.jsp.dataSourceGroups.empty=Aucune source de donn\u00e9es correctement configur\u00e9e sur cette instance
+probe.jsp.dataSourceGroups.information=La table ci-dessous contient le total des connexions ouvertes et potentiellement autoris\u00e9es group\u00e9es par url jdbc. Cette information permet d'estimer combien de connexions \u0085 une base de donn\u00e9es peuvent \u00eatre ouvertes par les ressources JDBC configur\u00e9es pour ce conteneur.
+probe.jsp.dataSourceGroups.jdbcUsage.title=Pic d''utilisation {0}%
+probe.jsp.dataSourceGroups.list.col.busy=Actives
+probe.jsp.dataSourceGroups.list.col.established=Total \u00e9tablies.
+probe.jsp.dataSourceGroups.list.col.max=Total max.
+probe.jsp.dataSourceGroups.list.col.resourceCount=Nb ressources
+probe.jsp.dataSourceGroups.list.col.url=URL
+probe.jsp.dataSourceGroups.list.col.usage=Usage
+probe.jsp.dataSourceGroups.menu.back=Retour \u00e0 la liste
+
+probe.jsp.datasources.h3.global=Ressources Globales
+probe.jsp.datasources.h3.app=Ressources Applicatives
+probe.jsp.datasources.global.empty=Aucune source de donn\u00e9es configur\u00e9e au niveau du serveur pour cette instance Tomcat
+probe.jsp.datasources.app.empty=Aucune source de donn\u00e9es configur\u00e9e au niveau de l'application pour cette instance Tomcat
+probe.jsp.datasources.empty=Aucune source de donn\u00e9es configur\u00e9e pour cette instance Tomcat
+probe.jsp.datasources.help.max=nombre maximum de connexions dans le pool
+probe.jsp.datasources.help.established=nombre de connexions \u00e9tablies r\u00e9utilisables
+probe.jsp.datasources.help.busy=nombre de connexions actives non r\u00e9utilisables
+probe.jsp.datasources.list.col.application=App
+probe.jsp.datasources.list.col.auth=Auth
+probe.jsp.datasources.list.col.busy=A
+probe.jsp.datasources.list.col.description=Description
+probe.jsp.datasources.list.col.established=E
+probe.jsp.datasources.list.col.linkTo=Lien
+probe.jsp.datasources.list.col.max=M
+probe.jsp.datasources.list.col.reset.alt=Reset
+probe.jsp.datasources.list.col.resource=Ressource
+probe.jsp.datasources.list.col.type=Type
+probe.jsp.datasources.list.col.url=URL
+probe.jsp.datasources.list.col.usage=Usage
+probe.jsp.datasources.list.col.user=User
+probe.jsp.datasources.list.misconfigured.alt=Erreur
+probe.jsp.datasources.opt.groupByJdbcUrl=grouper par URL JDBC
+
+probe.jsp.deployment.war.success={0} est d\u00e9ploy\u00e9e
+probe.jsp.deployment.compilationDetails=D\u00e9tails de compilation
+probe.jsp.deployment.s1.compile.label=Pr\u00e9compiler le pages JSP au d\u00e9ploiement(peut durer qq minutes)
+probe.jsp.deployment.s1.description=Transf\u00e9rer un fichier .war au serveur. Si le nom du contexte n'est pas specifi\u00e9, le nom du fichier sera utilis\u00e9. En transf\u00e9rant un fichier .war META-INF/context.xml bien s'assurer que le contexte a le m\u00eame attribut "path" que le contexte du .war d\u00e9ploy\u00e9, sinon c'est tout le Tomcat 5.0.x qui sera sur le dos.
+probe.jsp.deployment.s1.discard.label=Supprimer le r\u00e9pertoire "work" existant
+probe.jsp.deployment.s1.file.label=Choisir le fichier .war \u00e0 transf\u00e9rer
+probe.jsp.deployment.s1.submit=D\u00e9ployer
+probe.jsp.deployment.s1.title=Transf\u00e9rer une application (basique)
+probe.jsp.deployment.s1.update.label=Ecraser l'application d\u00e9j\u00e0 d\u00e9ploy\u00e9e
+probe.jsp.deployment.s2.context.label=Nom du contexte (ex. /monappli)
+probe.jsp.deployment.s2.description=Utiliser cette option s'l existe un context.xml dans %CATALINA_BASE%/conf/Catalina/localhost/. On suppose que le nom du contexte est celui du fichier .xml. Par exemple que le contexte "/toto" = %CATALINA_BASE%/conf/Catalina/localhost/toto.xml. NOTE: Tomcat 5.0.x oblige le fichier .xml \u00e0 avoir un attribut "path"!
+probe.jsp.deployment.s2.title=D\u00e9ployer le nom de contexte (avanc\u00e9)
+
+probe.jsp.follow.h3.fileContent=Contenu du fichier
+probe.jsp.follow.h3.fileInfo=Information
+probe.jsp.follow.h3.sources=Enregistrement des Sources
+probe.jsp.follow.loading=Chargement...
+probe.jsp.follow.menu.back=Retour \u00e0 la liste des logs
+probe.jsp.follow.menu.clear=Vider le buffer
+probe.jsp.follow.menu.download=t\u00e9l\u00e9charger
+probe.jsp.follow.menu.nowrap=1 ligne
+probe.jsp.follow.menu.pause=pause
+probe.jsp.follow.menu.resume=reprendre
+probe.jsp.follow.menu.wrap=multilignes
+probe.jsp.follow.menu.zoomin=zoom +
+probe.jsp.follow.menu.zoomout=zoom -
+probe.jsp.followed_file_info.fileName=nom de fichier:
+probe.jsp.followed_file_info.lastModified=Derni\u00e8re modif:
+probe.jsp.followed_file_info.size=Taille:
+
+probe.jsp.jsps.col.lastmodified=Derni\u00e8re modif
+probe.jsp.jsps.col.message=Message
+probe.jsp.jsps.col.name=Nom de JSP
+probe.jsp.jsps.col.size=Taille
+probe.jsp.jsps.col.status=Etat
+probe.jsp.jsps.notfound=Cette application ne contient pas de fichier JSP
+probe.jsp.jsps.opt.compile=Compilation activ\u00e9e
+probe.jsp.jsps.opt.compileall=Compiler tout
+probe.jsp.jsps.opt.discardscratch=supprimer r\u00e9p. "work"
+probe.jsp.jsps.opt.toggleall=Inverse tout
+probe.jsp.jsps.status.compiled=Compil\u00e9
+probe.jsp.jsps.status.failed=ECHEC
+probe.jsp.jsps.status.outdated=Osol\u00e8tes
+
+probe.jsp.logs.col.app=App
+probe.jsp.logs.col.class=Classe
+probe.jsp.logs.col.file=Nom Fic.
+probe.jsp.logs.col.level=Niveau
+probe.jsp.logs.col.modified=Modifi\u00e9
+probe.jsp.logs.col.name=Nom
+probe.jsp.logs.col.size=Taille
+probe.jsp.logs.col.type=Type
+probe.jsp.logs.download.alt=t\u00e9l\u00e9charger
+probe.jsp.logs.hideapps=existants seult.
+probe.jsp.logs.showapps=montrer tout
+probe.jsp.logs_notSupported.message=Votre JVM {0} {1} ne supporte pas compl\u00e8tement l''API SUN reflection - sun.reflect.ReflectionFactory. La fonction de suivi des logs est d\u00e9sactiv\u00e9e.
+
+probe.jsp.memory.advise.finalization=Sugg\u00e8re la "Finalization"
+probe.jsp.memory.advise.gc=Sugg\u00e8re le GC
+probe.jsp.memory.col.committed=Valid\u00e9
+probe.jsp.memory.col.group=Groupe
+probe.jsp.memory.col.initial=Initial
+probe.jsp.memory.col.max=Maximum
+probe.jsp.memory.col.name=Nom
+probe.jsp.memory.col.plot=Trace
+probe.jsp.memory.col.usageScore=Taux d'utilisation
+probe.jsp.memory.col.used=Utilis\u00e9
+probe.jsp.memory.h3.charts=Memory usage history
+probe.jsp.memory.h3.table=Utilisation m\u00e9moire
+probe.jsp.memory.loading=Chargement...
+probe.jsp.memory.usage.title=Utilisation {0}%
+probe.jsp.memory.notAvailable=Cette page requiert Java5 avec un agent JMX. Pour activer un agent JMX, ajouter "-Dcom.sun.management.jmxremote" \u00e0 la ligne de commande ou \u00e0 la variable $JAVA_OPTS. POur le JDK d'IBM ajouter ces propri\u00e9t\u00e9s: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
+
+probe.jsp.menu.applications=Applications
+probe.jsp.menu.cluster=Cluster
+probe.jsp.menu.connectors=Connecteurs
+probe.jsp.menu.datasources=Data Sources
+probe.jsp.menu.deployment=D\u00e9ploiement
+probe.jsp.menu.logs=Logs
+probe.jsp.menu.memory=M\u00e9moire
+probe.jsp.menu.quickcheck=R\u00e9sum\u00e9
+probe.jsp.menu.sysinfo=Syst\u00e8me
+probe.jsp.menu.threads=Threads
+
+probe.jsp.noaccess=Vous n'avez pas les privil\u00e8ges requis pour cette page. Utiliser le bouton "Retour" de votre navigateur ou cliquez "retour" .
+probe.jsp.noaccess.ajax=Vous n'avez pas les privil\u00e8ges requis pour l'acc\u00e8s \u00e0 cette fonction.
+probe.jsp.noaccess.title=403 Interdit
+probe.jsp.notfound=La page demand\u00e9e n'existe pas sur ce serveur. Utiliser la barre de navigation.
+probe.jsp.notfound.title=404 Non trouv\u00e9
+
+probe.jsp.resources.col.auth=Authentification
+probe.jsp.resources.col.linkTo=Lien vers
+probe.jsp.resources.col.name=Nom
+probe.jsp.resources.col.type=Type
+probe.jsp.resources.empty=Pas de ressources d\u00e9finies pour cette application
+probe.jsp.resources.info.busy=Actif:
+probe.jsp.resources.info.connectionUsage.alt=Tx Utilis. {0}%
+probe.jsp.resources.info.established=Etablies:
+probe.jsp.resources.info.max=Max:
+probe.jsp.resources.info.misconfigured=Cette ressource est mal configur\u00e9e les donn\u00e9es sont indisponibles.
+probe.jsp.resources.info.misconfigured.alt=Point d'exclamation
+probe.jsp.resources.info.reset=
+probe.jsp.resources.info.reset.alt=reset
+probe.jsp.resources.info.title=Donn\u00e9es suppl\u00e9mentaires:
+
+probe.jsp.servlet_source.h3.source=Code de servlet auto-g\u00e9n\u00e9r\u00e9
+probe.jsp.servlet_source.opt.jsp=vue JSP
+
+probe.jsp.sessionAttibutes.card.age=Age:
+probe.jsp.sessionAttibutes.card.application=Application:
+probe.jsp.sessionAttibutes.card.created=Cr\u00e9ation:
+probe.jsp.sessionAttibutes.card.expiryTime=Expiration:
+probe.jsp.sessionAttibutes.card.id=ID:
+probe.jsp.sessionAttibutes.card.idleTime=Inactivit\u00e9:
+probe.jsp.sessionAttibutes.card.info=Info:
+probe.jsp.sessionAttibutes.card.lastAccessed=Dernier acc\u00e8s:
+probe.jsp.sessionAttibutes.card.manager=Type gestion:
+probe.jsp.sessionAttibutes.card.maxIdleTime=Inactivit\u00e9 Max:
+probe.jsp.sessionAttibutes.card.serializable=S\u00e9rialisable:
+probe.jsp.sessionAttibutes.card.serializable.no=NON
+probe.jsp.sessionAttibutes.card.serializable.yes=oui
+probe.jsp.sessionAttibutes.card.size=Taille:
+probe.jsp.sessionAttibutes.col.delete=supprimer
+probe.jsp.sessionAttibutes.col.delete.title=Supprimer attribut
+probe.jsp.sessionAttibutes.col.name=Nom
+probe.jsp.sessionAttibutes.col.serializable=Ser.?
+probe.jsp.sessionAttibutes.col.size=Taille
+probe.jsp.sessionAttibutes.col.type=Type
+probe.jsp.sessionAttibutes.col.value=Valeur
+probe.jsp.sessionAttibutes.h3.attributes=Attributs de session
+probe.jsp.sessionAttibutes.h3.card=Carte de session
+probe.jsp.sessionAttibutes.invalidSid=ID de session invalide ou session expir\u00e9e
+probe.jsp.sessionAttibutes.menu.back=Retour \u00e0 la liste de session
+probe.jsp.sessionAttibutes.menu.destroy=D\u00e9truire cette session
+probe.jsp.sessionAttibutes.noattributes=Cette session n'a pas d'attributs
+
+probe.jsp.sessions.col.age=Age
+probe.jsp.sessions.col.creationTime=Cr\u00e9ation
+probe.jsp.sessions.col.expiryTime=Expiration
+probe.jsp.sessions.col.id=ID session
+probe.jsp.sessions.col.applicationName=App
+probe.jsp.sessions.col.idleTime=Inactivit\u00e9
+probe.jsp.sessions.col.lastAccessTime=Dernier acc\u00e8s
+probe.jsp.sessions.col.objectCount=Nb Objets
+probe.jsp.sessions.col.serializable=Ser.
+probe.jsp.sessions.col.size=Taille
+probe.jsp.sessions.col.lastIP=Dern. IP
+probe.jsp.sessions.unknown.ip=inconnu
+probe.jsp.sessions.empty=Pas de session dans cette application
+probe.jsp.sessions.menu.expire=Expire
+probe.jsp.sessions.menu.toggle=Inverse
+probe.jsp.sessions.status.no=Non
+probe.jsp.sessions.status.yes=Oui
+probe.jsp.sessions.opt.all=Montrer Tout
+probe.jsp.showsize=taille estim\u00e9e
+probe.jsp.hidesize=cacher taille
+
+probe.jsp.sysinfo.col.name=Nom propri\u00e9t\u00e9
+probe.jsp.sysinfo.col.value=Val. propri\u00e9t\u00e9
+probe.jsp.sysinfo.container.title=Info conteneur
+probe.jsp.sysinfo.memory.adviseGC=Sugg\u00e8re le GC
+probe.jsp.sysinfo.memory.free=Libre:
+probe.jsp.sysinfo.memory.max=Max:
+probe.jsp.sysinfo.memory.title=Util M\u00e9m.
+probe.jsp.sysinfo.memory.total=Total:
+probe.jsp.sysinfo.memory.usage=Util M\u00e9m. actuelle
+probe.jsp.sysinfo.memory.usage.alt=Jauge M\u00e9moire
+probe.jsp.sysinfo.os.applicationBase=Application base:
+probe.jsp.sysinfo.os.catalinaBase=catalina.base:
+probe.jsp.sysinfo.os.catalinaHome=catalina.home:
+probe.jsp.sysinfo.os.configBase=Configuration de Base:
+probe.jsp.sysinfo.os.container=Conteneur:
+probe.jsp.sysinfo.os.currentTime=Heure:
+probe.jsp.sysinfo.os.jvm=JVM:
+probe.jsp.sysinfo.os.name=OS:
+probe.jsp.sysinfo.os.processors=CPUs:
+probe.jsp.sysinfo.os.title=OS info
+probe.jsp.sysinfo.os.workingDir=R\u00e9p travail:
+probe.jsp.sysinfo.sysproperties.title=Propri\u00e9t\u00e9s Syst.
+
+probe.jsp.threadpools.currentThreadCount=Nbre de threads
+probe.jsp.threadpools.currentThreadsBusy=Threads actifs
+probe.jsp.threadpools.maxSpareThreads=Max threads de secours
+probe.jsp.threadpools.maxThreads=Max threads
+probe.jsp.threadpools.menu.threads=Threads actifs
+probe.jsp.threadpools.minSpareThreads=Min threads de secours
+probe.jsp.threadpools.name=Nom
+
+probe.jsp.threads.col.application=App
+probe.jsp.threads.col.classLoader=Class loader
+probe.jsp.threads.col.daemon=D
+probe.jsp.threads.col.groupName=Groupe
+probe.jsp.threads.col.interrupted=I
+probe.jsp.threads.col.name=Nom
+probe.jsp.threads.col.priority=P
+probe.jsp.threads.col.runnableClass=Runnable
+probe.jsp.threads.col.threadClass=Thread class
+probe.jsp.threads.col.id=ID
+probe.jsp.threads.col.execPoint=Point Exec
+probe.jsp.threads.col.state=Etat
+probe.jsp.threads.col.inNative=Ex.natif
+probe.jsp.threads.col.suspended=Susp.
+probe.jsp.threads.col.waitedCount=WC
+probe.jsp.threads.col.blockedCount=BC
+probe.jsp.threads.help.priority=valeur de la priorit\u00e9 du thread
+probe.jsp.threads.help.daemon=le thread est-il un daemon
+probe.jsp.threads.help.interrupted=le thread a \u00e9t\u00e9 interrompu
+probe.jsp.threads.help.inNative=vrai si le thread ex\u00e9cude du code natif
+probe.jsp.threads.help.suspended=le thread est suspendu
+probe.jsp.threads.help.waitedCount="wait count" - nombre de fois que le thread a \u00e9t\u00e9 mis en attente
+probe.jsp.threads.help.blockedCount="blocked count" - nombre de fois que le thread a \u00e9t\u00e9 bloqu\u00e9
+probe.jsp.threads.info.loading=Charge...
+probe.jsp.threads.info.unavailable=URL information indisponible
+probe.jsp.threads.killmsg=Tuer des threads risque de destabiliser la JVM. \u00eates-vous sur {0}?
+probe.jsp.threads.menu.threadpools=Pools de threads
+probe.jsp.threads.stop.alt=stop
+
+probe.jsp.title.app.attributes={0} - attributs de contexte
+probe.jsp.title.applications=Applications install\u00e9es
+probe.jsp.title.cluster=Etat des clustes
+probe.jsp.title.connectors=Connecteurs
+probe.jsp.title.dataSourceGroups=Sources de donn\u00e9es group\u00e9es par URL JDBC
+probe.jsp.title.datasources=Sources de donn\u00e9es disponibles
+probe.jsp.title.deployment=D\u00e9ploiement d'application
+probe.jsp.title.follow=Suivi de log
+probe.jsp.title.jsps={0} - JSPs d\u00e9ploy\u00e9es
+probe.jsp.title.logs=Logs
+probe.jsp.title.logs_notSupported=Non support\u00e9
+probe.jsp.title.memory=Util M\u00e9m. JVM
+probe.jsp.title.quickcheck=Check bref
+probe.jsp.title.resources={0} - ressources
+probe.jsp.title.servlet_source=Sources de servlet g\u00e9n\u00e9r\u00e9es
+probe.jsp.title.sessionAttibutes=Attributs de session
+probe.jsp.title.sessions={0} - sessions
+probe.jsp.title.sessions.all=Sessions
+probe.jsp.title.sysinfo=Infos syst\u00e8mes
+probe.jsp.title.threadpools=Pools de threads
+probe.jsp.title.threads=Threads actifs
+probe.jsp.title.viewsource={0} - Source
+probe.jsp.uptime=Actif depuis {0} jours {1} heures {2} minutes
+probe.jsp.version=Version {0} sur {1}
+
+probe.jsp.viewsource.appname=Nom de l'application:
+probe.jsp.viewsource.encoding=Encodage:
+probe.jsp.viewsource.filename=Nom du fichier:
+probe.jsp.viewsource.h3.info=Infos JSP
+probe.jsp.viewsource.h3.source=Source JSP
+probe.jsp.viewsource.lastmodified=Derni\u00e8re modif:
+probe.jsp.viewsource.notfound=Vous ne pouvez pas visualiserle contenu de ce fichier. S\u00e9lectionnez-le dans la liste.
+probe.jsp.viewsource.opt.back=Retour \u00e0 la liste des JSP
+probe.jsp.viewsource.opt.compile=compiler
+probe.jsp.viewsource.opt.viewServlet=voir la servlet g\u00e9n\u00e9r\u00e9e
+probe.jsp.viewsource.size=Taille:
+probe.jsp.viewsource.state=Etat:
+
+probe.jsp.wrongparams=Vous avez pass\u00e9 des param\u00e8tres incorrects \u00e0 cette page.
+probe.jsp.wrongsvrversion=Cette fonction n''est pas implement\u00e9e pour {0}
+probe.jsp.zoomedchart.back=Retour aux groupes des graphes
+probe.jsp.zoomedchart.information=Vous pouvez utiliser le curseur pour redimentionner l'image. L'info est actualis\u00e9ee autamatiquement. La courbe sera rafraichie toutes les {0} secondes.
+
+probe.src.contextAction.cannotActOnSelf=Impossible de stopper/d\u00e9marrer/ind\u00e9ployer cette application
+probe.src.contextDoesntExist=Contexte {0} inexistant
+probe.src.deploy.context.failure=Echec de d\u00e9ploiement de {0}
+probe.src.deploy.context.success=Application d\u00e9ploy\u00e9e de {0}
+probe.src.deploy.exploded.success={0} correctement install\u00e9e sur {1}
+probe.src.deploy.war.alreadyExists=Contexte {0} d\u00e9j\u00e0 utilis\u00e9
+probe.src.deploy.war.failure=Une erreur a \u00e9t\u00e9 signal\u00e9e par Tomcat pendant le deploiement: "{0}". L'application a cependant peut-\u00eatre \u00e9t\u00e9 d\u00e9ploy\u00e9e. V\u00e9rifier l''\u00e9tat dans la liste des applications
+probe.src.deploy.war.notWar.failure=Le d\u00e9ploiement a \u00e9chou\u00e9. Le fichier doit \u00eatre un .war
+probe.src.deploy.war.notinstalled={0} n'a pas \u00e9t\u00e9 install\u00e9(e)
+probe.src.deploy.war.uploadfailure=Probl\u00e8me pendant le transfert de: {0}
+probe.src.reset.datasource.c3p0=Cette source de donn\u00e9es ne peut \u00eatre r\u00e9initialis\u00e9e
+probe.src.reset.datasource.notfound=La ressource {0} n''existe pas
+
+probe.jsp.title.wrapper=Java Service Wrapper
+probe.jsp.wrapper.not_available=Cette JVM n'est pas control\u00e9e par Java Service Wrapper
+probe.jsp.wrapper.menu.restart=relancer JVM
+probe.jsp.wrapper.menu.stop=arr\u00eater JVM
+probe.jsp.wrapper.menu.thread_dump=Demander un dump du thread
+probe.jsp.wrapper.h3.info=Wrapper information
+probe.jsp.wrapper.h3.props=Propri\u00e9t\u00e9s du Wrapper
+probe.jsp.wrapper.confirm.restart=Etes-vous sur de vouloir red\u00e9marrer la JVM?
+probe.jsp.wrapper.confirm.stop=La JVM ne pourra pas \u00eatre relanc\u00e9e par Probe. Etes-vous sur de vouloir arr\u00e9ter la JVM?
+probe.jsp.wrapper.jvm.stopping=La JVM est en cours d'arr\u00eat. Pour la red\u00e9marrer, vous devrez utiliser la console.
+probe.jsp.wrapper.jvm.restarting=La JVM est en cours de red\u00e9marrage. Peut prendre plusieurs minutes.
+probe.jsp.wrapper.jvm.thread_dump=Le dump de thread de la JMV est demand\u00e9. Il se trouve dans la log du Wrapper.
+
+probe.jsp.wrapper.user=User:
+probe.jsp.wrapper.interactive_user=User interactif:
+probe.jsp.wrapper.java_pid=PID Java:
+probe.jsp.wrapper.pid=PID Wrapper:
+probe.jsp.wrapper.service=Lanc\u00e9 comme service:
+probe.jsp.wrapper.debug=Debug activ\u00e9:
+probe.jsp.wrapper.version=Version du Wrapper:
+
+probe.jsp.decorator.system.title=Syst\u00e8me
+probe.jsp.decorator.system.overview=R\u00e9sum\u00e9
+probe.jsp.decorator.system.memory=Util. m\u00e9moire
+probe.jsp.decorator.system.props=Propri\u00e9t\u00e9s syst\u00e8me
+probe.jsp.decorator.system.os=Infos OS
+probe.jsp.decorator.system.wrapper=Contr\u00f4le du Wrapper
+
+probe.jsp.os.h3.information=Infos OS
+probe.jsp.os.h3.charts=Histogrammes
+probe.jsp.os.chart.cpu=Util. CPU JVM (%)
+probe.jsp.os.chart.cpu.alt=Graphes d'utilisation CPU de la JVM
+probe.jsp.os.chart.cpu.legend=Utilisation CPU
+probe.jsp.os.chart.memory=Util. m\u00e9moire de l'OS & la JVM (KB)
+probe.jsp.os.chart.memory.alt=Graphe d'util. m\u00e9moire RAM de l'OS et de la JVM
+probe.jsp.os.chart.memory.legend.total=total utilis\u00e9
+probe.jsp.os.chart.memory.legend.jvm=utilis\u00e9 par la JVM
+probe.jsp.os.chart.swap=Utilisation du swap (KB)
+probe.jsp.os.chart.swap.alt=Graphe d'utilisation du swap
+probe.jsp.os.chart.swap.legend=swap utilis\u00e9
+#probe.jsp.os.chart.fd=File descriptors
+#probe.jsp.os.chart.fd.alt=File descriptors chart
+#probe.jsp.os.chart.fd.legend.open=open file descriptors
+#probe.jsp.os.chart.fd.legend.max=max file descriptors
+probe.jsp.os.card.name=Nom de l'OS:
+probe.jsp.os.card.version=Version d'OS:
+probe.jsp.os.card.processors=Processors:
+probe.jsp.os.card.totalMemory=RAM Totale:
+probe.jsp.os.card.freeMemory=RAM Libre:
+probe.jsp.os.card.committedVirtualMemory=M\u00e9moire JVM valid\u00e9e:
+probe.jsp.os.card.totalSwap=Swap total:
+probe.jsp.os.card.freeSwap=Swap libre:
+
+probe.jsp.title.testDataSource={0} -> {1}
+probe.src.dataSourceTest.resource.lookup.failure=La source de donn\u00e9es {0} n''existe pas
+probe.src.dataSourceTest.connection.failure=Impossible de se connecter \u00e0 la base {0}
+probe.src.dataSourceTest.connection.success=Connect\u00e9 \u00e0 la base de donn\u00e9es
+probe.src.dataSourceTest.sql.required=Texte de requ\u00eate SQL obligatoire
+probe.src.dataSourceTest.sql.failure=Erreur pendant l''ex\u00e9cution de la requ\u00eate. {0}
+probe.src.dataSourceTest.sql.null=NULL
+probe.src.dataSourceTest.cachedResultSet.failure=Echec de lecture du result set en cache
+probe.jsp.dataSourceTest.help=Cet \u00e9cran permet de tester vos sources de donn\u00e9es.\
+Tester connexion v\u00e9rifie si la connexion peut \u00eatre \u00e9tablie et affiche des infos sur la base.\
+Ex\u00e9cuter SQL ex\u00e9cute la requ\u00eate SQL saisie.\
+Voir le message en bas de l'\u00e9cran ainsi que le r\u00e9sultat ou les donn\u00e9es issues de l'ex\u00e9cution.\
+Avec l'historique affiche la liste des requ\u00eates d\u00e9j\u00e0 ex\u00e9cut\u00e9es.\
+Utiliser Avec les options pour limiter le nombre de lignes renvoy\u00e9es par votre requ\u00eate afin de limiter la consommation de ressources.
+probe.jsp.dataSourceTest.menu.back=Retour aux sources de donn\u00e9es
+probe.jsp.dataSourceTest.menu.connect=Tester connexion
+probe.jsp.dataSourceTest.menu.execute=Ex\u00e9cuter SQL (Ctrl+Enter)
+probe.jsp.dataSourceTest.menu.showHistory=Avec l'historique (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.hideHistory=Sans l'historique (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.showOptions=Avec les options (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.hideOptions=Sans les options (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.wrap=Retour ligne
+probe.jsp.dataSourceTest.menu.nowrap=1 ligne
+probe.jsp.dataSourceTest.menu.abbreviations=Help!
+probe.jsp.dataSourceTest.sqlForm.sql.label=SQL (auto-commit actif)
+probe.jsp.dataSourceTest.sqlForm.maxRows.label=Enregistrements \u00e0 r\u00e9cup\u00e9rer
+probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Enregistrements par page
+probe.jsp.dataSourceTest.sqlForm.historySize.label=Taille de l'historique
+probe.jsp.dataSourceTest.h3.results=R\u00e9sultat requ\u00eate
+probe.jsp.dataSourceTest.results.rowcount={0} enregistrement(s) impact\u00e9s.
+probe.jsp.dataSourceTest.h3.metaData=Infos base de donn\u00e9es
+probe.jsp.dataSourceTest.chart.usage.title=Utilisation de la source de donn\u00e9es
+probe.jsp.dataSourceTest.dbMetaData.col.propName=Nom de la propri\u00e9t\u00e9
+probe.jsp.dataSourceTest.dbMetaData.col.propValue=Valeur de la propri\u00e9t\u00e9
+probe.jsp.dataSourceTest.dbMetaData.dbProdName=Type de base de donn\u00e9es
+probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Version de base de donn\u00e9es
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=Nom du driver JDBC
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=Version du driver JDBC
+probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=Version JDBC
+probe.jsp.dataSourceTest.results.paging.banner.item_name=enregistrement
+probe.jsp.dataSourceTest.results.paging.banner.items_name=enregistrements
+probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
+probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Afficher un {0}.
+probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Afficher tous {2}.
+probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Afficher {2} de {3}.
+probe.jsp.dataSourceTest.results.paging.banner.first=Premier
+probe.jsp.dataSourceTest.results.paging.banner.prev=Pr\u00e9c\u00e9d.
+probe.jsp.dataSourceTest.results.paging.banner.next=Suivt.
+probe.jsp.dataSourceTest.results.paging.banner.last=Dern.
+probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Aller \u00e0 page n {0}
+probe.jsp.dataSourceTest.sql.completed=Ordre ex\u00e9cut\u00e9.
+probe.jsp.dataSourceTest.h3.queryHistory=Historique de requ\u00eates
+probe.jsp.dataSourceTest.queryHistory.empty=L'historique est vide
+
+probe.jsp.whois.timeout=Impossible d'ex\u00e9cuter la requ\u00eate WHOIS. V\u00e9rifier que WHOIS n'est pas filtr\u00e9 sur votre r\u00e9seau.
+
+probe.jsp.threadstack.native=code natif
+probe.jsp.threadstack.unknown=source inconnue
+probe.jsp.threadstack.unavailable=Trace stack indisponible pour ce thread
+
+probe.jsp.tooltip.close=fermer
+
+probe.jsp.sessions.h3=Sessions
+probe.jsp.sessions.search.h3=Crit\u00e8res de recherche de session
+probe.jsp.sessions.menu.showSearch=Recherche de session
+probe.jsp.sessions.menu.applySearch=Appliquer crit\u00e8res
+probe.jsp.sessions.menu.clearSearch=Effacer crit\u00e8res
+probe.jsp.sessions.menu.searchHelp=Help
+probe.jsp.sessions.search.help=Les conditions de recherche suivantes sont disponibles pour filtrer la liste des sessions.\
+Si Identifiant Session corresponds \u00e0 une expression r\u00e9guli\u00e8re.\
+Si Derni\u00e8re IP contient une sous-chaine.\
+Si Idle Time est inclu dans un interval sp\u00e9cifi\u00e9 en secondes.\
+Si Age est inclu dans un interval sp\u00e9cifi\u00e9 en secondes.\
+Si Nom d'attribut corresponds \u00e0 au moins une expression r\u00e9guli\u00e8re dans une liste d'expressions r\u00e9guli\u00e8res s\u00e9par\u00e9es par des virgules.\
+Cette condition permet de trouver une session avec un attribut A et/o\u00f9 un attribut B positionn\u00e9.
+probe.jsp.sessions.search.sessionId=ID de session (RE)
+probe.jsp.sessions.search.attrName=Attributs (liste RE)
+probe.jsp.sessions.search.ageFrom=Age depuis (sec)
+probe.jsp.sessions.search.ageTo=\u00e0
+probe.jsp.sessions.search.idleTimeFrom=Inactive depuis (sec)
+probe.jsp.sessions.search.idleTimeTo=\u00e0
+probe.jsp.sessions.search.lastIP=Dernier IP (extrait)
+probe.jsp.sessions.search.results.h3=R\u00e9sultats de recherche de session
+probe.src.sessions.search.empty=Crit\u00e8res de recherche vides
+probe.src.sessions.search.results.empty=Aucune session ne correspond aux crit\u00e8res
+probe.src.sessions.search.invalid=Crit\u00e8res de recherche invalides
+probe.src.sessions.search.invalid.sessionId=RegExp d''ID de session invalide. {0}
+probe.src.sessions.search.invalid.attrName=RegExp de nom d''attribut invalide. {0}
+probe.src.sessions.search.invalid.ageFrom=Valeur "Age depuis" invalide
+probe.src.sessions.search.invalid.ageTo=Valeur "Age \u00e0" invalide
+probe.src.sessions.search.invalid.idleTimeFrom=Valeur "Inactive depuis" invalide
+probe.src.sessions.search.invalid.idleTimeTo=Valeur "Inactive \u00e0" invalide
+probe.src.sessions.search.invalid.lastIP=RegExp "Dernier IP" invalide. {0}
+
+probe.jsp.app.nav.title=Application
+probe.jsp.app.nav.summary=R\u00e9sum\u00e9
+probe.jsp.app.nav.sessions=Sessions
+probe.jsp.app.nav.attributes=Attributs
+probe.jsp.app.nav.jsps=JSPs
+probe.jsp.app.nav.resources=Ressources
+probe.jsp.app.nav.initParams=Param\u00e8tres
+probe.jsp.app.nav.webxml=Descripteur de d\u00e9ploiement
+probe.jsp.app.nav.contextxml=Descripteur de contexte
+probe.jsp.app.nav.filters=Filtres
+probe.jsp.app.nav.servlets=Servlets
+
+probe.jsp.title.app.initParams={0} - param\u00e8tres d''initialisation
+probe.jsp.app.initParams.h3.params=Param\u00e8tres d'initialisation de contexte
+probe.jsp.app.initParams.col.name=Nom
+probe.jsp.app.initParams.col.value=Valeur
+probe.jsp.app.initParams.col.source=Source
+probe.jsp.app.initParams.source.deplDescr=web.xml
+probe.jsp.app.initParams.source.context=contexte
+probe.jsp.app.initParams.empty=Il n'y a pas de param\u00e8tres d'initialisation de contexte d\u00e9finis pour cette application
+
+probe.jsp.title.app.viewXMLConf={0} - {1}
+probe.jsp.app.viewXMLConf.notfound= {0} introuvable pour cette application
+probe.jsp.app.viewXMLConf.h3.scr={0} source
+probe.src.app.viewxmlconf.webxml.desc=descripteur de deploiement
+probe.src.app.viewxmlconf.contextxml.desc=descripteur de contexte
+
+probe.jsp.title.app.filters={0} - filtres
+probe.jsp.title.app.filtermaps={0} - mappings de filtres
+probe.jsp.app.filtermaps.opt.defs=D\u00e9finitions de filtres
+probe.jsp.app.filters.opt.maps=Mappings de filtres
+probe.jsp.app.filters.h3.defs=Filtres
+probe.jsp.app.filtermaps.h3.maps=Mappings de filtres
+probe.jsp.app.filters.col.filterName=Nom
+probe.jsp.app.filters.col.filterClass=Classe
+probe.jsp.app.filters.col.filterDesc=Description
+probe.jsp.app.filtermaps.col.url=URL
+probe.jsp.app.filtermaps.col.filterName=Nom du filtre
+probe.jsp.app.filtermaps.col.servletName=Nom de la servlet
+probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
+probe.jsp.app.filters.empty=Il n'y a pas de filtres d\u00e9finis pour cette application
+probe.jsp.app.filtermaps.empty=Il n'y a pas de mappings de filtres d\u00e9finis pour cette application
+
+probe.jsp.title.servlets.all=Servlets
+probe.jsp.title.servlets.app={0} - servlets
+probe.jsp.title.servletmaps.all=Mappings de servlets
+probe.jsp.title.servletmaps.app={0} - mappings de servlets
+probe.jsp.servletmaps.opt.defs=Servlets
+probe.jsp.servletmaps.opt.all=Montrer Tout
+probe.jsp.servlets.opt.maps=Mappings de servlet
+probe.jsp.servlets.opt.all=Montrer Tout
+probe.jsp.servlets.h3.defs=Servlets
+probe.jsp.servletmaps.h3.maps=Mappings de servlet
+probe.jsp.servletmaps.col.url=URL
+probe.jsp.servletmaps.col.servletName=Nom de servlet
+probe.jsp.servlets.col.applicationName=App
+probe.jsp.servlets.col.servletName=Nom
+probe.jsp.servletmaps.col.servletClass=Classe
+probe.jsp.servlets.col.available=Dispo
+probe.jsp.servlets.col.loadOnStartup=Lanc.
+probe.jsp.servlets.empty=Il n'y a pas de servlets d\u00e9finies pour cette application
+probe.jsp.servletmaps.empty=Il n'y a pas de mappings de servlets d\u00e9finis pour cette application
+probe.jsp.servlets.col.minTime=Tps min
+probe.jsp.servlets.col.maxTime=Tps max
+probe.jsp.servlets.col.processingTime=Tps Trait.
+probe.jsp.servlets.col.loadTime=Tps Charg.
+probe.jsp.servlets.col.multiThreaded=Mult Thrd
+probe.jsp.servlets.col.requestCount=N.Rq
+probe.jsp.servlets.col.errorCount=Err
+
+probe.jsp.title.app.summary={0} - r\u00e9sum\u00e9 de l''application
+probe.jsp.app.summary.application=Nom de l'appli
+probe.jsp.app.summary.description=Description:
+probe.jsp.app.summary.distributable=Cluster:
+probe.jsp.app.summary.docBase=Doc. base:
+probe.jsp.app.summary.servletVersion=Version Servlet:
+probe.jsp.app.summary.sessionTimeout=Session timeout:
+probe.jsp.app.summary.servletCount=Nb Servlets:
+probe.jsp.app.summary.status=Cette application est
+probe.jsp.app.summary.requestCount=Nb Requ\u00eates:
+probe.jsp.app.summary.sessionCount=Sessions
+probe.jsp.app.summary.sessionAttributeCount=Attrs. session
+probe.jsp.app.summary.sessionSize=Taille session
+probe.jsp.app.summary.contextAttributeCount=Attrs. contexte
+probe.jsp.app.summary.serializable=S\u00e9rialisable
+probe.jsp.app.summary.errorCount=Nb Erreurs:
+probe.jsp.app.summary.processingTime=Tps de Trait.:
+probe.jsp.app.summary.minTime=Tps min:
+probe.jsp.app.summary.maxTime=Tps max:
+probe.jsp.app.summary.avgTime=Temps de r\u00e9ponse moyen
+probe.jsp.app.summary.h3.static=Infos application
+probe.jsp.app.summary.h3.runtime=Information environnement
+probe.jsp.app.summary.invalidApp=L'application est invalide
+probe.jsp.app.summary.runtime.unavailable=Les informations ne sont pas disponibles car l'application n'est pas en cours de fonctionnement
+probe.jsp.app.summary.menu.start=Lanc.
+probe.jsp.app.summary.menu.stop=Stop
+probe.jsp.app.summary.menu.reload=Recharg.
+probe.jsp.app.summary.menu.undeploy=Ind\u00e9ploie
+probe.jsp.app.summary.menu.goTo=Aller \u00e0
+probe.jsp.app.summary.menu.startStats=D\u00e9marrer la r\u00e9colte des statistiques
+probe.jsp.app.summary.menu.stopStats=Arr\u00eater la r\u00e9colte des statistiques
+probe.jsp.app.summary.undeploy.confirm=Cette op\u00e9ration est irr\u00e9versible. Etes-vous sur de SUPPRIMER {0}?
+probe.jsp.app.summary.dataSourceUsageScore=Utilisation de la source de donn\u00e9es
+probe.jsp.app.summary.jdbcUsage.title=Util.Max.conn. {0}%
+probe.jsp.app.summary.h3.charts=Graphique des Statistiques
+probe.jsp.app.summary.charts.requests.title=Nombre de Requ\u00eates
+probe.jsp.app.summary.charts.avgProcTime.title=Temps de r\u00e9ponse moyen (ms)
+probe.jsp.app.summary.charts.requests.legend=Requ\u00eates
+probe.jsp.app.summary.charts.errors.legend=Erreurs
+probe.jsp.app.summary.charts.avgProcTime.legend=Temps de r\u00e9ponse moyen
+
+probe.jsp.title.allappstats=Statistiques de l'application
+probe.jsp.allappstats.charts.totalAvgProcTime.legend=Temps de r\u00e9ponse moyen
+probe.jsp.allappstats.charts.totalReq.legend=Requ\u00eates
+probe.jsp.allappstats.charts.totalAvgProcTime.title=Temps de r\u00e9ponse moyen cumul\u00e9 (ms)
+probe.jsp.allappstats.charts.allAppAvgProcTime.title=Temps de r\u00e9ponse moyen par application (ms)
+probe.jsp.allappstats.charts.totalReq.title=Requ\u00eates cumul\u00e9es
+probe.jsp.allappstats.charts.allAppReq.title=Requ\u00eates par application (ms)
+probe.jsp.allappstats.h3.charts=Graphiques de statistiques
+
+#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
+#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
+#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
+#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
+
+#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
+#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
diff --git a/web/src/main/conf/WEB-INF/messages_it.properties b/web/src/main/conf/WEB-INF/messages_it.properties
index ea7012d545..20e5f9f600 100644
--- a/web/src/main/conf/WEB-INF/messages_it.properties
+++ b/web/src/main/conf/WEB-INF/messages_it.properties
@@ -1,718 +1,718 @@
-#
-# Licensed under the GPL License. You may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-#
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-
-# Italian translation by Paolo Pedrelli (paolo.pedrelli@gmail.com)
-probe.jsp.i18n.credit=Traduzione italiana di Paolo Pedrelli
-#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
-
-probe.jsp.generic.no=no
-probe.jsp.generic.yes=s\u00ec
-probe.jsp.generic.abbreviations=Cosa sono queste abbreviazioni ?
-
-probe.jsp.app.attributes.col.delete==Rimuovi attributo
-probe.jsp.app.attributes.col.delete.title==Rimuovi attributo
-probe.jsp.app.attributes.col.name=Nome
-probe.jsp.app.attributes.col.type=Tipo
-probe.jsp.app.attributes.col.value=Valore
-probe.jsp.app.attributes.h3.attributes=Attributi del contesto della servlet
-probe.jsp.app.attributes.noattributes=Non ci sono attributi nel contesto di questa servlet
-
-probe.jsp.applications.alt.reload=ricarica
-probe.jsp.applications.alt.undeploy=Disinstalla
-probe.jsp.applications.col.contextAttributeCount=Cont. Attr.
-probe.jsp.applications.col.description=Descrizione
-probe.jsp.applications.col.distributable=Clustred.?
-probe.jsp.applications.col.jdbcUsage=Utilizzo Jdbc
-probe.jsp.applications.col.jsp=JSP
-probe.jsp.applications.col.name=Nome
-probe.jsp.applications.col.serializable=Ser.?
-probe.jsp.applications.col.sessionAttributeCount=Attr. sess.
-probe.jsp.applications.col.sessionCount=Sess.
-probe.jsp.applications.col.sessionTimeout=Timeout Sess.
-probe.jsp.applications.col.size=Dimensione
-probe.jsp.applications.col.status=Stato
-probe.jsp.applications.col.requestCount=Rich.
-#probe.jsp.applications.help.contextAttributeCount=total number of ServletContext attributes
-#probe.jsp.applications.help.distributable=application is "distributable"
-#probe.jsp.applications.help.requestCount=total number of requests processed by servlets
-#probe.jsp.applications.help.serializable=all session attributes implement java.io.Serializable
-#probe.jsp.applications.help.sessionAttributeCount=total number of session attributes
-#probe.jsp.applications.help.sessionCount=number of sessions
-probe.jsp.applications.hidesize=Nascondi dimensione sessioni
-probe.jsp.applications.jdbcUsage.title=Max uso conn. {0}%
-probe.jsp.applications.jsp.view=vista
-probe.jsp.applications.serializable.no=NO
-probe.jsp.applications.serializable.yes=s\u00ec
-probe.jsp.applications.showsize=Stima dimensione sessioni (potrebbe essere lento)
-probe.jsp.applications.status.down=fermo
-probe.jsp.applications.status.down.title=Avvia {0}
-probe.jsp.applications.status.up=Attivo
-probe.jsp.applications.title.reload=Ricarica {0}
-probe.jsp.applications.title.status.up=Ferma {0}
-probe.jsp.applications.title.undeploy=Disinstalla {0}
-probe.jsp.applications.undeploy.confirm=Questa operazione non pu\u00f2 essere revertita. Vuoi verante RIMUOVERE {0}?
-
-probe.jsp.connectors.information=Informazioni di traffico per tutti i connettori disponibili. L'alimentazione \u00e9 in diretta e i grafici sono aggiornati automaticamente.
-probe.jsp.connectors.processor.errorCount=Conteggio Errori:
-probe.jsp.connectors.processor.maxTime=Tempo max:
-probe.jsp.connectors.processor.processingTime=Tempo elab.:
-probe.jsp.connectors.processor.received=Ricevuti:
-probe.jsp.connectors.processor.requestCount=Conteggio richieste:
-probe.jsp.connectors.processor.sent=Inviati:
-probe.jsp.connectors.proc_time.title=Tempo elab. (ms) per ogni intervallo
-probe.jsp.connectors.requests.title=Numero di richieste per ogni intervallo
-probe.jsp.connectors.traffic.title=Volume di traffico (byte) per ogni intervallo
-probe.jsp.connectors.wrk.col.in=IN
-probe.jsp.connectors.wrk.col.out=OUT
-probe.jsp.connectors.wrk.col.processingTime=Tempo Esec.
-probe.jsp.connectors.wrk.col.remoteAddr=IP remoto
-probe.jsp.connectors.wrk.col.stage=Fase
-probe.jsp.connectors.wrk.col.url=URL
-probe.jsp.connectors.wrk.col.thread=Thread
-probe.jsp.connectors.wrk.empty=Nessun processo
-probe.jsp.connectors.wrk.stage.endInput=EndInput
-probe.jsp.connectors.wrk.stage.endOutput=EndOutput
-probe.jsp.connectors.wrk.stage.ended=Terminato
-probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
-probe.jsp.connectors.wrk.stage.new=Nuovo
-probe.jsp.connectors.wrk.stage.parse=Parse
-probe.jsp.connectors.wrk.stage.prepare=Prepara
-probe.jsp.connectors.wrk.stage.service=Servizio
-
-probe.jsp.cluster.chart.requests=Richieste ogni {0} sec.
-probe.jsp.cluster.chart.traffic=Traffico ogni {0} sec.
-probe.jsp.cluster.h3.info=Informazioni del cluster
-probe.jsp.cluster.h3.members=Membri del cluster
-probe.jsp.cluster.heartbeatFreq=Freq. battito:
-probe.jsp.cluster.heartbeatTimeout=Timeout battito:
-probe.jsp.cluster.info=Informazioni:
-probe.jsp.cluster.manager=Manager:
-probe.jsp.cluster.mcastAddress=Indirizzo multicast:
-probe.jsp.cluster.mcastBindAddress=Indirizzo multicast collegato:
-probe.jsp.cluster.mcastBindAddress.all=tutto
-probe.jsp.cluster.mcastTTL=Mlticast TTL
-probe.jsp.cluster.members.col.address=Indirizzo
-probe.jsp.cluster.members.col.avgMsgSize=Dimensione Media
-probe.jsp.cluster.members.col.closes=Chiude
-probe.jsp.cluster.members.col.connectCount=CC
-probe.jsp.cluster.members.col.connected=Conn.?
-probe.jsp.cluster.members.col.disconnectCount=DC
-probe.jsp.cluster.members.col.failures=Fallimenti
-probe.jsp.cluster.members.col.inQueueCounter=InQ
-probe.jsp.cluster.members.col.keepAlive=Mantieni attivo
-probe.jsp.cluster.members.col.openFailures=Aperture fallite
-probe.jsp.cluster.members.col.opens=Apre
-probe.jsp.cluster.members.col.outQueueCounter=OutQ
-probe.jsp.cluster.members.col.queueSize=QSz
-probe.jsp.cluster.members.col.queueSizeBytes=QSzB
-probe.jsp.cluster.members.col.requests=Rich.
-probe.jsp.cluster.members.col.resends=Reinvia
-probe.jsp.cluster.members.col.sent=Inviati
-probe.jsp.cluster.members.col.socketLimit=Limite socket
-probe.jsp.cluster.members.failing.alt=fallimenti
-probe.jsp.cluster.members.failing.title=Si presume che il membro stia fallendo
-probe.jsp.cluster.members.healthy.alt=healthy
-probe.jsp.cluster.members.healthy.title=The member is healthy
-probe.jsp.cluster.mode=Replication mode:
-probe.jsp.cluster.name=Nome:
-probe.jsp.cluster.noMembers=Non esistono membri attivi del cluster noti a questo nodo
-probe.jsp.cluster.notAvailable=Le informazioni del cluster sono disponibili solo ai Tomcat 5.5.x col supporto al cluster abilitato.
-probe.jsp.cluster.received=Ricevuti
-probe.jsp.cluster.receiverAddress=Indirizzo ricevitore :
-probe.jsp.cluster.receiverPort=Porta ricevitore:
-probe.jsp.cluster.sent=Inviati
-
-probe.jsp.copyright=Copyright 2009-${copyright}. Hai domande o suggerimenti? Visitaci a https://github.com/psi-probe/psi-probe
-
-probe.jsp.dataSourceGroups.empty=Non esistono data source correttamente configurate disponibili a questa istanza
-probe.jsp.dataSourceGroups.information=La tabella seguente contiene il numero totale di connessioni attiualmente aperte e potenzialmente abilitate alla connessione verso il database raggruppate per url jdbc. Questa informazione pu\u00f2 aiutare la stima di quante connessioni verso un particolare database possono essere aperte da risorse jdbc configurate all'interno del container.
-probe.jsp.dataSourceGroups.jdbcUsage.title=Max. uso conn. {0}%
-probe.jsp.dataSourceGroups.list.col.busy=Totale occupate
-probe.jsp.dataSourceGroups.list.col.established=Totale stab.
-probe.jsp.dataSourceGroups.list.col.max=Totale max.
-probe.jsp.dataSourceGroups.list.col.resourceCount=Conteggio risorse
-probe.jsp.dataSourceGroups.list.col.url=URL
-probe.jsp.dataSourceGroups.list.col.usage=Uso
-probe.jsp.dataSourceGroups.menu.back=Torna a lista sorgenti dati
-
-#probe.jsp.datasources.h3.global=Global Resources
-#probe.jsp.datasources.h3.app=Application Resources
-#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
-#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
-probe.jsp.datasources.empty=Non esistono data source configurate per questa istanza di Tomcat
-#probe.jsp.datasources.help.max=maximum number of connections in the pool
-#probe.jsp.datasources.help.established=number of established connections that can be reused
-#probe.jsp.datasources.help.busy=number of busy connections cannot be reused
-probe.jsp.datasources.list.col.application=App
-probe.jsp.datasources.list.col.auth=Autore
-probe.jsp.datasources.list.col.busy=B
-probe.jsp.datasources.list.col.description=Descrizione
-probe.jsp.datasources.list.col.established=E
-probe.jsp.datasources.list.col.linkTo=Lnk
-probe.jsp.datasources.list.col.max=M
-probe.jsp.datasources.list.col.reset.alt=reset
-probe.jsp.datasources.list.col.resource=Risorsa
-probe.jsp.datasources.list.col.type=Tipo
-probe.jsp.datasources.list.col.url=URL
-probe.jsp.datasources.list.col.usage=Uso
-probe.jsp.datasources.list.col.user=Utente
-probe.jsp.datasources.list.misconfigured.alt=errore
-probe.jsp.datasources.opt.groupByJdbcUrl=raggr. per url jdbc
-
-probe.jsp.deployment.war.success={0} \u00e9 stato installato
-probe.jsp.deployment.compilationDetails=Vista dettagli compilazione
-probe.jsp.deployment.s1.compile.label=Precompila le pagine JSP dopo la distribuzione dell'applicazione (pu\u00f2 durare alcuni minuti)
-probe.jsp.deployment.s1.description=Carica un file .war sul server. Se il nome del contesto non \u00e9 specificato verr\u00e0 usato il nome del file. Caricando file .war con META-INF/context.xml assicurarsi che il contesto abbia lo stesso attributo "path" del contesto che state distribuendo, altrimenti confonder\u00e0 totalmente Tomcat 5.0.x
-probe.jsp.deployment.s1.discard.label=Scarta la "work" directory se esiste
-probe.jsp.deployment.s1.file.label=Seleziona un file .war da caricare
-probe.jsp.deployment.s1.submit=Distribuisci
-probe.jsp.deployment.s1.title=Carica applicazione (semplice)
-probe.jsp.deployment.s1.update.label=Aggiorna l'applicazione se \u00e9 gi\u00e0 stata distribuita
-probe.jsp.deployment.s2.context.label=Nome del contesto (es. /dummy)
-probe.jsp.deployment.s2.description=Usa questa opzione hai gi\u00e0 creato il file .xml del contesto in %CATALINA_BASE%/conf/Catalina/localhost/. Si presume che il nome del contesto sia quello del file .xml. Per esempio: per il contesto "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml.
NOTA: Tomcat 5.0.x richiederebbe l'attributo "path" nel file .xml !
-probe.jsp.deployment.s2.title=Distribuisci contesto con nome (avanzato)
-
-probe.jsp.follow.h3.fileContent=Contenuto file
-probe.jsp.follow.h3.fileInfo=Informazioni sul file
-#probe.jsp.follow.h3.sources=Logging sources
-probe.jsp.follow.loading=Sto caricando...
-probe.jsp.follow.menu.back=Torna alla lista dei file di log
-probe.jsp.follow.menu.clear=Svuota buffer
-probe.jsp.follow.menu.download=Scarica
-probe.jsp.follow.menu.nowrap=Togli a capo riga
-probe.jsp.follow.menu.pause=Sospendi tailing
-probe.jsp.follow.menu.resume=Riprendi tailing
-probe.jsp.follow.menu.wrap=Righe a capo
-probe.jsp.follow.menu.zoomin=Ingrandisci
-probe.jsp.follow.menu.zoomout=Riduci
-probe.jsp.followed_file_info.fileName=Nome file:
-probe.jsp.followed_file_info.lastModified= Ultima modifica:
-probe.jsp.followed_file_info.size= Dimensione:
-
-probe.jsp.jsps.col.lastmodified=Ultima modifica
-probe.jsp.jsps.col.message=Messaggio
-probe.jsp.jsps.col.name=Nome JSP
-probe.jsp.jsps.col.size=Dimensione
-probe.jsp.jsps.col.status=Stato
-probe.jsp.jsps.notfound=Questa applicazionw non ha file JSP
-probe.jsp.jsps.opt.compile=Compila i selezionati
-probe.jsp.jsps.opt.compileall=Compila tutto
-probe.jsp.jsps.opt.discardscratch=Scarta "work" dir
-probe.jsp.jsps.opt.toggleall=Inverti tutto
-probe.jsp.jsps.status.compiled=Compilati
-probe.jsp.jsps.status.failed=FALLITI
-probe.jsp.jsps.status.outdated=Out dated
-
-probe.jsp.logs.col.app=App
-probe.jsp.logs.col.class=Classe
-probe.jsp.logs.col.file=Nome file
-#probe.jsp.logs.col.level=Level
-probe.jsp.logs.col.modified=Modificato
-probe.jsp.logs.col.name=Nome
-probe.jsp.logs.col.size=Dimensione
-probe.jsp.logs.col.type=Tipo
-probe.jsp.logs.download.alt=scarica
-probe.jsp.logs.hideapps=Mostra solo gli esistenti
-probe.jsp.logs.showapps=Mostra tutto
-probe.jsp.logs_notSupported.message=La vs. Java Virtual Machine {0} {1} non supporta completamente la SUN reflection API - sun.reflect.ReflectionFactory. La funzione di consultazione del log \u00e9 disabilitata.
-
-probe.jsp.memory.advise.finalization=Consiglia Finalizazione
-probe.jsp.memory.advise.gc=Consiglia GC
-probe.jsp.memory.col.committed=Committed
-probe.jsp.memory.col.group=Gruppo
-probe.jsp.memory.col.initial=Iniziale
-probe.jsp.memory.col.max=Massimo
-probe.jsp.memory.col.name=Nome
-probe.jsp.memory.col.plot=Grafico
-probe.jsp.memory.col.usageScore=Score
-probe.jsp.memory.col.used=Usato
-probe.jsp.memory.h3.charts=
Storico dell'impegno memoria
-probe.jsp.memory.h3.table=Memoria attualmente impegnata
-probe.jsp.memory.loading=In caricamento...
-probe.jsp.memory.usage.title=Uso {0}%
-probe.jsp.memory.notAvailable=Questa pagina richiede Java5 con JMX Agent abilitato. Per abilitare JXM Agent aggiungere "-Dcom.sun.management.jmxremote" alla command line java oppure alla variabile d'ambiente $JAVA_OPTS. In caso di JDK IBM aggiungere queste propiet\u00e0: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
-
-probe.jsp.menu.applications=Applicazioni
-probe.jsp.menu.cluster=Cluster
-probe.jsp.menu.connectors=Connettori
-probe.jsp.menu.datasources=Data Sources
-probe.jsp.menu.deployment=Deployment
-probe.jsp.menu.logs=Logs
-probe.jsp.menu.memory=Memoria
-probe.jsp.menu.quickcheck=Controllo rapido
-probe.jsp.menu.sysinfo=Sistema
-probe.jsp.menu.threads=Threads
-
-probe.jsp.noaccess=Mancano privilegi sufficienti per accedere a questa pagina. Usare la barra di navigazione per scegliere un'altra area o fare clic "back" buttone nel vs. browser.
-probe.jsp.noaccess.ajax=Mancano privilegi sufficienti per accedere a questa funzione.
-probe.jsp.noaccess.title=403 Proibito
-probe.jsp.notfound=La pagina richiesta non esiste su questo server. Usare la barra di navigazione per localizzare l'area richiesta.
-probe.jsp.notfound.title=404 Non trovato
-
-probe.jsp.resources.col.auth=Autenticazione
-probe.jsp.resources.col.linkTo=Collegamento a
-probe.jsp.resources.col.name=Nome
-probe.jsp.resources.col.type=Tipo
-probe.jsp.resources.empty=Non esistono risorse definite per questa applicazione
-probe.jsp.resources.info.busy=Occupato:
-probe.jsp.resources.info.connectionUsage.alt=Uso conn. {0}%
-probe.jsp.resources.info.established=Stabilita:
-probe.jsp.resources.info.max=Max:
-probe.jsp.resources.info.misconfigured=Questa risorsa \u00e9 mal configurata e le informazioni runtime non sono disponibili
-probe.jsp.resources.info.misconfigured.alt=punto esclamativo
-probe.jsp.resources.info.reset=
-probe.jsp.resources.info.reset.alt=reset
-probe.jsp.resources.info.title=Ulteriori informazioni:
-
-probe.jsp.servlet_source.h3.source=Codice servlet autogenerato
-probe.jsp.servlet_source.opt.jsp=Vista JSP
-
-probe.jsp.sessionAttibutes.card.age=Durata:
-probe.jsp.sessionAttibutes.card.application=Applicazione:
-probe.jsp.sessionAttibutes.card.created=Creato:
-probe.jsp.sessionAttibutes.card.expiryTime=Scadenza:
-probe.jsp.sessionAttibutes.card.id=ID:
-probe.jsp.sessionAttibutes.card.idleTime=Periodo inattivit\u00e0:
-probe.jsp.sessionAttibutes.card.info=Info:
-probe.jsp.sessionAttibutes.card.lastAccessed=Ultimo accesso:
-probe.jsp.sessionAttibutes.card.manager=Tipo gestore:
-probe.jsp.sessionAttibutes.card.maxIdleTime=Max tempo inattivit\u00e0:
-probe.jsp.sessionAttibutes.card.serializable=Serializzabile:
-probe.jsp.sessionAttibutes.card.serializable.no=NO
-probe.jsp.sessionAttibutes.card.serializable.yes=s\u00ec
-probe.jsp.sessionAttibutes.card.size=Dimensione:
-probe.jsp.sessionAttibutes.col.delete=rimuovi
-probe.jsp.sessionAttibutes.col.delete.title=rimuovi attributo
-probe.jsp.sessionAttibutes.col.name=Nome
-probe.jsp.sessionAttibutes.col.serializable=Ser.?
-probe.jsp.sessionAttibutes.col.size=Dimensione
-probe.jsp.sessionAttibutes.col.type=Tipo
-probe.jsp.sessionAttibutes.col.value=Valore
-probe.jsp.sessionAttibutes.h3.attributes=Attributi sessione
-probe.jsp.sessionAttibutes.h3.card=Scheda sessione
-probe.jsp.sessionAttibutes.invalidSid=ID sessione non valido o sessione scaduta
-probe.jsp.sessionAttibutes.menu.back=Torna a lista sessioni
-probe.jsp.sessionAttibutes.menu.destroy=Distruggi questa sessione
-probe.jsp.sessionAttibutes.noattributes=Questa sessione non ha attributi
-
-probe.jsp.sessions.col.age=Durata
-probe.jsp.sessions.col.creationTime=Istante creazione
-probe.jsp.sessions.col.expiryTime=Istante scadenza
-probe.jsp.sessions.col.id=ID sessione
-probe.jsp.sessions.col.applicationName=App
-probe.jsp.sessions.col.idleTime=Periodo inattivit\u00e0
-probe.jsp.sessions.col.lastAccessTime=Istante ultimo accesso
-probe.jsp.sessions.col.objectCount=Conteggio oggetti
-probe.jsp.sessions.col.serializable=Ser.
-probe.jsp.sessions.col.size=Dimensione
-probe.jsp.sessions.col.lastIP=Ultimo IP
-probe.jsp.sessions.unknown.ip=sconosciuto
-probe.jsp.sessions.empty=Non esistono sessioni
-probe.jsp.sessions.menu.expire=Scadenza
-probe.jsp.sessions.menu.toggle=Inverti
-probe.jsp.sessions.status.no=NO
-probe.jsp.sessions.status.yes=s\u00ec
-#probe.jsp.sessions.opt.all=Show all
-probe.jsp.showsize=Dimensioni stimate
-probe.jsp.hidesize=Nascondi dimensione
-
-probe.jsp.sysinfo.col.name=Nome propiet\u00e0
-probe.jsp.sysinfo.col.value=Valore propiet\u00e0
-probe.jsp.sysinfo.container.title=Informazioni container
-probe.jsp.sysinfo.memory.adviseGC=Consiglia Garbage Collection
-probe.jsp.sysinfo.memory.free=Libera:
-probe.jsp.sysinfo.memory.max=Max:
-probe.jsp.sysinfo.memory.title=Utilizzo della memoria
-probe.jsp.sysinfo.memory.total=Totale:
-probe.jsp.sysinfo.memory.usage=L'impegno attuale di memoria \u00e9
-probe.jsp.sysinfo.memory.usage.alt=Barra impegno memoria
-probe.jsp.sysinfo.os.applicationBase=Base applicazione:
-probe.jsp.sysinfo.os.catalinaBase=catalina.base:
-probe.jsp.sysinfo.os.catalinaHome=catalina.home:
-probe.jsp.sysinfo.os.configBase=Base configurazione:
-probe.jsp.sysinfo.os.container=Container:
-probe.jsp.sysinfo.os.currentTime=Oraio attuale:
-probe.jsp.sysinfo.os.jvm=JVM:
-probe.jsp.sysinfo.os.name=OS:
-probe.jsp.sysinfo.os.processors=Processori:
-probe.jsp.sysinfo.os.title=Informazioni S.O.
-probe.jsp.sysinfo.os.workingDir=Cartella di lavoro:
-probe.jsp.sysinfo.sysproperties.title=Propiet\u00e0 di sistema
-
-probe.jsp.threadpools.currentThreadCount=Conteggio thread attuali
-probe.jsp.threadpools.currentThreadsBusy= Thread attuali ocupati
-probe.jsp.threadpools.maxSpareThreads= Num. max threads di riserva
-probe.jsp.threadpools.maxThreads= Limite max thread
-probe.jsp.threadpools.menu.threads=Threads attivi
-probe.jsp.threadpools.minSpareThreads= Num. min threads di riserva
-probe.jsp.threadpools.name=Nome
-
-probe.jsp.threads.col.application=App
-probe.jsp.threads.col.classLoader=Class loader
-probe.jsp.threads.col.daemon=D
-probe.jsp.threads.col.groupName=Gruppo
-probe.jsp.threads.col.interrupted=I
-probe.jsp.threads.col.name=Nome
-probe.jsp.threads.col.priority=P
-probe.jsp.threads.col.runnableClass=Lanciabile
-probe.jsp.threads.col.threadClass=Classe thread
-probe.jsp.threads.col.id=ID
-probe.jsp.threads.col.execPoint=Exec. point
-probe.jsp.threads.col.state=Stato
-probe.jsp.threads.col.inNative=In.Native
-probe.jsp.threads.col.suspended=Susp.
-probe.jsp.threads.col.waitedCount=WC
-probe.jsp.threads.col.blockedCount=BC
-#probe.jsp.threads.help.priority=thread priority, the higher the number the higher the priority
-#probe.jsp.threads.help.daemon=thread is a daemon
-#probe.jsp.threads.help.interrupted=thread has been interrupted
-#probe.jsp.threads.help.inNative=true if thread is executing native code
-#probe.jsp.threads.help.suspended=thread is suspended
-#probe.jsp.threads.help.waitedCount="wait count" - number of times thread has been waiting on something
-#probe.jsp.threads.help.blockedCount="blocked count" - number of times thread has been blocked
-probe.jsp.threads.info.loading=Caricamento...
-probe.jsp.threads.info.unavailable=Informazione URL non disponibile
-probe.jsp.threads.killmsg=La cancellazione indiscriminata di thread pu\u00f2 destabilizzare la JVM. Sei sicuro di procedere {0}?
-probe.jsp.threads.menu.threadpools=Pool di thread
-probe.jsp.threads.stop.alt=Ferma
-
-probe.jsp.title.app.attributes={0} - attributi contesto
-probe.jsp.title.applications=Applicazioni installate
-probe.jsp.title.cluster=Stato cluster
-probe.jsp.title.connectors=Connettori
-probe.jsp.title.dataSourceGroups=Sorgenti dati raggruppati per url jdbc
-probe.jsp.title.datasources=Data Sources disponibili
-probe.jsp.title.deployment=Deployment applicazione
-probe.jsp.title.follow=Tailing log
-probe.jsp.title.jsps={0} - JSP distribuite
-probe.jsp.title.logs=Logs
-probe.jsp.title.logs_notSupported=Non supportato
-probe.jsp.title.memory=Utilizzo della memoria da parte della JVM
-probe.jsp.title.quickcheck=Controllo rapido
-probe.jsp.title.resources={0} - risorse
-probe.jsp.title.servlet_source=Sorgenti generate dalla servlet
-probe.jsp.title.sessionAttibutes=Attributi sessione
-probe.jsp.title.sessions={0} - sessioni
-probe.jsp.title.sessions.all=Sessioni
-probe.jsp.title.sysinfo=Informazioni di sistema
-probe.jsp.title.threadpools=Pool di thread
-probe.jsp.title.threads=Threads attivi
-probe.jsp.title.viewsource={0} - Visualizza sorgente
-probe.jsp.uptime=ATTIVO per {0} giorni {1} ore {2} minuti
-probe.jsp.version=Versione {0} in esecuzione su {1}
-
-probe.jsp.viewsource.appname=Nome applicazione:
-probe.jsp.viewsource.encoding=Codifica:
-probe.jsp.viewsource.filename=Nome file:
-probe.jsp.viewsource.h3.info=JSP information
-probe.jsp.viewsource.h3.source=Codice sorgente JSP
-probe.jsp.viewsource.lastmodified=Ultima modifica:
-probe.jsp.viewsource.notfound=Sfortunatamente non \u00e9 possibile visualizzare il contenuto di questo file. Torna indietro e seleziona il file dalla lista.
-probe.jsp.viewsource.opt.back=Torna alla lista delle JSP
-probe.jsp.viewsource.opt.compile=compila
-probe.jsp.viewsource.opt.viewServlet=visualiza la servlet generata
-probe.jsp.viewsource.size=Dimensione:
-probe.jsp.viewsource.state=Stato:
-
-probe.jsp.wrongparams=Hai passato parametri errati a quests pagina.
-probe.jsp.wrongsvrversion=Caratteristica non implementata per {0}
-probe.jsp.zoomedchart.back=Torna a diagrammi groppi
-probe.jsp.zoomedchart.information=Puoi usare il cursore per ridimensionare l'immagine in base alla risoluzione dello schermo. L'informazione \u00e9 in diretta e il grafico sar\u00e0 aggiornato automaticamente ogni {0} secondi.
-
-probe.src.contextAction.cannotActOnSelf=Impossibile arrestare/avviare/disinstallare questa applicazione
-probe.src.contextDoesntExist=Il contesto {0} non esiste
-probe.src.deploy.context.failure=Distribuzione fallita {0}
-probe.src.deploy.context.success=Applicazione distribuita da {0}
-probe.src.deploy.exploded.success={0} \u00e9 stata installata con successo a {1}
-probe.src.deploy.war.alreadyExists=il contesto {0} \u00e9 gia in uso
-probe.src.deploy.war.failure=Error generato da Tomcat durante la disribuzione: "{0}". Questo comunque non potrebbe escludeew che la disribuzione dell'applicazione sia fallita. Controllare lo stato nella lista applicazioni
-probe.src.deploy.war.notWar.failure=Disribuzione fallita. Il nome file deve terminare con .war
-probe.src.deploy.war.notinstalled={0} non \u00e9 stato installato
-probe.src.deploy.war.uploadfailure=Si \u00e9 verificato un problema caricando il file: {0}
-probe.src.reset.datasource.c3p0=Qusto datasource non pu\u00f2 essere resettato
-probe.src.reset.datasource.notfound=La risorsa {0} non esiste
-
-probe.jsp.title.wrapper=Java Service Wrapper
-probe.jsp.wrapper.not_available=Questa JVM non \u00e9 controllata dal Java Service Wrapper
-probe.jsp.wrapper.menu.restart=riavvio JVM
-probe.jsp.wrapper.menu.stop=Ferma JVM
-probe.jsp.wrapper.menu.thread_dump=Richiesta thread dump
-probe.jsp.wrapper.h3.info=Informaxione Wrapper
-probe.jsp.wrapper.h3.props=Propriet\u00e0 Wrapper
-probe.jsp.wrapper.confirm.restart=Sei sicuro di voler riavviaee la JVM?
-probe.jsp.wrapper.confirm.stop=La JVM non pu\u00f2 essere nuovamente riavviata da Probe. Sei sicuro di voler fermare la JVM?
-probe.jsp.wrapper.jvm.stopping=Arresto JVM in corso. Se \u00e9 necessario riavviarla nuovamente dovrete farlo tramite console.
-probe.jsp.wrapper.jvm.restarting=Riavvio JVM in corso. Questo pu\u00f2 durare alcuni minuti.
-probe.jsp.wrapper.jvm.thread_dump=Richiesto Thread Dump JVM. Si pu\u00f2 trovarlo normalmente nel file di log del Wrapper.
-
-probe.jsp.wrapper.user=Utente:
-probe.jsp.wrapper.interactive_user=Utente interattivo :
-probe.jsp.wrapper.java_pid=PID Java :
-probe.jsp.wrapper.pid=PID Wrapper:
-probe.jsp.wrapper.service=Attivo come servizio:
-probe.jsp.wrapper.debug=Debug abilitato:
-probe.jsp.wrapper.version=Versione Wrapper :
-
-probe.jsp.decorator.system.title=Sistema
-probe.jsp.decorator.system.overview=Panoramica
-probe.jsp.decorator.system.memory=Utilizzo memoria
-probe.jsp.decorator.system.props=Propriet\u00e0 di sistema
-probe.jsp.decorator.system.os=Informazioni S.O.
-probe.jsp.decorator.system.wrapper=Controllo Wrapper
-
-probe.jsp.os.h3.information=Informazioni S.O.
-probe.jsp.os.h3.charts=Grafico storico
-probe.jsp.os.chart.cpu=Impegno CPU della JVM (%)
-probe.jsp.os.chart.cpu.alt=Grafico uso CPU della JVM
-probe.jsp.os.chart.cpu.legend=Impegno CPU
-probe.jsp.os.chart.memory=Impegno CPU di S.O. e JVM (KB)
-probe.jsp.os.chart.memory.alt=Impegno memoria fisica di S.O. e JVM
-probe.jsp.os.chart.memory.legend.total=Totale usato
-probe.jsp.os.chart.memory.legend.jvm=Usato da JVM
-probe.jsp.os.chart.swap=Impegno swap (KB)
-probe.jsp.os.chart.swap.alt=Grafico uso Swap
-probe.jsp.os.chart.swap.legend=swap usato
-#probe.jsp.os.chart.fd=File descriptors
-#probe.jsp.os.chart.fd.alt=File descriptors chart
-#probe.jsp.os.chart.fd.legend.open=open file descriptors
-#probe.jsp.os.chart.fd.legend.max=max file descriptors
-probe.jsp.os.card.name=Nome S.O.:
-probe.jsp.os.card.version= Versione S.O.:
-probe.jsp.os.card.processors=Processors:
-probe.jsp.os.card.totalMemory= Totale RAM:
-probe.jsp.os.card.freeMemory= RAM libera:
-probe.jsp.os.card.committedVirtualMemory= Memoria JVM committata:
-probe.jsp.os.card.totalSwap= Swap totale:
-probe.jsp.os.card.freeSwap= Swap libero:
-
-probe.jsp.title.testDataSource={0} -> {1}
-probe.src.dataSourceTest.resource.lookup.failure=Sorgente dati {0} inesistente
-probe.src.dataSourceTest.connection.failure=Impossibile stabilire connessione al database. {0}
-probe.src.dataSourceTest.connection.success=Connesso al database con successo
-probe.src.dataSourceTest.sql.required=Richiesto testo della query Sql
-probe.src.dataSourceTest.sql.failure=Incontrato errore durante l'esecuzione della query. {0}
-probe.src.dataSourceTest.sql.null=NULL
-probe.src.dataSourceTest.cachedResultSet.failure=Impossibile recuperare un cached result set
-#probe.jsp.dataSourceTest.help=This screen can help you to test your data source database connectivity.\
-#Test connection checks if a database connection can be established and displays some database information.\
-#Execute SQL executes an SQL query you enter against the database.\
-#You can see a database operation output or an error message at the bottom of the screen.\
-#Show history displays a list of queries you have executed.\
-#Please consider using Show options to limit the number of records returned by you query for not to waste your system resources.
-probe.jsp.dataSourceTest.menu.back=Torna a sorgenti dati
-probe.jsp.dataSourceTest.menu.connect=Test connessione
-probe.jsp.dataSourceTest.menu.execute=Esegui sql (Ctrl+Enter)
-probe.jsp.dataSourceTest.menu.showHistory=Mostra storico (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.hideHistory=Nascondi storico (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.showOptions=Mostra optzoni (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.hideOptions=Nascondi optzoni (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.wrap=A capo righe
-probe.jsp.dataSourceTest.menu.nowrap=Righe non a capo
-probe.jsp.dataSourceTest.menu.abbreviations=Aiuto!
-probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit abilitato)
-probe.jsp.dataSourceTest.sqlForm.maxRows.label=Record da recuperare
-probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Record per pagina
-probe.jsp.dataSourceTest.sqlForm.historySize.label=Dimensione storico
-probe.jsp.dataSourceTest.h3.results=Risultato query
-probe.jsp.dataSourceTest.results.rowcount={0} record(s) modificati.
-probe.jsp.dataSourceTest.h3.metaData=Informazioni database
-probe.jsp.dataSourceTest.chart.usage.title=Uso sorgente dati
-probe.jsp.dataSourceTest.dbMetaData.col.propName=Nome propriet\u00e0
-probe.jsp.dataSourceTest.dbMetaData.col.propValue=Valore propriet\u00e0
-probe.jsp.dataSourceTest.dbMetaData.dbProdName=Nome prodotto database
-probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Versione prodotto database
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=Nome Driver JDBC
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=Versione Driver JDBC
-probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=Versione JDBC
-probe.jsp.dataSourceTest.results.paging.banner.item_name=record
-probe.jsp.dataSourceTest.results.paging.banner.items_name=records
-probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
-probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Mostra uno {0}.
-probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Mostra tutto {2}.
-probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Mostra da {2} a {3}.
-probe.jsp.dataSourceTest.results.paging.banner.first=Primo
-probe.jsp.dataSourceTest.results.paging.banner.prev=Precedente
-probe.jsp.dataSourceTest.results.paging.banner.next=Successivo
-probe.jsp.dataSourceTest.results.paging.banner.last=Ultimo
-probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Vai a pagina {0}
-probe.jsp.dataSourceTest.sql.completed=Istruzione completata.
-probe.jsp.dataSourceTest.h3.queryHistory=Storico Query
-probe.jsp.dataSourceTest.queryHistory.empty=La lista storico vuota
-
-probe.jsp.whois.timeout=Impossibile completare interrogazione WHOIS . Verificare se WHOIS \u00e9 bloccato dalla vs. rete.
-
-probe.jsp.threadstack.native=Codice nativo
-probe.jsp.threadstack.unknown=Sorgente sconosciuto
-probe.jsp.threadstack.unavailable=Stack trace non \u00e9 disponibile per questo thread
-
-probe.jsp.tooltip.close=chiudi
-
-probe.jsp.sessions.h3=Sessioni
-probe.jsp.sessions.search.h3=Criterio di ricerca sessioni
-probe.jsp.sessions.menu.showSearch=Ricerca sessioni
-probe.jsp.sessions.menu.applySearch=Applica ricerca
-probe.jsp.sessions.menu.clearSearch=Cancella ricerca
-probe.jsp.sessions.menu.searchHelp=Aiuto
-#probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
-#Whether Session Id matches a regular expression.\
-#Whether Last IP contains a substring.\
-#Whether Idle Time falls into a range specified in seconds.\
-#Whether Age falls into a range specified in seconds.\
-#Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
-#This condition allows finding a session with an attribute A and/or an attribute B set.
-probe.jsp.sessions.search.sessionId=id sessione ( RegExp )
-probe.jsp.sessions.search.attrName=Nomi attributi ( lista RegExp )
-probe.jsp.sessions.search.ageFrom=Dura da (sec)
-probe.jsp.sessions.search.ageTo=a
-probe.jsp.sessions.search.idleTimeFrom=Periodo inattivit\u00e0 da (sec)
-probe.jsp.sessions.search.idleTimeTo=a
-probe.jsp.sessions.search.lastIP=Ultimo IP (sottostringa)
-probe.jsp.sessions.search.results.h3=Resultato ricerca sessioni
-probe.src.sessions.search.empty=Criterio di ricerca vuoto
-probe.src.sessions.search.results.empty=Nessuna sessione corrisponde al criterio di ricerca
-probe.src.sessions.search.invalid=Criterio di ricerca non invalido
-probe.src.sessions.search.invalid.sessionId=Espressione regulare id sessione non invalida. {0}
-probe.src.sessions.search.invalid.attrName=Nome attributo espressione regolare non invalida. {0}
-probe.src.sessions.search.invalid.ageFrom=Durata da valore non invalida
-probe.src.sessions.search.invalid.ageTo=Durata da valore non invalida
-probe.src.sessions.search.invalid.idleTimeFrom=Periodo inattivit\u00e0 da valore non invalido
-probe.src.sessions.search.invalid.idleTimeTo=Periodo inattivit\u00e0 a valore non invalido
-probe.src.sessions.search.invalid.lastIP=Ultima espressione regolare IP non invalida. {0}
-
-probe.jsp.app.nav.title=Applicazione
-probe.jsp.app.nav.summary=Riepilogo
-probe.jsp.app.nav.sessions=Sessioni
-probe.jsp.app.nav.attributes=Attributi
-probe.jsp.app.nav.jsps=JSP
-probe.jsp.app.nav.resources=Risorse
-probe.jsp.app.nav.initParams=Parametri
-probe.jsp.app.nav.webxml=Deployment
-probe.jsp.app.nav.contextxml=Descrittore contesto
-probe.jsp.app.nav.filters=Filtri
-probe.jsp.app.nav.servlets=Servlet
-
-probe.jsp.title.app.initParams={0} - inizializzazione parametri
-probe.jsp.app.initParams.h3.params=Inizializzazione parametri contesto
-probe.jsp.app.initParams.col.name=Nome
-probe.jsp.app.initParams.col.value=Valore
-probe.jsp.app.initParams.col.source=Sorgente
-probe.jsp.app.initParams.source.deplDescr=web.xml
-probe.jsp.app.initParams.source.context=contesto
-probe.jsp.app.initParams.empty=Non esistono parametri di inizializzazione contesto definiti per questa applicazione
-
-probe.jsp.title.app.viewXMLConf={0} - {1}
-probe.jsp.app.viewXMLConf.notfound= Non trovato {0} per questa applicazione
-probe.jsp.app.viewXMLConf.h3.scr=sorgente di: {0}
-probe.src.app.viewxmlconf.webxml.desc=Descrittore distribuzione
-probe.src.app.viewxmlconf.contextxml.desc=Descrittore contesto
-
-probe.jsp.title.app.filters={0} - filtri
-probe.jsp.title.app.filtermaps={0} - corrispondenze filtri
-probe.jsp.app.filtermaps.opt.defs=Definizione filtri
-probe.jsp.app.filters.opt.maps=Corrispondenze filtro
-probe.jsp.app.filters.h3.defs=Filtri
-probe.jsp.app.filtermaps.h3.maps=Corrispondenze filtro
-probe.jsp.app.filters.col.filterName=Nome
-probe.jsp.app.filters.col.filterClass=Classe
-probe.jsp.app.filters.col.filterDesc=Descrizione
-probe.jsp.app.filtermaps.col.url=Url
-probe.jsp.app.filtermaps.col.filterName=Nome filtro
-probe.jsp.app.filtermaps.col.servletName=Nome servlet
-probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
-probe.jsp.app.filters.empty=Non esistono filtri definiti per questa applicazione
-probe.jsp.app.filtermaps.empty=Non esistono corrispondenze filtri definiti per questa applicazione
-
-probe.jsp.title.servlets.all=Servlet
-probe.jsp.title.servlets.app={0} - servlet
-probe.jsp.title.servletmaps.all=Corrispondenze servlet
-probe.jsp.title.servletmaps.app={0} - corrispondenze servlet
-probe.jsp.servletmaps.opt.defs=Servlet
-#probe.jsp.servletmaps.opt.all=Show all
-probe.jsp.servlets.opt.maps=Corrispondenze servlet
-#probe.jsp.servlets.opt.all=Show all
-probe.jsp.servlets.h3.defs=Servlet
-probe.jsp.servletmaps.h3.maps=Corrispondenze servlet
-probe.jsp.servletmaps.col.url=Url
-probe.jsp.servletmaps.col.servletName=Nomi servlet
-probe.jsp.servlets.col.applicationName=App
-probe.jsp.servlets.col.servletName=Nome
-probe.jsp.servletmaps.col.servletClass=Classe servlet
-probe.jsp.servlets.col.available=Disponibile
-probe.jsp.servlets.col.loadOnStartup=Startup
-probe.jsp.servlets.empty=There are no servlets defined
-probe.jsp.servletmaps.empty=There are no servlet mappings defined
-probe.jsp.servlets.col.minTime=Tempo min
-probe.jsp.servlets.col.maxTime=Tempo max
-probe.jsp.servlets.col.processingTime=Tempo proc
-probe.jsp.servlets.col.loadTime=Tempo caric.
-probe.jsp.servlets.col.multiThreaded=Thrd mult.
-probe.jsp.servlets.col.requestCount=Rich.
-probe.jsp.servlets.col.errorCount=Err
-
-probe.jsp.title.app.summary={0} - riassunto applicazione
-probe.jsp.app.summary.application=Nome applicazione:
-probe.jsp.app.summary.description=Descrizione:
-probe.jsp.app.summary.distributable=Clustered:
-probe.jsp.app.summary.docBase=Doc. base:
-probe.jsp.app.summary.servletVersion=Versione servlet:
-probe.jsp.app.summary.sessionTimeout=Timeout sessione:
-probe.jsp.app.summary.servletCount=Conteggio servlet:
-probe.jsp.app.summary.status=Questa applicazione \u00e9
-probe.jsp.app.summary.requestCount=Conteggio richieste:
-probe.jsp.app.summary.sessionCount=Sessioni
-probe.jsp.app.summary.sessionAttributeCount=Attr. sessioni.
-probe.jsp.app.summary.sessionSize=Dimensione sessioni
-probe.jsp.app.summary.contextAttributeCount=Attr. contesto.
-probe.jsp.app.summary.serializable=Ser.
-probe.jsp.app.summary.errorCount=Conteggio Errori:
-probe.jsp.app.summary.processingTime=Tempo di calcolo:
-probe.jsp.app.summary.minTime=Tempo min:
-probe.jsp.app.summary.maxTime=Tempo max:
-probe.jsp.app.summary.avgTime=Tempo di risposta medio:
-probe.jsp.app.summary.h3.static=Informazioni applicazione
-probe.jsp.app.summary.h3.runtime=Informazioni runtime
-probe.jsp.app.summary.invalidApp=L'applicazione non \u00e9 valida
-probe.jsp.app.summary.runtime.unavailable=Questa applicazione non \u00e9 attiva, le informazioni runtime information non sono disponibili
-probe.jsp.app.summary.menu.start=Avvia
-probe.jsp.app.summary.menu.stop=Ferma
-probe.jsp.app.summary.menu.reload=Ricarica
-probe.jsp.app.summary.menu.undeploy=Disinstalla
-probe.jsp.app.summary.menu.goTo=Vai a
-probe.jsp.app.summary.menu.startStats=Avvia recupero statistiche
-probe.jsp.app.summary.menu.stopStats=Ferma recupero statistiche
-probe.jsp.app.summary.undeploy.confirm=Questa operazione non pu\u00f2 essere revertita. Vuoi veramente RIMUOVERE {0}?
-probe.jsp.app.summary.dataSourceUsageScore=Uso sorgente dati
-probe.jsp.app.summary.jdbcUsage.title=Uso Max.conn. {0}%
-probe.jsp.app.summary.h3.charts=Grafici statistiche
-probe.jsp.app.summary.charts.requests.title=Numero di richieste
-probe.jsp.app.summary.charts.avgProcTime.title=Tempo medio di risposta (ms)
-probe.jsp.app.summary.charts.requests.legend=Richieste
-probe.jsp.app.summary.charts.errors.legend=Errori
-probe.jsp.app.summary.charts.avgProcTime.legend=Tempo medio risposta
-
-probe.jsp.title.allappstats=Statistica applicazione
-probe.jsp.allappstats.charts.totalAvgProcTime.legend=Tempo medio risposta
-probe.jsp.allappstats.charts.totalReq.legend=Richieste
-probe.jsp.allappstats.charts.totalAvgProcTime.title=Tempo medio risposta cumulativo (ms)
-probe.jsp.allappstats.charts.allAppAvgProcTime.titleTempo medio risposta per app (ms)
-probe.jsp.allappstats.charts.totalReq.title=Richieste cumulative
-probe.jsp.allappstats.charts.allAppReq.title=Richieste per app (ms)
-probe.jsp.allappstats.h3.charts=Grafici statistiche
-
-#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
-#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
-#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
-#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
-
-#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
-#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
+#
+# Licensed under the GPL License. You may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+#
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+# Italian translation by Paolo Pedrelli (paolo.pedrelli@gmail.com)
+probe.jsp.i18n.credit=Traduzione italiana di Paolo Pedrelli
+#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
+
+probe.jsp.generic.no=no
+probe.jsp.generic.yes=s\u00ec
+probe.jsp.generic.abbreviations=Cosa sono queste abbreviazioni ?
+
+probe.jsp.app.attributes.col.delete==Rimuovi attributo
+probe.jsp.app.attributes.col.delete.title==Rimuovi attributo
+probe.jsp.app.attributes.col.name=Nome
+probe.jsp.app.attributes.col.type=Tipo
+probe.jsp.app.attributes.col.value=Valore
+probe.jsp.app.attributes.h3.attributes=Attributi del contesto della servlet
+probe.jsp.app.attributes.noattributes=Non ci sono attributi nel contesto di questa servlet
+
+probe.jsp.applications.alt.reload=ricarica
+probe.jsp.applications.alt.undeploy=Disinstalla
+probe.jsp.applications.col.contextAttributeCount=Cont. Attr.
+probe.jsp.applications.col.description=Descrizione
+probe.jsp.applications.col.distributable=Clustred.?
+probe.jsp.applications.col.jdbcUsage=Utilizzo Jdbc
+probe.jsp.applications.col.jsp=JSP
+probe.jsp.applications.col.name=Nome
+probe.jsp.applications.col.serializable=Ser.?
+probe.jsp.applications.col.sessionAttributeCount=Attr. sess.
+probe.jsp.applications.col.sessionCount=Sess.
+probe.jsp.applications.col.sessionTimeout=Timeout Sess.
+probe.jsp.applications.col.size=Dimensione
+probe.jsp.applications.col.status=Stato
+probe.jsp.applications.col.requestCount=Rich.
+#probe.jsp.applications.help.contextAttributeCount=total number of ServletContext attributes
+#probe.jsp.applications.help.distributable=application is "distributable"
+#probe.jsp.applications.help.requestCount=total number of requests processed by servlets
+#probe.jsp.applications.help.serializable=all session attributes implement java.io.Serializable
+#probe.jsp.applications.help.sessionAttributeCount=total number of session attributes
+#probe.jsp.applications.help.sessionCount=number of sessions
+probe.jsp.applications.hidesize=Nascondi dimensione sessioni
+probe.jsp.applications.jdbcUsage.title=Max uso conn. {0}%
+probe.jsp.applications.jsp.view=vista
+probe.jsp.applications.serializable.no=NO
+probe.jsp.applications.serializable.yes=s\u00ec
+probe.jsp.applications.showsize=Stima dimensione sessioni (potrebbe essere lento)
+probe.jsp.applications.status.down=fermo
+probe.jsp.applications.status.down.title=Avvia {0}
+probe.jsp.applications.status.up=Attivo
+probe.jsp.applications.title.reload=Ricarica {0}
+probe.jsp.applications.title.status.up=Ferma {0}
+probe.jsp.applications.title.undeploy=Disinstalla {0}
+probe.jsp.applications.undeploy.confirm=Questa operazione non pu\u00f2 essere revertita. Vuoi verante RIMUOVERE {0}?
+
+probe.jsp.connectors.information=Informazioni di traffico per tutti i connettori disponibili. L'alimentazione \u00e9 in diretta e i grafici sono aggiornati automaticamente.
+probe.jsp.connectors.processor.errorCount=Conteggio Errori:
+probe.jsp.connectors.processor.maxTime=Tempo max:
+probe.jsp.connectors.processor.processingTime=Tempo elab.:
+probe.jsp.connectors.processor.received=Ricevuti:
+probe.jsp.connectors.processor.requestCount=Conteggio richieste:
+probe.jsp.connectors.processor.sent=Inviati:
+probe.jsp.connectors.proc_time.title=Tempo elab. (ms) per ogni intervallo
+probe.jsp.connectors.requests.title=Numero di richieste per ogni intervallo
+probe.jsp.connectors.traffic.title=Volume di traffico (byte) per ogni intervallo
+probe.jsp.connectors.wrk.col.in=IN
+probe.jsp.connectors.wrk.col.out=OUT
+probe.jsp.connectors.wrk.col.processingTime=Tempo Esec.
+probe.jsp.connectors.wrk.col.remoteAddr=IP remoto
+probe.jsp.connectors.wrk.col.stage=Fase
+probe.jsp.connectors.wrk.col.url=URL
+probe.jsp.connectors.wrk.col.thread=Thread
+probe.jsp.connectors.wrk.empty=Nessun processo
+probe.jsp.connectors.wrk.stage.endInput=EndInput
+probe.jsp.connectors.wrk.stage.endOutput=EndOutput
+probe.jsp.connectors.wrk.stage.ended=Terminato
+probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
+probe.jsp.connectors.wrk.stage.new=Nuovo
+probe.jsp.connectors.wrk.stage.parse=Parse
+probe.jsp.connectors.wrk.stage.prepare=Prepara
+probe.jsp.connectors.wrk.stage.service=Servizio
+
+probe.jsp.cluster.chart.requests=Richieste ogni {0} sec.
+probe.jsp.cluster.chart.traffic=Traffico ogni {0} sec.
+probe.jsp.cluster.h3.info=Informazioni del cluster
+probe.jsp.cluster.h3.members=Membri del cluster
+probe.jsp.cluster.heartbeatFreq=Freq. battito:
+probe.jsp.cluster.heartbeatTimeout=Timeout battito:
+probe.jsp.cluster.info=Informazioni:
+probe.jsp.cluster.manager=Manager:
+probe.jsp.cluster.mcastAddress=Indirizzo multicast:
+probe.jsp.cluster.mcastBindAddress=Indirizzo multicast collegato:
+probe.jsp.cluster.mcastBindAddress.all=tutto
+probe.jsp.cluster.mcastTTL=Mlticast TTL
+probe.jsp.cluster.members.col.address=Indirizzo
+probe.jsp.cluster.members.col.avgMsgSize=Dimensione Media
+probe.jsp.cluster.members.col.closes=Chiude
+probe.jsp.cluster.members.col.connectCount=CC
+probe.jsp.cluster.members.col.connected=Conn.?
+probe.jsp.cluster.members.col.disconnectCount=DC
+probe.jsp.cluster.members.col.failures=Fallimenti
+probe.jsp.cluster.members.col.inQueueCounter=InQ
+probe.jsp.cluster.members.col.keepAlive=Mantieni attivo
+probe.jsp.cluster.members.col.openFailures=Aperture fallite
+probe.jsp.cluster.members.col.opens=Apre
+probe.jsp.cluster.members.col.outQueueCounter=OutQ
+probe.jsp.cluster.members.col.queueSize=QSz
+probe.jsp.cluster.members.col.queueSizeBytes=QSzB
+probe.jsp.cluster.members.col.requests=Rich.
+probe.jsp.cluster.members.col.resends=Reinvia
+probe.jsp.cluster.members.col.sent=Inviati
+probe.jsp.cluster.members.col.socketLimit=Limite socket
+probe.jsp.cluster.members.failing.alt=fallimenti
+probe.jsp.cluster.members.failing.title=Si presume che il membro stia fallendo
+probe.jsp.cluster.members.healthy.alt=healthy
+probe.jsp.cluster.members.healthy.title=The member is healthy
+probe.jsp.cluster.mode=Replication mode:
+probe.jsp.cluster.name=Nome:
+probe.jsp.cluster.noMembers=Non esistono membri attivi del cluster noti a questo nodo
+probe.jsp.cluster.notAvailable=Le informazioni del cluster sono disponibili solo ai Tomcat 5.5.x col supporto al cluster abilitato.
+probe.jsp.cluster.received=Ricevuti
+probe.jsp.cluster.receiverAddress=Indirizzo ricevitore :
+probe.jsp.cluster.receiverPort=Porta ricevitore:
+probe.jsp.cluster.sent=Inviati
+
+probe.jsp.copyright=Copyright 2009-${copyright}. Hai domande o suggerimenti? Visitaci a https://github.com/psi-probe/psi-probe
+
+probe.jsp.dataSourceGroups.empty=Non esistono data source correttamente configurate disponibili a questa istanza
+probe.jsp.dataSourceGroups.information=La tabella seguente contiene il numero totale di connessioni attiualmente aperte e potenzialmente abilitate alla connessione verso il database raggruppate per url jdbc. Questa informazione pu\u00f2 aiutare la stima di quante connessioni verso un particolare database possono essere aperte da risorse jdbc configurate all'interno del container.
+probe.jsp.dataSourceGroups.jdbcUsage.title=Max. uso conn. {0}%
+probe.jsp.dataSourceGroups.list.col.busy=Totale occupate
+probe.jsp.dataSourceGroups.list.col.established=Totale stab.
+probe.jsp.dataSourceGroups.list.col.max=Totale max.
+probe.jsp.dataSourceGroups.list.col.resourceCount=Conteggio risorse
+probe.jsp.dataSourceGroups.list.col.url=URL
+probe.jsp.dataSourceGroups.list.col.usage=Uso
+probe.jsp.dataSourceGroups.menu.back=Torna a lista sorgenti dati
+
+#probe.jsp.datasources.h3.global=Global Resources
+#probe.jsp.datasources.h3.app=Application Resources
+#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
+#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
+probe.jsp.datasources.empty=Non esistono data source configurate per questa istanza di Tomcat
+#probe.jsp.datasources.help.max=maximum number of connections in the pool
+#probe.jsp.datasources.help.established=number of established connections that can be reused
+#probe.jsp.datasources.help.busy=number of busy connections cannot be reused
+probe.jsp.datasources.list.col.application=App
+probe.jsp.datasources.list.col.auth=Autore
+probe.jsp.datasources.list.col.busy=B
+probe.jsp.datasources.list.col.description=Descrizione
+probe.jsp.datasources.list.col.established=E
+probe.jsp.datasources.list.col.linkTo=Lnk
+probe.jsp.datasources.list.col.max=M
+probe.jsp.datasources.list.col.reset.alt=reset
+probe.jsp.datasources.list.col.resource=Risorsa
+probe.jsp.datasources.list.col.type=Tipo
+probe.jsp.datasources.list.col.url=URL
+probe.jsp.datasources.list.col.usage=Uso
+probe.jsp.datasources.list.col.user=Utente
+probe.jsp.datasources.list.misconfigured.alt=errore
+probe.jsp.datasources.opt.groupByJdbcUrl=raggr. per url jdbc
+
+probe.jsp.deployment.war.success={0} \u00e9 stato installato
+probe.jsp.deployment.compilationDetails=Vista dettagli compilazione
+probe.jsp.deployment.s1.compile.label=Precompila le pagine JSP dopo la distribuzione dell'applicazione (pu\u00f2 durare alcuni minuti)
+probe.jsp.deployment.s1.description=Carica un file .war sul server. Se il nome del contesto non \u00e9 specificato verr\u00e0 usato il nome del file. Caricando file .war con META-INF/context.xml assicurarsi che il contesto abbia lo stesso attributo "path" del contesto che state distribuendo, altrimenti confonder\u00e0 totalmente Tomcat 5.0.x
+probe.jsp.deployment.s1.discard.label=Scarta la "work" directory se esiste
+probe.jsp.deployment.s1.file.label=Seleziona un file .war da caricare
+probe.jsp.deployment.s1.submit=Distribuisci
+probe.jsp.deployment.s1.title=Carica applicazione (semplice)
+probe.jsp.deployment.s1.update.label=Aggiorna l'applicazione se \u00e9 gi\u00e0 stata distribuita
+probe.jsp.deployment.s2.context.label=Nome del contesto (es. /dummy)
+probe.jsp.deployment.s2.description=Usa questa opzione hai gi\u00e0 creato il file .xml del contesto in %CATALINA_BASE%/conf/Catalina/localhost/. Si presume che il nome del contesto sia quello del file .xml. Per esempio: per il contesto "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml.
NOTA: Tomcat 5.0.x richiederebbe l'attributo "path" nel file .xml !
+probe.jsp.deployment.s2.title=Distribuisci contesto con nome (avanzato)
+
+probe.jsp.follow.h3.fileContent=Contenuto file
+probe.jsp.follow.h3.fileInfo=Informazioni sul file
+#probe.jsp.follow.h3.sources=Logging sources
+probe.jsp.follow.loading=Sto caricando...
+probe.jsp.follow.menu.back=Torna alla lista dei file di log
+probe.jsp.follow.menu.clear=Svuota buffer
+probe.jsp.follow.menu.download=Scarica
+probe.jsp.follow.menu.nowrap=Togli a capo riga
+probe.jsp.follow.menu.pause=Sospendi tailing
+probe.jsp.follow.menu.resume=Riprendi tailing
+probe.jsp.follow.menu.wrap=Righe a capo
+probe.jsp.follow.menu.zoomin=Ingrandisci
+probe.jsp.follow.menu.zoomout=Riduci
+probe.jsp.followed_file_info.fileName=Nome file:
+probe.jsp.followed_file_info.lastModified= Ultima modifica:
+probe.jsp.followed_file_info.size= Dimensione:
+
+probe.jsp.jsps.col.lastmodified=Ultima modifica
+probe.jsp.jsps.col.message=Messaggio
+probe.jsp.jsps.col.name=Nome JSP
+probe.jsp.jsps.col.size=Dimensione
+probe.jsp.jsps.col.status=Stato
+probe.jsp.jsps.notfound=Questa applicazionw non ha file JSP
+probe.jsp.jsps.opt.compile=Compila i selezionati
+probe.jsp.jsps.opt.compileall=Compila tutto
+probe.jsp.jsps.opt.discardscratch=Scarta "work" dir
+probe.jsp.jsps.opt.toggleall=Inverti tutto
+probe.jsp.jsps.status.compiled=Compilati
+probe.jsp.jsps.status.failed=FALLITI
+probe.jsp.jsps.status.outdated=Out dated
+
+probe.jsp.logs.col.app=App
+probe.jsp.logs.col.class=Classe
+probe.jsp.logs.col.file=Nome file
+#probe.jsp.logs.col.level=Level
+probe.jsp.logs.col.modified=Modificato
+probe.jsp.logs.col.name=Nome
+probe.jsp.logs.col.size=Dimensione
+probe.jsp.logs.col.type=Tipo
+probe.jsp.logs.download.alt=scarica
+probe.jsp.logs.hideapps=Mostra solo gli esistenti
+probe.jsp.logs.showapps=Mostra tutto
+probe.jsp.logs_notSupported.message=La vs. Java Virtual Machine {0} {1} non supporta completamente la SUN reflection API - sun.reflect.ReflectionFactory. La funzione di consultazione del log \u00e9 disabilitata.
+
+probe.jsp.memory.advise.finalization=Consiglia Finalizazione
+probe.jsp.memory.advise.gc=Consiglia GC
+probe.jsp.memory.col.committed=Committed
+probe.jsp.memory.col.group=Gruppo
+probe.jsp.memory.col.initial=Iniziale
+probe.jsp.memory.col.max=Massimo
+probe.jsp.memory.col.name=Nome
+probe.jsp.memory.col.plot=Grafico
+probe.jsp.memory.col.usageScore=Score
+probe.jsp.memory.col.used=Usato
+probe.jsp.memory.h3.charts=
Storico dell'impegno memoria
+probe.jsp.memory.h3.table=Memoria attualmente impegnata
+probe.jsp.memory.loading=In caricamento...
+probe.jsp.memory.usage.title=Uso {0}%
+probe.jsp.memory.notAvailable=Questa pagina richiede Java5 con JMX Agent abilitato. Per abilitare JXM Agent aggiungere "-Dcom.sun.management.jmxremote" alla command line java oppure alla variabile d'ambiente $JAVA_OPTS. In caso di JDK IBM aggiungere queste propiet\u00e0: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
+
+probe.jsp.menu.applications=Applicazioni
+probe.jsp.menu.cluster=Cluster
+probe.jsp.menu.connectors=Connettori
+probe.jsp.menu.datasources=Data Sources
+probe.jsp.menu.deployment=Deployment
+probe.jsp.menu.logs=Logs
+probe.jsp.menu.memory=Memoria
+probe.jsp.menu.quickcheck=Controllo rapido
+probe.jsp.menu.sysinfo=Sistema
+probe.jsp.menu.threads=Threads
+
+probe.jsp.noaccess=Mancano privilegi sufficienti per accedere a questa pagina. Usare la barra di navigazione per scegliere un'altra area o fare clic "back" buttone nel vs. browser.
+probe.jsp.noaccess.ajax=Mancano privilegi sufficienti per accedere a questa funzione.
+probe.jsp.noaccess.title=403 Proibito
+probe.jsp.notfound=La pagina richiesta non esiste su questo server. Usare la barra di navigazione per localizzare l'area richiesta.
+probe.jsp.notfound.title=404 Non trovato
+
+probe.jsp.resources.col.auth=Autenticazione
+probe.jsp.resources.col.linkTo=Collegamento a
+probe.jsp.resources.col.name=Nome
+probe.jsp.resources.col.type=Tipo
+probe.jsp.resources.empty=Non esistono risorse definite per questa applicazione
+probe.jsp.resources.info.busy=Occupato:
+probe.jsp.resources.info.connectionUsage.alt=Uso conn. {0}%
+probe.jsp.resources.info.established=Stabilita:
+probe.jsp.resources.info.max=Max:
+probe.jsp.resources.info.misconfigured=Questa risorsa \u00e9 mal configurata e le informazioni runtime non sono disponibili
+probe.jsp.resources.info.misconfigured.alt=punto esclamativo
+probe.jsp.resources.info.reset=
+probe.jsp.resources.info.reset.alt=reset
+probe.jsp.resources.info.title=Ulteriori informazioni:
+
+probe.jsp.servlet_source.h3.source=Codice servlet autogenerato
+probe.jsp.servlet_source.opt.jsp=Vista JSP
+
+probe.jsp.sessionAttibutes.card.age=Durata:
+probe.jsp.sessionAttibutes.card.application=Applicazione:
+probe.jsp.sessionAttibutes.card.created=Creato:
+probe.jsp.sessionAttibutes.card.expiryTime=Scadenza:
+probe.jsp.sessionAttibutes.card.id=ID:
+probe.jsp.sessionAttibutes.card.idleTime=Periodo inattivit\u00e0:
+probe.jsp.sessionAttibutes.card.info=Info:
+probe.jsp.sessionAttibutes.card.lastAccessed=Ultimo accesso:
+probe.jsp.sessionAttibutes.card.manager=Tipo gestore:
+probe.jsp.sessionAttibutes.card.maxIdleTime=Max tempo inattivit\u00e0:
+probe.jsp.sessionAttibutes.card.serializable=Serializzabile:
+probe.jsp.sessionAttibutes.card.serializable.no=NO
+probe.jsp.sessionAttibutes.card.serializable.yes=s\u00ec
+probe.jsp.sessionAttibutes.card.size=Dimensione:
+probe.jsp.sessionAttibutes.col.delete=rimuovi
+probe.jsp.sessionAttibutes.col.delete.title=rimuovi attributo
+probe.jsp.sessionAttibutes.col.name=Nome
+probe.jsp.sessionAttibutes.col.serializable=Ser.?
+probe.jsp.sessionAttibutes.col.size=Dimensione
+probe.jsp.sessionAttibutes.col.type=Tipo
+probe.jsp.sessionAttibutes.col.value=Valore
+probe.jsp.sessionAttibutes.h3.attributes=Attributi sessione
+probe.jsp.sessionAttibutes.h3.card=Scheda sessione
+probe.jsp.sessionAttibutes.invalidSid=ID sessione non valido o sessione scaduta
+probe.jsp.sessionAttibutes.menu.back=Torna a lista sessioni
+probe.jsp.sessionAttibutes.menu.destroy=Distruggi questa sessione
+probe.jsp.sessionAttibutes.noattributes=Questa sessione non ha attributi
+
+probe.jsp.sessions.col.age=Durata
+probe.jsp.sessions.col.creationTime=Istante creazione
+probe.jsp.sessions.col.expiryTime=Istante scadenza
+probe.jsp.sessions.col.id=ID sessione
+probe.jsp.sessions.col.applicationName=App
+probe.jsp.sessions.col.idleTime=Periodo inattivit\u00e0
+probe.jsp.sessions.col.lastAccessTime=Istante ultimo accesso
+probe.jsp.sessions.col.objectCount=Conteggio oggetti
+probe.jsp.sessions.col.serializable=Ser.
+probe.jsp.sessions.col.size=Dimensione
+probe.jsp.sessions.col.lastIP=Ultimo IP
+probe.jsp.sessions.unknown.ip=sconosciuto
+probe.jsp.sessions.empty=Non esistono sessioni
+probe.jsp.sessions.menu.expire=Scadenza
+probe.jsp.sessions.menu.toggle=Inverti
+probe.jsp.sessions.status.no=NO
+probe.jsp.sessions.status.yes=s\u00ec
+#probe.jsp.sessions.opt.all=Show all
+probe.jsp.showsize=Dimensioni stimate
+probe.jsp.hidesize=Nascondi dimensione
+
+probe.jsp.sysinfo.col.name=Nome propiet\u00e0
+probe.jsp.sysinfo.col.value=Valore propiet\u00e0
+probe.jsp.sysinfo.container.title=Informazioni container
+probe.jsp.sysinfo.memory.adviseGC=Consiglia Garbage Collection
+probe.jsp.sysinfo.memory.free=Libera:
+probe.jsp.sysinfo.memory.max=Max:
+probe.jsp.sysinfo.memory.title=Utilizzo della memoria
+probe.jsp.sysinfo.memory.total=Totale:
+probe.jsp.sysinfo.memory.usage=L'impegno attuale di memoria \u00e9
+probe.jsp.sysinfo.memory.usage.alt=Barra impegno memoria
+probe.jsp.sysinfo.os.applicationBase=Base applicazione:
+probe.jsp.sysinfo.os.catalinaBase=catalina.base:
+probe.jsp.sysinfo.os.catalinaHome=catalina.home:
+probe.jsp.sysinfo.os.configBase=Base configurazione:
+probe.jsp.sysinfo.os.container=Container:
+probe.jsp.sysinfo.os.currentTime=Oraio attuale:
+probe.jsp.sysinfo.os.jvm=JVM:
+probe.jsp.sysinfo.os.name=OS:
+probe.jsp.sysinfo.os.processors=Processori:
+probe.jsp.sysinfo.os.title=Informazioni S.O.
+probe.jsp.sysinfo.os.workingDir=Cartella di lavoro:
+probe.jsp.sysinfo.sysproperties.title=Propiet\u00e0 di sistema
+
+probe.jsp.threadpools.currentThreadCount=Conteggio thread attuali
+probe.jsp.threadpools.currentThreadsBusy= Thread attuali ocupati
+probe.jsp.threadpools.maxSpareThreads= Num. max threads di riserva
+probe.jsp.threadpools.maxThreads= Limite max thread
+probe.jsp.threadpools.menu.threads=Threads attivi
+probe.jsp.threadpools.minSpareThreads= Num. min threads di riserva
+probe.jsp.threadpools.name=Nome
+
+probe.jsp.threads.col.application=App
+probe.jsp.threads.col.classLoader=Class loader
+probe.jsp.threads.col.daemon=D
+probe.jsp.threads.col.groupName=Gruppo
+probe.jsp.threads.col.interrupted=I
+probe.jsp.threads.col.name=Nome
+probe.jsp.threads.col.priority=P
+probe.jsp.threads.col.runnableClass=Lanciabile
+probe.jsp.threads.col.threadClass=Classe thread
+probe.jsp.threads.col.id=ID
+probe.jsp.threads.col.execPoint=Exec. point
+probe.jsp.threads.col.state=Stato
+probe.jsp.threads.col.inNative=In.Native
+probe.jsp.threads.col.suspended=Susp.
+probe.jsp.threads.col.waitedCount=WC
+probe.jsp.threads.col.blockedCount=BC
+#probe.jsp.threads.help.priority=thread priority, the higher the number the higher the priority
+#probe.jsp.threads.help.daemon=thread is a daemon
+#probe.jsp.threads.help.interrupted=thread has been interrupted
+#probe.jsp.threads.help.inNative=true if thread is executing native code
+#probe.jsp.threads.help.suspended=thread is suspended
+#probe.jsp.threads.help.waitedCount="wait count" - number of times thread has been waiting on something
+#probe.jsp.threads.help.blockedCount="blocked count" - number of times thread has been blocked
+probe.jsp.threads.info.loading=Caricamento...
+probe.jsp.threads.info.unavailable=Informazione URL non disponibile
+probe.jsp.threads.killmsg=La cancellazione indiscriminata di thread pu\u00f2 destabilizzare la JVM. Sei sicuro di procedere {0}?
+probe.jsp.threads.menu.threadpools=Pool di thread
+probe.jsp.threads.stop.alt=Ferma
+
+probe.jsp.title.app.attributes={0} - attributi contesto
+probe.jsp.title.applications=Applicazioni installate
+probe.jsp.title.cluster=Stato cluster
+probe.jsp.title.connectors=Connettori
+probe.jsp.title.dataSourceGroups=Sorgenti dati raggruppati per url jdbc
+probe.jsp.title.datasources=Data Sources disponibili
+probe.jsp.title.deployment=Deployment applicazione
+probe.jsp.title.follow=Tailing log
+probe.jsp.title.jsps={0} - JSP distribuite
+probe.jsp.title.logs=Logs
+probe.jsp.title.logs_notSupported=Non supportato
+probe.jsp.title.memory=Utilizzo della memoria da parte della JVM
+probe.jsp.title.quickcheck=Controllo rapido
+probe.jsp.title.resources={0} - risorse
+probe.jsp.title.servlet_source=Sorgenti generate dalla servlet
+probe.jsp.title.sessionAttibutes=Attributi sessione
+probe.jsp.title.sessions={0} - sessioni
+probe.jsp.title.sessions.all=Sessioni
+probe.jsp.title.sysinfo=Informazioni di sistema
+probe.jsp.title.threadpools=Pool di thread
+probe.jsp.title.threads=Threads attivi
+probe.jsp.title.viewsource={0} - Visualizza sorgente
+probe.jsp.uptime=ATTIVO per {0} giorni {1} ore {2} minuti
+probe.jsp.version=Versione {0} in esecuzione su {1}
+
+probe.jsp.viewsource.appname=Nome applicazione:
+probe.jsp.viewsource.encoding=Codifica:
+probe.jsp.viewsource.filename=Nome file:
+probe.jsp.viewsource.h3.info=JSP information
+probe.jsp.viewsource.h3.source=Codice sorgente JSP
+probe.jsp.viewsource.lastmodified=Ultima modifica:
+probe.jsp.viewsource.notfound=Sfortunatamente non \u00e9 possibile visualizzare il contenuto di questo file. Torna indietro e seleziona il file dalla lista.
+probe.jsp.viewsource.opt.back=Torna alla lista delle JSP
+probe.jsp.viewsource.opt.compile=compila
+probe.jsp.viewsource.opt.viewServlet=visualiza la servlet generata
+probe.jsp.viewsource.size=Dimensione:
+probe.jsp.viewsource.state=Stato:
+
+probe.jsp.wrongparams=Hai passato parametri errati a quests pagina.
+probe.jsp.wrongsvrversion=Caratteristica non implementata per {0}
+probe.jsp.zoomedchart.back=Torna a diagrammi groppi
+probe.jsp.zoomedchart.information=Puoi usare il cursore per ridimensionare l'immagine in base alla risoluzione dello schermo. L'informazione \u00e9 in diretta e il grafico sar\u00e0 aggiornato automaticamente ogni {0} secondi.
+
+probe.src.contextAction.cannotActOnSelf=Impossibile arrestare/avviare/disinstallare questa applicazione
+probe.src.contextDoesntExist=Il contesto {0} non esiste
+probe.src.deploy.context.failure=Distribuzione fallita {0}
+probe.src.deploy.context.success=Applicazione distribuita da {0}
+probe.src.deploy.exploded.success={0} \u00e9 stata installata con successo a {1}
+probe.src.deploy.war.alreadyExists=il contesto {0} \u00e9 gia in uso
+probe.src.deploy.war.failure=Error generato da Tomcat durante la disribuzione: "{0}". Questo comunque non potrebbe escludeew che la disribuzione dell'applicazione sia fallita. Controllare lo stato nella lista applicazioni
+probe.src.deploy.war.notWar.failure=Disribuzione fallita. Il nome file deve terminare con .war
+probe.src.deploy.war.notinstalled={0} non \u00e9 stato installato
+probe.src.deploy.war.uploadfailure=Si \u00e9 verificato un problema caricando il file: {0}
+probe.src.reset.datasource.c3p0=Qusto datasource non pu\u00f2 essere resettato
+probe.src.reset.datasource.notfound=La risorsa {0} non esiste
+
+probe.jsp.title.wrapper=Java Service Wrapper
+probe.jsp.wrapper.not_available=Questa JVM non \u00e9 controllata dal Java Service Wrapper
+probe.jsp.wrapper.menu.restart=riavvio JVM
+probe.jsp.wrapper.menu.stop=Ferma JVM
+probe.jsp.wrapper.menu.thread_dump=Richiesta thread dump
+probe.jsp.wrapper.h3.info=Informaxione Wrapper
+probe.jsp.wrapper.h3.props=Propriet\u00e0 Wrapper
+probe.jsp.wrapper.confirm.restart=Sei sicuro di voler riavviaee la JVM?
+probe.jsp.wrapper.confirm.stop=La JVM non pu\u00f2 essere nuovamente riavviata da Probe. Sei sicuro di voler fermare la JVM?
+probe.jsp.wrapper.jvm.stopping=Arresto JVM in corso. Se \u00e9 necessario riavviarla nuovamente dovrete farlo tramite console.
+probe.jsp.wrapper.jvm.restarting=Riavvio JVM in corso. Questo pu\u00f2 durare alcuni minuti.
+probe.jsp.wrapper.jvm.thread_dump=Richiesto Thread Dump JVM. Si pu\u00f2 trovarlo normalmente nel file di log del Wrapper.
+
+probe.jsp.wrapper.user=Utente:
+probe.jsp.wrapper.interactive_user=Utente interattivo :
+probe.jsp.wrapper.java_pid=PID Java :
+probe.jsp.wrapper.pid=PID Wrapper:
+probe.jsp.wrapper.service=Attivo come servizio:
+probe.jsp.wrapper.debug=Debug abilitato:
+probe.jsp.wrapper.version=Versione Wrapper :
+
+probe.jsp.decorator.system.title=Sistema
+probe.jsp.decorator.system.overview=Panoramica
+probe.jsp.decorator.system.memory=Utilizzo memoria
+probe.jsp.decorator.system.props=Propriet\u00e0 di sistema
+probe.jsp.decorator.system.os=Informazioni S.O.
+probe.jsp.decorator.system.wrapper=Controllo Wrapper
+
+probe.jsp.os.h3.information=Informazioni S.O.
+probe.jsp.os.h3.charts=Grafico storico
+probe.jsp.os.chart.cpu=Impegno CPU della JVM (%)
+probe.jsp.os.chart.cpu.alt=Grafico uso CPU della JVM
+probe.jsp.os.chart.cpu.legend=Impegno CPU
+probe.jsp.os.chart.memory=Impegno CPU di S.O. e JVM (KB)
+probe.jsp.os.chart.memory.alt=Impegno memoria fisica di S.O. e JVM
+probe.jsp.os.chart.memory.legend.total=Totale usato
+probe.jsp.os.chart.memory.legend.jvm=Usato da JVM
+probe.jsp.os.chart.swap=Impegno swap (KB)
+probe.jsp.os.chart.swap.alt=Grafico uso Swap
+probe.jsp.os.chart.swap.legend=swap usato
+#probe.jsp.os.chart.fd=File descriptors
+#probe.jsp.os.chart.fd.alt=File descriptors chart
+#probe.jsp.os.chart.fd.legend.open=open file descriptors
+#probe.jsp.os.chart.fd.legend.max=max file descriptors
+probe.jsp.os.card.name=Nome S.O.:
+probe.jsp.os.card.version= Versione S.O.:
+probe.jsp.os.card.processors=Processors:
+probe.jsp.os.card.totalMemory= Totale RAM:
+probe.jsp.os.card.freeMemory= RAM libera:
+probe.jsp.os.card.committedVirtualMemory= Memoria JVM committata:
+probe.jsp.os.card.totalSwap= Swap totale:
+probe.jsp.os.card.freeSwap= Swap libero:
+
+probe.jsp.title.testDataSource={0} -> {1}
+probe.src.dataSourceTest.resource.lookup.failure=Sorgente dati {0} inesistente
+probe.src.dataSourceTest.connection.failure=Impossibile stabilire connessione al database. {0}
+probe.src.dataSourceTest.connection.success=Connesso al database con successo
+probe.src.dataSourceTest.sql.required=Richiesto testo della query Sql
+probe.src.dataSourceTest.sql.failure=Incontrato errore durante l'esecuzione della query. {0}
+probe.src.dataSourceTest.sql.null=NULL
+probe.src.dataSourceTest.cachedResultSet.failure=Impossibile recuperare un cached result set
+#probe.jsp.dataSourceTest.help=This screen can help you to test your data source database connectivity.\
+#Test connection checks if a database connection can be established and displays some database information.\
+#Execute SQL executes an SQL query you enter against the database.\
+#You can see a database operation output or an error message at the bottom of the screen.\
+#Show history displays a list of queries you have executed.\
+#Please consider using Show options to limit the number of records returned by you query for not to waste your system resources.
+probe.jsp.dataSourceTest.menu.back=Torna a sorgenti dati
+probe.jsp.dataSourceTest.menu.connect=Test connessione
+probe.jsp.dataSourceTest.menu.execute=Esegui sql (Ctrl+Enter)
+probe.jsp.dataSourceTest.menu.showHistory=Mostra storico (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.hideHistory=Nascondi storico (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.showOptions=Mostra optzoni (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.hideOptions=Nascondi optzoni (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.wrap=A capo righe
+probe.jsp.dataSourceTest.menu.nowrap=Righe non a capo
+probe.jsp.dataSourceTest.menu.abbreviations=Aiuto!
+probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit abilitato)
+probe.jsp.dataSourceTest.sqlForm.maxRows.label=Record da recuperare
+probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Record per pagina
+probe.jsp.dataSourceTest.sqlForm.historySize.label=Dimensione storico
+probe.jsp.dataSourceTest.h3.results=Risultato query
+probe.jsp.dataSourceTest.results.rowcount={0} record(s) modificati.
+probe.jsp.dataSourceTest.h3.metaData=Informazioni database
+probe.jsp.dataSourceTest.chart.usage.title=Uso sorgente dati
+probe.jsp.dataSourceTest.dbMetaData.col.propName=Nome propriet\u00e0
+probe.jsp.dataSourceTest.dbMetaData.col.propValue=Valore propriet\u00e0
+probe.jsp.dataSourceTest.dbMetaData.dbProdName=Nome prodotto database
+probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Versione prodotto database
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=Nome Driver JDBC
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=Versione Driver JDBC
+probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=Versione JDBC
+probe.jsp.dataSourceTest.results.paging.banner.item_name=record
+probe.jsp.dataSourceTest.results.paging.banner.items_name=records
+probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
+probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Mostra uno {0}.
+probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Mostra tutto {2}.
+probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Mostra da {2} a {3}.
+probe.jsp.dataSourceTest.results.paging.banner.first=Primo
+probe.jsp.dataSourceTest.results.paging.banner.prev=Precedente
+probe.jsp.dataSourceTest.results.paging.banner.next=Successivo
+probe.jsp.dataSourceTest.results.paging.banner.last=Ultimo
+probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Vai a pagina {0}
+probe.jsp.dataSourceTest.sql.completed=Istruzione completata.
+probe.jsp.dataSourceTest.h3.queryHistory=Storico Query
+probe.jsp.dataSourceTest.queryHistory.empty=La lista storico vuota
+
+probe.jsp.whois.timeout=Impossibile completare interrogazione WHOIS . Verificare se WHOIS \u00e9 bloccato dalla vs. rete.
+
+probe.jsp.threadstack.native=Codice nativo
+probe.jsp.threadstack.unknown=Sorgente sconosciuto
+probe.jsp.threadstack.unavailable=Stack trace non \u00e9 disponibile per questo thread
+
+probe.jsp.tooltip.close=chiudi
+
+probe.jsp.sessions.h3=Sessioni
+probe.jsp.sessions.search.h3=Criterio di ricerca sessioni
+probe.jsp.sessions.menu.showSearch=Ricerca sessioni
+probe.jsp.sessions.menu.applySearch=Applica ricerca
+probe.jsp.sessions.menu.clearSearch=Cancella ricerca
+probe.jsp.sessions.menu.searchHelp=Aiuto
+#probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
+#Whether Session Id matches a regular expression.\
+#Whether Last IP contains a substring.\
+#Whether Idle Time falls into a range specified in seconds.\
+#Whether Age falls into a range specified in seconds.\
+#Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
+#This condition allows finding a session with an attribute A and/or an attribute B set.
+probe.jsp.sessions.search.sessionId=id sessione ( RegExp )
+probe.jsp.sessions.search.attrName=Nomi attributi ( lista RegExp )
+probe.jsp.sessions.search.ageFrom=Dura da (sec)
+probe.jsp.sessions.search.ageTo=a
+probe.jsp.sessions.search.idleTimeFrom=Periodo inattivit\u00e0 da (sec)
+probe.jsp.sessions.search.idleTimeTo=a
+probe.jsp.sessions.search.lastIP=Ultimo IP (sottostringa)
+probe.jsp.sessions.search.results.h3=Resultato ricerca sessioni
+probe.src.sessions.search.empty=Criterio di ricerca vuoto
+probe.src.sessions.search.results.empty=Nessuna sessione corrisponde al criterio di ricerca
+probe.src.sessions.search.invalid=Criterio di ricerca non invalido
+probe.src.sessions.search.invalid.sessionId=Espressione regulare id sessione non invalida. {0}
+probe.src.sessions.search.invalid.attrName=Nome attributo espressione regolare non invalida. {0}
+probe.src.sessions.search.invalid.ageFrom=Durata da valore non invalida
+probe.src.sessions.search.invalid.ageTo=Durata da valore non invalida
+probe.src.sessions.search.invalid.idleTimeFrom=Periodo inattivit\u00e0 da valore non invalido
+probe.src.sessions.search.invalid.idleTimeTo=Periodo inattivit\u00e0 a valore non invalido
+probe.src.sessions.search.invalid.lastIP=Ultima espressione regolare IP non invalida. {0}
+
+probe.jsp.app.nav.title=Applicazione
+probe.jsp.app.nav.summary=Riepilogo
+probe.jsp.app.nav.sessions=Sessioni
+probe.jsp.app.nav.attributes=Attributi
+probe.jsp.app.nav.jsps=JSP
+probe.jsp.app.nav.resources=Risorse
+probe.jsp.app.nav.initParams=Parametri
+probe.jsp.app.nav.webxml=Deployment
+probe.jsp.app.nav.contextxml=Descrittore contesto
+probe.jsp.app.nav.filters=Filtri
+probe.jsp.app.nav.servlets=Servlet
+
+probe.jsp.title.app.initParams={0} - inizializzazione parametri
+probe.jsp.app.initParams.h3.params=Inizializzazione parametri contesto
+probe.jsp.app.initParams.col.name=Nome
+probe.jsp.app.initParams.col.value=Valore
+probe.jsp.app.initParams.col.source=Sorgente
+probe.jsp.app.initParams.source.deplDescr=web.xml
+probe.jsp.app.initParams.source.context=contesto
+probe.jsp.app.initParams.empty=Non esistono parametri di inizializzazione contesto definiti per questa applicazione
+
+probe.jsp.title.app.viewXMLConf={0} - {1}
+probe.jsp.app.viewXMLConf.notfound= Non trovato {0} per questa applicazione
+probe.jsp.app.viewXMLConf.h3.scr=sorgente di: {0}
+probe.src.app.viewxmlconf.webxml.desc=Descrittore distribuzione
+probe.src.app.viewxmlconf.contextxml.desc=Descrittore contesto
+
+probe.jsp.title.app.filters={0} - filtri
+probe.jsp.title.app.filtermaps={0} - corrispondenze filtri
+probe.jsp.app.filtermaps.opt.defs=Definizione filtri
+probe.jsp.app.filters.opt.maps=Corrispondenze filtro
+probe.jsp.app.filters.h3.defs=Filtri
+probe.jsp.app.filtermaps.h3.maps=Corrispondenze filtro
+probe.jsp.app.filters.col.filterName=Nome
+probe.jsp.app.filters.col.filterClass=Classe
+probe.jsp.app.filters.col.filterDesc=Descrizione
+probe.jsp.app.filtermaps.col.url=Url
+probe.jsp.app.filtermaps.col.filterName=Nome filtro
+probe.jsp.app.filtermaps.col.servletName=Nome servlet
+probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
+probe.jsp.app.filters.empty=Non esistono filtri definiti per questa applicazione
+probe.jsp.app.filtermaps.empty=Non esistono corrispondenze filtri definiti per questa applicazione
+
+probe.jsp.title.servlets.all=Servlet
+probe.jsp.title.servlets.app={0} - servlet
+probe.jsp.title.servletmaps.all=Corrispondenze servlet
+probe.jsp.title.servletmaps.app={0} - corrispondenze servlet
+probe.jsp.servletmaps.opt.defs=Servlet
+#probe.jsp.servletmaps.opt.all=Show all
+probe.jsp.servlets.opt.maps=Corrispondenze servlet
+#probe.jsp.servlets.opt.all=Show all
+probe.jsp.servlets.h3.defs=Servlet
+probe.jsp.servletmaps.h3.maps=Corrispondenze servlet
+probe.jsp.servletmaps.col.url=Url
+probe.jsp.servletmaps.col.servletName=Nomi servlet
+probe.jsp.servlets.col.applicationName=App
+probe.jsp.servlets.col.servletName=Nome
+probe.jsp.servletmaps.col.servletClass=Classe servlet
+probe.jsp.servlets.col.available=Disponibile
+probe.jsp.servlets.col.loadOnStartup=Startup
+probe.jsp.servlets.empty=There are no servlets defined
+probe.jsp.servletmaps.empty=There are no servlet mappings defined
+probe.jsp.servlets.col.minTime=Tempo min
+probe.jsp.servlets.col.maxTime=Tempo max
+probe.jsp.servlets.col.processingTime=Tempo proc
+probe.jsp.servlets.col.loadTime=Tempo caric.
+probe.jsp.servlets.col.multiThreaded=Thrd mult.
+probe.jsp.servlets.col.requestCount=Rich.
+probe.jsp.servlets.col.errorCount=Err
+
+probe.jsp.title.app.summary={0} - riassunto applicazione
+probe.jsp.app.summary.application=Nome applicazione:
+probe.jsp.app.summary.description=Descrizione:
+probe.jsp.app.summary.distributable=Clustered:
+probe.jsp.app.summary.docBase=Doc. base:
+probe.jsp.app.summary.servletVersion=Versione servlet:
+probe.jsp.app.summary.sessionTimeout=Timeout sessione:
+probe.jsp.app.summary.servletCount=Conteggio servlet:
+probe.jsp.app.summary.status=Questa applicazione \u00e9
+probe.jsp.app.summary.requestCount=Conteggio richieste:
+probe.jsp.app.summary.sessionCount=Sessioni
+probe.jsp.app.summary.sessionAttributeCount=Attr. sessioni.
+probe.jsp.app.summary.sessionSize=Dimensione sessioni
+probe.jsp.app.summary.contextAttributeCount=Attr. contesto.
+probe.jsp.app.summary.serializable=Ser.
+probe.jsp.app.summary.errorCount=Conteggio Errori:
+probe.jsp.app.summary.processingTime=Tempo di calcolo:
+probe.jsp.app.summary.minTime=Tempo min:
+probe.jsp.app.summary.maxTime=Tempo max:
+probe.jsp.app.summary.avgTime=Tempo di risposta medio:
+probe.jsp.app.summary.h3.static=Informazioni applicazione
+probe.jsp.app.summary.h3.runtime=Informazioni runtime
+probe.jsp.app.summary.invalidApp=L'applicazione non \u00e9 valida
+probe.jsp.app.summary.runtime.unavailable=Questa applicazione non \u00e9 attiva, le informazioni runtime information non sono disponibili
+probe.jsp.app.summary.menu.start=Avvia
+probe.jsp.app.summary.menu.stop=Ferma
+probe.jsp.app.summary.menu.reload=Ricarica
+probe.jsp.app.summary.menu.undeploy=Disinstalla
+probe.jsp.app.summary.menu.goTo=Vai a
+probe.jsp.app.summary.menu.startStats=Avvia recupero statistiche
+probe.jsp.app.summary.menu.stopStats=Ferma recupero statistiche
+probe.jsp.app.summary.undeploy.confirm=Questa operazione non pu\u00f2 essere revertita. Vuoi veramente RIMUOVERE {0}?
+probe.jsp.app.summary.dataSourceUsageScore=Uso sorgente dati
+probe.jsp.app.summary.jdbcUsage.title=Uso Max.conn. {0}%
+probe.jsp.app.summary.h3.charts=Grafici statistiche
+probe.jsp.app.summary.charts.requests.title=Numero di richieste
+probe.jsp.app.summary.charts.avgProcTime.title=Tempo medio di risposta (ms)
+probe.jsp.app.summary.charts.requests.legend=Richieste
+probe.jsp.app.summary.charts.errors.legend=Errori
+probe.jsp.app.summary.charts.avgProcTime.legend=Tempo medio risposta
+
+probe.jsp.title.allappstats=Statistica applicazione
+probe.jsp.allappstats.charts.totalAvgProcTime.legend=Tempo medio risposta
+probe.jsp.allappstats.charts.totalReq.legend=Richieste
+probe.jsp.allappstats.charts.totalAvgProcTime.title=Tempo medio risposta cumulativo (ms)
+probe.jsp.allappstats.charts.allAppAvgProcTime.titleTempo medio risposta per app (ms)
+probe.jsp.allappstats.charts.totalReq.title=Richieste cumulative
+probe.jsp.allappstats.charts.allAppReq.title=Richieste per app (ms)
+probe.jsp.allappstats.h3.charts=Grafici statistiche
+
+#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
+#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
+#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
+#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
+
+#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
+#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
diff --git a/web/src/main/conf/WEB-INF/messages_ja.properties b/web/src/main/conf/WEB-INF/messages_ja.properties
index b3eabb620c..2ec903415e 100644
--- a/web/src/main/conf/WEB-INF/messages_ja.properties
+++ b/web/src/main/conf/WEB-INF/messages_ja.properties
@@ -1,718 +1,718 @@
-#
-# Licensed under the GPL License. You may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-#
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-
-# Japanese translation by Kan Ogawa
-probe.jsp.i18n.credit=\u83c5\u5c0f\u5ddd\u65e5\u672c\u8a9e\u8a33
-#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
-
-probe.jsp.generic.no=\u3044\u3044\u3048
-probe.jsp.generic.yes=\u306f\u3044
-probe.jsp.generic.abbreviations=\u7565\u8a9e\u306e\u610f\u5473\u306f?
-
-probe.jsp.app.attributes.col.delete=\u5c5e\u6027\u3092\u524a\u9664\u3059\u308b
-probe.jsp.app.attributes.col.delete.title=\u5c5e\u6027\u3092\u524a\u9664\u3059\u308b
-probe.jsp.app.attributes.col.name=\u540d\u524d
-probe.jsp.app.attributes.col.type=\u578b
-probe.jsp.app.attributes.col.value=\u5024
-probe.jsp.app.attributes.h3.attributes=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u5c5e\u6027
-probe.jsp.app.attributes.noattributes=\u3053\u306e\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u306f\u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-
-probe.jsp.applications.alt.reload=\u518d\u8aad\u8fbc
-probe.jsp.applications.alt.undeploy=\u914d\u5099\u89e3\u9664
-probe.jsp.applications.col.contextAttributeCount=C.Attr
-probe.jsp.applications.col.description=\u8aac\u660e
-probe.jsp.applications.col.distributable=Clstred.?
-probe.jsp.applications.col.jdbcUsage=JDBC\u4f7f\u7528\u7387
-probe.jsp.applications.col.jsp=JSP
-probe.jsp.applications.col.name=\u540d\u524d
-probe.jsp.applications.col.serializable=Ser.?
-probe.jsp.applications.col.sessionAttributeCount=S.Attr
-probe.jsp.applications.col.sessionCount=Sess.
-probe.jsp.applications.col.sessionTimeout=Sess.Timeout
-probe.jsp.applications.col.size=\u30b5\u30a4\u30ba
-probe.jsp.applications.col.status=\u72b6\u614b
-probe.jsp.applications.col.requestCount=Req.
-probe.jsp.applications.help.contextAttributeCount=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u5c5e\u6027\u306e\u5408\u8a08\u6570
-probe.jsp.applications.help.distributable=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c"\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u53ef\u80fd"\u3067\u3059
-#probe.jsp.applications.help.requestCount=total number of requests processed by servlets
-probe.jsp.applications.help.serializable=\u5168\u3066\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u5c5e\u6027\u304cjava.io.Serializable\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059
-probe.jsp.applications.help.sessionAttributeCount=\u30bb\u30c3\u30b7\u30e7\u30f3\u5c5e\u6027\u306e\u5408\u8a08\u6570
-probe.jsp.applications.help.sessionCount=\u30bb\u30c3\u30b7\u30e7\u30f3\u6570
-probe.jsp.applications.hidesize=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30b5\u30a4\u30ba\u3092\u96a0\u3059
-probe.jsp.applications.jdbcUsage.title=\u6700\u5927\u306e\u63a5\u7d9a\u4f7f\u7528\u7387 {0}%
-probe.jsp.applications.jsp.view=\u53c2\u7167
-probe.jsp.applications.serializable.no=\u3044\u3044\u3048
-probe.jsp.applications.serializable.yes=\u306f\u3044
-probe.jsp.applications.showsize=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30b5\u30a4\u30ba\u3092\u8868\u793a\u3059\u308b (\u51e6\u7406\u304c\u9045\u304f\u306a\u308a\u307e\u3059)
-probe.jsp.applications.status.down=\u505c\u6b62
-probe.jsp.applications.status.down.title={0} \u3092\u59cb\u52d5\u3059\u308b
-probe.jsp.applications.status.up=\u5b9f\u884c\u4e2d
-probe.jsp.applications.title.reload={0} \u3092\u518d\u8aad\u8fbc\u3059\u308b
-probe.jsp.applications.title.status.up={0} \u3092\u505c\u6b62\u3059\u308b
-probe.jsp.applications.title.undeploy={0} \u3092\u914d\u5099\u89e3\u9664\u3059\u308b
-probe.jsp.applications.undeploy.confirm=\u3053\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u3068\u5143\u306b\u306f\u623b\u305b\u307e\u305b\u3093\u3002\u672c\u5f53\u306b\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f
-
-probe.jsp.connectors.information=\u6709\u52b9\u3068\u306a\u3063\u3066\u3044\u308b\u30b3\u30cd\u30af\u30bf\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u60c5\u5831\u3002\u60c5\u5831\u306f\u30e9\u30a4\u30d6\u5f62\u5f0f\u3067\u3002\u30c1\u30e3\u30fc\u30c8\u3092\u66f4\u65b0\u3059\u308b\u3053\u306e\u30da\u30fc\u30b8\u4e0a\u3067\u3068\u3069\u307e\u3063\u3066\u3044\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-probe.jsp.connectors.processor.errorCount=\u30a8\u30e9\u30fc\u6570:
-probe.jsp.connectors.processor.maxTime=\u6700\u9ad8\u51e6\u7406\u6642\u9593:
-probe.jsp.connectors.processor.processingTime=\u51e6\u7406\u6642\u9593:
-probe.jsp.connectors.processor.received=\u53d7\u4fe1:
-probe.jsp.connectors.processor.requestCount=\u30ea\u30af\u30a8\u30b9\u30c8\u6570:
-probe.jsp.connectors.processor.sent=\u9001\u4fe1:
-probe.jsp.connectors.proc_time.title=\u5404\u533a\u9593\u306e\u51e6\u7406\u6642\u9593
-probe.jsp.connectors.requests.title=\u6570\u3001\u5404\u9593\u9694\u306e\u8981\u6c42\u306e
-probe.jsp.connectors.traffic.title=\u91cf\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\uff08\u30d0\u30a4\u30c8\u5358\u4f4d\uff09\u306e\u5404\u533a\u9593\u306e
-probe.jsp.connectors.wrk.col.in=\u5165\u529b
-probe.jsp.connectors.wrk.col.out=\u51fa\u529b
-probe.jsp.connectors.wrk.col.processingTime=\u51e6\u7406\u6642\u9593
-probe.jsp.connectors.wrk.col.remoteAddr=\u63a5\u7d9a\u5143IP
-probe.jsp.connectors.wrk.col.stage=\u72b6\u614b
-probe.jsp.connectors.wrk.col.url=URL
-#probe.jsp.connectors.wrk.col.thread=Thread
-probe.jsp.connectors.wrk.empty=\u30d7\u30ed\u30bb\u30c3\u30b5\u306f\u7a7a\u3067\u3059\u3002
-#probe.jsp.connectors.wrk.stage.endInput=EndInput
-#probe.jsp.connectors.wrk.stage.endOutput=EndOutput
-#probe.jsp.connectors.wrk.stage.ended=Ended
-probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
-#probe.jsp.connectors.wrk.stage.new=New
-#probe.jsp.connectors.wrk.stage.parse=Parse
-#probe.jsp.connectors.wrk.stage.prepare=Prepare
-#probe.jsp.connectors.wrk.stage.service=Service
-
-probe.jsp.cluster.chart.requests={0}\u79d2\u6bce\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u6570
-probe.jsp.cluster.chart.traffic={0}\u79d2\u6bce\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u91cf
-probe.jsp.cluster.h3.info=\u30af\u30e9\u30b9\u30bf\u60c5\u5831
-probe.jsp.cluster.h3.members=\u30af\u30e9\u30b9\u30bf\u30e1\u30f3\u30d0
-probe.jsp.cluster.heartbeatFreq=\u30cf\u30fc\u30c8\u30d3\u30fc\u30c8\u306e\u5468\u671f:
-probe.jsp.cluster.heartbeatTimeout=\u30cf\u30fc\u30c8\u30d3\u30fc\u30c8\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8:
-probe.jsp.cluster.info=\u60c5\u5831:
-probe.jsp.cluster.manager=\u30de\u30cd\u30fc\u30b8\u30e3:
-probe.jsp.cluster.mcastAddress=\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8\u30a2\u30c9\u30ec\u30b9:
-probe.jsp.cluster.mcastBindAddress=\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8\u30d0\u30a4\u30f3\u30c9\u30a2\u30c9\u30ec\u30b9:
-probe.jsp.cluster.mcastBindAddress.all=\u5168\u3066
-probe.jsp.cluster.mcastTTL=\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8TTL
-probe.jsp.cluster.members.col.address=\u30a2\u30c9\u30ec\u30b9
-probe.jsp.cluster.members.col.avgMsgSize=AvgSz
-probe.jsp.cluster.members.col.closes=Closes
-probe.jsp.cluster.members.col.connectCount=CC
-probe.jsp.cluster.members.col.connected=\u63a5\u7d9a\u6e08?
-probe.jsp.cluster.members.col.disconnectCount=DC
-probe.jsp.cluster.members.col.failures=Failures
-probe.jsp.cluster.members.col.inQueueCounter=InQ
-probe.jsp.cluster.members.col.keepAlive=Keep Alive
-probe.jsp.cluster.members.col.openFailures=Open fails
-probe.jsp.cluster.members.col.opens=Opens
-probe.jsp.cluster.members.col.outQueueCounter=OutQ
-probe.jsp.cluster.members.col.queueSize=QSz
-probe.jsp.cluster.members.col.queueSizeBytes=QSzB
-probe.jsp.cluster.members.col.requests=Req.
-probe.jsp.cluster.members.col.resends=Resends
-probe.jsp.cluster.members.col.sent=\u9001\u4fe1
-probe.jsp.cluster.members.col.socketLimit=Socket Limit
-probe.jsp.cluster.members.failing.alt=\u30c0\u30a6\u30f3
-probe.jsp.cluster.members.failing.title=\u30e1\u30f3\u30d0\u306f\u30c0\u30a6\u30f3\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059
-probe.jsp.cluster.members.healthy.alt=\u7a3c\u52d5\u4e2d
-probe.jsp.cluster.members.healthy.title=\u30e1\u30f3\u30d0\u306f\u6b63\u5e38\u306b\u7a3c\u52d5\u4e2d\u3067\u3059
-probe.jsp.cluster.mode=\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30e2\u30fc\u30c9:
-probe.jsp.cluster.name=\u540d\u524d:
-probe.jsp.cluster.noMembers=\u3053\u306e\u30ce\u30fc\u30c9\u306b\u8a8d\u8b58\u3055\u308c\u3066\u3044\u308b\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30af\u30e9\u30b9\u30bf\u30e1\u30f3\u30d0\u30fc\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-probe.jsp.cluster.notAvailable=\u30af\u30e9\u30b9\u30bf\u60c5\u5831\u306f\u30af\u30e9\u30b9\u30bf\u30b5\u30dd\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3057\u305fTomcat 5.5.x\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002
-probe.jsp.cluster.received=\u53d7\u4fe1
-probe.jsp.cluster.receiverAddress=\u53d7\u4fe1\u5074\u306e\u30a2\u30c9\u30ec\u30b9:
-probe.jsp.cluster.receiverPort=\u53d7\u4fe1\u5074\u306e\u30dd\u30fc\u30c8:
-probe.jsp.cluster.sent=\u9001\u4fe1
-
-probe.jsp.copyright=Copyright 2009-${copyright}. Do you have any questions or suggestions? Visit us at https://github.com/psi-probe/psi-probe
-
-probe.jsp.dataSourceGroups.empty=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u6709\u52b9\u306a\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8a2d\u5b9a\u3057\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-probe.jsp.dataSourceGroups.information=\u4e0b\u8a18\u306e\u8868\u306b\u306f\u3001JDBC URL\u5358\u4f4d\u3067\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u305f\u73fe\u5728\u63a5\u7d9a\u4e2d\u304a\u3088\u3073\u63a5\u7d9a\u53ef\u80fd\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306e\u5408\u8a08\u6570\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002\u3053\u306e\u60c5\u5831\u306b\u3088\u3063\u3066\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u90e8\u306b\u8a2d\u5b9a\u3055\u308c\u305fJDBC\u30ea\u30bd\u30fc\u30b9\u3092\u4ecb\u3057\u3066\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308b\u5404\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u6570\u3092\u628a\u63e1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
-probe.jsp.dataSourceGroups.jdbcUsage.title=\u6700\u5927\u63a5\u7d9a\u4f7f\u7528\u7387 {0}%
-probe.jsp.dataSourceGroups.list.col.busy=\u4f7f\u7528\u4e2d\u306e\u63a5\u7d9a\u6570\u306e\u5408\u8a08
-probe.jsp.dataSourceGroups.list.col.established=\u4f7f\u7528\u53ef\u80fd\u306a\u63a5\u7d9a\u6570\u306e\u5408\u8a08
-probe.jsp.dataSourceGroups.list.col.max=\u6700\u5927\u63a5\u7d9a\u6570\u306e\u5408\u8a08
-probe.jsp.dataSourceGroups.list.col.resourceCount=\u30ea\u30bd\u30fc\u30b9\u6570
-probe.jsp.dataSourceGroups.list.col.url=URL
-probe.jsp.dataSourceGroups.list.col.usage=\u4f7f\u7528\u7387
-probe.jsp.dataSourceGroups.menu.back=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u4e00\u89a7\u306b\u623b\u308b
-
-#probe.jsp.datasources.h3.global=Global Resources
-#probe.jsp.datasources.h3.app=Application Resources
-#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
-#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
-probe.jsp.datasources.empty=\u3053\u306eTomcat\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u306f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-probe.jsp.datasources.help.max=\u30d7\u30fc\u30eb\u306e\u6700\u5927\u63a5\u7d9a\u6570
-probe.jsp.datasources.help.established=\u518d\u5229\u7528\u3092\u8a31\u53ef\u3057\u3066\u3044\u308b\u4f7f\u7528\u53ef\u80fd\u306a>\u63a5\u7d9a\u6570
-probe.jsp.datasources.help.busy=\u518d\u5229\u7528\u3092\u8a31\u53ef\u3057\u3066\u3044\u306a\u3044\u4f7f\u7528\u4e2d\u306e\u63a5\u7d9a\u6570
-probe.jsp.datasources.list.col.application=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
-probe.jsp.datasources.list.col.auth=\u8a8d\u8a3c\u65b9\u5f0f
-probe.jsp.datasources.list.col.busy=B
-probe.jsp.datasources.list.col.description=\u8aac\u660e
-probe.jsp.datasources.list.col.established=E
-probe.jsp.datasources.list.col.linkTo=\u30ea\u30f3\u30af
-probe.jsp.datasources.list.col.max=M
-probe.jsp.datasources.list.col.reset.alt=\u30ea\u30bb\u30c3\u30c8
-probe.jsp.datasources.list.col.resource=\u30ea\u30bd\u30fc\u30b9
-probe.jsp.datasources.list.col.type=\u578b
-probe.jsp.datasources.list.col.url=URL
-probe.jsp.datasources.list.col.usage=\u4f7f\u7528\u7387
-probe.jsp.datasources.list.col.user=\u30e6\u30fc\u30b6
-probe.jsp.datasources.list.misconfigured.alt=\u30a8\u30e9\u30fc
-probe.jsp.datasources.opt.groupByJdbcUrl=JDBC URL\u5358\u4f4d\u3067\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b
-
-probe.jsp.deployment.war.success={0} \u3092\u914d\u5099\u3057\u307e\u3057\u305f\u3002
-probe.jsp.deployment.compilationDetails=\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u8a73\u7d30\u3092\u898b\u308b
-probe.jsp.deployment.s1.compile.label=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u914d\u5099\u3057\u305f\u5f8c\u306bJSP\u753b\u9762\u3092\u30d7\u30ea\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b (\u6570\u5206\u304b\u304b\u308a\u307e\u3059)\u3002
-probe.jsp.deployment.s1.description=\u30b5\u30fc\u30d0\u306b .war \u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d\u304c\u6307\u5b9a\u3055\u308c\u306a\u3044\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002META-INF/context.xml \u3092\u542b\u3080 .war \u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u969b\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u306f\u914d\u5099\u3059\u308b war \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u540c\u3058 "path" \u5c5e\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u305d\u3046\u3057\u306a\u3044\u3068 Tomcat 5.0.x \u3068\u9593\u9055\u3048\u3066\u3057\u307e\u3046\u3067\u3057\u3087\u3046\u3002
-probe.jsp.deployment.s1.discard.label="work" \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u3001\u305d\u306e\u4e2d\u8eab\u3092\u6d88\u53bb\u3059\u308b\u3002
-probe.jsp.deployment.s1.file.label=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b .war \u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-probe.jsp.deployment.s1.submit=\u914d\u5099
-probe.jsp.deployment.s1.title=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 (\u57fa\u672c)
-probe.jsp.deployment.s1.update.label=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u3059\u3067\u306b\u914d\u5099\u6e08\u3067\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u66f4\u65b0\u3059\u308b\u3002
-probe.jsp.deployment.s2.context.label=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d (\u4f8b. /dummy)
-probe.jsp.deployment.s2.description=%CATALINA_BASE%/conf/Catalina/localhost/ \u306b\u3042\u308b .xml \u30d5\u30a1\u30a4\u30eb\u3092\u3059\u3067\u306b\u4f5c\u6210\u6e08\u306e\u5834\u5408\u3001\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d\u304c .xml \u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d\u3067\u3042\u308b\u3068\u5224\u65ad\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml \u3067\u3059\u3002\u6ce8\u610f: Tomcat 5.0.x\u3067\u306f "path" \u5c5e\u6027\u3092\u6301\u3064 .xml \u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3059\uff01
-probe.jsp.deployment.s2.title=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d\u306e\u914d\u5099 (\u5fdc\u7528)
-
-probe.jsp.follow.h3.fileContent=\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u8eab
-probe.jsp.follow.h3.fileInfo=\u30d5\u30a1\u30a4\u30eb\u60c5\u5831
-#probe.jsp.follow.h3.sources=Logging sources
-probe.jsp.follow.loading=\u8aad\u8fbc\u4e2d...
-probe.jsp.follow.menu.back=\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u4e00\u89a7\u306b\u623b\u308b
-probe.jsp.follow.menu.clear=\u30d0\u30c3\u30d5\u30a1\u3092\u30af\u30ea\u30a2\u3059\u308b
-probe.jsp.follow.menu.download=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b
-probe.jsp.follow.menu.nowrap=\u81ea\u52d5\u6539\u884c\u3057\u306a\u3044
-probe.jsp.follow.menu.pause=\u76e3\u8996\u3092\u4e00\u6642\u505c\u6b62\u3059\u308b
-probe.jsp.follow.menu.resume=\u76e3\u8996\u3092\u518d\u958b\u3059\u308b
-probe.jsp.follow.menu.wrap=\u81ea\u52d5\u6539\u884c\u3059\u308b
-probe.jsp.follow.menu.zoomin=\u62e1\u5927\u8868\u793a\u3059\u308b
-probe.jsp.follow.menu.zoomout=\u7e2e\u5c0f\u8868\u793a\u3059\u308b
-probe.jsp.followed_file_info.fileName=\u30d5\u30a1\u30a4\u30eb\u540d:
-probe.jsp.followed_file_info.lastModified=\u6700\u7d42\u66f4\u65b0\u65e5\u6642:
-probe.jsp.followed_file_info.size=\u30b5\u30a4\u30ba:
-
-probe.jsp.jsps.col.lastmodified=\u6700\u7d42\u66f4\u65b0\u65e5\u6642
-probe.jsp.jsps.col.message=\u30e1\u30c3\u30bb\u30fc\u30b8
-probe.jsp.jsps.col.name=JSP\u540d
-probe.jsp.jsps.col.size=\u30b5\u30a4\u30ba
-probe.jsp.jsps.col.status=\u72b6\u614b
-probe.jsp.jsps.notfound=\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306fJSP\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-probe.jsp.jsps.opt.compile=\u9078\u629e\u3057\u305fJSP\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b
-probe.jsp.jsps.opt.compileall=\u5168\u3066\u306eJSP\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b
-probe.jsp.jsps.opt.discardscratch="work" \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4e2d\u3092\u6d88\u53bb\u3059\u308b
-probe.jsp.jsps.opt.toggleall=\u5168\u3066\u306eJSP\u306e\u9078\u629e\u30fb\u975e\u9078\u629e\u72b6\u614b\u3092\u30c8\u30b0\u30eb\u3059\u308b
-probe.jsp.jsps.status.compiled=\u30b3\u30f3\u30d1\u30a4\u30eb\u6e08
-probe.jsp.jsps.status.failed=\u5931\u6557
-probe.jsp.jsps.status.outdated=\u672a\u30b3\u30f3\u30d1\u30a4\u30eb
-
-probe.jsp.logs.col.app=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
-probe.jsp.logs.col.class=\u30af\u30e9\u30b9\u540d
-probe.jsp.logs.col.file=\u30d5\u30a1\u30a4\u30eb\u540d
-#probe.jsp.logs.col.level=Level
-probe.jsp.logs.col.modified=\u66f4\u65b0\u65e5\u6642
-probe.jsp.logs.col.name=\u540d\u524d
-probe.jsp.logs.col.size=\u30b5\u30a4\u30ba
-probe.jsp.logs.col.type=\u578b
-probe.jsp.logs.download.alt=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b
-probe.jsp.logs.hideapps=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u96a0\u3059
-probe.jsp.logs.showapps=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3059\u308b
-probe.jsp.logs_notSupported.message=\u3042\u306a\u305f\u306eJava\u4eee\u60f3\u30de\u30b7\u30f3 {0} {1} \u306fSUN\u306e\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3API - sun.reflect.ReflectionFactory\u3092\u5b8c\u5168\u306b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30ed\u30b0\u78ba\u8a8d\u6a5f\u80fd\u306f\u7121\u52b9\u3067\u3059\u3002
-
-probe.jsp.memory.advise.finalization=\u30d5\u30a1\u30a4\u30ca\u30e9\u30a4\u30ba\u3092\u5b9f\u884c\u3059\u308b
-probe.jsp.memory.advise.gc=\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30bf\u3092\u5b9f\u884c\u3059\u308b
-probe.jsp.memory.col.committed=\u30b3\u30df\u30c3\u30c8\u6e08
-probe.jsp.memory.col.group=\u30b0\u30eb\u30fc\u30d7
-probe.jsp.memory.col.initial=\u521d\u671f\u5bb9\u91cf
-probe.jsp.memory.col.max=\u6700\u5927\u5bb9\u91cf
-probe.jsp.memory.col.name=\u540d\u524d
-probe.jsp.memory.col.plot=Plot
-probe.jsp.memory.col.usageScore=\u4f7f\u7528\u7387
-probe.jsp.memory.col.used=\u4f7f\u7528\u4e2d
-probe.jsp.memory.h3.charts=\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u5c65\u6b74
-probe.jsp.memory.h3.table=\u73fe\u5728\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
-probe.jsp.memory.loading=\u8aad\u8fbc\u4e2d...
-probe.jsp.memory.usage.title=\u4f7f\u7528\u7387 {0}%
-probe.jsp.memory.notAvailable=\u3053\u306e\u753b\u9762\u306fJMX\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3057\u305fJava 5\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002JMX\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306fJava\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3082\u3057\u304f\u306f$JAVA_OPTS\u74b0\u5883\u5909\u6570\u306b"-Dcom.sun.management.jmxremote"\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-
-probe.jsp.menu.applications=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
-probe.jsp.menu.cluster=\u30af\u30e9\u30b9\u30bf
-probe.jsp.menu.connectors=\u30b3\u30cd\u30af\u30bf
-probe.jsp.menu.datasources=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9
-probe.jsp.menu.deployment=\u914d\u5099
-probe.jsp.menu.logs=\u30ed\u30b0
-probe.jsp.menu.memory=\u30e1\u30e2\u30ea
-probe.jsp.menu.quickcheck=\u30af\u30a4\u30c3\u30af\u30c1\u30a7\u30c3\u30af
-probe.jsp.menu.sysinfo=\u30b7\u30b9\u30c6\u30e0
-probe.jsp.menu.threads=\u30b9\u30ec\u30c3\u30c9
-
-probe.jsp.noaccess=\u3053\u306e\u753b\u9762\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u3092\u4f7f\u3063\u3066\u4ed6\u306e\u30a8\u30ea\u30a2\u3092\u9078\u629e\u3059\u308b\u304b\u3001\u30d6\u30e9\u30a6\u30b6\u306e"\u623b\u308b"\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-probe.jsp.noaccess.ajax=\u3053\u306e\u6a5f\u80fd\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-probe.jsp.noaccess.title=403 Forbidden
-probe.jsp.notfound=\u3042\u306a\u305f\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3057\u305f\u753b\u9762\u306f\u3053\u306e\u30b5\u30fc\u30d0\u4e0a\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u3092\u4f7f\u3063\u3066\u5e0c\u671b\u306e\u30a8\u30ea\u30a2\u3078\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-probe.jsp.notfound.title=404 Not Found
-
-probe.jsp.resources.col.auth=\u8a8d\u8a3c\u65b9\u5f0f
-probe.jsp.resources.col.linkTo=\u30ea\u30f3\u30af
-probe.jsp.resources.col.name=\u540d\u524d
-probe.jsp.resources.col.type=\u578b
-probe.jsp.resources.empty=\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u30ea\u30bd\u30fc\u30b9\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-probe.jsp.resources.info.busy=\u4f7f\u7528\u4e2d\u306e\u63a5\u7d9a\u6570:
-probe.jsp.resources.info.connectionUsage.alt=\u63a5\u7d9a\u306e\u4f7f\u7528\u7387 {0}%
-probe.jsp.resources.info.established=\u4f7f\u7528\u53ef\u80fd\u306a\u63a5\u7d9a\u6570:
-probe.jsp.resources.info.max=\u6700\u5927\u63a5\u7d9a\u6570:
-probe.jsp.resources.info.misconfigured=\u3053\u306e\u30ea\u30bd\u30fc\u30b9\u306f\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5b9f\u884c\u6642\u306e\u60c5\u5831\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-probe.jsp.resources.info.misconfigured.alt=\u611f\u5606\u7b26\u8a18\u53f7
-probe.jsp.resources.info.reset=
-probe.jsp.resources.info.reset.alt=\u30ea\u30bb\u30c3\u30c8
-probe.jsp.resources.info.title=\u88dc\u8db3\u60c5\u5831:
-
-probe.jsp.servlet_source.h3.source=\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9
-probe.jsp.servlet_source.opt.jsp=JSP\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u78ba\u8a8d\u3059\u308b
-
-probe.jsp.sessionAttibutes.card.age=\u7d4c\u904e\u6642\u9593:
-probe.jsp.sessionAttibutes.card.application=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3:
-probe.jsp.sessionAttibutes.card.created=\u751f\u6210\u65e5\u6642:
-probe.jsp.sessionAttibutes.card.expiryTime=\u6709\u52b9\u671f\u9650:
-probe.jsp.sessionAttibutes.card.id=ID:
-probe.jsp.sessionAttibutes.card.idleTime=\u30a2\u30a4\u30c9\u30eb\u6642\u9593:
-probe.jsp.sessionAttibutes.card.info=\u60c5\u5831:
-probe.jsp.sessionAttibutes.card.lastAccessed=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u65e5\u6642:
-probe.jsp.sessionAttibutes.card.manager=Manager\u30bf\u30a4\u30d7:
-probe.jsp.sessionAttibutes.card.maxIdleTime=\u6700\u5927\u30a2\u30a4\u30c9\u30eb\u6642\u9593:
-probe.jsp.sessionAttibutes.card.serializable=\u76f4\u5217\u5316\u53ef\u80fd:
-probe.jsp.sessionAttibutes.card.serializable.no=\u3044\u3044\u3048
-probe.jsp.sessionAttibutes.card.serializable.yes=\u306f\u3044
-probe.jsp.sessionAttibutes.card.size=\u30b5\u30a4\u30ba:
-probe.jsp.sessionAttibutes.col.delete=\u524a\u9664
-probe.jsp.sessionAttibutes.col.delete.title=\u5c5e\u6027\u3092\u524a\u9664\u3059\u308b
-probe.jsp.sessionAttibutes.col.name=\u540d\u524d
-probe.jsp.sessionAttibutes.col.serializable=\u76f4\u5217\u5316\u53ef\u80fd?
-probe.jsp.sessionAttibutes.col.size=\u30b5\u30a4\u30ba
-probe.jsp.sessionAttibutes.col.type=\u578b
-probe.jsp.sessionAttibutes.col.value=\u5024
-probe.jsp.sessionAttibutes.h3.attributes=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5c5e\u6027
-probe.jsp.sessionAttibutes.h3.card=\u30bb\u30c3\u30b7\u30e7\u30f3\u60c5\u5831
-probe.jsp.sessionAttibutes.invalidSid=\u30bb\u30c3\u30b7\u30e7\u30f3ID\u304c\u7121\u52b9\u306b\u306a\u3063\u305f\u304b\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u307e\u3057\u305f\u3002
-probe.jsp.sessionAttibutes.menu.back=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u4e00\u89a7\u306b\u623b\u308b
-probe.jsp.sessionAttibutes.menu.destroy=\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u7834\u68c4\u3059\u308b
-probe.jsp.sessionAttibutes.noattributes=\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u306f\u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-
-probe.jsp.sessions.col.age=\u7d4c\u904e\u6642\u9593
-probe.jsp.sessions.col.creationTime=\u751f\u6210\u65e5\u6642
-probe.jsp.sessions.col.expiryTime=\u6709\u52b9\u671f\u9650
-probe.jsp.sessions.col.id=\u30bb\u30c3\u30b7\u30e7\u30f3ID
-probe.jsp.sessions.col.applicationName=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
-probe.jsp.sessions.col.idleTime=\u30a2\u30a4\u30c9\u30eb\u6642\u9593
-probe.jsp.sessions.col.lastAccessTime=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u65e5\u6642
-probe.jsp.sessions.col.objectCount=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570
-probe.jsp.sessions.col.serializable=\u76f4\u5217\u5316\u53ef\u80fd?
-probe.jsp.sessions.col.size=\u30b5\u30a4\u30ba
-probe.jsp.sessions.col.lastIP=Last IP
-probe.jsp.sessions.unknown.ip=unknown
-probe.jsp.sessions.empty=\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u305b\u3093\u3002
-probe.jsp.sessions.menu.expire=\u7121\u52b9\u5316\u3059\u308b
-probe.jsp.sessions.menu.toggle=\u9078\u629e\u30fb\u975e\u9078\u629e\u72b6\u614b\u3092\u30c8\u30b0\u30eb\u3059\u308b
-probe.jsp.sessions.status.no=\u3044\u3044\u3048
-probe.jsp.sessions.status.yes=\u306f\u3044
-#probe.jsp.sessions.opt.all=Show all
-probe.jsp.showsize=\u30b5\u30a4\u30ba\u3092\u8868\u793a\u3059\u308b
-probe.jsp.hidesize=\u30b5\u30a4\u30ba\u3092\u96a0\u3059
-
-probe.jsp.sysinfo.col.name=\u30d7\u30ed\u30d1\u30c6\u30a3\u540d
-probe.jsp.sysinfo.col.value=\u30d7\u30ed\u30d1\u30c6\u30a3\u5024
-probe.jsp.sysinfo.container.title=\u30b3\u30f3\u30c6\u30ca\u60c5\u5831
-probe.jsp.sysinfo.memory.adviseGC=\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30bf\u3092\u5b9f\u884c\u3059\u308b
-probe.jsp.sysinfo.memory.free=\u30e1\u30e2\u30ea\u306e\u7a7a\u304d\u5bb9\u91cf:
-probe.jsp.sysinfo.memory.max=\u30e1\u30e2\u30ea\u306e\u6700\u5927\u5bb9\u91cf:
-probe.jsp.sysinfo.memory.title=\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
-probe.jsp.sysinfo.memory.total=\u30e1\u30e2\u30ea\u306e\u7dcf\u5bb9\u91cf:
-probe.jsp.sysinfo.memory.usage=\u73fe\u5728\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u7387
-probe.jsp.sysinfo.memory.usage.alt=\u30e1\u30e2\u30ea\u306e\u4f7f\u7528\u7387
-probe.jsp.sysinfo.os.applicationBase=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u57fa\u5e95\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:
-probe.jsp.sysinfo.os.catalinaBase=catalina.base:
-probe.jsp.sysinfo.os.catalinaHome=catalina.home:
-probe.jsp.sysinfo.os.configBase=\u30b3\u30f3\u30d5\u30a3\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u57fa\u5e95\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:
-probe.jsp.sysinfo.os.container=\u30b3\u30f3\u30c6\u30ca:
-probe.jsp.sysinfo.os.currentTime=\u73fe\u5728\u65e5\u6642:
-probe.jsp.sysinfo.os.jvm=JVM:
-probe.jsp.sysinfo.os.name=OS:
-probe.jsp.sysinfo.os.processors=\u30d7\u30ed\u30bb\u30c3\u30b5\u6570:
-probe.jsp.sysinfo.os.title=OS\u60c5\u5831
-probe.jsp.sysinfo.os.workingDir=\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:
-probe.jsp.sysinfo.sysproperties.title=\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3
-
-probe.jsp.threadpools.currentThreadCount=\u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9\u6570
-probe.jsp.threadpools.currentThreadsBusy=\u73fe\u5728\u4f7f\u7528\u4e2d\u306e\u30b9\u30ec\u30c3\u30c9\u6570
-probe.jsp.threadpools.maxSpareThreads=\u6700\u5927\u30b9\u30da\u30a2\u30b9\u30ec\u30c3\u30c9\u6570
-probe.jsp.threadpools.maxThreads=\u6700\u5927\u30b9\u30ec\u30c3\u30c9\u6570
-probe.jsp.threadpools.menu.threads=\u5b9f\u884c\u4e2d\u306e\u30b9\u30ec\u30c3\u30c9
-probe.jsp.threadpools.minSpareThreads=\u6700\u5c0f\u30b9\u30da\u30a2\u30b9\u30ec\u30c3\u30c9\u6570
-probe.jsp.threadpools.name=\u540d\u524d
-
-probe.jsp.threads.col.application=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
-probe.jsp.threads.col.classLoader=\u30af\u30e9\u30b9\u30ed\u30fc\u30c0
-probe.jsp.threads.col.daemon=D
-probe.jsp.threads.col.groupName=\u30b0\u30eb\u30fc\u30d7\u540d
-probe.jsp.threads.col.interrupted=I
-probe.jsp.threads.col.name=\u540d\u524d
-probe.jsp.threads.col.priority=P
-probe.jsp.threads.col.runnableClass=Runnable
-probe.jsp.threads.col.threadClass=\u30b9\u30ec\u30c3\u30c9\u30af\u30e9\u30b9\u540d
-#probe.jsp.threads.col.id=ID
-#probe.jsp.threads.col.execPoint=Exec. point
-#probe.jsp.threads.col.state=State
-#probe.jsp.threads.col.inNative=In.Native
-#probe.jsp.threads.col.suspended=Susp.
-#probe.jsp.threads.col.waitedCount=WC
-#probe.jsp.threads.col.blockedCount=BC
-probe.jsp.threads.help.priority=\u30b9\u30ec\u30c3\u30c9\u306e\u512a\u5148\u9806\u4f4d, \u6570\u5024\u304c\u9ad8\u3051\u308c\u3070\u9ad8\u3044\u307b\u3069\u512a\u5148\u9806\u4f4d\u304c\u9ad8\u304f\u306a\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059
-probe.jsp.threads.help.daemon=\u30b9\u30ec\u30c3\u30c9\u304c\u30c7\u30fc\u30e2\u30f3\u30b9\u30ec\u30c3\u30c9\u3067\u3059
-probe.jsp.threads.help.interrupted=\u30b9\u30ec\u30c3\u30c9\u304c\u5272\u308a\u8fbc\u307e\u308c\u3066\u3044\u308b\u72b6\u614b\u3067\u3059
-probe.jsp.threads.help.inNative=\u30b9\u30ec\u30c3\u30c9\u304c\u30cd\u30a4\u30c6\u30a3\u30d6\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u306f true \u3068\u306a\u308a\u307e\u3059
-probe.jsp.threads.help.suspended=\u30b9\u30ec\u30c3\u30c9\u304c\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u3059
-probe.jsp.threads.help.waitedCount="wait count" - \u30b9\u30ec\u30c3\u30c9\u304c\u901a\u77e5\u3092\u5f85\u6a5f\u3057\u305f\u5408\u8a08\u56de\u6570
-probe.jsp.threads.help.blockedCount="blocked count" - \u30b9\u30ec\u30c3\u30c9\u304c\u30d6\u30ed\u30c3\u30af\u72b6\u614b\u306b\u5165\u3063\u305f\u5408\u8a08\u56de\u6570
-probe.jsp.threads.info.loading=\u8aad\u8fbc\u4e2d...
-probe.jsp.threads.info.unavailable=URL\u60c5\u5831\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
-probe.jsp.threads.killmsg=\u30b9\u30ec\u30c3\u30c9\u3092\u3080\u3084\u307f\u306b\u505c\u6b62\u3059\u308b\u3068VM\u306e\u52d5\u4f5c\u304c\u4e0d\u5b89\u5b9a\u306b\u306a\u308a\u307e\u3059\u3002\u672c\u5f53\u306b {0} \u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f
-probe.jsp.threads.menu.threadpools=\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb
-probe.jsp.threads.stop.alt=\u505c\u6b62\u3059\u308b
-
-probe.jsp.title.app.attributes={0} - \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u5c5e\u6027
-probe.jsp.title.applications=\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
-probe.jsp.title.cluster=\u30af\u30e9\u30b9\u30bf\u306e\u72b6\u614b
-probe.jsp.title.connectors=\u30b3\u30cd\u30af\u30bf
-probe.jsp.title.dataSourceGroups=JDBC URL\u5358\u4f4d\u3067\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u305f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9
-probe.jsp.title.datasources=\u6709\u52b9\u306a\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9
-probe.jsp.title.deployment=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u914d\u5099
-probe.jsp.title.follow=\u30ed\u30b0\u306e\u76e3\u8996
-probe.jsp.title.jsps={0} - \u914d\u5099\u6e08\u306eJSP
-probe.jsp.title.logs=\u30ed\u30b0
-probe.jsp.title.logs_notSupported=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-probe.jsp.title.memory=JVM\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
-probe.jsp.title.quickcheck=\u30af\u30a4\u30c3\u30af\u30c1\u30a7\u30c3\u30af
-probe.jsp.title.resources={0} - \u30ea\u30bd\u30fc\u30b9
-probe.jsp.title.servlet_source=\u751f\u6210\u6e08\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9
-probe.jsp.title.sessionAttibutes=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5c5e\u6027
-probe.jsp.title.sessions={0} - \u30bb\u30c3\u30b7\u30e7\u30f3
-#probe.jsp.title.sessions.all=Sessions
-probe.jsp.title.sysinfo=\u30b7\u30b9\u30c6\u30e0\u60c5\u5831
-probe.jsp.title.threadpools=\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb
-probe.jsp.title.threads=\u5b9f\u884c\u4e2d\u306e\u30b9\u30ec\u30c3\u30c9
-probe.jsp.title.viewsource={0} - \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u30d3\u30e5\u30fc
-probe.jsp.uptime=\u7a3c\u52d5\u6642\u9593 {0} \u65e5 {1} \u6642\u9593 {2} \u5206
-probe.jsp.version={0} \u30d0\u30fc\u30b8\u30e7\u30f3 \u3092 {1} \u4e0a\u3067\u5b9f\u884c\u4e2d
-
-probe.jsp.viewsource.appname=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d:
-probe.jsp.viewsource.encoding=\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0:
-probe.jsp.viewsource.filename=\u30d5\u30a1\u30a4\u30eb\u540d:
-probe.jsp.viewsource.h3.info=JSP\u60c5\u5831
-probe.jsp.viewsource.h3.source=JSP\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9
-probe.jsp.viewsource.lastmodified=\u6700\u7d42\u66f4\u65b0\u65e5\u6642:
-probe.jsp.viewsource.notfound=\u6b8b\u5ff5\u306a\u304c\u3089\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u8eab\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u4e00\u89a7\u753b\u9762\u306b\u623b\u3063\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-probe.jsp.viewsource.opt.back=JSP\u306e\u4e00\u89a7\u306b\u623b\u308b
-probe.jsp.viewsource.opt.compile=\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b
-probe.jsp.viewsource.opt.viewServlet=\u751f\u6210\u6e08\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u78ba\u8a8d\u3059\u308b
-probe.jsp.viewsource.size=\u30b5\u30a4\u30ba:
-probe.jsp.viewsource.state=\u72b6\u614b:
-
-probe.jsp.wrongparams=\u3053\u306e\u753b\u9762\u306b\u5bfe\u3057\u8aa4\u3063\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6e21\u3057\u307e\u3057\u305f\u3002
-#probe.jsp.wrongsvrversion=This feature is not implemented for {0}
-probe.jsp.zoomedchart.back=\u30c1\u30e3\u30fc\u30c8\u30b0\u30eb\u30fc\u30d7\u306b\u623b\u308b
-probe.jsp.zoomedchart.information=\u753b\u9762\u306e\u89e3\u50cf\u5ea6\u306b\u5f93\u3044\u3001\u30b9\u30e9\u30a4\u30c0\u3092\u7528\u3044\u3066\u30a4\u30e1\u30fc\u30b8\u3092\u30ea\u30b5\u30a4\u30ba\u3067\u304d\u307e\u3059\u3002\u60c5\u5831\u306f\u30e9\u30a4\u30d6\u5f62\u5f0f\u3067\u3001\u30c1\u30e3\u30fc\u30c8\u306f{0}\u79d2\u9593\u9694\u3067\u81ea\u52d5\u7684\u306b\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002
-
-probe.src.contextAction.cannotActOnSelf=\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u505c\u6b62/\u59cb\u52d5/\u914d\u5099\u89e3\u9664\u306f\u3067\u304d\u307e\u305b\u3093\u3002
-probe.src.contextDoesntExist=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
-probe.src.deploy.context.failure={0} \u306e\u914d\u5099\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
-probe.src.deploy.context.success={0} \u3088\u308a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u914d\u5099\u3057\u307e\u3057\u305f\u3002
-probe.src.deploy.exploded.success={0} \u306f {1} \u306b\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3057\u305f\u3002
-probe.src.deploy.war.alreadyExists=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 {0} \u306f\u3059\u3067\u306b\u914d\u5099\u6e08\u3067\u3059\u3002
-probe.src.deploy.war.failure=\u914d\u5099\u4e2d\u306bTomcat\u304c\u30b9\u30ed\u30fc\u3057\u305f\u30a8\u30e9\u30fc: "{0}"\u3002\u3057\u304b\u3057\u306a\u304c\u3089\u3001\u3053\u306e\u3053\u3068\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u914d\u5099\u306b\u5931\u6557\u3057\u305f\u3053\u3068\u3092\u610f\u5473\u3057\u3066\u3044\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e00\u89a7\u753b\u9762\u306b\u3066\u72b6\u614b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-probe.src.deploy.war.notWar.failure=\u914d\u5099\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u540d\u306f .war \u3067\u7d42\u4e86\u3057\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-#probe.src.deploy.war.notinstalled={0} was not installed
-probe.src.deploy.war.uploadfailure=\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}
-probe.src.reset.datasource.c3p0=\u3054\u3081\u3093\u306a\u3055\u3044\u3001C3P0\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u307f\u30ea\u30bb\u30c3\u30c8\u53ef\u80fd\u3067\u3059\u3002
-probe.src.reset.datasource.notfound=\u30ea\u30bd\u30fc\u30b9 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
-
-probe.jsp.title.wrapper=Java Service Wrapper
-probe.jsp.wrapper.not_available=\u3053\u306eJVM\u306fJava Service Wrapper\u3067\u5236\u5fa1\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-probe.jsp.wrapper.menu.restart=JVM\u3092\u518d\u59cb\u52d5\u3059\u308b
-probe.jsp.wrapper.menu.stop=JVM\u3092\u505c\u6b62\u3059\u308b
-probe.jsp.wrapper.menu.thread_dump=\u30b9\u30ec\u30c3\u30c9\u30c0\u30f3\u30d7\u3092\u30ea\u30af\u30a8\u30b9\u30c8\u3059\u308b
-probe.jsp.wrapper.h3.info=Wrapper\u60c5\u5831
-probe.jsp.wrapper.h3.props=Wrapper\u30d7\u30ed\u30d1\u30c6\u30a3
-probe.jsp.wrapper.confirm.restart=\u672c\u5f53\u306bJVM\u3092\u518d\u59cb\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f
-probe.jsp.wrapper.confirm.stop=Probe\u3088\u308aJVM\u3092\u518d\u3073\u59cb\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u672c\u5f53\u306bJVM\u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f
-probe.jsp.wrapper.jvm.stopping=JVM\u3092\u505c\u6b62\u4e2d\u3067\u3059\u3002\u518d\u3073\u59cb\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u7d4c\u7531\u3067\u5b9f\u884c\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-probe.jsp.wrapper.jvm.restarting=JVM\u3092\u518d\u59cb\u52d5\u4e2d\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u6570\u5206\u304b\u304b\u308a\u307e\u3059\u3002
-probe.jsp.wrapper.jvm.thread_dump=JVM\u306e\u30b9\u30ec\u30c3\u30c9\u30c0\u30f3\u30d7\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u307e\u3057\u305f\u3002\u901a\u5e38\u306fWrapper\u306e\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3088\u308a\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
-
-probe.jsp.wrapper.user=\u30e6\u30fc\u30b6:
-probe.jsp.wrapper.interactive_user=\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u30e6\u30fc\u30b6:
-probe.jsp.wrapper.java_pid=Java\u30d7\u30ed\u30bb\u30b9\u306ePID:
-probe.jsp.wrapper.pid=Wrapper\u30d7\u30ed\u30bb\u30b9\u306ePID:
-probe.jsp.wrapper.service=\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066\u5b9f\u884c\u4e2d:
-probe.jsp.wrapper.debug=\u30c7\u30d0\u30c3\u30b0\u3092\u6709\u52b9\u5316:
-probe.jsp.wrapper.version=Wrapper\u306e\u30d0\u30fc\u30b8\u30e7\u30f3:
-
-probe.jsp.decorator.system.title=\u30b7\u30b9\u30c6\u30e0
-probe.jsp.decorator.system.overview=\u6982\u8981
-probe.jsp.decorator.system.memory=\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
-probe.jsp.decorator.system.props=\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3
-probe.jsp.decorator.system.os=OS\u60c5\u5831
-probe.jsp.decorator.system.wrapper=Wrapper\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb
-
-probe.jsp.os.h3.information=OS\u60c5\u5831
-probe.jsp.os.h3.charts=OS\u60c5\u5831\u306e\u5c65\u6b74
-probe.jsp.os.chart.cpu=JVM\u306eCPU\u4f7f\u7528\u7387 (%)
-probe.jsp.os.chart.cpu.alt=JVM\u306eCPU\u4f7f\u7528\u7387\u3092\u30c1\u30e3\u30fc\u30c8\u8868\u793a\u3059\u308b
-probe.jsp.os.chart.cpu.legend=CPU\u4f7f\u7528\u7387
-probe.jsp.os.chart.memory=OS\u3068JVM\u306e\u7269\u7406\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf (KB)
-probe.jsp.os.chart.memory.alt=OS\u3068JVM\u306e\u7269\u7406\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u30c1\u30e3\u30fc\u30c8\u8868\u793a\u3059\u308b
-probe.jsp.os.chart.memory.legend.total=OS\u306e\u7269\u7406\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
-probe.jsp.os.chart.memory.legend.jvm=JVM\u306e\u7269\u7406\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
-probe.jsp.os.chart.swap=\u30b9\u30ef\u30c3\u30d7\u4f7f\u7528\u91cf (KB)
-probe.jsp.os.chart.swap.alt=\u30b9\u30ef\u30c3\u30d7\u4f7f\u7528\u91cf\u3092\u30c1\u30e3\u30fc\u30c8\u8868\u793a\u3059\u308b
-probe.jsp.os.chart.swap.legend=\u30b9\u30ef\u30c3\u30d7\u4f7f\u7528\u91cf
-#probe.jsp.os.chart.fd=File descriptors
-#probe.jsp.os.chart.fd.alt=File descriptors chart
-#probe.jsp.os.chart.fd.legend.open=open file descriptors
-#probe.jsp.os.chart.fd.legend.max=max file descriptors
-probe.jsp.os.card.name=OS\u540d:
-probe.jsp.os.card.version=OS\u306e\u30d0\u30fc\u30b8\u30e7\u30f3:
-probe.jsp.os.card.processors=\u30d7\u30ed\u30bb\u30c3\u30b5\u6570:
-probe.jsp.os.card.totalMemory=\u7269\u7406\u30e1\u30e2\u30ea\u306e\u7dcf\u5bb9\u91cf:
-probe.jsp.os.card.freeMemory=\u7269\u7406\u30e1\u30e2\u30ea\u306e\u7a7a\u304d\u5bb9\u91cf:
-probe.jsp.os.card.committedVirtualMemory=\u30b3\u30df\u30c3\u30c8\u6e08\u306eJVM\u30e1\u30e2\u30ea\u5bb9\u91cf:
-probe.jsp.os.card.totalSwap=\u30b9\u30ef\u30c3\u30d7\u306e\u7dcf\u5bb9\u91cf:
-probe.jsp.os.card.freeSwap=\u30b9\u30ef\u30c3\u30d7\u306e\u7a7a\u304d\u5bb9\u91cf:
-
-probe.jsp.title.testDataSource={0} -> {1}
-probe.src.dataSourceTest.resource.lookup.failure=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
-probe.src.dataSourceTest.connection.failure=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u3092\u78ba\u7acb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 {0}
-probe.src.dataSourceTest.connection.success=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6b63\u3057\u304f\u63a5\u7d9a\u3055\u308c\u307e\u3057\u305f
-probe.src.dataSourceTest.sql.required=SQL\u554f\u3044\u5408\u308f\u305b\u306e\u30c6\u30ad\u30b9\u30c8\u6b04\u306f\u5165\u529b\u5fc5\u9808\u3067\u3059\u3002
-probe.src.dataSourceTest.sql.failure=\u554f\u3044\u5408\u308f\u305b\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 {0}
-probe.src.dataSourceTest.sql.null=NULL
-probe.src.dataSourceTest.cachedResultSet.failure=\u30ad\u30e3\u30c3\u30b7\u30e5\u6e08\u306e\u7d50\u679c\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
-probe.jsp.dataSourceTest.help=\u3053\u306e\u753b\u9762\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u3088\u3063\u3066\u4f5c\u6210\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306e\u30c6\u30b9\u30c8\u304c\u3067\u304d\u307e\u3059\u3002\
-\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u304c\u78ba\u7acb\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u306b\u306f [\u63a5\u7d9a\u3092\u30c6\u30b9\u30c8\u3059\u308b] \u3092\u62bc\u4e0b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\
-\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066SQL\u554f\u3044\u5408\u308f\u305b\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f [SQL\u3092\u5b9f\u884c\u3059\u308b] \u3092\u62bc\u4e0b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\
-\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u306e\u51fa\u529b\u7d50\u679c\u3084\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u3001\u753b\u9762\u4e0b\u90e8\u306b\u3066\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\
-[\u5c65\u6b74\u3092\u8868\u793a\u3059\u308b] \u3092\u62bc\u4e0b\u3059\u308b\u3068\u3001\u3053\u308c\u307e\u3067\u306b\u5b9f\u884c\u3055\u308c\u305f\u554f\u3044\u5408\u308f\u305b\u306e\u4e00\u89a7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\
-\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u3092\u6d6a\u8cbb\u3055\u305b\u306a\u3044\u305f\u3081\u306b\u3001\u554f\u3044\u5408\u308f\u305b\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u30ec\u30b3\u30fc\u30c9\u6570\u3092\u5236\u9650\u3059\u308b\u306b\u306f [\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3059\u308b] \u3092\u5229\u7528\u3059\u308b\u3088\u3046\u306b\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-probe.jsp.dataSourceTest.menu.back=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u4e00\u89a7\u306b\u623b\u308b
-probe.jsp.dataSourceTest.menu.connect=\u63a5\u7d9a\u3092\u30c6\u30b9\u30c8\u3059\u308b
-probe.jsp.dataSourceTest.menu.execute=SQL\u3092\u5b9f\u884c\u3059\u308b (Ctrl+Enter)
-probe.jsp.dataSourceTest.menu.showHistory=\u5c65\u6b74\u3092\u8868\u793a\u3059\u308b (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.hideHistory=\u5c65\u6b74\u3092\u96a0\u3059 (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.showOptions=\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3059\u308b (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.hideOptions=\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u96a0\u3059 (Ctrl+Up)
-#probe.jsp.dataSourceTest.menu.wrap=Wrap lines
-#probe.jsp.dataSourceTest.menu.nowrap=Don't wrap lines
-probe.jsp.dataSourceTest.menu.abbreviations=\u30d8\u30eb\u30d7!
-probe.jsp.dataSourceTest.sqlForm.sql.label=SQL
-probe.jsp.dataSourceTest.sqlForm.maxRows.label=\u53d6\u5f97\u53ef\u80fd\u306a\u30ec\u30b3\u30fc\u30c9\u6570
-probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=1\u30da\u30fc\u30b8\u6bce\u306e\u30ec\u30b3\u30fc\u30c9\u6570
-probe.jsp.dataSourceTest.sqlForm.historySize.label=\u554f\u3044\u5408\u308f\u305b\u5c65\u6b74\u306e\u4fdd\u5b58\u4ef6\u6570
-probe.jsp.dataSourceTest.h3.results=\u554f\u3044\u5408\u308f\u305b\u7d50\u679c
-probe.jsp.dataSourceTest.results.rowcount={0}\u30ec\u30b3\u30fc\u30c9\u304c\u62bd\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
-probe.jsp.dataSourceTest.h3.metaData=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u60c5\u5831
-#probe.jsp.dataSourceTest.chart.usage.title=Datasource usage
-probe.jsp.dataSourceTest.dbMetaData.col.propName=\u30d7\u30ed\u30d1\u30c6\u30a3\u540d
-probe.jsp.dataSourceTest.dbMetaData.col.propValue=\u30d7\u30ed\u30d1\u30c6\u30a3\u5024
-probe.jsp.dataSourceTest.dbMetaData.dbProdName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u88fd\u54c1\u540d
-probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u88fd\u54c1\u306e\u30d0\u30fc\u30b8\u30e7\u30f3
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=JDBC\u30c9\u30e9\u30a4\u30d0\u540d
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=JDBC\u30c9\u30e9\u30a4\u30d0\u306e\u30d0\u30fc\u30b8\u30e7\u30f3
-probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=JDBC\u306e\u30d0\u30fc\u30b8\u30e7\u30f3
-probe.jsp.dataSourceTest.results.paging.banner.item_name=\u30ec\u30b3\u30fc\u30c9
-probe.jsp.dataSourceTest.results.paging.banner.items_name=\u30ec\u30b3\u30fc\u30c9
-probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
-probe.jsp.dataSourceTest.results.paging.banner.one_item_found=1\u4ef6\u306e{0}\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002
-probe.jsp.dataSourceTest.results.paging.banner.all_items_found=\u5168\u3066\u306e{2}\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002
-probe.jsp.dataSourceTest.results.paging.banner.some_items_found={2}\u4ef6\u76ee\u304b\u3089{3}\u4ef6\u76ee\u307e\u3067\u306e\u30ec\u30b3\u30fc\u30c9\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002
-probe.jsp.dataSourceTest.results.paging.banner.first=\u6700\u521d\u3078
-probe.jsp.dataSourceTest.results.paging.banner.prev=\u524d\u3078
-probe.jsp.dataSourceTest.results.paging.banner.next=\u6b21\u3078
-probe.jsp.dataSourceTest.results.paging.banner.last=\u6700\u5f8c\u3078
-probe.jsp.dataSourceTest.results.paging.banner.page.link.title={0}\u30da\u30fc\u30b8\u3078
-probe.jsp.dataSourceTest.sql.completed=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5b9f\u884c\u3092\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002
-probe.jsp.dataSourceTest.h3.queryHistory=\u554f\u3044\u5408\u308f\u305b\u5c65\u6b74
-probe.jsp.dataSourceTest.queryHistory.empty=\u554f\u3044\u5408\u308f\u305b\u5c65\u6b74\u306e\u4e00\u89a7\u306f\u7a7a\u3067\u3059\u3002
-
-probe.jsp.whois.timeout=WHOIS\u691c\u7d22\u3092\u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002WHOIS\u691c\u7d22\u304c\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u30d6\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-
-probe.jsp.threadstack.native=\u30cd\u30a4\u30c6\u30a3\u30d6\u30b3\u30fc\u30c9
-probe.jsp.threadstack.unknown=\u4e0d\u660e
-probe.jsp.threadstack.unavailable=\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002
-
-probe.jsp.tooltip.close=\u9589\u3058\u308b
-
-#probe.jsp.sessions.h3=Sessions
-#probe.jsp.sessions.search.h3=Session search criteria
-#probe.jsp.sessions.menu.showSearch=Session search
-#probe.jsp.sessions.menu.applySearch=Apply search
-#probe.jsp.sessions.menu.clearSearch=Clear search
-#probe.jsp.sessions.menu.searchHelp=Help
-#probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
-#Whether Session Id matches a regular expression.\
-#Whether Last IP contains a substring.\
-#Whether Idle Time falls into a range specified in seconds.\
-#Whether Age falls into a range specified in seconds.\
-#Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
-#This condition allows finding a session with an attribute A and/or an attribute B set.
-#probe.jsp.sessions.search.sessionId=Session id (RE)
-#probe.jsp.sessions.search.attrName=Attribute names (RE list)
-#probe.jsp.sessions.search.ageFrom=Age from (sec)
-#probe.jsp.sessions.search.ageTo=to
-#probe.jsp.sessions.search.idleTimeFrom=Idle time from (sec)
-#probe.jsp.sessions.search.idleTimeTo=to
-#probe.jsp.sessions.search.lastIP=Last IP (substring)
-#probe.jsp.sessions.search.results.h3=Session search results
-#probe.src.sessions.search.empty=Search criteria is empty
-#probe.src.sessions.search.results.empty=No sessions have matched the search criteria
-#probe.src.sessions.search.invalid=Search criteria is invalid
-#probe.src.sessions.search.invalid.sessionId=Session id regular expression is invalid. {0}
-#probe.src.sessions.search.invalid.attrName=Attribute name regular expression is invalid. {0}
-#probe.src.sessions.search.invalid.ageFrom=Age from value is invalid
-#probe.src.sessions.search.invalid.ageTo=Age to value is invalid
-#probe.src.sessions.search.invalid.idleTimeFrom=Idle time from value is invalid
-#probe.src.sessions.search.invalid.idleTimeTo=Idle time to value is invalid
-#probe.src.sessions.search.invalid.lastIP=Last IP regular expression is invalid. {0}
-
-#probe.jsp.app.nav.title=Application
-#probe.jsp.app.nav.summary=Summary
-#probe.jsp.app.nav.sessions=Sessions
-#probe.jsp.app.nav.attributes=Attributes
-#probe.jsp.app.nav.jsps=JSPs
-#probe.jsp.app.nav.resources=Resources
-#probe.jsp.app.nav.initParams=Parameters
-#probe.jsp.app.nav.webxml=Deployment descriptor
-#probe.jsp.app.nav.contextxml=Context descriptor
-#probe.jsp.app.nav.filters=Filters
-#probe.jsp.app.nav.servlets=Servlets
-
-#probe.jsp.title.app.initParams={0} - initialization parameters
-#probe.jsp.app.initParams.h3.params=Context initialization parameters
-#probe.jsp.app.initParams.col.name=Name
-#probe.jsp.app.initParams.col.value=Value
-#probe.jsp.app.initParams.col.source=Source
-#probe.jsp.app.initParams.source.deplDescr=web.xml
-#probe.jsp.app.initParams.source.context=context
-#probe.jsp.app.initParams.empty=There are no context initialization parameters defined for this application
-
-#probe.jsp.title.app.viewXMLConf={0} - {1}
-#probe.jsp.app.viewXMLConf.notfound= Cannot find {0} of this application
-#probe.jsp.app.viewXMLConf.h3.scr={0} source
-#probe.src.app.viewxmlconf.webxml.desc=deployment descriptor
-#probe.src.app.viewxmlconf.contextxml.desc=context descriptor
-
-#probe.jsp.title.app.filters={0} - filters
-#probe.jsp.title.app.filtermaps={0} - filter mappings
-#probe.jsp.app.filtermaps.opt.defs=Filter definitions
-#probe.jsp.app.filters.opt.maps=Filter mappings
-#probe.jsp.app.filters.h3.defs=Filters
-#probe.jsp.app.filtermaps.h3.maps=Filter mappings
-#probe.jsp.app.filters.col.filterName=Name
-#probe.jsp.app.filters.col.filterClass=Class
-#probe.jsp.app.filters.col.filterDesc=Description
-#probe.jsp.app.filtermaps.col.url=Url
-#probe.jsp.app.filtermaps.col.filterName=Filter name
-#probe.jsp.app.filtermaps.col.servletName=Servlet name
-#probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
-#probe.jsp.app.filters.empty=There are no filters defined for this application
-#probe.jsp.app.filtermaps.empty=There are no filter mappings defined for this application
-
-#probe.jsp.title.servlets.all=Servlets
-#probe.jsp.title.servlets.app={0} - servlets
-#probe.jsp.title.servletmaps.all=Servlet mappings
-#probe.jsp.title.servletmaps.app={0} - servlet mappings
-#probe.jsp.servletmaps.opt.defs=Servlets
-#probe.jsp.servletmaps.opt.all=Show all
-#probe.jsp.servlets.opt.maps=Servlet mappings
-#probe.jsp.servlets.opt.all=Show all
-#probe.jsp.servlets.h3.defs=Servlets
-#probe.jsp.servletmaps.h3.maps=Servlet mappings
-#probe.jsp.servletmaps.col.url=Url
-#probe.jsp.servletmaps.col.servletName=Servlet name
-probe.jsp.servlets.col.applicationName=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
-#probe.jsp.servlets.col.servletName=Name
-#probe.jsp.servletmaps.col.servletClass=Servlet class
-#probe.jsp.servlets.col.available=Avail
-#probe.jsp.servlets.col.loadOnStartup=Startup
-#probe.jsp.servlets.empty=There are no servlets defined
-#probe.jsp.servletmaps.empty=There are no servlet mappings defined
-#probe.jsp.servlets.col.minTime=Min time
-#probe.jsp.servlets.col.maxTime=Max time
-#probe.jsp.servlets.col.processingTime=Proc time
-#probe.jsp.servlets.col.loadTime=Load time
-#probe.jsp.servlets.col.multiThreaded=Mult Thrd
-#probe.jsp.servlets.col.requestCount=Req
-#probe.jsp.servlets.col.errorCount=Err
-
-#probe.jsp.title.app.summary={0} - application summary
-#probe.jsp.app.summary.application=Application name:
-#probe.jsp.app.summary.description=Description:
-#probe.jsp.app.summary.distributable=Clustered:
-#probe.jsp.app.summary.docBase=Doc. base:
-#probe.jsp.app.summary.servletVersion=Servlet version:
-#probe.jsp.app.summary.sessionTimeout=Session timeout:
-#probe.jsp.app.summary.servletCount=Servlet count:
-#probe.jsp.app.summary.status=This application is
-probe.jsp.app.summary.requestCount=\u30ea\u30af\u30a8\u30b9\u30c8\u6570:
-#probe.jsp.app.summary.sessionCount=Sessions
-#probe.jsp.app.summary.sessionAttributeCount=Session attrs.
-#probe.jsp.app.summary.sessionSize=Session size
-#probe.jsp.app.summary.contextAttributeCount=Context attrs.
-#probe.jsp.app.summary.serializable=Ser.
-probe.jsp.app.summary.errorCount=\u30a8\u30e9\u30fc\u6570:
-probe.jsp.app.summary.processingTime=\u51e6\u7406\u6642\u9593:
-#probe.jsp.app.summary.minTime=Min time:
-probe.jsp.app.summary.maxTime=\u6700\u9ad8\u51e6\u7406\u6642\u9593:
-#probe.jsp.app.summary.avgTime=Avg response time:
-#probe.jsp.app.summary.h3.static=Application information
-#probe.jsp.app.summary.h3.runtime=Runtime information
-#probe.jsp.app.summary.invalidApp=The application is invalid
-#probe.jsp.app.summary.runtime.unavailable=This application is not running, runtime information is unavailable
-#probe.jsp.app.summary.menu.start=Start
-#probe.jsp.app.summary.menu.stop=Stop
-#probe.jsp.app.summary.menu.reload=Reload
-#probe.jsp.app.summary.menu.undeploy=Undeploy
-#probe.jsp.app.summary.menu.goTo=Go to
-#probe.jsp.app.summary.menu.startStats=Start collecting stats
-#probe.jsp.app.summary.menu.stopStats=Stop collecting stats
-#probe.jsp.app.summary.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
-#probe.jsp.app.summary.dataSourceUsageScore=Datasource usage
-#probe.jsp.app.summary.jdbcUsage.title=Max.conn.usage {0}%
-#probe.jsp.app.summary.h3.charts=Statistics charts
-#probe.jsp.app.summary.charts.requests.title=Number of requests
-#probe.jsp.app.summary.charts.avgProcTime.title=Average response time (ms)
-#probe.jsp.app.summary.charts.requests.legend=Requests
-#probe.jsp.app.summary.charts.errors.legend=Errors
-#probe.jsp.app.summary.charts.avgProcTime.legend=Avg. response time
-
-#probe.jsp.title.allappstats=Application statistics
-#probe.jsp.allappstats.charts.totalAvgProcTime.legend=Avg. response time
-#probe.jsp.allappstats.charts.totalReq.legend=Requests
-#probe.jsp.allappstats.charts.totalAvgProcTime.title=Cumulative avg. response time (ms)
-#probe.jsp.allappstats.charts.allAppAvgProcTime.title=Avg. response time by app (ms)
-#probe.jsp.allappstats.charts.totalReq.title=Cumulative requests
-#probe.jsp.allappstats.charts.allAppReq.title=Requests by app (ms)
-#probe.jsp.allappstats.h3.charts=Statistics charts
-
-#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
-#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
-#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
-#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
-
-#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
-#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
+#
+# Licensed under the GPL License. You may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+#
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+# Japanese translation by Kan Ogawa
+probe.jsp.i18n.credit=\u83c5\u5c0f\u5ddd\u65e5\u672c\u8a9e\u8a33
+#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
+
+probe.jsp.generic.no=\u3044\u3044\u3048
+probe.jsp.generic.yes=\u306f\u3044
+probe.jsp.generic.abbreviations=\u7565\u8a9e\u306e\u610f\u5473\u306f?
+
+probe.jsp.app.attributes.col.delete=\u5c5e\u6027\u3092\u524a\u9664\u3059\u308b
+probe.jsp.app.attributes.col.delete.title=\u5c5e\u6027\u3092\u524a\u9664\u3059\u308b
+probe.jsp.app.attributes.col.name=\u540d\u524d
+probe.jsp.app.attributes.col.type=\u578b
+probe.jsp.app.attributes.col.value=\u5024
+probe.jsp.app.attributes.h3.attributes=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u5c5e\u6027
+probe.jsp.app.attributes.noattributes=\u3053\u306e\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u306f\u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+
+probe.jsp.applications.alt.reload=\u518d\u8aad\u8fbc
+probe.jsp.applications.alt.undeploy=\u914d\u5099\u89e3\u9664
+probe.jsp.applications.col.contextAttributeCount=C.Attr
+probe.jsp.applications.col.description=\u8aac\u660e
+probe.jsp.applications.col.distributable=Clstred.?
+probe.jsp.applications.col.jdbcUsage=JDBC\u4f7f\u7528\u7387
+probe.jsp.applications.col.jsp=JSP
+probe.jsp.applications.col.name=\u540d\u524d
+probe.jsp.applications.col.serializable=Ser.?
+probe.jsp.applications.col.sessionAttributeCount=S.Attr
+probe.jsp.applications.col.sessionCount=Sess.
+probe.jsp.applications.col.sessionTimeout=Sess.Timeout
+probe.jsp.applications.col.size=\u30b5\u30a4\u30ba
+probe.jsp.applications.col.status=\u72b6\u614b
+probe.jsp.applications.col.requestCount=Req.
+probe.jsp.applications.help.contextAttributeCount=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u5c5e\u6027\u306e\u5408\u8a08\u6570
+probe.jsp.applications.help.distributable=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c"\u30af\u30e9\u30b9\u30bf\u30ea\u30f3\u30b0\u53ef\u80fd"\u3067\u3059
+#probe.jsp.applications.help.requestCount=total number of requests processed by servlets
+probe.jsp.applications.help.serializable=\u5168\u3066\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u5c5e\u6027\u304cjava.io.Serializable\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059
+probe.jsp.applications.help.sessionAttributeCount=\u30bb\u30c3\u30b7\u30e7\u30f3\u5c5e\u6027\u306e\u5408\u8a08\u6570
+probe.jsp.applications.help.sessionCount=\u30bb\u30c3\u30b7\u30e7\u30f3\u6570
+probe.jsp.applications.hidesize=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30b5\u30a4\u30ba\u3092\u96a0\u3059
+probe.jsp.applications.jdbcUsage.title=\u6700\u5927\u306e\u63a5\u7d9a\u4f7f\u7528\u7387 {0}%
+probe.jsp.applications.jsp.view=\u53c2\u7167
+probe.jsp.applications.serializable.no=\u3044\u3044\u3048
+probe.jsp.applications.serializable.yes=\u306f\u3044
+probe.jsp.applications.showsize=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30b5\u30a4\u30ba\u3092\u8868\u793a\u3059\u308b (\u51e6\u7406\u304c\u9045\u304f\u306a\u308a\u307e\u3059)
+probe.jsp.applications.status.down=\u505c\u6b62
+probe.jsp.applications.status.down.title={0} \u3092\u59cb\u52d5\u3059\u308b
+probe.jsp.applications.status.up=\u5b9f\u884c\u4e2d
+probe.jsp.applications.title.reload={0} \u3092\u518d\u8aad\u8fbc\u3059\u308b
+probe.jsp.applications.title.status.up={0} \u3092\u505c\u6b62\u3059\u308b
+probe.jsp.applications.title.undeploy={0} \u3092\u914d\u5099\u89e3\u9664\u3059\u308b
+probe.jsp.applications.undeploy.confirm=\u3053\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u3068\u5143\u306b\u306f\u623b\u305b\u307e\u305b\u3093\u3002\u672c\u5f53\u306b\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f
+
+probe.jsp.connectors.information=\u6709\u52b9\u3068\u306a\u3063\u3066\u3044\u308b\u30b3\u30cd\u30af\u30bf\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u60c5\u5831\u3002\u60c5\u5831\u306f\u30e9\u30a4\u30d6\u5f62\u5f0f\u3067\u3002\u30c1\u30e3\u30fc\u30c8\u3092\u66f4\u65b0\u3059\u308b\u3053\u306e\u30da\u30fc\u30b8\u4e0a\u3067\u3068\u3069\u307e\u3063\u3066\u3044\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+probe.jsp.connectors.processor.errorCount=\u30a8\u30e9\u30fc\u6570:
+probe.jsp.connectors.processor.maxTime=\u6700\u9ad8\u51e6\u7406\u6642\u9593:
+probe.jsp.connectors.processor.processingTime=\u51e6\u7406\u6642\u9593:
+probe.jsp.connectors.processor.received=\u53d7\u4fe1:
+probe.jsp.connectors.processor.requestCount=\u30ea\u30af\u30a8\u30b9\u30c8\u6570:
+probe.jsp.connectors.processor.sent=\u9001\u4fe1:
+probe.jsp.connectors.proc_time.title=\u5404\u533a\u9593\u306e\u51e6\u7406\u6642\u9593
+probe.jsp.connectors.requests.title=\u6570\u3001\u5404\u9593\u9694\u306e\u8981\u6c42\u306e
+probe.jsp.connectors.traffic.title=\u91cf\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\uff08\u30d0\u30a4\u30c8\u5358\u4f4d\uff09\u306e\u5404\u533a\u9593\u306e
+probe.jsp.connectors.wrk.col.in=\u5165\u529b
+probe.jsp.connectors.wrk.col.out=\u51fa\u529b
+probe.jsp.connectors.wrk.col.processingTime=\u51e6\u7406\u6642\u9593
+probe.jsp.connectors.wrk.col.remoteAddr=\u63a5\u7d9a\u5143IP
+probe.jsp.connectors.wrk.col.stage=\u72b6\u614b
+probe.jsp.connectors.wrk.col.url=URL
+#probe.jsp.connectors.wrk.col.thread=Thread
+probe.jsp.connectors.wrk.empty=\u30d7\u30ed\u30bb\u30c3\u30b5\u306f\u7a7a\u3067\u3059\u3002
+#probe.jsp.connectors.wrk.stage.endInput=EndInput
+#probe.jsp.connectors.wrk.stage.endOutput=EndOutput
+#probe.jsp.connectors.wrk.stage.ended=Ended
+probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
+#probe.jsp.connectors.wrk.stage.new=New
+#probe.jsp.connectors.wrk.stage.parse=Parse
+#probe.jsp.connectors.wrk.stage.prepare=Prepare
+#probe.jsp.connectors.wrk.stage.service=Service
+
+probe.jsp.cluster.chart.requests={0}\u79d2\u6bce\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u6570
+probe.jsp.cluster.chart.traffic={0}\u79d2\u6bce\u306e\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u91cf
+probe.jsp.cluster.h3.info=\u30af\u30e9\u30b9\u30bf\u60c5\u5831
+probe.jsp.cluster.h3.members=\u30af\u30e9\u30b9\u30bf\u30e1\u30f3\u30d0
+probe.jsp.cluster.heartbeatFreq=\u30cf\u30fc\u30c8\u30d3\u30fc\u30c8\u306e\u5468\u671f:
+probe.jsp.cluster.heartbeatTimeout=\u30cf\u30fc\u30c8\u30d3\u30fc\u30c8\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8:
+probe.jsp.cluster.info=\u60c5\u5831:
+probe.jsp.cluster.manager=\u30de\u30cd\u30fc\u30b8\u30e3:
+probe.jsp.cluster.mcastAddress=\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8\u30a2\u30c9\u30ec\u30b9:
+probe.jsp.cluster.mcastBindAddress=\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8\u30d0\u30a4\u30f3\u30c9\u30a2\u30c9\u30ec\u30b9:
+probe.jsp.cluster.mcastBindAddress.all=\u5168\u3066
+probe.jsp.cluster.mcastTTL=\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8TTL
+probe.jsp.cluster.members.col.address=\u30a2\u30c9\u30ec\u30b9
+probe.jsp.cluster.members.col.avgMsgSize=AvgSz
+probe.jsp.cluster.members.col.closes=Closes
+probe.jsp.cluster.members.col.connectCount=CC
+probe.jsp.cluster.members.col.connected=\u63a5\u7d9a\u6e08?
+probe.jsp.cluster.members.col.disconnectCount=DC
+probe.jsp.cluster.members.col.failures=Failures
+probe.jsp.cluster.members.col.inQueueCounter=InQ
+probe.jsp.cluster.members.col.keepAlive=Keep Alive
+probe.jsp.cluster.members.col.openFailures=Open fails
+probe.jsp.cluster.members.col.opens=Opens
+probe.jsp.cluster.members.col.outQueueCounter=OutQ
+probe.jsp.cluster.members.col.queueSize=QSz
+probe.jsp.cluster.members.col.queueSizeBytes=QSzB
+probe.jsp.cluster.members.col.requests=Req.
+probe.jsp.cluster.members.col.resends=Resends
+probe.jsp.cluster.members.col.sent=\u9001\u4fe1
+probe.jsp.cluster.members.col.socketLimit=Socket Limit
+probe.jsp.cluster.members.failing.alt=\u30c0\u30a6\u30f3
+probe.jsp.cluster.members.failing.title=\u30e1\u30f3\u30d0\u306f\u30c0\u30a6\u30f3\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059
+probe.jsp.cluster.members.healthy.alt=\u7a3c\u52d5\u4e2d
+probe.jsp.cluster.members.healthy.title=\u30e1\u30f3\u30d0\u306f\u6b63\u5e38\u306b\u7a3c\u52d5\u4e2d\u3067\u3059
+probe.jsp.cluster.mode=\u30ec\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30e2\u30fc\u30c9:
+probe.jsp.cluster.name=\u540d\u524d:
+probe.jsp.cluster.noMembers=\u3053\u306e\u30ce\u30fc\u30c9\u306b\u8a8d\u8b58\u3055\u308c\u3066\u3044\u308b\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30af\u30e9\u30b9\u30bf\u30e1\u30f3\u30d0\u30fc\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+probe.jsp.cluster.notAvailable=\u30af\u30e9\u30b9\u30bf\u60c5\u5831\u306f\u30af\u30e9\u30b9\u30bf\u30b5\u30dd\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3057\u305fTomcat 5.5.x\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002
+probe.jsp.cluster.received=\u53d7\u4fe1
+probe.jsp.cluster.receiverAddress=\u53d7\u4fe1\u5074\u306e\u30a2\u30c9\u30ec\u30b9:
+probe.jsp.cluster.receiverPort=\u53d7\u4fe1\u5074\u306e\u30dd\u30fc\u30c8:
+probe.jsp.cluster.sent=\u9001\u4fe1
+
+probe.jsp.copyright=Copyright 2009-${copyright}. Do you have any questions or suggestions? Visit us at https://github.com/psi-probe/psi-probe
+
+probe.jsp.dataSourceGroups.empty=\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u6709\u52b9\u306a\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8a2d\u5b9a\u3057\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+probe.jsp.dataSourceGroups.information=\u4e0b\u8a18\u306e\u8868\u306b\u306f\u3001JDBC URL\u5358\u4f4d\u3067\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u305f\u73fe\u5728\u63a5\u7d9a\u4e2d\u304a\u3088\u3073\u63a5\u7d9a\u53ef\u80fd\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306e\u5408\u8a08\u6570\u3092\u542b\u3093\u3067\u3044\u307e\u3059\u3002\u3053\u306e\u60c5\u5831\u306b\u3088\u3063\u3066\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u90e8\u306b\u8a2d\u5b9a\u3055\u308c\u305fJDBC\u30ea\u30bd\u30fc\u30b9\u3092\u4ecb\u3057\u3066\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308b\u5404\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u6570\u3092\u628a\u63e1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
+probe.jsp.dataSourceGroups.jdbcUsage.title=\u6700\u5927\u63a5\u7d9a\u4f7f\u7528\u7387 {0}%
+probe.jsp.dataSourceGroups.list.col.busy=\u4f7f\u7528\u4e2d\u306e\u63a5\u7d9a\u6570\u306e\u5408\u8a08
+probe.jsp.dataSourceGroups.list.col.established=\u4f7f\u7528\u53ef\u80fd\u306a\u63a5\u7d9a\u6570\u306e\u5408\u8a08
+probe.jsp.dataSourceGroups.list.col.max=\u6700\u5927\u63a5\u7d9a\u6570\u306e\u5408\u8a08
+probe.jsp.dataSourceGroups.list.col.resourceCount=\u30ea\u30bd\u30fc\u30b9\u6570
+probe.jsp.dataSourceGroups.list.col.url=URL
+probe.jsp.dataSourceGroups.list.col.usage=\u4f7f\u7528\u7387
+probe.jsp.dataSourceGroups.menu.back=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u4e00\u89a7\u306b\u623b\u308b
+
+#probe.jsp.datasources.h3.global=Global Resources
+#probe.jsp.datasources.h3.app=Application Resources
+#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
+#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
+probe.jsp.datasources.empty=\u3053\u306eTomcat\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u306f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+probe.jsp.datasources.help.max=\u30d7\u30fc\u30eb\u306e\u6700\u5927\u63a5\u7d9a\u6570
+probe.jsp.datasources.help.established=\u518d\u5229\u7528\u3092\u8a31\u53ef\u3057\u3066\u3044\u308b\u4f7f\u7528\u53ef\u80fd\u306a>\u63a5\u7d9a\u6570
+probe.jsp.datasources.help.busy=\u518d\u5229\u7528\u3092\u8a31\u53ef\u3057\u3066\u3044\u306a\u3044\u4f7f\u7528\u4e2d\u306e\u63a5\u7d9a\u6570
+probe.jsp.datasources.list.col.application=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
+probe.jsp.datasources.list.col.auth=\u8a8d\u8a3c\u65b9\u5f0f
+probe.jsp.datasources.list.col.busy=B
+probe.jsp.datasources.list.col.description=\u8aac\u660e
+probe.jsp.datasources.list.col.established=E
+probe.jsp.datasources.list.col.linkTo=\u30ea\u30f3\u30af
+probe.jsp.datasources.list.col.max=M
+probe.jsp.datasources.list.col.reset.alt=\u30ea\u30bb\u30c3\u30c8
+probe.jsp.datasources.list.col.resource=\u30ea\u30bd\u30fc\u30b9
+probe.jsp.datasources.list.col.type=\u578b
+probe.jsp.datasources.list.col.url=URL
+probe.jsp.datasources.list.col.usage=\u4f7f\u7528\u7387
+probe.jsp.datasources.list.col.user=\u30e6\u30fc\u30b6
+probe.jsp.datasources.list.misconfigured.alt=\u30a8\u30e9\u30fc
+probe.jsp.datasources.opt.groupByJdbcUrl=JDBC URL\u5358\u4f4d\u3067\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b
+
+probe.jsp.deployment.war.success={0} \u3092\u914d\u5099\u3057\u307e\u3057\u305f\u3002
+probe.jsp.deployment.compilationDetails=\u30b3\u30f3\u30d1\u30a4\u30eb\u306e\u8a73\u7d30\u3092\u898b\u308b
+probe.jsp.deployment.s1.compile.label=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u914d\u5099\u3057\u305f\u5f8c\u306bJSP\u753b\u9762\u3092\u30d7\u30ea\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b (\u6570\u5206\u304b\u304b\u308a\u307e\u3059)\u3002
+probe.jsp.deployment.s1.description=\u30b5\u30fc\u30d0\u306b .war \u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d\u304c\u6307\u5b9a\u3055\u308c\u306a\u3044\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002META-INF/context.xml \u3092\u542b\u3080 .war \u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u969b\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u306f\u914d\u5099\u3059\u308b war \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u540c\u3058 "path" \u5c5e\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3001\u305d\u3046\u3057\u306a\u3044\u3068 Tomcat 5.0.x \u3068\u9593\u9055\u3048\u3066\u3057\u307e\u3046\u3067\u3057\u3087\u3046\u3002
+probe.jsp.deployment.s1.discard.label="work" \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u3001\u305d\u306e\u4e2d\u8eab\u3092\u6d88\u53bb\u3059\u308b\u3002
+probe.jsp.deployment.s1.file.label=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b .war \u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+probe.jsp.deployment.s1.submit=\u914d\u5099
+probe.jsp.deployment.s1.title=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 (\u57fa\u672c)
+probe.jsp.deployment.s1.update.label=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u3059\u3067\u306b\u914d\u5099\u6e08\u3067\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092\u66f4\u65b0\u3059\u308b\u3002
+probe.jsp.deployment.s2.context.label=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d (\u4f8b. /dummy)
+probe.jsp.deployment.s2.description=%CATALINA_BASE%/conf/Catalina/localhost/ \u306b\u3042\u308b .xml \u30d5\u30a1\u30a4\u30eb\u3092\u3059\u3067\u306b\u4f5c\u6210\u6e08\u306e\u5834\u5408\u3001\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d\u304c .xml \u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d\u3067\u3042\u308b\u3068\u5224\u65ad\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml \u3067\u3059\u3002\u6ce8\u610f: Tomcat 5.0.x\u3067\u306f "path" \u5c5e\u6027\u3092\u6301\u3064 .xml \u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u3067\u3059\uff01
+probe.jsp.deployment.s2.title=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d\u306e\u914d\u5099 (\u5fdc\u7528)
+
+probe.jsp.follow.h3.fileContent=\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u8eab
+probe.jsp.follow.h3.fileInfo=\u30d5\u30a1\u30a4\u30eb\u60c5\u5831
+#probe.jsp.follow.h3.sources=Logging sources
+probe.jsp.follow.loading=\u8aad\u8fbc\u4e2d...
+probe.jsp.follow.menu.back=\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u4e00\u89a7\u306b\u623b\u308b
+probe.jsp.follow.menu.clear=\u30d0\u30c3\u30d5\u30a1\u3092\u30af\u30ea\u30a2\u3059\u308b
+probe.jsp.follow.menu.download=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b
+probe.jsp.follow.menu.nowrap=\u81ea\u52d5\u6539\u884c\u3057\u306a\u3044
+probe.jsp.follow.menu.pause=\u76e3\u8996\u3092\u4e00\u6642\u505c\u6b62\u3059\u308b
+probe.jsp.follow.menu.resume=\u76e3\u8996\u3092\u518d\u958b\u3059\u308b
+probe.jsp.follow.menu.wrap=\u81ea\u52d5\u6539\u884c\u3059\u308b
+probe.jsp.follow.menu.zoomin=\u62e1\u5927\u8868\u793a\u3059\u308b
+probe.jsp.follow.menu.zoomout=\u7e2e\u5c0f\u8868\u793a\u3059\u308b
+probe.jsp.followed_file_info.fileName=\u30d5\u30a1\u30a4\u30eb\u540d:
+probe.jsp.followed_file_info.lastModified=\u6700\u7d42\u66f4\u65b0\u65e5\u6642:
+probe.jsp.followed_file_info.size=\u30b5\u30a4\u30ba:
+
+probe.jsp.jsps.col.lastmodified=\u6700\u7d42\u66f4\u65b0\u65e5\u6642
+probe.jsp.jsps.col.message=\u30e1\u30c3\u30bb\u30fc\u30b8
+probe.jsp.jsps.col.name=JSP\u540d
+probe.jsp.jsps.col.size=\u30b5\u30a4\u30ba
+probe.jsp.jsps.col.status=\u72b6\u614b
+probe.jsp.jsps.notfound=\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306fJSP\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+probe.jsp.jsps.opt.compile=\u9078\u629e\u3057\u305fJSP\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b
+probe.jsp.jsps.opt.compileall=\u5168\u3066\u306eJSP\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b
+probe.jsp.jsps.opt.discardscratch="work" \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4e2d\u3092\u6d88\u53bb\u3059\u308b
+probe.jsp.jsps.opt.toggleall=\u5168\u3066\u306eJSP\u306e\u9078\u629e\u30fb\u975e\u9078\u629e\u72b6\u614b\u3092\u30c8\u30b0\u30eb\u3059\u308b
+probe.jsp.jsps.status.compiled=\u30b3\u30f3\u30d1\u30a4\u30eb\u6e08
+probe.jsp.jsps.status.failed=\u5931\u6557
+probe.jsp.jsps.status.outdated=\u672a\u30b3\u30f3\u30d1\u30a4\u30eb
+
+probe.jsp.logs.col.app=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
+probe.jsp.logs.col.class=\u30af\u30e9\u30b9\u540d
+probe.jsp.logs.col.file=\u30d5\u30a1\u30a4\u30eb\u540d
+#probe.jsp.logs.col.level=Level
+probe.jsp.logs.col.modified=\u66f4\u65b0\u65e5\u6642
+probe.jsp.logs.col.name=\u540d\u524d
+probe.jsp.logs.col.size=\u30b5\u30a4\u30ba
+probe.jsp.logs.col.type=\u578b
+probe.jsp.logs.download.alt=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b
+probe.jsp.logs.hideapps=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u96a0\u3059
+probe.jsp.logs.showapps=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3059\u308b
+probe.jsp.logs_notSupported.message=\u3042\u306a\u305f\u306eJava\u4eee\u60f3\u30de\u30b7\u30f3 {0} {1} \u306fSUN\u306e\u30ea\u30d5\u30ec\u30af\u30b7\u30e7\u30f3API - sun.reflect.ReflectionFactory\u3092\u5b8c\u5168\u306b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30ed\u30b0\u78ba\u8a8d\u6a5f\u80fd\u306f\u7121\u52b9\u3067\u3059\u3002
+
+probe.jsp.memory.advise.finalization=\u30d5\u30a1\u30a4\u30ca\u30e9\u30a4\u30ba\u3092\u5b9f\u884c\u3059\u308b
+probe.jsp.memory.advise.gc=\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30bf\u3092\u5b9f\u884c\u3059\u308b
+probe.jsp.memory.col.committed=\u30b3\u30df\u30c3\u30c8\u6e08
+probe.jsp.memory.col.group=\u30b0\u30eb\u30fc\u30d7
+probe.jsp.memory.col.initial=\u521d\u671f\u5bb9\u91cf
+probe.jsp.memory.col.max=\u6700\u5927\u5bb9\u91cf
+probe.jsp.memory.col.name=\u540d\u524d
+probe.jsp.memory.col.plot=Plot
+probe.jsp.memory.col.usageScore=\u4f7f\u7528\u7387
+probe.jsp.memory.col.used=\u4f7f\u7528\u4e2d
+probe.jsp.memory.h3.charts=\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u5c65\u6b74
+probe.jsp.memory.h3.table=\u73fe\u5728\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
+probe.jsp.memory.loading=\u8aad\u8fbc\u4e2d...
+probe.jsp.memory.usage.title=\u4f7f\u7528\u7387 {0}%
+probe.jsp.memory.notAvailable=\u3053\u306e\u753b\u9762\u306fJMX\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3057\u305fJava 5\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002JMX\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306fJava\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u3082\u3057\u304f\u306f$JAVA_OPTS\u74b0\u5883\u5909\u6570\u306b"-Dcom.sun.management.jmxremote"\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+
+probe.jsp.menu.applications=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
+probe.jsp.menu.cluster=\u30af\u30e9\u30b9\u30bf
+probe.jsp.menu.connectors=\u30b3\u30cd\u30af\u30bf
+probe.jsp.menu.datasources=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9
+probe.jsp.menu.deployment=\u914d\u5099
+probe.jsp.menu.logs=\u30ed\u30b0
+probe.jsp.menu.memory=\u30e1\u30e2\u30ea
+probe.jsp.menu.quickcheck=\u30af\u30a4\u30c3\u30af\u30c1\u30a7\u30c3\u30af
+probe.jsp.menu.sysinfo=\u30b7\u30b9\u30c6\u30e0
+probe.jsp.menu.threads=\u30b9\u30ec\u30c3\u30c9
+
+probe.jsp.noaccess=\u3053\u306e\u753b\u9762\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u3092\u4f7f\u3063\u3066\u4ed6\u306e\u30a8\u30ea\u30a2\u3092\u9078\u629e\u3059\u308b\u304b\u3001\u30d6\u30e9\u30a6\u30b6\u306e"\u623b\u308b"\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+probe.jsp.noaccess.ajax=\u3053\u306e\u6a5f\u80fd\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+probe.jsp.noaccess.title=403 Forbidden
+probe.jsp.notfound=\u3042\u306a\u305f\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3057\u305f\u753b\u9762\u306f\u3053\u306e\u30b5\u30fc\u30d0\u4e0a\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u3092\u4f7f\u3063\u3066\u5e0c\u671b\u306e\u30a8\u30ea\u30a2\u3078\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+probe.jsp.notfound.title=404 Not Found
+
+probe.jsp.resources.col.auth=\u8a8d\u8a3c\u65b9\u5f0f
+probe.jsp.resources.col.linkTo=\u30ea\u30f3\u30af
+probe.jsp.resources.col.name=\u540d\u524d
+probe.jsp.resources.col.type=\u578b
+probe.jsp.resources.empty=\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u30ea\u30bd\u30fc\u30b9\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+probe.jsp.resources.info.busy=\u4f7f\u7528\u4e2d\u306e\u63a5\u7d9a\u6570:
+probe.jsp.resources.info.connectionUsage.alt=\u63a5\u7d9a\u306e\u4f7f\u7528\u7387 {0}%
+probe.jsp.resources.info.established=\u4f7f\u7528\u53ef\u80fd\u306a\u63a5\u7d9a\u6570:
+probe.jsp.resources.info.max=\u6700\u5927\u63a5\u7d9a\u6570:
+probe.jsp.resources.info.misconfigured=\u3053\u306e\u30ea\u30bd\u30fc\u30b9\u306f\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5b9f\u884c\u6642\u306e\u60c5\u5831\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+probe.jsp.resources.info.misconfigured.alt=\u611f\u5606\u7b26\u8a18\u53f7
+probe.jsp.resources.info.reset=
+probe.jsp.resources.info.reset.alt=\u30ea\u30bb\u30c3\u30c8
+probe.jsp.resources.info.title=\u88dc\u8db3\u60c5\u5831:
+
+probe.jsp.servlet_source.h3.source=\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9
+probe.jsp.servlet_source.opt.jsp=JSP\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u78ba\u8a8d\u3059\u308b
+
+probe.jsp.sessionAttibutes.card.age=\u7d4c\u904e\u6642\u9593:
+probe.jsp.sessionAttibutes.card.application=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3:
+probe.jsp.sessionAttibutes.card.created=\u751f\u6210\u65e5\u6642:
+probe.jsp.sessionAttibutes.card.expiryTime=\u6709\u52b9\u671f\u9650:
+probe.jsp.sessionAttibutes.card.id=ID:
+probe.jsp.sessionAttibutes.card.idleTime=\u30a2\u30a4\u30c9\u30eb\u6642\u9593:
+probe.jsp.sessionAttibutes.card.info=\u60c5\u5831:
+probe.jsp.sessionAttibutes.card.lastAccessed=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u65e5\u6642:
+probe.jsp.sessionAttibutes.card.manager=Manager\u30bf\u30a4\u30d7:
+probe.jsp.sessionAttibutes.card.maxIdleTime=\u6700\u5927\u30a2\u30a4\u30c9\u30eb\u6642\u9593:
+probe.jsp.sessionAttibutes.card.serializable=\u76f4\u5217\u5316\u53ef\u80fd:
+probe.jsp.sessionAttibutes.card.serializable.no=\u3044\u3044\u3048
+probe.jsp.sessionAttibutes.card.serializable.yes=\u306f\u3044
+probe.jsp.sessionAttibutes.card.size=\u30b5\u30a4\u30ba:
+probe.jsp.sessionAttibutes.col.delete=\u524a\u9664
+probe.jsp.sessionAttibutes.col.delete.title=\u5c5e\u6027\u3092\u524a\u9664\u3059\u308b
+probe.jsp.sessionAttibutes.col.name=\u540d\u524d
+probe.jsp.sessionAttibutes.col.serializable=\u76f4\u5217\u5316\u53ef\u80fd?
+probe.jsp.sessionAttibutes.col.size=\u30b5\u30a4\u30ba
+probe.jsp.sessionAttibutes.col.type=\u578b
+probe.jsp.sessionAttibutes.col.value=\u5024
+probe.jsp.sessionAttibutes.h3.attributes=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5c5e\u6027
+probe.jsp.sessionAttibutes.h3.card=\u30bb\u30c3\u30b7\u30e7\u30f3\u60c5\u5831
+probe.jsp.sessionAttibutes.invalidSid=\u30bb\u30c3\u30b7\u30e7\u30f3ID\u304c\u7121\u52b9\u306b\u306a\u3063\u305f\u304b\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u307e\u3057\u305f\u3002
+probe.jsp.sessionAttibutes.menu.back=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u4e00\u89a7\u306b\u623b\u308b
+probe.jsp.sessionAttibutes.menu.destroy=\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u7834\u68c4\u3059\u308b
+probe.jsp.sessionAttibutes.noattributes=\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u306f\u5c5e\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+
+probe.jsp.sessions.col.age=\u7d4c\u904e\u6642\u9593
+probe.jsp.sessions.col.creationTime=\u751f\u6210\u65e5\u6642
+probe.jsp.sessions.col.expiryTime=\u6709\u52b9\u671f\u9650
+probe.jsp.sessions.col.id=\u30bb\u30c3\u30b7\u30e7\u30f3ID
+probe.jsp.sessions.col.applicationName=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
+probe.jsp.sessions.col.idleTime=\u30a2\u30a4\u30c9\u30eb\u6642\u9593
+probe.jsp.sessions.col.lastAccessTime=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u65e5\u6642
+probe.jsp.sessions.col.objectCount=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570
+probe.jsp.sessions.col.serializable=\u76f4\u5217\u5316\u53ef\u80fd?
+probe.jsp.sessions.col.size=\u30b5\u30a4\u30ba
+probe.jsp.sessions.col.lastIP=Last IP
+probe.jsp.sessions.unknown.ip=unknown
+probe.jsp.sessions.empty=\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+probe.jsp.sessions.menu.expire=\u7121\u52b9\u5316\u3059\u308b
+probe.jsp.sessions.menu.toggle=\u9078\u629e\u30fb\u975e\u9078\u629e\u72b6\u614b\u3092\u30c8\u30b0\u30eb\u3059\u308b
+probe.jsp.sessions.status.no=\u3044\u3044\u3048
+probe.jsp.sessions.status.yes=\u306f\u3044
+#probe.jsp.sessions.opt.all=Show all
+probe.jsp.showsize=\u30b5\u30a4\u30ba\u3092\u8868\u793a\u3059\u308b
+probe.jsp.hidesize=\u30b5\u30a4\u30ba\u3092\u96a0\u3059
+
+probe.jsp.sysinfo.col.name=\u30d7\u30ed\u30d1\u30c6\u30a3\u540d
+probe.jsp.sysinfo.col.value=\u30d7\u30ed\u30d1\u30c6\u30a3\u5024
+probe.jsp.sysinfo.container.title=\u30b3\u30f3\u30c6\u30ca\u60c5\u5831
+probe.jsp.sysinfo.memory.adviseGC=\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30bf\u3092\u5b9f\u884c\u3059\u308b
+probe.jsp.sysinfo.memory.free=\u30e1\u30e2\u30ea\u306e\u7a7a\u304d\u5bb9\u91cf:
+probe.jsp.sysinfo.memory.max=\u30e1\u30e2\u30ea\u306e\u6700\u5927\u5bb9\u91cf:
+probe.jsp.sysinfo.memory.title=\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
+probe.jsp.sysinfo.memory.total=\u30e1\u30e2\u30ea\u306e\u7dcf\u5bb9\u91cf:
+probe.jsp.sysinfo.memory.usage=\u73fe\u5728\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u7387
+probe.jsp.sysinfo.memory.usage.alt=\u30e1\u30e2\u30ea\u306e\u4f7f\u7528\u7387
+probe.jsp.sysinfo.os.applicationBase=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u57fa\u5e95\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:
+probe.jsp.sysinfo.os.catalinaBase=catalina.base:
+probe.jsp.sysinfo.os.catalinaHome=catalina.home:
+probe.jsp.sysinfo.os.configBase=\u30b3\u30f3\u30d5\u30a3\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u57fa\u5e95\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:
+probe.jsp.sysinfo.os.container=\u30b3\u30f3\u30c6\u30ca:
+probe.jsp.sysinfo.os.currentTime=\u73fe\u5728\u65e5\u6642:
+probe.jsp.sysinfo.os.jvm=JVM:
+probe.jsp.sysinfo.os.name=OS:
+probe.jsp.sysinfo.os.processors=\u30d7\u30ed\u30bb\u30c3\u30b5\u6570:
+probe.jsp.sysinfo.os.title=OS\u60c5\u5831
+probe.jsp.sysinfo.os.workingDir=\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea:
+probe.jsp.sysinfo.sysproperties.title=\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3
+
+probe.jsp.threadpools.currentThreadCount=\u73fe\u5728\u306e\u30b9\u30ec\u30c3\u30c9\u6570
+probe.jsp.threadpools.currentThreadsBusy=\u73fe\u5728\u4f7f\u7528\u4e2d\u306e\u30b9\u30ec\u30c3\u30c9\u6570
+probe.jsp.threadpools.maxSpareThreads=\u6700\u5927\u30b9\u30da\u30a2\u30b9\u30ec\u30c3\u30c9\u6570
+probe.jsp.threadpools.maxThreads=\u6700\u5927\u30b9\u30ec\u30c3\u30c9\u6570
+probe.jsp.threadpools.menu.threads=\u5b9f\u884c\u4e2d\u306e\u30b9\u30ec\u30c3\u30c9
+probe.jsp.threadpools.minSpareThreads=\u6700\u5c0f\u30b9\u30da\u30a2\u30b9\u30ec\u30c3\u30c9\u6570
+probe.jsp.threadpools.name=\u540d\u524d
+
+probe.jsp.threads.col.application=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
+probe.jsp.threads.col.classLoader=\u30af\u30e9\u30b9\u30ed\u30fc\u30c0
+probe.jsp.threads.col.daemon=D
+probe.jsp.threads.col.groupName=\u30b0\u30eb\u30fc\u30d7\u540d
+probe.jsp.threads.col.interrupted=I
+probe.jsp.threads.col.name=\u540d\u524d
+probe.jsp.threads.col.priority=P
+probe.jsp.threads.col.runnableClass=Runnable
+probe.jsp.threads.col.threadClass=\u30b9\u30ec\u30c3\u30c9\u30af\u30e9\u30b9\u540d
+#probe.jsp.threads.col.id=ID
+#probe.jsp.threads.col.execPoint=Exec. point
+#probe.jsp.threads.col.state=State
+#probe.jsp.threads.col.inNative=In.Native
+#probe.jsp.threads.col.suspended=Susp.
+#probe.jsp.threads.col.waitedCount=WC
+#probe.jsp.threads.col.blockedCount=BC
+probe.jsp.threads.help.priority=\u30b9\u30ec\u30c3\u30c9\u306e\u512a\u5148\u9806\u4f4d, \u6570\u5024\u304c\u9ad8\u3051\u308c\u3070\u9ad8\u3044\u307b\u3069\u512a\u5148\u9806\u4f4d\u304c\u9ad8\u304f\u306a\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059
+probe.jsp.threads.help.daemon=\u30b9\u30ec\u30c3\u30c9\u304c\u30c7\u30fc\u30e2\u30f3\u30b9\u30ec\u30c3\u30c9\u3067\u3059
+probe.jsp.threads.help.interrupted=\u30b9\u30ec\u30c3\u30c9\u304c\u5272\u308a\u8fbc\u307e\u308c\u3066\u3044\u308b\u72b6\u614b\u3067\u3059
+probe.jsp.threads.help.inNative=\u30b9\u30ec\u30c3\u30c9\u304c\u30cd\u30a4\u30c6\u30a3\u30d6\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\u306f true \u3068\u306a\u308a\u307e\u3059
+probe.jsp.threads.help.suspended=\u30b9\u30ec\u30c3\u30c9\u304c\u4e2d\u65ad\u3055\u308c\u3066\u3044\u307e\u3059
+probe.jsp.threads.help.waitedCount="wait count" - \u30b9\u30ec\u30c3\u30c9\u304c\u901a\u77e5\u3092\u5f85\u6a5f\u3057\u305f\u5408\u8a08\u56de\u6570
+probe.jsp.threads.help.blockedCount="blocked count" - \u30b9\u30ec\u30c3\u30c9\u304c\u30d6\u30ed\u30c3\u30af\u72b6\u614b\u306b\u5165\u3063\u305f\u5408\u8a08\u56de\u6570
+probe.jsp.threads.info.loading=\u8aad\u8fbc\u4e2d...
+probe.jsp.threads.info.unavailable=URL\u60c5\u5831\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+probe.jsp.threads.killmsg=\u30b9\u30ec\u30c3\u30c9\u3092\u3080\u3084\u307f\u306b\u505c\u6b62\u3059\u308b\u3068VM\u306e\u52d5\u4f5c\u304c\u4e0d\u5b89\u5b9a\u306b\u306a\u308a\u307e\u3059\u3002\u672c\u5f53\u306b {0} \u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f
+probe.jsp.threads.menu.threadpools=\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb
+probe.jsp.threads.stop.alt=\u505c\u6b62\u3059\u308b
+
+probe.jsp.title.app.attributes={0} - \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u5c5e\u6027
+probe.jsp.title.applications=\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
+probe.jsp.title.cluster=\u30af\u30e9\u30b9\u30bf\u306e\u72b6\u614b
+probe.jsp.title.connectors=\u30b3\u30cd\u30af\u30bf
+probe.jsp.title.dataSourceGroups=JDBC URL\u5358\u4f4d\u3067\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u305f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9
+probe.jsp.title.datasources=\u6709\u52b9\u306a\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9
+probe.jsp.title.deployment=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u914d\u5099
+probe.jsp.title.follow=\u30ed\u30b0\u306e\u76e3\u8996
+probe.jsp.title.jsps={0} - \u914d\u5099\u6e08\u306eJSP
+probe.jsp.title.logs=\u30ed\u30b0
+probe.jsp.title.logs_notSupported=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+probe.jsp.title.memory=JVM\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
+probe.jsp.title.quickcheck=\u30af\u30a4\u30c3\u30af\u30c1\u30a7\u30c3\u30af
+probe.jsp.title.resources={0} - \u30ea\u30bd\u30fc\u30b9
+probe.jsp.title.servlet_source=\u751f\u6210\u6e08\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9
+probe.jsp.title.sessionAttibutes=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5c5e\u6027
+probe.jsp.title.sessions={0} - \u30bb\u30c3\u30b7\u30e7\u30f3
+#probe.jsp.title.sessions.all=Sessions
+probe.jsp.title.sysinfo=\u30b7\u30b9\u30c6\u30e0\u60c5\u5831
+probe.jsp.title.threadpools=\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb
+probe.jsp.title.threads=\u5b9f\u884c\u4e2d\u306e\u30b9\u30ec\u30c3\u30c9
+probe.jsp.title.viewsource={0} - \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u30d3\u30e5\u30fc
+probe.jsp.uptime=\u7a3c\u52d5\u6642\u9593 {0} \u65e5 {1} \u6642\u9593 {2} \u5206
+probe.jsp.version={0} \u30d0\u30fc\u30b8\u30e7\u30f3 \u3092 {1} \u4e0a\u3067\u5b9f\u884c\u4e2d
+
+probe.jsp.viewsource.appname=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d:
+probe.jsp.viewsource.encoding=\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0:
+probe.jsp.viewsource.filename=\u30d5\u30a1\u30a4\u30eb\u540d:
+probe.jsp.viewsource.h3.info=JSP\u60c5\u5831
+probe.jsp.viewsource.h3.source=JSP\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9
+probe.jsp.viewsource.lastmodified=\u6700\u7d42\u66f4\u65b0\u65e5\u6642:
+probe.jsp.viewsource.notfound=\u6b8b\u5ff5\u306a\u304c\u3089\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u4e2d\u8eab\u3092\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u4e00\u89a7\u753b\u9762\u306b\u623b\u3063\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+probe.jsp.viewsource.opt.back=JSP\u306e\u4e00\u89a7\u306b\u623b\u308b
+probe.jsp.viewsource.opt.compile=\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b
+probe.jsp.viewsource.opt.viewServlet=\u751f\u6210\u6e08\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u78ba\u8a8d\u3059\u308b
+probe.jsp.viewsource.size=\u30b5\u30a4\u30ba:
+probe.jsp.viewsource.state=\u72b6\u614b:
+
+probe.jsp.wrongparams=\u3053\u306e\u753b\u9762\u306b\u5bfe\u3057\u8aa4\u3063\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6e21\u3057\u307e\u3057\u305f\u3002
+#probe.jsp.wrongsvrversion=This feature is not implemented for {0}
+probe.jsp.zoomedchart.back=\u30c1\u30e3\u30fc\u30c8\u30b0\u30eb\u30fc\u30d7\u306b\u623b\u308b
+probe.jsp.zoomedchart.information=\u753b\u9762\u306e\u89e3\u50cf\u5ea6\u306b\u5f93\u3044\u3001\u30b9\u30e9\u30a4\u30c0\u3092\u7528\u3044\u3066\u30a4\u30e1\u30fc\u30b8\u3092\u30ea\u30b5\u30a4\u30ba\u3067\u304d\u307e\u3059\u3002\u60c5\u5831\u306f\u30e9\u30a4\u30d6\u5f62\u5f0f\u3067\u3001\u30c1\u30e3\u30fc\u30c8\u306f{0}\u79d2\u9593\u9694\u3067\u81ea\u52d5\u7684\u306b\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u3055\u308c\u307e\u3059\u3002
+
+probe.src.contextAction.cannotActOnSelf=\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u505c\u6b62/\u59cb\u52d5/\u914d\u5099\u89e3\u9664\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+probe.src.contextDoesntExist=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+probe.src.deploy.context.failure={0} \u306e\u914d\u5099\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+probe.src.deploy.context.success={0} \u3088\u308a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u914d\u5099\u3057\u307e\u3057\u305f\u3002
+probe.src.deploy.exploded.success={0} \u306f {1} \u306b\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3057\u305f\u3002
+probe.src.deploy.war.alreadyExists=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 {0} \u306f\u3059\u3067\u306b\u914d\u5099\u6e08\u3067\u3059\u3002
+probe.src.deploy.war.failure=\u914d\u5099\u4e2d\u306bTomcat\u304c\u30b9\u30ed\u30fc\u3057\u305f\u30a8\u30e9\u30fc: "{0}"\u3002\u3057\u304b\u3057\u306a\u304c\u3089\u3001\u3053\u306e\u3053\u3068\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u914d\u5099\u306b\u5931\u6557\u3057\u305f\u3053\u3068\u3092\u610f\u5473\u3057\u3066\u3044\u308b\u3068\u306f\u9650\u308a\u307e\u305b\u3093\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4e00\u89a7\u753b\u9762\u306b\u3066\u72b6\u614b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+probe.src.deploy.war.notWar.failure=\u914d\u5099\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u540d\u306f .war \u3067\u7d42\u4e86\u3057\u3066\u3044\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
+#probe.src.deploy.war.notinstalled={0} was not installed
+probe.src.deploy.war.uploadfailure=\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u4e2d\u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}
+probe.src.reset.datasource.c3p0=\u3054\u3081\u3093\u306a\u3055\u3044\u3001C3P0\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u307f\u30ea\u30bb\u30c3\u30c8\u53ef\u80fd\u3067\u3059\u3002
+probe.src.reset.datasource.notfound=\u30ea\u30bd\u30fc\u30b9 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+
+probe.jsp.title.wrapper=Java Service Wrapper
+probe.jsp.wrapper.not_available=\u3053\u306eJVM\u306fJava Service Wrapper\u3067\u5236\u5fa1\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+probe.jsp.wrapper.menu.restart=JVM\u3092\u518d\u59cb\u52d5\u3059\u308b
+probe.jsp.wrapper.menu.stop=JVM\u3092\u505c\u6b62\u3059\u308b
+probe.jsp.wrapper.menu.thread_dump=\u30b9\u30ec\u30c3\u30c9\u30c0\u30f3\u30d7\u3092\u30ea\u30af\u30a8\u30b9\u30c8\u3059\u308b
+probe.jsp.wrapper.h3.info=Wrapper\u60c5\u5831
+probe.jsp.wrapper.h3.props=Wrapper\u30d7\u30ed\u30d1\u30c6\u30a3
+probe.jsp.wrapper.confirm.restart=\u672c\u5f53\u306bJVM\u3092\u518d\u59cb\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f
+probe.jsp.wrapper.confirm.stop=Probe\u3088\u308aJVM\u3092\u518d\u3073\u59cb\u52d5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u672c\u5f53\u306bJVM\u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f
+probe.jsp.wrapper.jvm.stopping=JVM\u3092\u505c\u6b62\u4e2d\u3067\u3059\u3002\u518d\u3073\u59cb\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u7d4c\u7531\u3067\u5b9f\u884c\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
+probe.jsp.wrapper.jvm.restarting=JVM\u3092\u518d\u59cb\u52d5\u4e2d\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u6570\u5206\u304b\u304b\u308a\u307e\u3059\u3002
+probe.jsp.wrapper.jvm.thread_dump=JVM\u306e\u30b9\u30ec\u30c3\u30c9\u30c0\u30f3\u30d7\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u307e\u3057\u305f\u3002\u901a\u5e38\u306fWrapper\u306e\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3088\u308a\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
+
+probe.jsp.wrapper.user=\u30e6\u30fc\u30b6:
+probe.jsp.wrapper.interactive_user=\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u30e6\u30fc\u30b6:
+probe.jsp.wrapper.java_pid=Java\u30d7\u30ed\u30bb\u30b9\u306ePID:
+probe.jsp.wrapper.pid=Wrapper\u30d7\u30ed\u30bb\u30b9\u306ePID:
+probe.jsp.wrapper.service=\u30b5\u30fc\u30d3\u30b9\u3068\u3057\u3066\u5b9f\u884c\u4e2d:
+probe.jsp.wrapper.debug=\u30c7\u30d0\u30c3\u30b0\u3092\u6709\u52b9\u5316:
+probe.jsp.wrapper.version=Wrapper\u306e\u30d0\u30fc\u30b8\u30e7\u30f3:
+
+probe.jsp.decorator.system.title=\u30b7\u30b9\u30c6\u30e0
+probe.jsp.decorator.system.overview=\u6982\u8981
+probe.jsp.decorator.system.memory=\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
+probe.jsp.decorator.system.props=\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3
+probe.jsp.decorator.system.os=OS\u60c5\u5831
+probe.jsp.decorator.system.wrapper=Wrapper\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb
+
+probe.jsp.os.h3.information=OS\u60c5\u5831
+probe.jsp.os.h3.charts=OS\u60c5\u5831\u306e\u5c65\u6b74
+probe.jsp.os.chart.cpu=JVM\u306eCPU\u4f7f\u7528\u7387 (%)
+probe.jsp.os.chart.cpu.alt=JVM\u306eCPU\u4f7f\u7528\u7387\u3092\u30c1\u30e3\u30fc\u30c8\u8868\u793a\u3059\u308b
+probe.jsp.os.chart.cpu.legend=CPU\u4f7f\u7528\u7387
+probe.jsp.os.chart.memory=OS\u3068JVM\u306e\u7269\u7406\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf (KB)
+probe.jsp.os.chart.memory.alt=OS\u3068JVM\u306e\u7269\u7406\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u30c1\u30e3\u30fc\u30c8\u8868\u793a\u3059\u308b
+probe.jsp.os.chart.memory.legend.total=OS\u306e\u7269\u7406\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
+probe.jsp.os.chart.memory.legend.jvm=JVM\u306e\u7269\u7406\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf
+probe.jsp.os.chart.swap=\u30b9\u30ef\u30c3\u30d7\u4f7f\u7528\u91cf (KB)
+probe.jsp.os.chart.swap.alt=\u30b9\u30ef\u30c3\u30d7\u4f7f\u7528\u91cf\u3092\u30c1\u30e3\u30fc\u30c8\u8868\u793a\u3059\u308b
+probe.jsp.os.chart.swap.legend=\u30b9\u30ef\u30c3\u30d7\u4f7f\u7528\u91cf
+#probe.jsp.os.chart.fd=File descriptors
+#probe.jsp.os.chart.fd.alt=File descriptors chart
+#probe.jsp.os.chart.fd.legend.open=open file descriptors
+#probe.jsp.os.chart.fd.legend.max=max file descriptors
+probe.jsp.os.card.name=OS\u540d:
+probe.jsp.os.card.version=OS\u306e\u30d0\u30fc\u30b8\u30e7\u30f3:
+probe.jsp.os.card.processors=\u30d7\u30ed\u30bb\u30c3\u30b5\u6570:
+probe.jsp.os.card.totalMemory=\u7269\u7406\u30e1\u30e2\u30ea\u306e\u7dcf\u5bb9\u91cf:
+probe.jsp.os.card.freeMemory=\u7269\u7406\u30e1\u30e2\u30ea\u306e\u7a7a\u304d\u5bb9\u91cf:
+probe.jsp.os.card.committedVirtualMemory=\u30b3\u30df\u30c3\u30c8\u6e08\u306eJVM\u30e1\u30e2\u30ea\u5bb9\u91cf:
+probe.jsp.os.card.totalSwap=\u30b9\u30ef\u30c3\u30d7\u306e\u7dcf\u5bb9\u91cf:
+probe.jsp.os.card.freeSwap=\u30b9\u30ef\u30c3\u30d7\u306e\u7a7a\u304d\u5bb9\u91cf:
+
+probe.jsp.title.testDataSource={0} -> {1}
+probe.src.dataSourceTest.resource.lookup.failure=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 {0} \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+probe.src.dataSourceTest.connection.failure=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u3092\u78ba\u7acb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 {0}
+probe.src.dataSourceTest.connection.success=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u6b63\u3057\u304f\u63a5\u7d9a\u3055\u308c\u307e\u3057\u305f
+probe.src.dataSourceTest.sql.required=SQL\u554f\u3044\u5408\u308f\u305b\u306e\u30c6\u30ad\u30b9\u30c8\u6b04\u306f\u5165\u529b\u5fc5\u9808\u3067\u3059\u3002
+probe.src.dataSourceTest.sql.failure=\u554f\u3044\u5408\u308f\u305b\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 {0}
+probe.src.dataSourceTest.sql.null=NULL
+probe.src.dataSourceTest.cachedResultSet.failure=\u30ad\u30e3\u30c3\u30b7\u30e5\u6e08\u306e\u7d50\u679c\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+probe.jsp.dataSourceTest.help=\u3053\u306e\u753b\u9762\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u3088\u3063\u3066\u4f5c\u6210\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306e\u30c6\u30b9\u30c8\u304c\u3067\u304d\u307e\u3059\u3002\
+\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u304c\u78ba\u7acb\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u306b\u306f [\u63a5\u7d9a\u3092\u30c6\u30b9\u30c8\u3059\u308b] \u3092\u62bc\u4e0b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\
+\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3057\u3066SQL\u554f\u3044\u5408\u308f\u305b\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f [SQL\u3092\u5b9f\u884c\u3059\u308b] \u3092\u62bc\u4e0b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\
+\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u306e\u51fa\u529b\u7d50\u679c\u3084\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u3001\u753b\u9762\u4e0b\u90e8\u306b\u3066\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\
+[\u5c65\u6b74\u3092\u8868\u793a\u3059\u308b] \u3092\u62bc\u4e0b\u3059\u308b\u3068\u3001\u3053\u308c\u307e\u3067\u306b\u5b9f\u884c\u3055\u308c\u305f\u554f\u3044\u5408\u308f\u305b\u306e\u4e00\u89a7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\
+\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u3092\u6d6a\u8cbb\u3055\u305b\u306a\u3044\u305f\u3081\u306b\u3001\u554f\u3044\u5408\u308f\u305b\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u30ec\u30b3\u30fc\u30c9\u6570\u3092\u5236\u9650\u3059\u308b\u306b\u306f [\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3059\u308b] \u3092\u5229\u7528\u3059\u308b\u3088\u3046\u306b\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+probe.jsp.dataSourceTest.menu.back=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u4e00\u89a7\u306b\u623b\u308b
+probe.jsp.dataSourceTest.menu.connect=\u63a5\u7d9a\u3092\u30c6\u30b9\u30c8\u3059\u308b
+probe.jsp.dataSourceTest.menu.execute=SQL\u3092\u5b9f\u884c\u3059\u308b (Ctrl+Enter)
+probe.jsp.dataSourceTest.menu.showHistory=\u5c65\u6b74\u3092\u8868\u793a\u3059\u308b (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.hideHistory=\u5c65\u6b74\u3092\u96a0\u3059 (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.showOptions=\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8868\u793a\u3059\u308b (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.hideOptions=\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u96a0\u3059 (Ctrl+Up)
+#probe.jsp.dataSourceTest.menu.wrap=Wrap lines
+#probe.jsp.dataSourceTest.menu.nowrap=Don't wrap lines
+probe.jsp.dataSourceTest.menu.abbreviations=\u30d8\u30eb\u30d7!
+probe.jsp.dataSourceTest.sqlForm.sql.label=SQL
+probe.jsp.dataSourceTest.sqlForm.maxRows.label=\u53d6\u5f97\u53ef\u80fd\u306a\u30ec\u30b3\u30fc\u30c9\u6570
+probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=1\u30da\u30fc\u30b8\u6bce\u306e\u30ec\u30b3\u30fc\u30c9\u6570
+probe.jsp.dataSourceTest.sqlForm.historySize.label=\u554f\u3044\u5408\u308f\u305b\u5c65\u6b74\u306e\u4fdd\u5b58\u4ef6\u6570
+probe.jsp.dataSourceTest.h3.results=\u554f\u3044\u5408\u308f\u305b\u7d50\u679c
+probe.jsp.dataSourceTest.results.rowcount={0}\u30ec\u30b3\u30fc\u30c9\u304c\u62bd\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
+probe.jsp.dataSourceTest.h3.metaData=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u60c5\u5831
+#probe.jsp.dataSourceTest.chart.usage.title=Datasource usage
+probe.jsp.dataSourceTest.dbMetaData.col.propName=\u30d7\u30ed\u30d1\u30c6\u30a3\u540d
+probe.jsp.dataSourceTest.dbMetaData.col.propValue=\u30d7\u30ed\u30d1\u30c6\u30a3\u5024
+probe.jsp.dataSourceTest.dbMetaData.dbProdName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u88fd\u54c1\u540d
+probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u88fd\u54c1\u306e\u30d0\u30fc\u30b8\u30e7\u30f3
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=JDBC\u30c9\u30e9\u30a4\u30d0\u540d
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=JDBC\u30c9\u30e9\u30a4\u30d0\u306e\u30d0\u30fc\u30b8\u30e7\u30f3
+probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=JDBC\u306e\u30d0\u30fc\u30b8\u30e7\u30f3
+probe.jsp.dataSourceTest.results.paging.banner.item_name=\u30ec\u30b3\u30fc\u30c9
+probe.jsp.dataSourceTest.results.paging.banner.items_name=\u30ec\u30b3\u30fc\u30c9
+probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
+probe.jsp.dataSourceTest.results.paging.banner.one_item_found=1\u4ef6\u306e{0}\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002
+probe.jsp.dataSourceTest.results.paging.banner.all_items_found=\u5168\u3066\u306e{2}\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002
+probe.jsp.dataSourceTest.results.paging.banner.some_items_found={2}\u4ef6\u76ee\u304b\u3089{3}\u4ef6\u76ee\u307e\u3067\u306e\u30ec\u30b3\u30fc\u30c9\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002
+probe.jsp.dataSourceTest.results.paging.banner.first=\u6700\u521d\u3078
+probe.jsp.dataSourceTest.results.paging.banner.prev=\u524d\u3078
+probe.jsp.dataSourceTest.results.paging.banner.next=\u6b21\u3078
+probe.jsp.dataSourceTest.results.paging.banner.last=\u6700\u5f8c\u3078
+probe.jsp.dataSourceTest.results.paging.banner.page.link.title={0}\u30da\u30fc\u30b8\u3078
+probe.jsp.dataSourceTest.sql.completed=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5b9f\u884c\u3092\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002
+probe.jsp.dataSourceTest.h3.queryHistory=\u554f\u3044\u5408\u308f\u305b\u5c65\u6b74
+probe.jsp.dataSourceTest.queryHistory.empty=\u554f\u3044\u5408\u308f\u305b\u5c65\u6b74\u306e\u4e00\u89a7\u306f\u7a7a\u3067\u3059\u3002
+
+probe.jsp.whois.timeout=WHOIS\u691c\u7d22\u3092\u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002WHOIS\u691c\u7d22\u304c\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u30d6\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+
+probe.jsp.threadstack.native=\u30cd\u30a4\u30c6\u30a3\u30d6\u30b3\u30fc\u30c9
+probe.jsp.threadstack.unknown=\u4e0d\u660e
+probe.jsp.threadstack.unavailable=\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002
+
+probe.jsp.tooltip.close=\u9589\u3058\u308b
+
+#probe.jsp.sessions.h3=Sessions
+#probe.jsp.sessions.search.h3=Session search criteria
+#probe.jsp.sessions.menu.showSearch=Session search
+#probe.jsp.sessions.menu.applySearch=Apply search
+#probe.jsp.sessions.menu.clearSearch=Clear search
+#probe.jsp.sessions.menu.searchHelp=Help
+#probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
+#Whether Session Id matches a regular expression.\
+#Whether Last IP contains a substring.\
+#Whether Idle Time falls into a range specified in seconds.\
+#Whether Age falls into a range specified in seconds.\
+#Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
+#This condition allows finding a session with an attribute A and/or an attribute B set.
+#probe.jsp.sessions.search.sessionId=Session id (RE)
+#probe.jsp.sessions.search.attrName=Attribute names (RE list)
+#probe.jsp.sessions.search.ageFrom=Age from (sec)
+#probe.jsp.sessions.search.ageTo=to
+#probe.jsp.sessions.search.idleTimeFrom=Idle time from (sec)
+#probe.jsp.sessions.search.idleTimeTo=to
+#probe.jsp.sessions.search.lastIP=Last IP (substring)
+#probe.jsp.sessions.search.results.h3=Session search results
+#probe.src.sessions.search.empty=Search criteria is empty
+#probe.src.sessions.search.results.empty=No sessions have matched the search criteria
+#probe.src.sessions.search.invalid=Search criteria is invalid
+#probe.src.sessions.search.invalid.sessionId=Session id regular expression is invalid. {0}
+#probe.src.sessions.search.invalid.attrName=Attribute name regular expression is invalid. {0}
+#probe.src.sessions.search.invalid.ageFrom=Age from value is invalid
+#probe.src.sessions.search.invalid.ageTo=Age to value is invalid
+#probe.src.sessions.search.invalid.idleTimeFrom=Idle time from value is invalid
+#probe.src.sessions.search.invalid.idleTimeTo=Idle time to value is invalid
+#probe.src.sessions.search.invalid.lastIP=Last IP regular expression is invalid. {0}
+
+#probe.jsp.app.nav.title=Application
+#probe.jsp.app.nav.summary=Summary
+#probe.jsp.app.nav.sessions=Sessions
+#probe.jsp.app.nav.attributes=Attributes
+#probe.jsp.app.nav.jsps=JSPs
+#probe.jsp.app.nav.resources=Resources
+#probe.jsp.app.nav.initParams=Parameters
+#probe.jsp.app.nav.webxml=Deployment descriptor
+#probe.jsp.app.nav.contextxml=Context descriptor
+#probe.jsp.app.nav.filters=Filters
+#probe.jsp.app.nav.servlets=Servlets
+
+#probe.jsp.title.app.initParams={0} - initialization parameters
+#probe.jsp.app.initParams.h3.params=Context initialization parameters
+#probe.jsp.app.initParams.col.name=Name
+#probe.jsp.app.initParams.col.value=Value
+#probe.jsp.app.initParams.col.source=Source
+#probe.jsp.app.initParams.source.deplDescr=web.xml
+#probe.jsp.app.initParams.source.context=context
+#probe.jsp.app.initParams.empty=There are no context initialization parameters defined for this application
+
+#probe.jsp.title.app.viewXMLConf={0} - {1}
+#probe.jsp.app.viewXMLConf.notfound= Cannot find {0} of this application
+#probe.jsp.app.viewXMLConf.h3.scr={0} source
+#probe.src.app.viewxmlconf.webxml.desc=deployment descriptor
+#probe.src.app.viewxmlconf.contextxml.desc=context descriptor
+
+#probe.jsp.title.app.filters={0} - filters
+#probe.jsp.title.app.filtermaps={0} - filter mappings
+#probe.jsp.app.filtermaps.opt.defs=Filter definitions
+#probe.jsp.app.filters.opt.maps=Filter mappings
+#probe.jsp.app.filters.h3.defs=Filters
+#probe.jsp.app.filtermaps.h3.maps=Filter mappings
+#probe.jsp.app.filters.col.filterName=Name
+#probe.jsp.app.filters.col.filterClass=Class
+#probe.jsp.app.filters.col.filterDesc=Description
+#probe.jsp.app.filtermaps.col.url=Url
+#probe.jsp.app.filtermaps.col.filterName=Filter name
+#probe.jsp.app.filtermaps.col.servletName=Servlet name
+#probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
+#probe.jsp.app.filters.empty=There are no filters defined for this application
+#probe.jsp.app.filtermaps.empty=There are no filter mappings defined for this application
+
+#probe.jsp.title.servlets.all=Servlets
+#probe.jsp.title.servlets.app={0} - servlets
+#probe.jsp.title.servletmaps.all=Servlet mappings
+#probe.jsp.title.servletmaps.app={0} - servlet mappings
+#probe.jsp.servletmaps.opt.defs=Servlets
+#probe.jsp.servletmaps.opt.all=Show all
+#probe.jsp.servlets.opt.maps=Servlet mappings
+#probe.jsp.servlets.opt.all=Show all
+#probe.jsp.servlets.h3.defs=Servlets
+#probe.jsp.servletmaps.h3.maps=Servlet mappings
+#probe.jsp.servletmaps.col.url=Url
+#probe.jsp.servletmaps.col.servletName=Servlet name
+probe.jsp.servlets.col.applicationName=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
+#probe.jsp.servlets.col.servletName=Name
+#probe.jsp.servletmaps.col.servletClass=Servlet class
+#probe.jsp.servlets.col.available=Avail
+#probe.jsp.servlets.col.loadOnStartup=Startup
+#probe.jsp.servlets.empty=There are no servlets defined
+#probe.jsp.servletmaps.empty=There are no servlet mappings defined
+#probe.jsp.servlets.col.minTime=Min time
+#probe.jsp.servlets.col.maxTime=Max time
+#probe.jsp.servlets.col.processingTime=Proc time
+#probe.jsp.servlets.col.loadTime=Load time
+#probe.jsp.servlets.col.multiThreaded=Mult Thrd
+#probe.jsp.servlets.col.requestCount=Req
+#probe.jsp.servlets.col.errorCount=Err
+
+#probe.jsp.title.app.summary={0} - application summary
+#probe.jsp.app.summary.application=Application name:
+#probe.jsp.app.summary.description=Description:
+#probe.jsp.app.summary.distributable=Clustered:
+#probe.jsp.app.summary.docBase=Doc. base:
+#probe.jsp.app.summary.servletVersion=Servlet version:
+#probe.jsp.app.summary.sessionTimeout=Session timeout:
+#probe.jsp.app.summary.servletCount=Servlet count:
+#probe.jsp.app.summary.status=This application is
+probe.jsp.app.summary.requestCount=\u30ea\u30af\u30a8\u30b9\u30c8\u6570:
+#probe.jsp.app.summary.sessionCount=Sessions
+#probe.jsp.app.summary.sessionAttributeCount=Session attrs.
+#probe.jsp.app.summary.sessionSize=Session size
+#probe.jsp.app.summary.contextAttributeCount=Context attrs.
+#probe.jsp.app.summary.serializable=Ser.
+probe.jsp.app.summary.errorCount=\u30a8\u30e9\u30fc\u6570:
+probe.jsp.app.summary.processingTime=\u51e6\u7406\u6642\u9593:
+#probe.jsp.app.summary.minTime=Min time:
+probe.jsp.app.summary.maxTime=\u6700\u9ad8\u51e6\u7406\u6642\u9593:
+#probe.jsp.app.summary.avgTime=Avg response time:
+#probe.jsp.app.summary.h3.static=Application information
+#probe.jsp.app.summary.h3.runtime=Runtime information
+#probe.jsp.app.summary.invalidApp=The application is invalid
+#probe.jsp.app.summary.runtime.unavailable=This application is not running, runtime information is unavailable
+#probe.jsp.app.summary.menu.start=Start
+#probe.jsp.app.summary.menu.stop=Stop
+#probe.jsp.app.summary.menu.reload=Reload
+#probe.jsp.app.summary.menu.undeploy=Undeploy
+#probe.jsp.app.summary.menu.goTo=Go to
+#probe.jsp.app.summary.menu.startStats=Start collecting stats
+#probe.jsp.app.summary.menu.stopStats=Stop collecting stats
+#probe.jsp.app.summary.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
+#probe.jsp.app.summary.dataSourceUsageScore=Datasource usage
+#probe.jsp.app.summary.jdbcUsage.title=Max.conn.usage {0}%
+#probe.jsp.app.summary.h3.charts=Statistics charts
+#probe.jsp.app.summary.charts.requests.title=Number of requests
+#probe.jsp.app.summary.charts.avgProcTime.title=Average response time (ms)
+#probe.jsp.app.summary.charts.requests.legend=Requests
+#probe.jsp.app.summary.charts.errors.legend=Errors
+#probe.jsp.app.summary.charts.avgProcTime.legend=Avg. response time
+
+#probe.jsp.title.allappstats=Application statistics
+#probe.jsp.allappstats.charts.totalAvgProcTime.legend=Avg. response time
+#probe.jsp.allappstats.charts.totalReq.legend=Requests
+#probe.jsp.allappstats.charts.totalAvgProcTime.title=Cumulative avg. response time (ms)
+#probe.jsp.allappstats.charts.allAppAvgProcTime.title=Avg. response time by app (ms)
+#probe.jsp.allappstats.charts.totalReq.title=Cumulative requests
+#probe.jsp.allappstats.charts.allAppReq.title=Requests by app (ms)
+#probe.jsp.allappstats.h3.charts=Statistics charts
+
+#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
+#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
+#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
+#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
+
+#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
+#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
diff --git a/web/src/main/conf/WEB-INF/messages_ko.properties b/web/src/main/conf/WEB-INF/messages_ko.properties
index d48e07e762..33b6790a72 100644
--- a/web/src/main/conf/WEB-INF/messages_ko.properties
+++ b/web/src/main/conf/WEB-INF/messages_ko.properties
@@ -1,718 +1,718 @@
-#
-# Licensed under the GPL License. You may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-#
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-
-# Korean translation by jung.woop
-#probe.jsp.i18n.credit=Korean translation by jung.woop
-#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
-
-#probe.jsp.generic.no=no
-#probe.jsp.generic.yes=yes
-#probe.jsp.generic.abbreviations=What are those abbreviations?
-
-#probe.jsp.app.attributes.col.delete=Remove attribute
-#probe.jsp.app.attributes.col.delete.title=Remove attribute
-#probe.jsp.app.attributes.col.name=Name
-#probe.jsp.app.attributes.col.type=Type
-#probe.jsp.app.attributes.col.value=Value
-#probe.jsp.app.attributes.h3.attributes=Servlet context attributes
-probe.jsp.app.attributes.noattributes=\uc11c\ube14\ub9bf \ucee8\ud14d\uc2a4\ud2b8\uc5d0 \uc18d\uc131\ub4e4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
-
-#probe.jsp.applications.alt.reload=reload
-#probe.jsp.applications.alt.undeploy=Undeploy
-#probe.jsp.applications.col.contextAttributeCount=C.Attr
-#probe.jsp.applications.col.description=Description
-#probe.jsp.applications.col.distributable=Clstred.?
-#probe.jsp.applications.col.jdbcUsage=Jdbc Usage
-#probe.jsp.applications.col.jsp=JSP
-#probe.jsp.applications.col.name=Name
-#probe.jsp.applications.col.serializable=Ser.?
-#probe.jsp.applications.col.sessionAttributeCount=S.Attr
-#probe.jsp.applications.col.sessionCount=Sess.
-#probe.jsp.applications.col.sessionTimeout=Sess.Timeout
-#probe.jsp.applications.col.size=Size
-#probe.jsp.applications.col.status=Status
-#probe.jsp.applications.col.requestCount=Req.
-#probe.jsp.applications.help.contextAttributeCount=total number of ServletContext attributes
-#probe.jsp.applications.help.distributable=application is "distributable"
-#probe.jsp.applications.help.requestCount=total number of requests processed by servlets
-#probe.jsp.applications.help.serializable=all session attributes implement java.io.Serializable
-#probe.jsp.applications.help.sessionAttributeCount=total number of session attributes
-#probe.jsp.applications.help.sessionCount=number of sessions
-#probe.jsp.applications.hidesize=hide sessions size
-#probe.jsp.applications.jdbcUsage.title=Max.conn.usage {0}%
-#probe.jsp.applications.jsp.view=view
-#probe.jsp.applications.serializable.no=NO
-#probe.jsp.applications.serializable.yes=yes
-#probe.jsp.applications.showsize=estimate sessions size (could be slow)
-#probe.jsp.applications.status.down=down
-#probe.jsp.applications.status.down.title=Start {0}
-#probe.jsp.applications.status.up=running
-#probe.jsp.applications.title.reload=Reload {0}
-#probe.jsp.applications.title.status.up=Stop {0}
-#probe.jsp.applications.title.undeploy=Undeploy {0}
-#probe.jsp.applications.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
-
-#probe.jsp.connectors.information=Traffic information for all available connectors. The feed is LIVE and the charts are automatically updated. Please note that you do not have to stay on this page for the charts to update.
-#probe.jsp.connectors.processor.errorCount=Error count:
-#probe.jsp.connectors.processor.maxTime=Max time:
-#probe.jsp.connectors.processor.processingTime=Processing time:
-#probe.jsp.connectors.processor.received=Received:
-#probe.jsp.connectors.processor.requestCount=Request count:
-#probe.jsp.connectors.processor.sent=Sent:
-#probe.jsp.connectors.proc_time.title=Processing time (ms) in each interval
-#probe.jsp.connectors.requests.title=Number of requests each interval
-#probe.jsp.connectors.traffic.title=Traffic volume (bytes) in each interval
-#probe.jsp.connectors.wrk.col.in=IN
-#probe.jsp.connectors.wrk.col.out=OUT
-#probe.jsp.connectors.wrk.col.processingTime=Proc.time
-#probe.jsp.connectors.wrk.col.remoteAddr=Remote IP
-#probe.jsp.connectors.wrk.col.stage=stage
-#probe.jsp.connectors.wrk.col.url=URL
-#probe.jsp.connectors.wrk.col.thread=Thread
-#probe.jsp.connectors.wrk.empty=No processors
-#probe.jsp.connectors.wrk.stage.endInput=EndInput
-#probe.jsp.connectors.wrk.stage.endOutput=EndOutput
-#probe.jsp.connectors.wrk.stage.ended=Ended
-#probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
-#probe.jsp.connectors.wrk.stage.new=New
-#probe.jsp.connectors.wrk.stage.parse=Parse
-#probe.jsp.connectors.wrk.stage.prepare=Prepare
-#probe.jsp.connectors.wrk.stage.service=Service
-
-#probe.jsp.cluster.chart.requests=Requests in {0} second intervals
-#probe.jsp.cluster.chart.traffic=Traffic in {0} second intervals
-#probe.jsp.cluster.h3.info=Cluster information
-#probe.jsp.cluster.h3.members=Cluster members
-#probe.jsp.cluster.heartbeatFreq=Heartbeat freq.:
-#probe.jsp.cluster.heartbeatTimeout=Heartbeat timeout:
-#probe.jsp.cluster.info=Info:
-#probe.jsp.cluster.manager=Manager:
-#probe.jsp.cluster.mcastAddress=Mcast address:
-#probe.jsp.cluster.mcastBindAddress=Mcast bind address:
-#probe.jsp.cluster.mcastBindAddress.all=all
-#probe.jsp.cluster.mcastTTL=Mcast TTL
-#probe.jsp.cluster.members.col.address=Address
-#probe.jsp.cluster.members.col.avgMsgSize=AvgSz
-#probe.jsp.cluster.members.col.closes=Closes
-#probe.jsp.cluster.members.col.connectCount=CC
-#probe.jsp.cluster.members.col.connected=Conn.?
-#probe.jsp.cluster.members.col.disconnectCount=DC
-#probe.jsp.cluster.members.col.failures=Failures
-#probe.jsp.cluster.members.col.inQueueCounter=InQ
-#probe.jsp.cluster.members.col.keepAlive=Keep Alive
-#probe.jsp.cluster.members.col.openFailures=Open fails
-#probe.jsp.cluster.members.col.opens=Opens
-#probe.jsp.cluster.members.col.outQueueCounter=OutQ
-#probe.jsp.cluster.members.col.queueSize=QSz
-#probe.jsp.cluster.members.col.queueSizeBytes=QSzB
-#probe.jsp.cluster.members.col.requests=Req.
-#probe.jsp.cluster.members.col.resends=Resends
-#probe.jsp.cluster.members.col.sent=Sent
-#probe.jsp.cluster.members.col.socketLimit=Socket Limit
-#probe.jsp.cluster.members.failing.alt=failing
-#probe.jsp.cluster.members.failing.title=The member is suspected to be failing
-#probe.jsp.cluster.members.healthy.alt=healthy
-#probe.jsp.cluster.members.healthy.title=The member is healthy
-#probe.jsp.cluster.mode=Replication mode:
-#probe.jsp.cluster.name=Name:
-#probe.jsp.cluster.noMembers=There are no active cluster members known to this node
-#probe.jsp.cluster.notAvailable=Cluster information is only available to Tomcat 5.5.x with enabled cluster support.
-#probe.jsp.cluster.received=received
-#probe.jsp.cluster.receiverAddress=Receiver address:
-#probe.jsp.cluster.receiverPort=Receiver port:
-#probe.jsp.cluster.sent=sent
-
-probe.jsp.copyright=Copyright 2009-${copyright}. \ubb38\uc758\uc0ac\ud56d\uc774\ub098 \ud504\ub85c\uc81d\ud2b8\ucc38\uc5ec\ub97c \uc6d0\ud558\uc2dc\uba74 https://github.com/psi-probe/psi-probe \ub85c \ubc29\ubb38\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.
-
-probe.jsp.dataSourceGroups.empty=\ub370\uc774\ud0c0\ubca0\uc774\uc2a4 \uc124\uc815\uc774 \uc801\uc808\uce58 \uc54a\uc2b5\ub2c8\ub2e4.
-#probe.jsp.dataSourceGroups.information=The table bellow contains total numbers of currently opened and potentially allowed database connection grouped by jdbc url. This information can help you estimate how many connections to a particular database can be opened by jdbc resources configured within the container.
-#probe.jsp.dataSourceGroups.jdbcUsage.title=Max.conn.usage {0}%
-#probe.jsp.dataSourceGroups.list.col.busy=Total busy
-#probe.jsp.dataSourceGroups.list.col.established=Total estab.
-#probe.jsp.dataSourceGroups.list.col.max=Total max.
-#probe.jsp.dataSourceGroups.list.col.resourceCount=Resource count
-#probe.jsp.dataSourceGroups.list.col.url=URL
-#probe.jsp.dataSourceGroups.list.col.usage=Usage
-#probe.jsp.dataSourceGroups.menu.back=Back to data source list
-
-#probe.jsp.datasources.h3.global=Global Resources
-#probe.jsp.datasources.h3.app=Application Resources
-#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
-#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
-probe.jsp.datasources.empty=\ud1b0\ucea3 \uc778\uc2a4\ud134\uc2a4\uc5d0 \uc124\uc815\ub41c \ub370\uc774\ud0c0\ubca0\uc774\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
-#probe.jsp.datasources.help.max=maximum number of connections in the pool
-#probe.jsp.datasources.help.established=number of established connections that can be reused
-#probe.jsp.datasources.help.busy=number of busy connections cannot be reused
-#probe.jsp.datasources.list.col.application=App
-#probe.jsp.datasources.list.col.auth=Auth
-#probe.jsp.datasources.list.col.busy=B
-#probe.jsp.datasources.list.col.description=Description
-#probe.jsp.datasources.list.col.established=E
-#probe.jsp.datasources.list.col.linkTo=Lnk
-#probe.jsp.datasources.list.col.max=M
-#probe.jsp.datasources.list.col.reset.alt=reset
-#probe.jsp.datasources.list.col.resource=Resource
-#probe.jsp.datasources.list.col.type=Type
-#probe.jsp.datasources.list.col.url=URL
-#probe.jsp.datasources.list.col.usage=Usage
-#probe.jsp.datasources.list.col.user=User
-#probe.jsp.datasources.list.misconfigured.alt=error
-#probe.jsp.datasources.opt.groupByJdbcUrl=group by jdbc url
-
-#probe.jsp.deployment.war.success={0} has been deployed
-#probe.jsp.deployment.compilationDetails=View compilation details
-probe.jsp.deployment.s1.compile.label=\uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ubc30\uce58\ub41c \ud6c4 JSP \ud398\uc774\uc9c0 \ucef4\ud30c\uc77c(\uba87 \ubd84 \uc18c\uc694)
-probe.jsp.deployment.s1.description=.war \ud30c\uc77c \uc5c5\ub85c\ub4dc. \uba85\uc2dc\ub41c \ucee8\ud14d\uc2a4\ud2b8\uba85\uc774 \uc5c6\uc744\uacbd\uc6b0 \ucca8\ubd80\ub41c .war\ud30c\uc77c\uba85\uc73c\ub85c \uc0ac\uc6a9\ub418\uc5b4\uc9d1\ub2c8\ub2e4. META-INF/context.xml\uc774 \ud3ec\ud568\ub418\uc5b4 \uc5c5\ub85c\ub4dc\ud560 \uacbd\uc6b0 \ucee8\ud14d\uc2a4\ud2b8\ub294 \ubc18\ub4dc\uc2dc deploy\ud558\ub294 .war \ucee8\ud14d\uc2a4\ud2b8\uc758 "path" \uc18d\uc131\uacfc \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.
-probe.jsp.deployment.s1.discard.label=\uc874\uc7ac\ud558\ub294 "work"\uacbd\ub85c \uc0ad\uc81c
-#probe.jsp.deployment.s1.file.label=Select a .war file to upload
-#probe.jsp.deployment.s1.submit=Deploy
-probe.jsp.deployment.s1.title=\uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uc5c5\ub85c\ub4dc (\uae30\ubcf8)
-probe.jsp.deployment.s1.update.label=\uc774\ubbf8 \ubc30\uce58\ub41c \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uc5c5\ub85c\ub4dc
-probe.jsp.deployment.s2.context.label=\ucee8\ud14d\uc2a4\ud2b8\uba85 (ex. /dummy)
-probe.jsp.deployment.s2.description=\uc774 \uc635\uc158\uc744 \uc0ac\uc6a9\ud560 \uacbd\uc6b0 %CATALINA_BASE%/conf/Catalina/localhost/ \uc548\uc5d0 \ucee8\ud14d\uc2a4\ud2b8 .xml \ud30c\uc77c\uc774 \uc774\ubbf8 \uc0dd\uc131\ub418\uc5b4\uc838 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ud1b0\ucea3\uc740 \ucee8\ud14d\uc2a4\ud2b8\uba85\uc744 .xml \ud30c\uc77c\uc758 \uc774\ub984\uc73c\ub85c \uac04\uc8fc\ud569\ub2c8\ub2e4. \uc608) "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml. NOTE: \ud1b0\ucea35.0.x \uc774\ud6c4\ubd80\ud130 .xml \ucee8\ud14d\uc2a4\ud2b8\ud30c\uc77c\uc5d0 "path" \uc18d\uc131\uc744 \ud544\uc694\ub85c \ud569\ub2c8\ub2e4!
-probe.jsp.deployment.s2.title=\ucee8\ud14d\uc2a4\ud2b8\uba85 \ubc30\uce58 (\uace0\uae09)
-
-#probe.jsp.follow.h3.fileContent=File content
-#probe.jsp.follow.h3.fileInfo=File information
-#probe.jsp.follow.h3.sources=Logging sources
-#probe.jsp.follow.loading=Loading...
-#probe.jsp.follow.menu.back=back to log files list
-#probe.jsp.follow.menu.clear=clear buffer
-#probe.jsp.follow.menu.download=download
-#probe.jsp.follow.menu.nowrap=nowrap
-#probe.jsp.follow.menu.pause=pause tailing
-#probe.jsp.follow.menu.resume=resume tailing
-#probe.jsp.follow.menu.wrap=wrap lines
-#probe.jsp.follow.menu.zoomin=zoom in
-#probe.jsp.follow.menu.zoomout=zoom out
-#probe.jsp.followed_file_info.fileName=File name:
-#probe.jsp.followed_file_info.lastModified=Last modified:
-#probe.jsp.followed_file_info.size=Size:
-
-#probe.jsp.jsps.col.lastmodified=Last modified
-#probe.jsp.jsps.col.message=Message
-#probe.jsp.jsps.col.name=JSP Name
-#probe.jsp.jsps.col.size=Size
-#probe.jsp.jsps.col.status=Status
-#probe.jsp.jsps.notfound=This application does not have JSP files
-#probe.jsp.jsps.opt.compile=Compile selected
-#probe.jsp.jsps.opt.compileall=Compile all
-#probe.jsp.jsps.opt.discardscratch=discard "work" dir
-#probe.jsp.jsps.opt.toggleall=Toggle all
-#probe.jsp.jsps.status.compiled=Compiled
-#probe.jsp.jsps.status.failed=FAILED
-#probe.jsp.jsps.status.outdated=Out dated
-
-#probe.jsp.logs.col.app=App
-#probe.jsp.logs.col.class=Class
-#probe.jsp.logs.col.file=File name
-#probe.jsp.logs.col.level=Level
-#probe.jsp.logs.col.modified=Modified
-#probe.jsp.logs.col.name=Name
-#probe.jsp.logs.col.size=Size
-#probe.jsp.logs.col.type=Type
-#probe.jsp.logs.download.alt=download
-#probe.jsp.logs.hideapps=show existing only
-#probe.jsp.logs.showapps=show all
-#probe.jsp.logs_notSupported.message=Your Java Virtual Machine {0} {1} does not fully support SUN reflection API - sun.reflect.ReflectionFactory. Log browsing functionality is disabled.
-
-#probe.jsp.memory.advise.finalization=Advise Finalization
-#probe.jsp.memory.advise.gc=Advise GC
-#probe.jsp.memory.col.committed=Committed
-#probe.jsp.memory.col.group=Group
-#probe.jsp.memory.col.initial=Initial
-#probe.jsp.memory.col.max=Maximum
-#probe.jsp.memory.col.name=Name
-#probe.jsp.memory.col.plot=Plot
-#probe.jsp.memory.col.usageScore=Usage score
-#probe.jsp.memory.col.used=Used
-#probe.jsp.memory.h3.charts=Memory usage history
-#probe.jsp.memory.h3.table=Current memory usage
-#probe.jsp.memory.loading=Loading...
-#probe.jsp.memory.usage.title=Usage {0}%
-#probe.jsp.memory.notAvailable=This page requires Java5 with enabled JMX Agent. To enable the JXM Agent please add "-Dcom.sun.management.jmxremote" to java command line or $JAVA_OPTS environment variable. If you are an IBM JDK user please add these properties: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
-
-#probe.jsp.menu.applications=Applications
-#probe.jsp.menu.cluster=Cluster
-#probe.jsp.menu.connectors=Connectors
-#probe.jsp.menu.datasources=Data Sources
-#probe.jsp.menu.deployment=Deployment
-#probe.jsp.menu.logs=Logs
-#probe.jsp.menu.memory=Memory
-#probe.jsp.menu.quickcheck=Quick check
-#probe.jsp.menu.sysinfo=System
-#probe.jsp.menu.threads=Threads
-
-probe.jsp.noaccess=\uc774 \ud398\uc774\uc9c0\uc5d0 \uc811\uadfc\ud560 \uad8c\ud55c\uc774 \ucda9\ubd84\uce58 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\uc804 \ud398\uc774\uc9c0\ub85c \ub3cc\uc544\uac00\uc2dc\ub824\uba74 "back" \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc2dc\uac70\ub098, \ub2e4\ub978 \ud398\uc774\uc9c0\ub9c1\ud06c\ub97c \uc774\uc6a9\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.
-probe.jsp.noaccess.ajax=\uc774 \uae30\ub2a5\uc5d0 \uc811\uadfc\ud560 \uad8c\ud55c\uc774 \ucda9\ubd84\uce58 \uc54a\uc2b5\ub2c8\ub2e4.
-#probe.jsp.noaccess.title=403 Forbidden
-probe.jsp.notfound=\uc694\uccad\ud558\uc2e0 \ud398\uc774\uc9c0\ub294 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \ud398\uc774\uc9c0\ub9c1\ud06c\ub97c \uc774\uc6a9\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.
-#probe.jsp.notfound.title=404 Not Found
-
-#probe.jsp.resources.col.auth=Authentication
-#probe.jsp.resources.col.linkTo=Link to
-#probe.jsp.resources.col.name=Name
-#probe.jsp.resources.col.type=Type
-probe.jsp.resources.empty=\uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc815\uc758\ub41c \ub9ac\uc18c\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
-#probe.jsp.resources.info.busy=Busy:
-#probe.jsp.resources.info.connectionUsage.alt=Conn.usage {0}%
-#probe.jsp.resources.info.established=Established:
-#probe.jsp.resources.info.max=Max:
-#probe.jsp.resources.info.misconfigured=This resource is misconfigured and runtime information is not available
-#probe.jsp.resources.info.misconfigured.alt=exclamation sign
-#probe.jsp.resources.info.reset=
-#probe.jsp.resources.info.reset.alt=reset
-#probe.jsp.resources.info.title=Additional info:
-
-#probe.jsp.servlet_source.h3.source=Auto generated servlet code
-#probe.jsp.servlet_source.opt.jsp=view JSP
-
-#probe.jsp.sessionAttibutes.card.age=Age:
-#probe.jsp.sessionAttibutes.card.application=Application:
-#probe.jsp.sessionAttibutes.card.created=Created:
-#probe.jsp.sessionAttibutes.card.expiryTime=Expiry time:
-#probe.jsp.sessionAttibutes.card.id=ID:
-#probe.jsp.sessionAttibutes.card.idleTime=Idle time:
-#probe.jsp.sessionAttibutes.card.info=Info:
-#probe.jsp.sessionAttibutes.card.lastAccessed=Last accessed:
-#probe.jsp.sessionAttibutes.card.manager=Manager type:
-#probe.jsp.sessionAttibutes.card.maxIdleTime=Max idle time:
-#probe.jsp.sessionAttibutes.card.serializable=Serializable:
-#probe.jsp.sessionAttibutes.card.serializable.no=NO
-#probe.jsp.sessionAttibutes.card.serializable.yes=yes
-#probe.jsp.sessionAttibutes.card.size=Size:
-#probe.jsp.sessionAttibutes.col.delete=remove
-#probe.jsp.sessionAttibutes.col.delete.title=Remove attribute
-#probe.jsp.sessionAttibutes.col.name=Name
-#probe.jsp.sessionAttibutes.col.serializable=Ser.?
-#probe.jsp.sessionAttibutes.col.size=Size
-#probe.jsp.sessionAttibutes.col.type=Type
-#probe.jsp.sessionAttibutes.col.value=Value
-#probe.jsp.sessionAttibutes.h3.attributes=Session attributes
-#probe.jsp.sessionAttibutes.h3.card=Session card
-#probe.jsp.sessionAttibutes.invalidSid=Session ID is invalid or the session has expired
-#probe.jsp.sessionAttibutes.menu.back=Back to session list
-#probe.jsp.sessionAttibutes.menu.destroy=Destroy this session
-#probe.jsp.sessionAttibutes.noattributes=This session does not have attributes
-
-#probe.jsp.sessions.col.age=Age
-#probe.jsp.sessions.col.creationTime=Creation time
-#probe.jsp.sessions.col.expiryTime=Expiry time
-#probe.jsp.sessions.col.id=Session ID
-#probe.jsp.sessions.col.applicationName=App
-#probe.jsp.sessions.col.idleTime=Idle time
-#probe.jsp.sessions.col.lastAccessTime=Last Access Time
-#probe.jsp.sessions.col.objectCount=Object Count
-#probe.jsp.sessions.col.serializable=Ser.
-#probe.jsp.sessions.col.size=Size
-#probe.jsp.sessions.col.lastIP=Last IP
-#probe.jsp.sessions.unknown.ip=unknown
-#probe.jsp.sessions.empty=There are no sessions
-#probe.jsp.sessions.menu.expire=Expire
-#probe.jsp.sessions.menu.toggle=Toggle
-#probe.jsp.sessions.status.no=NO
-#probe.jsp.sessions.status.yes=yes
-#probe.jsp.sessions.opt.all=Show all
-#probe.jsp.showsize=estimate sizes
-#probe.jsp.hidesize=hide size
-
-#probe.jsp.sysinfo.col.name=Property name
-#probe.jsp.sysinfo.col.value=Property value
-#probe.jsp.sysinfo.container.title=Container information
-#probe.jsp.sysinfo.memory.adviseGC=Advise Garbage Collection
-#probe.jsp.sysinfo.memory.free=Free:
-#probe.jsp.sysinfo.memory.max=Max:
-#probe.jsp.sysinfo.memory.title=Memory utilization
-#probe.jsp.sysinfo.memory.total=Total:
-#probe.jsp.sysinfo.memory.usage=Current memory usage is
-#probe.jsp.sysinfo.memory.usage.alt=Memory usage bar
-#probe.jsp.sysinfo.os.applicationBase=Application base:
-#probe.jsp.sysinfo.os.catalinaBase=catalina.base:
-#probe.jsp.sysinfo.os.catalinaHome=catalina.home:
-#probe.jsp.sysinfo.os.configBase=Configuration base:
-#probe.jsp.sysinfo.os.container=Container:
-#probe.jsp.sysinfo.os.currentTime=Current time:
-#probe.jsp.sysinfo.os.jvm=JVM:
-#probe.jsp.sysinfo.os.name=OS:
-#probe.jsp.sysinfo.os.processors=Processors:
-#probe.jsp.sysinfo.os.title=OS information
-#probe.jsp.sysinfo.os.workingDir=Working dir:
-#probe.jsp.sysinfo.sysproperties.title=System properties
-
-#probe.jsp.threadpools.currentThreadCount=Current thread count
-#probe.jsp.threadpools.currentThreadsBusy=Current threads busy
-#probe.jsp.threadpools.maxSpareThreads=Max spare threads
-#probe.jsp.threadpools.maxThreads=Max threads
-#probe.jsp.threadpools.menu.threads=Running threads
-#probe.jsp.threadpools.minSpareThreads=Min spare threads
-#probe.jsp.threadpools.name=Name
-
-#probe.jsp.threads.col.application=App
-#probe.jsp.threads.col.classLoader=Class loader
-#probe.jsp.threads.col.daemon=D
-#probe.jsp.threads.col.groupName=Group
-#probe.jsp.threads.col.interrupted=I
-#probe.jsp.threads.col.name=Name
-#probe.jsp.threads.col.priority=P
-#probe.jsp.threads.col.runnableClass=Runnable
-#probe.jsp.threads.col.threadClass=Thread class
-#probe.jsp.threads.col.id=ID
-#probe.jsp.threads.col.execPoint=Exec. point
-#probe.jsp.threads.col.state=State
-#probe.jsp.threads.col.inNative=In.Native
-#probe.jsp.threads.col.suspended=Susp.
-#probe.jsp.threads.col.waitedCount=WC
-#probe.jsp.threads.col.blockedCount=BC
-#probe.jsp.threads.help.priority=thread priority, the higher the number the higher the priority
-#probe.jsp.threads.help.daemon=thread is a daemon
-#probe.jsp.threads.help.interrupted=thread has been interrupted
-#probe.jsp.threads.help.inNative=true if thread is executing native code
-#probe.jsp.threads.help.suspended=thread is suspended
-#probe.jsp.threads.help.waitedCount="wait count" - number of times thread has been waiting on something
-#probe.jsp.threads.help.blockedCount="blocked count" - number of times thread has been blocked
-#probe.jsp.threads.info.loading=Loading...
-#probe.jsp.threads.info.unavailable=URL information is not available
-#probe.jsp.threads.killmsg=Killing threads indiscriminantly may destabilize JVM. Are you sure you want to stop {0}?
-#probe.jsp.threads.menu.threadpools=Threads Pools
-#probe.jsp.threads.stop.alt=stop
-
-#probe.jsp.title.app.attributes={0} - context attributes
-#probe.jsp.title.applications=Installed applications
-#probe.jsp.title.cluster=Cluster status
-#probe.jsp.title.connectors=Connectors
-#probe.jsp.title.dataSourceGroups=Data sources grouped by jdbc url
-#probe.jsp.title.datasources=Available Data Sources
-#probe.jsp.title.deployment=Application deployment
-#probe.jsp.title.follow=Tailing log
-#probe.jsp.title.jsps={0} - deployed JSPs
-#probe.jsp.title.logs=Logs
-#probe.jsp.title.logs_notSupported=Not supported
-#probe.jsp.title.memory=JVM memory usage
-#probe.jsp.title.quickcheck=Quick check
-#probe.jsp.title.resources={0} - resources
-#probe.jsp.title.servlet_source=Generated servlet source
-#probe.jsp.title.sessionAttibutes=Session attributes
-#probe.jsp.title.sessions={0} - sessions
-#probe.jsp.title.sessions.all=Sessions
-#probe.jsp.title.sysinfo=System information
-#probe.jsp.title.threadpools=Threads Pools
-#probe.jsp.title.threads=Running threads
-#probe.jsp.title.viewsource={0} - View source
-#probe.jsp.uptime=UP for {0} days {1} hours {2} minutes
-#probe.jsp.version=Version {0} running on {1}
-
-#probe.jsp.viewsource.appname=Application name:
-#probe.jsp.viewsource.encoding=Encoding:
-#probe.jsp.viewsource.filename=File name:
-#probe.jsp.viewsource.h3.info=JSP information
-#probe.jsp.viewsource.h3.source=JSP source code
-#probe.jsp.viewsource.lastmodified=Last modified:
-#probe.jsp.viewsource.notfound=Unfortunately you cannot view contents of this file. Please go back and select the file from the list.
-#probe.jsp.viewsource.opt.back=back to JSP list
-#probe.jsp.viewsource.opt.compile=compile
-#probe.jsp.viewsource.opt.viewServlet=view generated servlet
-#probe.jsp.viewsource.size=Size:
-#probe.jsp.viewsource.state=State:
-
-#probe.jsp.wrongparams=You have passed wrong parameters to this page.
-#probe.jsp.wrongsvrversion=This feature is not implemented for {0}
-#probe.jsp.zoomedchart.back=Back to chart groups
-#probe.jsp.zoomedchart.information=You can use the slider to resize the image according to your display resolution. The information is LIVE and the chart would be refreshed automatically every {0} seconds.
-
-#probe.src.contextAction.cannotActOnSelf=Cannot stop/start/undeploy this application
-#probe.src.contextDoesntExist=Context {0} does not exist
-#probe.src.deploy.context.failure=Failed to deploy {0}
-#probe.src.deploy.context.success=Deployed application from {0}
-#probe.src.deploy.exploded.success={0} has been successfully installed at {1}
-#probe.src.deploy.war.alreadyExists=Context {0} is already in use
-#probe.src.deploy.war.failure=There was an error thrown by Tomcat during deployment: "{0}". This however may not mean that you application failed to deploy. Please check the status in the application list
-#probe.src.deploy.war.notWar.failure=Deployment failed. File name must end with .war
-#probe.src.deploy.war.notinstalled={0} was not installed
-#probe.src.deploy.war.uploadfailure=There was a problem uploading the file: {0}
-#probe.src.reset.datasource.c3p0=This datasource cannot be reset
-#probe.src.reset.datasource.notfound=Resource {0} does not exist
-
-#probe.jsp.title.wrapper=Java Service Wrapper
-#probe.jsp.wrapper.not_available=This JVM is not controlled by Java Service Wrapper
-#probe.jsp.wrapper.menu.restart=restart JVM
-#probe.jsp.wrapper.menu.stop=stop JVM
-#probe.jsp.wrapper.menu.thread_dump=Request thread dump
-#probe.jsp.wrapper.h3.info=Wrapper information
-#probe.jsp.wrapper.h3.props=Wrapper properties
-#probe.jsp.wrapper.confirm.restart=Are you sure you want to restart JVM?
-#probe.jsp.wrapper.confirm.stop=JVM cannot be started again from Probe. Are you sure you want to stop JVM?
-#probe.jsp.wrapper.jvm.stopping=JVM shutdown is now in progress. If you need to start it up again you would have to do it via the console.
-#probe.jsp.wrapper.jvm.restarting=JVM restart is now in progress. This may take a few minutes.
-#probe.jsp.wrapper.jvm.thread_dump=JMV Thread Dump has been requested. You can normally find it in the Wrapper log file.
-
-#probe.jsp.wrapper.user=User:
-#probe.jsp.wrapper.interactive_user=Interactive user:
-#probe.jsp.wrapper.java_pid=Java PID:
-#probe.jsp.wrapper.pid=Wrapper PID:
-#probe.jsp.wrapper.service=Running as service:
-#probe.jsp.wrapper.debug=Debug enabled:
-#probe.jsp.wrapper.version=Wrapper version:
-
-#probe.jsp.decorator.system.title=System
-#probe.jsp.decorator.system.overview=Overview
-#probe.jsp.decorator.system.memory=Memory utilization
-#probe.jsp.decorator.system.props=System properties
-#probe.jsp.decorator.system.os=OS information
-#probe.jsp.decorator.system.wrapper=Wrapper control
-
-#probe.jsp.os.h3.information=OS information
-#probe.jsp.os.h3.charts=Historical charts
-#probe.jsp.os.chart.cpu=JVM CPU utilization (%)
-#probe.jsp.os.chart.cpu.alt=JVM CPU utilization chart
-#probe.jsp.os.chart.cpu.legend=CPU usage
-#probe.jsp.os.chart.memory=OS & JVM memory usage (KB)
-#probe.jsp.os.chart.memory.alt=OS and JVM physical memory usage chart
-#probe.jsp.os.chart.memory.legend.total=total used
-#probe.jsp.os.chart.memory.legend.jvm=used by JVM
-#probe.jsp.os.chart.swap=Swap usage (KB)
-#probe.jsp.os.chart.swap.alt=Swap usage chart
-#probe.jsp.os.chart.swap.legend=swap used
-#probe.jsp.os.chart.fd=File descriptors
-#probe.jsp.os.chart.fd.alt=File descriptors chart
-#probe.jsp.os.chart.fd.legend.open=open file descriptors
-#probe.jsp.os.chart.fd.legend.max=max file descriptors
-#probe.jsp.os.card.name=OS Name:
-#probe.jsp.os.card.version=OS Version:
-#probe.jsp.os.card.processors=Processors:
-#probe.jsp.os.card.totalMemory=Total RAM:
-#probe.jsp.os.card.freeMemory=Free RAM:
-#probe.jsp.os.card.committedVirtualMemory=Committed JVM memory:
-#probe.jsp.os.card.totalSwap=Total swap:
-#probe.jsp.os.card.freeSwap=Free swap:
-
-#probe.jsp.title.testDataSource={0} -> {1}
-#probe.src.dataSourceTest.resource.lookup.failure=Data source {0} does not exist
-#probe.src.dataSourceTest.connection.failure=Cannot establish a database connection. {0}
-#probe.src.dataSourceTest.connection.success=Successfully connected to the database
-#probe.src.dataSourceTest.sql.required=Sql query text is required
-#probe.src.dataSourceTest.sql.failure=Error encountered while executing the query. {0}
-#probe.src.dataSourceTest.sql.null=NULL
-#probe.src.dataSourceTest.cachedResultSet.failure=Cannot retrieve a cached result set
-#probe.jsp.dataSourceTest.help=This screen can help you to test your data source database connectivity.\
-#Test connection checks if a database connection can be established and displays some database information.\
-#Execute SQL executes an SQL query you enter against the database.\
-#You can see a database operation output or an error message at the bottom of the screen.\
-#Show history displays a list of queries you have executed.\
-#Please consider using Show options to limit the number of records returned by you query for not to waste your system resources.
-#probe.jsp.dataSourceTest.menu.back=Back to data sources
-#probe.jsp.dataSourceTest.menu.connect=Test connection
-#probe.jsp.dataSourceTest.menu.execute=Execute sql (Ctrl+Enter)
-#probe.jsp.dataSourceTest.menu.showHistory=Show history (Ctrl+Down)
-#probe.jsp.dataSourceTest.menu.hideHistory=Hide history (Ctrl+Down)
-#probe.jsp.dataSourceTest.menu.showOptions=Show options (Ctrl+Up)
-#probe.jsp.dataSourceTest.menu.hideOptions=Hide options (Ctrl+Up)
-#probe.jsp.dataSourceTest.menu.wrap=Wrap lines
-#probe.jsp.dataSourceTest.menu.nowrap=Don't wrap lines
-#probe.jsp.dataSourceTest.menu.abbreviations=Help!
-#probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit enabled)
-#probe.jsp.dataSourceTest.sqlForm.maxRows.label=Records to retrieve
-#probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Records per page
-#probe.jsp.dataSourceTest.sqlForm.historySize.label=History size
-#probe.jsp.dataSourceTest.h3.results=Query results
-#probe.jsp.dataSourceTest.results.rowcount={0} record(s) affected.
-#probe.jsp.dataSourceTest.h3.metaData=Database Info
-#probe.jsp.dataSourceTest.chart.usage.title=Datasource usage
-#probe.jsp.dataSourceTest.dbMetaData.col.propName=Property Name
-#probe.jsp.dataSourceTest.dbMetaData.col.propValue=Property Value
-#probe.jsp.dataSourceTest.dbMetaData.dbProdName=Database Product Name
-#probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Database Product Version
-#probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=JDBC Driver Name
-#probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=JDBC Driver Version
-#probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=JDBC Version
-#probe.jsp.dataSourceTest.results.paging.banner.item_name=record
-#probe.jsp.dataSourceTest.results.paging.banner.items_name=records
-#probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
-#probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Displaying one {0}.
-#probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Displaying all {2}.
-#probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Displaying {2} to {3}.
-#probe.jsp.dataSourceTest.results.paging.banner.first=First
-#probe.jsp.dataSourceTest.results.paging.banner.prev=Prev
-#probe.jsp.dataSourceTest.results.paging.banner.next=Next
-#probe.jsp.dataSourceTest.results.paging.banner.last=Last
-#probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Go to page {0}
-#probe.jsp.dataSourceTest.sql.completed=Statement completed.
-#probe.jsp.dataSourceTest.h3.queryHistory=Query history
-#probe.jsp.dataSourceTest.queryHistory.empty=The history list is empty
-
-#probe.jsp.whois.timeout=Could not completed WHOIS query. Check if WHOIS is blocked by your network.
-
-#probe.jsp.threadstack.native=native code
-#probe.jsp.threadstack.unknown=unknown source
-#probe.jsp.threadstack.unavailable=Trace stack is unavailable for this thread
-
-#probe.jsp.tooltip.close=close
-
-#probe.jsp.sessions.h3=Sessions
-#probe.jsp.sessions.search.h3=Session search criteria
-#probe.jsp.sessions.menu.showSearch=Session search
-#probe.jsp.sessions.menu.applySearch=Apply search
-#probe.jsp.sessions.menu.clearSearch=Clear search
-#probe.jsp.sessions.menu.searchHelp=Help
-#probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
-#Whether Session Id matches a regular expression.\
-#Whether Last IP contains a substring.\
-#Whether Idle Time falls into a range specified in seconds.\
-#Whether Age falls into a range specified in seconds.\
-#Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
-#This condition allows finding a session with an attribute A and/or an attribute B set.
-#probe.jsp.sessions.search.sessionId=Session id (RE)
-#probe.jsp.sessions.search.attrName=Attribute names (RE list)
-#probe.jsp.sessions.search.ageFrom=Age from (sec)
-#probe.jsp.sessions.search.ageTo=to
-#probe.jsp.sessions.search.idleTimeFrom=Idle time from (sec)
-#probe.jsp.sessions.search.idleTimeTo=to
-#probe.jsp.sessions.search.lastIP=Last IP (substring)
-#probe.jsp.sessions.search.results.h3=Session search results
-#probe.src.sessions.search.empty=Search criteria is empty
-#probe.src.sessions.search.results.empty=No sessions have matched the search criteria
-#probe.src.sessions.search.invalid=Search criteria is invalid
-#probe.src.sessions.search.invalid.sessionId=Session id regular expression is invalid. {0}
-#probe.src.sessions.search.invalid.attrName=Attribute name regular expression is invalid. {0}
-#probe.src.sessions.search.invalid.ageFrom=Age from value is invalid
-#probe.src.sessions.search.invalid.ageTo=Age to value is invalid
-#probe.src.sessions.search.invalid.idleTimeFrom=Idle time from value is invalid
-#probe.src.sessions.search.invalid.idleTimeTo=Idle time to value is invalid
-#probe.src.sessions.search.invalid.lastIP=Last IP regular expression is invalid. {0}
-
-#probe.jsp.app.nav.title=Application
-#probe.jsp.app.nav.summary=Summary
-#probe.jsp.app.nav.sessions=Sessions
-#probe.jsp.app.nav.attributes=Attributes
-#probe.jsp.app.nav.jsps=JSPs
-#probe.jsp.app.nav.resources=Resources
-#probe.jsp.app.nav.initParams=Parameters
-#probe.jsp.app.nav.webxml=Deployment descriptor
-#probe.jsp.app.nav.contextxml=Context descriptor
-#probe.jsp.app.nav.filters=Filters
-#probe.jsp.app.nav.servlets=Servlets
-
-#probe.jsp.title.app.initParams={0} - initialization parameters
-#probe.jsp.app.initParams.h3.params=Context initialization parameters
-#probe.jsp.app.initParams.col.name=Name
-#probe.jsp.app.initParams.col.value=Value
-#probe.jsp.app.initParams.col.source=Source
-#probe.jsp.app.initParams.source.deplDescr=web.xml
-#probe.jsp.app.initParams.source.context=context
-#probe.jsp.app.initParams.empty=There are no context initialization parameters defined for this application
-
-#probe.jsp.title.app.viewXMLConf={0} - {1}
-#probe.jsp.app.viewXMLConf.notfound= Cannot find {0} of this application
-#probe.jsp.app.viewXMLConf.h3.scr={0} source
-#probe.src.app.viewxmlconf.webxml.desc=deployment descriptor
-#probe.src.app.viewxmlconf.contextxml.desc=context descriptor
-
-#probe.jsp.title.app.filters={0} - filters
-#probe.jsp.title.app.filtermaps={0} - filter mappings
-#probe.jsp.app.filtermaps.opt.defs=Filter definitions
-#probe.jsp.app.filters.opt.maps=Filter mappings
-#probe.jsp.app.filters.h3.defs=Filters
-#probe.jsp.app.filtermaps.h3.maps=Filter mappings
-#probe.jsp.app.filters.col.filterName=Name
-#probe.jsp.app.filters.col.filterClass=Class
-#probe.jsp.app.filters.col.filterDesc=Description
-#probe.jsp.app.filtermaps.col.url=Url
-#probe.jsp.app.filtermaps.col.filterName=Filter name
-#probe.jsp.app.filtermaps.col.servletName=Servlet name
-#probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
-#probe.jsp.app.filters.empty=There are no filters defined for this application
-#probe.jsp.app.filtermaps.empty=There are no filter mappings defined for this application
-
-#probe.jsp.title.servlets.all=Servlets
-#probe.jsp.title.servlets.app={0} - servlets
-#probe.jsp.title.servletmaps.all=Servlet mappings
-#probe.jsp.title.servletmaps.app={0} - servlet mappings
-#probe.jsp.servletmaps.opt.defs=Servlets
-#probe.jsp.servletmaps.opt.all=Show all
-#probe.jsp.servlets.opt.maps=Servlet mappings
-#probe.jsp.servlets.opt.all=Show all
-#probe.jsp.servlets.h3.defs=Servlets
-#probe.jsp.servletmaps.h3.maps=Servlet mappings
-#probe.jsp.servletmaps.col.url=Url
-#probe.jsp.servletmaps.col.servletName=Servlet name
-#probe.jsp.servlets.col.applicationName=App
-#probe.jsp.servlets.col.servletName=Name
-#probe.jsp.servletmaps.col.servletClass=Servlet class
-#probe.jsp.servlets.col.available=Avail
-#probe.jsp.servlets.col.loadOnStartup=Startup
-#probe.jsp.servlets.empty=There are no servlets defined
-#probe.jsp.servletmaps.empty=There are no servlet mappings defined
-#probe.jsp.servlets.col.minTime=Min time
-#probe.jsp.servlets.col.maxTime=Max time
-#probe.jsp.servlets.col.processingTime=Proc time
-#probe.jsp.servlets.col.loadTime=Load time
-#probe.jsp.servlets.col.multiThreaded=Mult Thrd
-#probe.jsp.servlets.col.requestCount=Req
-#probe.jsp.servlets.col.errorCount=Err
-
-#probe.jsp.title.app.summary={0} - application summary
-#probe.jsp.app.summary.application=Application name:
-#probe.jsp.app.summary.description=Description:
-#probe.jsp.app.summary.distributable=Clustered:
-#probe.jsp.app.summary.docBase=Doc. base:
-#probe.jsp.app.summary.servletVersion=Servlet version:
-#probe.jsp.app.summary.sessionTimeout=Session timeout:
-#probe.jsp.app.summary.servletCount=Servlet count:
-#probe.jsp.app.summary.status=This application is
-#probe.jsp.app.summary.requestCount=Request count:
-#probe.jsp.app.summary.sessionCount=Sessions
-#probe.jsp.app.summary.sessionAttributeCount=Session attrs.
-#probe.jsp.app.summary.sessionSize=Session size
-#probe.jsp.app.summary.contextAttributeCount=Context attrs.
-#probe.jsp.app.summary.serializable=Ser.
-#probe.jsp.app.summary.errorCount=Error count:
-#probe.jsp.app.summary.processingTime=Processing time:
-#probe.jsp.app.summary.minTime=Min time:
-#probe.jsp.app.summary.maxTime=Max time:
-#probe.jsp.app.summary.avgTime=Avg response time:
-#probe.jsp.app.summary.h3.static=Application information
-#probe.jsp.app.summary.h3.runtime=Runtime information
-#probe.jsp.app.summary.invalidApp=The application is invalid
-#probe.jsp.app.summary.runtime.unavailable=This application is not running, runtime information is unavailable
-#probe.jsp.app.summary.menu.start=Start
-#probe.jsp.app.summary.menu.stop=Stop
-#probe.jsp.app.summary.menu.reload=Reload
-#probe.jsp.app.summary.menu.undeploy=Undeploy
-#probe.jsp.app.summary.menu.goTo=Go to
-#probe.jsp.app.summary.menu.startStats=Start collecting stats
-#probe.jsp.app.summary.menu.stopStats=Stop collecting stats
-#probe.jsp.app.summary.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
-#probe.jsp.app.summary.dataSourceUsageScore=Datasource usage
-#probe.jsp.app.summary.jdbcUsage.title=Max.conn.usage {0}%
-#probe.jsp.app.summary.h3.charts=Statistics charts
-#probe.jsp.app.summary.charts.requests.title=Number of requests
-#probe.jsp.app.summary.charts.avgProcTime.title=Average response time (ms)
-#probe.jsp.app.summary.charts.requests.legend=Requests
-#probe.jsp.app.summary.charts.errors.legend=Errors
-#probe.jsp.app.summary.charts.avgProcTime.legend=Avg. response time
-
-#probe.jsp.title.allappstats=Application statistics
-#probe.jsp.allappstats.charts.totalAvgProcTime.legend=Avg. response time
-#probe.jsp.allappstats.charts.totalReq.legend=Requests
-#probe.jsp.allappstats.charts.totalAvgProcTime.title=Cumulative avg. response time (ms)
-#probe.jsp.allappstats.charts.allAppAvgProcTime.title=Avg. response time by app (ms)
-#probe.jsp.allappstats.charts.totalReq.title=Cumulative requests
-#probe.jsp.allappstats.charts.allAppReq.title=Requests by app (ms)
-#probe.jsp.allappstats.h3.charts=Statistics charts
-
-#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
-#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
-#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
-#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
-
-#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
-#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
+#
+# Licensed under the GPL License. You may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+#
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+# Korean translation by jung.woop
+#probe.jsp.i18n.credit=Korean translation by jung.woop
+#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
+
+#probe.jsp.generic.no=no
+#probe.jsp.generic.yes=yes
+#probe.jsp.generic.abbreviations=What are those abbreviations?
+
+#probe.jsp.app.attributes.col.delete=Remove attribute
+#probe.jsp.app.attributes.col.delete.title=Remove attribute
+#probe.jsp.app.attributes.col.name=Name
+#probe.jsp.app.attributes.col.type=Type
+#probe.jsp.app.attributes.col.value=Value
+#probe.jsp.app.attributes.h3.attributes=Servlet context attributes
+probe.jsp.app.attributes.noattributes=\uc11c\ube14\ub9bf \ucee8\ud14d\uc2a4\ud2b8\uc5d0 \uc18d\uc131\ub4e4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+#probe.jsp.applications.alt.reload=reload
+#probe.jsp.applications.alt.undeploy=Undeploy
+#probe.jsp.applications.col.contextAttributeCount=C.Attr
+#probe.jsp.applications.col.description=Description
+#probe.jsp.applications.col.distributable=Clstred.?
+#probe.jsp.applications.col.jdbcUsage=Jdbc Usage
+#probe.jsp.applications.col.jsp=JSP
+#probe.jsp.applications.col.name=Name
+#probe.jsp.applications.col.serializable=Ser.?
+#probe.jsp.applications.col.sessionAttributeCount=S.Attr
+#probe.jsp.applications.col.sessionCount=Sess.
+#probe.jsp.applications.col.sessionTimeout=Sess.Timeout
+#probe.jsp.applications.col.size=Size
+#probe.jsp.applications.col.status=Status
+#probe.jsp.applications.col.requestCount=Req.
+#probe.jsp.applications.help.contextAttributeCount=total number of ServletContext attributes
+#probe.jsp.applications.help.distributable=application is "distributable"
+#probe.jsp.applications.help.requestCount=total number of requests processed by servlets
+#probe.jsp.applications.help.serializable=all session attributes implement java.io.Serializable
+#probe.jsp.applications.help.sessionAttributeCount=total number of session attributes
+#probe.jsp.applications.help.sessionCount=number of sessions
+#probe.jsp.applications.hidesize=hide sessions size
+#probe.jsp.applications.jdbcUsage.title=Max.conn.usage {0}%
+#probe.jsp.applications.jsp.view=view
+#probe.jsp.applications.serializable.no=NO
+#probe.jsp.applications.serializable.yes=yes
+#probe.jsp.applications.showsize=estimate sessions size (could be slow)
+#probe.jsp.applications.status.down=down
+#probe.jsp.applications.status.down.title=Start {0}
+#probe.jsp.applications.status.up=running
+#probe.jsp.applications.title.reload=Reload {0}
+#probe.jsp.applications.title.status.up=Stop {0}
+#probe.jsp.applications.title.undeploy=Undeploy {0}
+#probe.jsp.applications.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
+
+#probe.jsp.connectors.information=Traffic information for all available connectors. The feed is LIVE and the charts are automatically updated. Please note that you do not have to stay on this page for the charts to update.
+#probe.jsp.connectors.processor.errorCount=Error count:
+#probe.jsp.connectors.processor.maxTime=Max time:
+#probe.jsp.connectors.processor.processingTime=Processing time:
+#probe.jsp.connectors.processor.received=Received:
+#probe.jsp.connectors.processor.requestCount=Request count:
+#probe.jsp.connectors.processor.sent=Sent:
+#probe.jsp.connectors.proc_time.title=Processing time (ms) in each interval
+#probe.jsp.connectors.requests.title=Number of requests each interval
+#probe.jsp.connectors.traffic.title=Traffic volume (bytes) in each interval
+#probe.jsp.connectors.wrk.col.in=IN
+#probe.jsp.connectors.wrk.col.out=OUT
+#probe.jsp.connectors.wrk.col.processingTime=Proc.time
+#probe.jsp.connectors.wrk.col.remoteAddr=Remote IP
+#probe.jsp.connectors.wrk.col.stage=stage
+#probe.jsp.connectors.wrk.col.url=URL
+#probe.jsp.connectors.wrk.col.thread=Thread
+#probe.jsp.connectors.wrk.empty=No processors
+#probe.jsp.connectors.wrk.stage.endInput=EndInput
+#probe.jsp.connectors.wrk.stage.endOutput=EndOutput
+#probe.jsp.connectors.wrk.stage.ended=Ended
+#probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
+#probe.jsp.connectors.wrk.stage.new=New
+#probe.jsp.connectors.wrk.stage.parse=Parse
+#probe.jsp.connectors.wrk.stage.prepare=Prepare
+#probe.jsp.connectors.wrk.stage.service=Service
+
+#probe.jsp.cluster.chart.requests=Requests in {0} second intervals
+#probe.jsp.cluster.chart.traffic=Traffic in {0} second intervals
+#probe.jsp.cluster.h3.info=Cluster information
+#probe.jsp.cluster.h3.members=Cluster members
+#probe.jsp.cluster.heartbeatFreq=Heartbeat freq.:
+#probe.jsp.cluster.heartbeatTimeout=Heartbeat timeout:
+#probe.jsp.cluster.info=Info:
+#probe.jsp.cluster.manager=Manager:
+#probe.jsp.cluster.mcastAddress=Mcast address:
+#probe.jsp.cluster.mcastBindAddress=Mcast bind address:
+#probe.jsp.cluster.mcastBindAddress.all=all
+#probe.jsp.cluster.mcastTTL=Mcast TTL
+#probe.jsp.cluster.members.col.address=Address
+#probe.jsp.cluster.members.col.avgMsgSize=AvgSz
+#probe.jsp.cluster.members.col.closes=Closes
+#probe.jsp.cluster.members.col.connectCount=CC
+#probe.jsp.cluster.members.col.connected=Conn.?
+#probe.jsp.cluster.members.col.disconnectCount=DC
+#probe.jsp.cluster.members.col.failures=Failures
+#probe.jsp.cluster.members.col.inQueueCounter=InQ
+#probe.jsp.cluster.members.col.keepAlive=Keep Alive
+#probe.jsp.cluster.members.col.openFailures=Open fails
+#probe.jsp.cluster.members.col.opens=Opens
+#probe.jsp.cluster.members.col.outQueueCounter=OutQ
+#probe.jsp.cluster.members.col.queueSize=QSz
+#probe.jsp.cluster.members.col.queueSizeBytes=QSzB
+#probe.jsp.cluster.members.col.requests=Req.
+#probe.jsp.cluster.members.col.resends=Resends
+#probe.jsp.cluster.members.col.sent=Sent
+#probe.jsp.cluster.members.col.socketLimit=Socket Limit
+#probe.jsp.cluster.members.failing.alt=failing
+#probe.jsp.cluster.members.failing.title=The member is suspected to be failing
+#probe.jsp.cluster.members.healthy.alt=healthy
+#probe.jsp.cluster.members.healthy.title=The member is healthy
+#probe.jsp.cluster.mode=Replication mode:
+#probe.jsp.cluster.name=Name:
+#probe.jsp.cluster.noMembers=There are no active cluster members known to this node
+#probe.jsp.cluster.notAvailable=Cluster information is only available to Tomcat 5.5.x with enabled cluster support.
+#probe.jsp.cluster.received=received
+#probe.jsp.cluster.receiverAddress=Receiver address:
+#probe.jsp.cluster.receiverPort=Receiver port:
+#probe.jsp.cluster.sent=sent
+
+probe.jsp.copyright=Copyright 2009-${copyright}. \ubb38\uc758\uc0ac\ud56d\uc774\ub098 \ud504\ub85c\uc81d\ud2b8\ucc38\uc5ec\ub97c \uc6d0\ud558\uc2dc\uba74 https://github.com/psi-probe/psi-probe \ub85c \ubc29\ubb38\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.
+
+probe.jsp.dataSourceGroups.empty=\ub370\uc774\ud0c0\ubca0\uc774\uc2a4 \uc124\uc815\uc774 \uc801\uc808\uce58 \uc54a\uc2b5\ub2c8\ub2e4.
+#probe.jsp.dataSourceGroups.information=The table bellow contains total numbers of currently opened and potentially allowed database connection grouped by jdbc url. This information can help you estimate how many connections to a particular database can be opened by jdbc resources configured within the container.
+#probe.jsp.dataSourceGroups.jdbcUsage.title=Max.conn.usage {0}%
+#probe.jsp.dataSourceGroups.list.col.busy=Total busy
+#probe.jsp.dataSourceGroups.list.col.established=Total estab.
+#probe.jsp.dataSourceGroups.list.col.max=Total max.
+#probe.jsp.dataSourceGroups.list.col.resourceCount=Resource count
+#probe.jsp.dataSourceGroups.list.col.url=URL
+#probe.jsp.dataSourceGroups.list.col.usage=Usage
+#probe.jsp.dataSourceGroups.menu.back=Back to data source list
+
+#probe.jsp.datasources.h3.global=Global Resources
+#probe.jsp.datasources.h3.app=Application Resources
+#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
+#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
+probe.jsp.datasources.empty=\ud1b0\ucea3 \uc778\uc2a4\ud134\uc2a4\uc5d0 \uc124\uc815\ub41c \ub370\uc774\ud0c0\ubca0\uc774\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+#probe.jsp.datasources.help.max=maximum number of connections in the pool
+#probe.jsp.datasources.help.established=number of established connections that can be reused
+#probe.jsp.datasources.help.busy=number of busy connections cannot be reused
+#probe.jsp.datasources.list.col.application=App
+#probe.jsp.datasources.list.col.auth=Auth
+#probe.jsp.datasources.list.col.busy=B
+#probe.jsp.datasources.list.col.description=Description
+#probe.jsp.datasources.list.col.established=E
+#probe.jsp.datasources.list.col.linkTo=Lnk
+#probe.jsp.datasources.list.col.max=M
+#probe.jsp.datasources.list.col.reset.alt=reset
+#probe.jsp.datasources.list.col.resource=Resource
+#probe.jsp.datasources.list.col.type=Type
+#probe.jsp.datasources.list.col.url=URL
+#probe.jsp.datasources.list.col.usage=Usage
+#probe.jsp.datasources.list.col.user=User
+#probe.jsp.datasources.list.misconfigured.alt=error
+#probe.jsp.datasources.opt.groupByJdbcUrl=group by jdbc url
+
+#probe.jsp.deployment.war.success={0} has been deployed
+#probe.jsp.deployment.compilationDetails=View compilation details
+probe.jsp.deployment.s1.compile.label=\uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ubc30\uce58\ub41c \ud6c4 JSP \ud398\uc774\uc9c0 \ucef4\ud30c\uc77c(\uba87 \ubd84 \uc18c\uc694)
+probe.jsp.deployment.s1.description=.war \ud30c\uc77c \uc5c5\ub85c\ub4dc. \uba85\uc2dc\ub41c \ucee8\ud14d\uc2a4\ud2b8\uba85\uc774 \uc5c6\uc744\uacbd\uc6b0 \ucca8\ubd80\ub41c .war\ud30c\uc77c\uba85\uc73c\ub85c \uc0ac\uc6a9\ub418\uc5b4\uc9d1\ub2c8\ub2e4. META-INF/context.xml\uc774 \ud3ec\ud568\ub418\uc5b4 \uc5c5\ub85c\ub4dc\ud560 \uacbd\uc6b0 \ucee8\ud14d\uc2a4\ud2b8\ub294 \ubc18\ub4dc\uc2dc deploy\ud558\ub294 .war \ucee8\ud14d\uc2a4\ud2b8\uc758 "path" \uc18d\uc131\uacfc \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.
+probe.jsp.deployment.s1.discard.label=\uc874\uc7ac\ud558\ub294 "work"\uacbd\ub85c \uc0ad\uc81c
+#probe.jsp.deployment.s1.file.label=Select a .war file to upload
+#probe.jsp.deployment.s1.submit=Deploy
+probe.jsp.deployment.s1.title=\uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uc5c5\ub85c\ub4dc (\uae30\ubcf8)
+probe.jsp.deployment.s1.update.label=\uc774\ubbf8 \ubc30\uce58\ub41c \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uc5c5\ub85c\ub4dc
+probe.jsp.deployment.s2.context.label=\ucee8\ud14d\uc2a4\ud2b8\uba85 (ex. /dummy)
+probe.jsp.deployment.s2.description=\uc774 \uc635\uc158\uc744 \uc0ac\uc6a9\ud560 \uacbd\uc6b0 %CATALINA_BASE%/conf/Catalina/localhost/ \uc548\uc5d0 \ucee8\ud14d\uc2a4\ud2b8 .xml \ud30c\uc77c\uc774 \uc774\ubbf8 \uc0dd\uc131\ub418\uc5b4\uc838 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ud1b0\ucea3\uc740 \ucee8\ud14d\uc2a4\ud2b8\uba85\uc744 .xml \ud30c\uc77c\uc758 \uc774\ub984\uc73c\ub85c \uac04\uc8fc\ud569\ub2c8\ub2e4. \uc608) "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml. NOTE: \ud1b0\ucea35.0.x \uc774\ud6c4\ubd80\ud130 .xml \ucee8\ud14d\uc2a4\ud2b8\ud30c\uc77c\uc5d0 "path" \uc18d\uc131\uc744 \ud544\uc694\ub85c \ud569\ub2c8\ub2e4!
+probe.jsp.deployment.s2.title=\ucee8\ud14d\uc2a4\ud2b8\uba85 \ubc30\uce58 (\uace0\uae09)
+
+#probe.jsp.follow.h3.fileContent=File content
+#probe.jsp.follow.h3.fileInfo=File information
+#probe.jsp.follow.h3.sources=Logging sources
+#probe.jsp.follow.loading=Loading...
+#probe.jsp.follow.menu.back=back to log files list
+#probe.jsp.follow.menu.clear=clear buffer
+#probe.jsp.follow.menu.download=download
+#probe.jsp.follow.menu.nowrap=nowrap
+#probe.jsp.follow.menu.pause=pause tailing
+#probe.jsp.follow.menu.resume=resume tailing
+#probe.jsp.follow.menu.wrap=wrap lines
+#probe.jsp.follow.menu.zoomin=zoom in
+#probe.jsp.follow.menu.zoomout=zoom out
+#probe.jsp.followed_file_info.fileName=File name:
+#probe.jsp.followed_file_info.lastModified=Last modified:
+#probe.jsp.followed_file_info.size=Size:
+
+#probe.jsp.jsps.col.lastmodified=Last modified
+#probe.jsp.jsps.col.message=Message
+#probe.jsp.jsps.col.name=JSP Name
+#probe.jsp.jsps.col.size=Size
+#probe.jsp.jsps.col.status=Status
+#probe.jsp.jsps.notfound=This application does not have JSP files
+#probe.jsp.jsps.opt.compile=Compile selected
+#probe.jsp.jsps.opt.compileall=Compile all
+#probe.jsp.jsps.opt.discardscratch=discard "work" dir
+#probe.jsp.jsps.opt.toggleall=Toggle all
+#probe.jsp.jsps.status.compiled=Compiled
+#probe.jsp.jsps.status.failed=FAILED
+#probe.jsp.jsps.status.outdated=Out dated
+
+#probe.jsp.logs.col.app=App
+#probe.jsp.logs.col.class=Class
+#probe.jsp.logs.col.file=File name
+#probe.jsp.logs.col.level=Level
+#probe.jsp.logs.col.modified=Modified
+#probe.jsp.logs.col.name=Name
+#probe.jsp.logs.col.size=Size
+#probe.jsp.logs.col.type=Type
+#probe.jsp.logs.download.alt=download
+#probe.jsp.logs.hideapps=show existing only
+#probe.jsp.logs.showapps=show all
+#probe.jsp.logs_notSupported.message=Your Java Virtual Machine {0} {1} does not fully support SUN reflection API - sun.reflect.ReflectionFactory. Log browsing functionality is disabled.
+
+#probe.jsp.memory.advise.finalization=Advise Finalization
+#probe.jsp.memory.advise.gc=Advise GC
+#probe.jsp.memory.col.committed=Committed
+#probe.jsp.memory.col.group=Group
+#probe.jsp.memory.col.initial=Initial
+#probe.jsp.memory.col.max=Maximum
+#probe.jsp.memory.col.name=Name
+#probe.jsp.memory.col.plot=Plot
+#probe.jsp.memory.col.usageScore=Usage score
+#probe.jsp.memory.col.used=Used
+#probe.jsp.memory.h3.charts=Memory usage history
+#probe.jsp.memory.h3.table=Current memory usage
+#probe.jsp.memory.loading=Loading...
+#probe.jsp.memory.usage.title=Usage {0}%
+#probe.jsp.memory.notAvailable=This page requires Java5 with enabled JMX Agent. To enable the JXM Agent please add "-Dcom.sun.management.jmxremote" to java command line or $JAVA_OPTS environment variable. If you are an IBM JDK user please add these properties: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
+
+#probe.jsp.menu.applications=Applications
+#probe.jsp.menu.cluster=Cluster
+#probe.jsp.menu.connectors=Connectors
+#probe.jsp.menu.datasources=Data Sources
+#probe.jsp.menu.deployment=Deployment
+#probe.jsp.menu.logs=Logs
+#probe.jsp.menu.memory=Memory
+#probe.jsp.menu.quickcheck=Quick check
+#probe.jsp.menu.sysinfo=System
+#probe.jsp.menu.threads=Threads
+
+probe.jsp.noaccess=\uc774 \ud398\uc774\uc9c0\uc5d0 \uc811\uadfc\ud560 \uad8c\ud55c\uc774 \ucda9\ubd84\uce58 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\uc804 \ud398\uc774\uc9c0\ub85c \ub3cc\uc544\uac00\uc2dc\ub824\uba74 "back" \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc2dc\uac70\ub098, \ub2e4\ub978 \ud398\uc774\uc9c0\ub9c1\ud06c\ub97c \uc774\uc6a9\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.
+probe.jsp.noaccess.ajax=\uc774 \uae30\ub2a5\uc5d0 \uc811\uadfc\ud560 \uad8c\ud55c\uc774 \ucda9\ubd84\uce58 \uc54a\uc2b5\ub2c8\ub2e4.
+#probe.jsp.noaccess.title=403 Forbidden
+probe.jsp.notfound=\uc694\uccad\ud558\uc2e0 \ud398\uc774\uc9c0\ub294 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \ud398\uc774\uc9c0\ub9c1\ud06c\ub97c \uc774\uc6a9\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.
+#probe.jsp.notfound.title=404 Not Found
+
+#probe.jsp.resources.col.auth=Authentication
+#probe.jsp.resources.col.linkTo=Link to
+#probe.jsp.resources.col.name=Name
+#probe.jsp.resources.col.type=Type
+probe.jsp.resources.empty=\uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc815\uc758\ub41c \ub9ac\uc18c\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+#probe.jsp.resources.info.busy=Busy:
+#probe.jsp.resources.info.connectionUsage.alt=Conn.usage {0}%
+#probe.jsp.resources.info.established=Established:
+#probe.jsp.resources.info.max=Max:
+#probe.jsp.resources.info.misconfigured=This resource is misconfigured and runtime information is not available
+#probe.jsp.resources.info.misconfigured.alt=exclamation sign
+#probe.jsp.resources.info.reset=
+#probe.jsp.resources.info.reset.alt=reset
+#probe.jsp.resources.info.title=Additional info:
+
+#probe.jsp.servlet_source.h3.source=Auto generated servlet code
+#probe.jsp.servlet_source.opt.jsp=view JSP
+
+#probe.jsp.sessionAttibutes.card.age=Age:
+#probe.jsp.sessionAttibutes.card.application=Application:
+#probe.jsp.sessionAttibutes.card.created=Created:
+#probe.jsp.sessionAttibutes.card.expiryTime=Expiry time:
+#probe.jsp.sessionAttibutes.card.id=ID:
+#probe.jsp.sessionAttibutes.card.idleTime=Idle time:
+#probe.jsp.sessionAttibutes.card.info=Info:
+#probe.jsp.sessionAttibutes.card.lastAccessed=Last accessed:
+#probe.jsp.sessionAttibutes.card.manager=Manager type:
+#probe.jsp.sessionAttibutes.card.maxIdleTime=Max idle time:
+#probe.jsp.sessionAttibutes.card.serializable=Serializable:
+#probe.jsp.sessionAttibutes.card.serializable.no=NO
+#probe.jsp.sessionAttibutes.card.serializable.yes=yes
+#probe.jsp.sessionAttibutes.card.size=Size:
+#probe.jsp.sessionAttibutes.col.delete=remove
+#probe.jsp.sessionAttibutes.col.delete.title=Remove attribute
+#probe.jsp.sessionAttibutes.col.name=Name
+#probe.jsp.sessionAttibutes.col.serializable=Ser.?
+#probe.jsp.sessionAttibutes.col.size=Size
+#probe.jsp.sessionAttibutes.col.type=Type
+#probe.jsp.sessionAttibutes.col.value=Value
+#probe.jsp.sessionAttibutes.h3.attributes=Session attributes
+#probe.jsp.sessionAttibutes.h3.card=Session card
+#probe.jsp.sessionAttibutes.invalidSid=Session ID is invalid or the session has expired
+#probe.jsp.sessionAttibutes.menu.back=Back to session list
+#probe.jsp.sessionAttibutes.menu.destroy=Destroy this session
+#probe.jsp.sessionAttibutes.noattributes=This session does not have attributes
+
+#probe.jsp.sessions.col.age=Age
+#probe.jsp.sessions.col.creationTime=Creation time
+#probe.jsp.sessions.col.expiryTime=Expiry time
+#probe.jsp.sessions.col.id=Session ID
+#probe.jsp.sessions.col.applicationName=App
+#probe.jsp.sessions.col.idleTime=Idle time
+#probe.jsp.sessions.col.lastAccessTime=Last Access Time
+#probe.jsp.sessions.col.objectCount=Object Count
+#probe.jsp.sessions.col.serializable=Ser.
+#probe.jsp.sessions.col.size=Size
+#probe.jsp.sessions.col.lastIP=Last IP
+#probe.jsp.sessions.unknown.ip=unknown
+#probe.jsp.sessions.empty=There are no sessions
+#probe.jsp.sessions.menu.expire=Expire
+#probe.jsp.sessions.menu.toggle=Toggle
+#probe.jsp.sessions.status.no=NO
+#probe.jsp.sessions.status.yes=yes
+#probe.jsp.sessions.opt.all=Show all
+#probe.jsp.showsize=estimate sizes
+#probe.jsp.hidesize=hide size
+
+#probe.jsp.sysinfo.col.name=Property name
+#probe.jsp.sysinfo.col.value=Property value
+#probe.jsp.sysinfo.container.title=Container information
+#probe.jsp.sysinfo.memory.adviseGC=Advise Garbage Collection
+#probe.jsp.sysinfo.memory.free=Free:
+#probe.jsp.sysinfo.memory.max=Max:
+#probe.jsp.sysinfo.memory.title=Memory utilization
+#probe.jsp.sysinfo.memory.total=Total:
+#probe.jsp.sysinfo.memory.usage=Current memory usage is
+#probe.jsp.sysinfo.memory.usage.alt=Memory usage bar
+#probe.jsp.sysinfo.os.applicationBase=Application base:
+#probe.jsp.sysinfo.os.catalinaBase=catalina.base:
+#probe.jsp.sysinfo.os.catalinaHome=catalina.home:
+#probe.jsp.sysinfo.os.configBase=Configuration base:
+#probe.jsp.sysinfo.os.container=Container:
+#probe.jsp.sysinfo.os.currentTime=Current time:
+#probe.jsp.sysinfo.os.jvm=JVM:
+#probe.jsp.sysinfo.os.name=OS:
+#probe.jsp.sysinfo.os.processors=Processors:
+#probe.jsp.sysinfo.os.title=OS information
+#probe.jsp.sysinfo.os.workingDir=Working dir:
+#probe.jsp.sysinfo.sysproperties.title=System properties
+
+#probe.jsp.threadpools.currentThreadCount=Current thread count
+#probe.jsp.threadpools.currentThreadsBusy=Current threads busy
+#probe.jsp.threadpools.maxSpareThreads=Max spare threads
+#probe.jsp.threadpools.maxThreads=Max threads
+#probe.jsp.threadpools.menu.threads=Running threads
+#probe.jsp.threadpools.minSpareThreads=Min spare threads
+#probe.jsp.threadpools.name=Name
+
+#probe.jsp.threads.col.application=App
+#probe.jsp.threads.col.classLoader=Class loader
+#probe.jsp.threads.col.daemon=D
+#probe.jsp.threads.col.groupName=Group
+#probe.jsp.threads.col.interrupted=I
+#probe.jsp.threads.col.name=Name
+#probe.jsp.threads.col.priority=P
+#probe.jsp.threads.col.runnableClass=Runnable
+#probe.jsp.threads.col.threadClass=Thread class
+#probe.jsp.threads.col.id=ID
+#probe.jsp.threads.col.execPoint=Exec. point
+#probe.jsp.threads.col.state=State
+#probe.jsp.threads.col.inNative=In.Native
+#probe.jsp.threads.col.suspended=Susp.
+#probe.jsp.threads.col.waitedCount=WC
+#probe.jsp.threads.col.blockedCount=BC
+#probe.jsp.threads.help.priority=thread priority, the higher the number the higher the priority
+#probe.jsp.threads.help.daemon=thread is a daemon
+#probe.jsp.threads.help.interrupted=thread has been interrupted
+#probe.jsp.threads.help.inNative=true if thread is executing native code
+#probe.jsp.threads.help.suspended=thread is suspended
+#probe.jsp.threads.help.waitedCount="wait count" - number of times thread has been waiting on something
+#probe.jsp.threads.help.blockedCount="blocked count" - number of times thread has been blocked
+#probe.jsp.threads.info.loading=Loading...
+#probe.jsp.threads.info.unavailable=URL information is not available
+#probe.jsp.threads.killmsg=Killing threads indiscriminantly may destabilize JVM. Are you sure you want to stop {0}?
+#probe.jsp.threads.menu.threadpools=Threads Pools
+#probe.jsp.threads.stop.alt=stop
+
+#probe.jsp.title.app.attributes={0} - context attributes
+#probe.jsp.title.applications=Installed applications
+#probe.jsp.title.cluster=Cluster status
+#probe.jsp.title.connectors=Connectors
+#probe.jsp.title.dataSourceGroups=Data sources grouped by jdbc url
+#probe.jsp.title.datasources=Available Data Sources
+#probe.jsp.title.deployment=Application deployment
+#probe.jsp.title.follow=Tailing log
+#probe.jsp.title.jsps={0} - deployed JSPs
+#probe.jsp.title.logs=Logs
+#probe.jsp.title.logs_notSupported=Not supported
+#probe.jsp.title.memory=JVM memory usage
+#probe.jsp.title.quickcheck=Quick check
+#probe.jsp.title.resources={0} - resources
+#probe.jsp.title.servlet_source=Generated servlet source
+#probe.jsp.title.sessionAttibutes=Session attributes
+#probe.jsp.title.sessions={0} - sessions
+#probe.jsp.title.sessions.all=Sessions
+#probe.jsp.title.sysinfo=System information
+#probe.jsp.title.threadpools=Threads Pools
+#probe.jsp.title.threads=Running threads
+#probe.jsp.title.viewsource={0} - View source
+#probe.jsp.uptime=UP for {0} days {1} hours {2} minutes
+#probe.jsp.version=Version {0} running on {1}
+
+#probe.jsp.viewsource.appname=Application name:
+#probe.jsp.viewsource.encoding=Encoding:
+#probe.jsp.viewsource.filename=File name:
+#probe.jsp.viewsource.h3.info=JSP information
+#probe.jsp.viewsource.h3.source=JSP source code
+#probe.jsp.viewsource.lastmodified=Last modified:
+#probe.jsp.viewsource.notfound=Unfortunately you cannot view contents of this file. Please go back and select the file from the list.
+#probe.jsp.viewsource.opt.back=back to JSP list
+#probe.jsp.viewsource.opt.compile=compile
+#probe.jsp.viewsource.opt.viewServlet=view generated servlet
+#probe.jsp.viewsource.size=Size:
+#probe.jsp.viewsource.state=State:
+
+#probe.jsp.wrongparams=You have passed wrong parameters to this page.
+#probe.jsp.wrongsvrversion=This feature is not implemented for {0}
+#probe.jsp.zoomedchart.back=Back to chart groups
+#probe.jsp.zoomedchart.information=You can use the slider to resize the image according to your display resolution. The information is LIVE and the chart would be refreshed automatically every {0} seconds.
+
+#probe.src.contextAction.cannotActOnSelf=Cannot stop/start/undeploy this application
+#probe.src.contextDoesntExist=Context {0} does not exist
+#probe.src.deploy.context.failure=Failed to deploy {0}
+#probe.src.deploy.context.success=Deployed application from {0}
+#probe.src.deploy.exploded.success={0} has been successfully installed at {1}
+#probe.src.deploy.war.alreadyExists=Context {0} is already in use
+#probe.src.deploy.war.failure=There was an error thrown by Tomcat during deployment: "{0}". This however may not mean that you application failed to deploy. Please check the status in the application list
+#probe.src.deploy.war.notWar.failure=Deployment failed. File name must end with .war
+#probe.src.deploy.war.notinstalled={0} was not installed
+#probe.src.deploy.war.uploadfailure=There was a problem uploading the file: {0}
+#probe.src.reset.datasource.c3p0=This datasource cannot be reset
+#probe.src.reset.datasource.notfound=Resource {0} does not exist
+
+#probe.jsp.title.wrapper=Java Service Wrapper
+#probe.jsp.wrapper.not_available=This JVM is not controlled by Java Service Wrapper
+#probe.jsp.wrapper.menu.restart=restart JVM
+#probe.jsp.wrapper.menu.stop=stop JVM
+#probe.jsp.wrapper.menu.thread_dump=Request thread dump
+#probe.jsp.wrapper.h3.info=Wrapper information
+#probe.jsp.wrapper.h3.props=Wrapper properties
+#probe.jsp.wrapper.confirm.restart=Are you sure you want to restart JVM?
+#probe.jsp.wrapper.confirm.stop=JVM cannot be started again from Probe. Are you sure you want to stop JVM?
+#probe.jsp.wrapper.jvm.stopping=JVM shutdown is now in progress. If you need to start it up again you would have to do it via the console.
+#probe.jsp.wrapper.jvm.restarting=JVM restart is now in progress. This may take a few minutes.
+#probe.jsp.wrapper.jvm.thread_dump=JMV Thread Dump has been requested. You can normally find it in the Wrapper log file.
+
+#probe.jsp.wrapper.user=User:
+#probe.jsp.wrapper.interactive_user=Interactive user:
+#probe.jsp.wrapper.java_pid=Java PID:
+#probe.jsp.wrapper.pid=Wrapper PID:
+#probe.jsp.wrapper.service=Running as service:
+#probe.jsp.wrapper.debug=Debug enabled:
+#probe.jsp.wrapper.version=Wrapper version:
+
+#probe.jsp.decorator.system.title=System
+#probe.jsp.decorator.system.overview=Overview
+#probe.jsp.decorator.system.memory=Memory utilization
+#probe.jsp.decorator.system.props=System properties
+#probe.jsp.decorator.system.os=OS information
+#probe.jsp.decorator.system.wrapper=Wrapper control
+
+#probe.jsp.os.h3.information=OS information
+#probe.jsp.os.h3.charts=Historical charts
+#probe.jsp.os.chart.cpu=JVM CPU utilization (%)
+#probe.jsp.os.chart.cpu.alt=JVM CPU utilization chart
+#probe.jsp.os.chart.cpu.legend=CPU usage
+#probe.jsp.os.chart.memory=OS & JVM memory usage (KB)
+#probe.jsp.os.chart.memory.alt=OS and JVM physical memory usage chart
+#probe.jsp.os.chart.memory.legend.total=total used
+#probe.jsp.os.chart.memory.legend.jvm=used by JVM
+#probe.jsp.os.chart.swap=Swap usage (KB)
+#probe.jsp.os.chart.swap.alt=Swap usage chart
+#probe.jsp.os.chart.swap.legend=swap used
+#probe.jsp.os.chart.fd=File descriptors
+#probe.jsp.os.chart.fd.alt=File descriptors chart
+#probe.jsp.os.chart.fd.legend.open=open file descriptors
+#probe.jsp.os.chart.fd.legend.max=max file descriptors
+#probe.jsp.os.card.name=OS Name:
+#probe.jsp.os.card.version=OS Version:
+#probe.jsp.os.card.processors=Processors:
+#probe.jsp.os.card.totalMemory=Total RAM:
+#probe.jsp.os.card.freeMemory=Free RAM:
+#probe.jsp.os.card.committedVirtualMemory=Committed JVM memory:
+#probe.jsp.os.card.totalSwap=Total swap:
+#probe.jsp.os.card.freeSwap=Free swap:
+
+#probe.jsp.title.testDataSource={0} -> {1}
+#probe.src.dataSourceTest.resource.lookup.failure=Data source {0} does not exist
+#probe.src.dataSourceTest.connection.failure=Cannot establish a database connection. {0}
+#probe.src.dataSourceTest.connection.success=Successfully connected to the database
+#probe.src.dataSourceTest.sql.required=Sql query text is required
+#probe.src.dataSourceTest.sql.failure=Error encountered while executing the query. {0}
+#probe.src.dataSourceTest.sql.null=NULL
+#probe.src.dataSourceTest.cachedResultSet.failure=Cannot retrieve a cached result set
+#probe.jsp.dataSourceTest.help=This screen can help you to test your data source database connectivity.\
+#Test connection checks if a database connection can be established and displays some database information.\
+#Execute SQL executes an SQL query you enter against the database.\
+#You can see a database operation output or an error message at the bottom of the screen.\
+#Show history displays a list of queries you have executed.\
+#Please consider using Show options to limit the number of records returned by you query for not to waste your system resources.
+#probe.jsp.dataSourceTest.menu.back=Back to data sources
+#probe.jsp.dataSourceTest.menu.connect=Test connection
+#probe.jsp.dataSourceTest.menu.execute=Execute sql (Ctrl+Enter)
+#probe.jsp.dataSourceTest.menu.showHistory=Show history (Ctrl+Down)
+#probe.jsp.dataSourceTest.menu.hideHistory=Hide history (Ctrl+Down)
+#probe.jsp.dataSourceTest.menu.showOptions=Show options (Ctrl+Up)
+#probe.jsp.dataSourceTest.menu.hideOptions=Hide options (Ctrl+Up)
+#probe.jsp.dataSourceTest.menu.wrap=Wrap lines
+#probe.jsp.dataSourceTest.menu.nowrap=Don't wrap lines
+#probe.jsp.dataSourceTest.menu.abbreviations=Help!
+#probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit enabled)
+#probe.jsp.dataSourceTest.sqlForm.maxRows.label=Records to retrieve
+#probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Records per page
+#probe.jsp.dataSourceTest.sqlForm.historySize.label=History size
+#probe.jsp.dataSourceTest.h3.results=Query results
+#probe.jsp.dataSourceTest.results.rowcount={0} record(s) affected.
+#probe.jsp.dataSourceTest.h3.metaData=Database Info
+#probe.jsp.dataSourceTest.chart.usage.title=Datasource usage
+#probe.jsp.dataSourceTest.dbMetaData.col.propName=Property Name
+#probe.jsp.dataSourceTest.dbMetaData.col.propValue=Property Value
+#probe.jsp.dataSourceTest.dbMetaData.dbProdName=Database Product Name
+#probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Database Product Version
+#probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=JDBC Driver Name
+#probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=JDBC Driver Version
+#probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=JDBC Version
+#probe.jsp.dataSourceTest.results.paging.banner.item_name=record
+#probe.jsp.dataSourceTest.results.paging.banner.items_name=records
+#probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
+#probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Displaying one {0}.
+#probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Displaying all {2}.
+#probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Displaying {2} to {3}.
+#probe.jsp.dataSourceTest.results.paging.banner.first=First
+#probe.jsp.dataSourceTest.results.paging.banner.prev=Prev
+#probe.jsp.dataSourceTest.results.paging.banner.next=Next
+#probe.jsp.dataSourceTest.results.paging.banner.last=Last
+#probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Go to page {0}
+#probe.jsp.dataSourceTest.sql.completed=Statement completed.
+#probe.jsp.dataSourceTest.h3.queryHistory=Query history
+#probe.jsp.dataSourceTest.queryHistory.empty=The history list is empty
+
+#probe.jsp.whois.timeout=Could not completed WHOIS query. Check if WHOIS is blocked by your network.
+
+#probe.jsp.threadstack.native=native code
+#probe.jsp.threadstack.unknown=unknown source
+#probe.jsp.threadstack.unavailable=Trace stack is unavailable for this thread
+
+#probe.jsp.tooltip.close=close
+
+#probe.jsp.sessions.h3=Sessions
+#probe.jsp.sessions.search.h3=Session search criteria
+#probe.jsp.sessions.menu.showSearch=Session search
+#probe.jsp.sessions.menu.applySearch=Apply search
+#probe.jsp.sessions.menu.clearSearch=Clear search
+#probe.jsp.sessions.menu.searchHelp=Help
+#probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
+#Whether Session Id matches a regular expression.\
+#Whether Last IP contains a substring.\
+#Whether Idle Time falls into a range specified in seconds.\
+#Whether Age falls into a range specified in seconds.\
+#Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
+#This condition allows finding a session with an attribute A and/or an attribute B set.
+#probe.jsp.sessions.search.sessionId=Session id (RE)
+#probe.jsp.sessions.search.attrName=Attribute names (RE list)
+#probe.jsp.sessions.search.ageFrom=Age from (sec)
+#probe.jsp.sessions.search.ageTo=to
+#probe.jsp.sessions.search.idleTimeFrom=Idle time from (sec)
+#probe.jsp.sessions.search.idleTimeTo=to
+#probe.jsp.sessions.search.lastIP=Last IP (substring)
+#probe.jsp.sessions.search.results.h3=Session search results
+#probe.src.sessions.search.empty=Search criteria is empty
+#probe.src.sessions.search.results.empty=No sessions have matched the search criteria
+#probe.src.sessions.search.invalid=Search criteria is invalid
+#probe.src.sessions.search.invalid.sessionId=Session id regular expression is invalid. {0}
+#probe.src.sessions.search.invalid.attrName=Attribute name regular expression is invalid. {0}
+#probe.src.sessions.search.invalid.ageFrom=Age from value is invalid
+#probe.src.sessions.search.invalid.ageTo=Age to value is invalid
+#probe.src.sessions.search.invalid.idleTimeFrom=Idle time from value is invalid
+#probe.src.sessions.search.invalid.idleTimeTo=Idle time to value is invalid
+#probe.src.sessions.search.invalid.lastIP=Last IP regular expression is invalid. {0}
+
+#probe.jsp.app.nav.title=Application
+#probe.jsp.app.nav.summary=Summary
+#probe.jsp.app.nav.sessions=Sessions
+#probe.jsp.app.nav.attributes=Attributes
+#probe.jsp.app.nav.jsps=JSPs
+#probe.jsp.app.nav.resources=Resources
+#probe.jsp.app.nav.initParams=Parameters
+#probe.jsp.app.nav.webxml=Deployment descriptor
+#probe.jsp.app.nav.contextxml=Context descriptor
+#probe.jsp.app.nav.filters=Filters
+#probe.jsp.app.nav.servlets=Servlets
+
+#probe.jsp.title.app.initParams={0} - initialization parameters
+#probe.jsp.app.initParams.h3.params=Context initialization parameters
+#probe.jsp.app.initParams.col.name=Name
+#probe.jsp.app.initParams.col.value=Value
+#probe.jsp.app.initParams.col.source=Source
+#probe.jsp.app.initParams.source.deplDescr=web.xml
+#probe.jsp.app.initParams.source.context=context
+#probe.jsp.app.initParams.empty=There are no context initialization parameters defined for this application
+
+#probe.jsp.title.app.viewXMLConf={0} - {1}
+#probe.jsp.app.viewXMLConf.notfound= Cannot find {0} of this application
+#probe.jsp.app.viewXMLConf.h3.scr={0} source
+#probe.src.app.viewxmlconf.webxml.desc=deployment descriptor
+#probe.src.app.viewxmlconf.contextxml.desc=context descriptor
+
+#probe.jsp.title.app.filters={0} - filters
+#probe.jsp.title.app.filtermaps={0} - filter mappings
+#probe.jsp.app.filtermaps.opt.defs=Filter definitions
+#probe.jsp.app.filters.opt.maps=Filter mappings
+#probe.jsp.app.filters.h3.defs=Filters
+#probe.jsp.app.filtermaps.h3.maps=Filter mappings
+#probe.jsp.app.filters.col.filterName=Name
+#probe.jsp.app.filters.col.filterClass=Class
+#probe.jsp.app.filters.col.filterDesc=Description
+#probe.jsp.app.filtermaps.col.url=Url
+#probe.jsp.app.filtermaps.col.filterName=Filter name
+#probe.jsp.app.filtermaps.col.servletName=Servlet name
+#probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
+#probe.jsp.app.filters.empty=There are no filters defined for this application
+#probe.jsp.app.filtermaps.empty=There are no filter mappings defined for this application
+
+#probe.jsp.title.servlets.all=Servlets
+#probe.jsp.title.servlets.app={0} - servlets
+#probe.jsp.title.servletmaps.all=Servlet mappings
+#probe.jsp.title.servletmaps.app={0} - servlet mappings
+#probe.jsp.servletmaps.opt.defs=Servlets
+#probe.jsp.servletmaps.opt.all=Show all
+#probe.jsp.servlets.opt.maps=Servlet mappings
+#probe.jsp.servlets.opt.all=Show all
+#probe.jsp.servlets.h3.defs=Servlets
+#probe.jsp.servletmaps.h3.maps=Servlet mappings
+#probe.jsp.servletmaps.col.url=Url
+#probe.jsp.servletmaps.col.servletName=Servlet name
+#probe.jsp.servlets.col.applicationName=App
+#probe.jsp.servlets.col.servletName=Name
+#probe.jsp.servletmaps.col.servletClass=Servlet class
+#probe.jsp.servlets.col.available=Avail
+#probe.jsp.servlets.col.loadOnStartup=Startup
+#probe.jsp.servlets.empty=There are no servlets defined
+#probe.jsp.servletmaps.empty=There are no servlet mappings defined
+#probe.jsp.servlets.col.minTime=Min time
+#probe.jsp.servlets.col.maxTime=Max time
+#probe.jsp.servlets.col.processingTime=Proc time
+#probe.jsp.servlets.col.loadTime=Load time
+#probe.jsp.servlets.col.multiThreaded=Mult Thrd
+#probe.jsp.servlets.col.requestCount=Req
+#probe.jsp.servlets.col.errorCount=Err
+
+#probe.jsp.title.app.summary={0} - application summary
+#probe.jsp.app.summary.application=Application name:
+#probe.jsp.app.summary.description=Description:
+#probe.jsp.app.summary.distributable=Clustered:
+#probe.jsp.app.summary.docBase=Doc. base:
+#probe.jsp.app.summary.servletVersion=Servlet version:
+#probe.jsp.app.summary.sessionTimeout=Session timeout:
+#probe.jsp.app.summary.servletCount=Servlet count:
+#probe.jsp.app.summary.status=This application is
+#probe.jsp.app.summary.requestCount=Request count:
+#probe.jsp.app.summary.sessionCount=Sessions
+#probe.jsp.app.summary.sessionAttributeCount=Session attrs.
+#probe.jsp.app.summary.sessionSize=Session size
+#probe.jsp.app.summary.contextAttributeCount=Context attrs.
+#probe.jsp.app.summary.serializable=Ser.
+#probe.jsp.app.summary.errorCount=Error count:
+#probe.jsp.app.summary.processingTime=Processing time:
+#probe.jsp.app.summary.minTime=Min time:
+#probe.jsp.app.summary.maxTime=Max time:
+#probe.jsp.app.summary.avgTime=Avg response time:
+#probe.jsp.app.summary.h3.static=Application information
+#probe.jsp.app.summary.h3.runtime=Runtime information
+#probe.jsp.app.summary.invalidApp=The application is invalid
+#probe.jsp.app.summary.runtime.unavailable=This application is not running, runtime information is unavailable
+#probe.jsp.app.summary.menu.start=Start
+#probe.jsp.app.summary.menu.stop=Stop
+#probe.jsp.app.summary.menu.reload=Reload
+#probe.jsp.app.summary.menu.undeploy=Undeploy
+#probe.jsp.app.summary.menu.goTo=Go to
+#probe.jsp.app.summary.menu.startStats=Start collecting stats
+#probe.jsp.app.summary.menu.stopStats=Stop collecting stats
+#probe.jsp.app.summary.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
+#probe.jsp.app.summary.dataSourceUsageScore=Datasource usage
+#probe.jsp.app.summary.jdbcUsage.title=Max.conn.usage {0}%
+#probe.jsp.app.summary.h3.charts=Statistics charts
+#probe.jsp.app.summary.charts.requests.title=Number of requests
+#probe.jsp.app.summary.charts.avgProcTime.title=Average response time (ms)
+#probe.jsp.app.summary.charts.requests.legend=Requests
+#probe.jsp.app.summary.charts.errors.legend=Errors
+#probe.jsp.app.summary.charts.avgProcTime.legend=Avg. response time
+
+#probe.jsp.title.allappstats=Application statistics
+#probe.jsp.allappstats.charts.totalAvgProcTime.legend=Avg. response time
+#probe.jsp.allappstats.charts.totalReq.legend=Requests
+#probe.jsp.allappstats.charts.totalAvgProcTime.title=Cumulative avg. response time (ms)
+#probe.jsp.allappstats.charts.allAppAvgProcTime.title=Avg. response time by app (ms)
+#probe.jsp.allappstats.charts.totalReq.title=Cumulative requests
+#probe.jsp.allappstats.charts.allAppReq.title=Requests by app (ms)
+#probe.jsp.allappstats.h3.charts=Statistics charts
+
+#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
+#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
+#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
+#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
+
+#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
+#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
diff --git a/web/src/main/conf/WEB-INF/messages_pt_BR.properties b/web/src/main/conf/WEB-INF/messages_pt_BR.properties
index acdb129982..1adfa60aa0 100644
--- a/web/src/main/conf/WEB-INF/messages_pt_BR.properties
+++ b/web/src/main/conf/WEB-INF/messages_pt_BR.properties
@@ -1,718 +1,718 @@
-#
-# Licensed under the GPL License. You may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-#
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-
-# Brazilian Portuguese translation by Leandro de Oliveira (lehphyro@gmail.com)
-probe.jsp.i18n.credit=Tradu\u00e7\u00e3o Portugu\u00eas de Leandro de Oliveira
-#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
-
-probe.jsp.generic.no=n\u00e3o
-probe.jsp.generic.yes=sim
-probe.jsp.generic.abbreviations=O que significam as abrevia\u00e7\u00f5es?
-
-probe.jsp.app.attributes.col.delete=Excluir atributo
-probe.jsp.app.attributes.col.delete.title=Excluir atributo
-probe.jsp.app.attributes.col.name=Nome
-probe.jsp.app.attributes.col.type=Tipo
-probe.jsp.app.attributes.col.value=Valor
-probe.jsp.app.attributes.h3.attributes=Atributos do Servlet context
-probe.jsp.app.attributes.noattributes=N\u00e3o h\u00e1 atributos neste servlet context
-
-probe.jsp.applications.alt.reload=recarregar
-probe.jsp.applications.alt.undeploy=Undeploy
-probe.jsp.applications.col.contextAttributeCount=C.Atrib
-probe.jsp.applications.col.description=Descri\u00e7\u00e3o
-probe.jsp.applications.col.distributable=Cluster?
-probe.jsp.applications.col.jdbcUsage=Uso de Jdbc
-probe.jsp.applications.col.jsp=JSP
-probe.jsp.applications.col.name=Nome
-probe.jsp.applications.col.serializable=Ser.?
-probe.jsp.applications.col.sessionAttributeCount=S.Atrib
-probe.jsp.applications.col.sessionCount=Sess.
-probe.jsp.applications.col.sessionTimeout=Sess.Timeout
-probe.jsp.applications.col.size=Tamanho
-probe.jsp.applications.col.status=Status
-probe.jsp.applications.col.requestCount=Req.
-probe.jsp.applications.help.contextAttributeCount=n\u00famero total de atributos de contexto
-probe.jsp.applications.help.distributable=aplica\u00e7\u00e3o \u00e9 clusterizada
-probe.jsp.applications.help.requestCount=n\u00famero total de requsi\u00e7\u00f5es processadas pelos servlets
-probe.jsp.applications.help.serializable=todos os atributos de sess\u00e3o implementam java.io.Serializable
-probe.jsp.applications.help.sessionAttributeCount=n\u00famero total de atributos de sess\u00e3o
-probe.jsp.applications.help.sessionCount=n\u00famero de sess\u00f5es
-probe.jsp.applications.hidesize=Esconder tamanho das sess\u00f5es
-probe.jsp.applications.jdbcUsage.title=Uso m\u00e1x de conex\u00f5es {0}%
-probe.jsp.applications.jsp.view=visualizar
-probe.jsp.applications.serializable.no=N\u00c3O
-probe.jsp.applications.serializable.yes=sim
-probe.jsp.applications.showsize=estimar tamanho das sess\u00f5es (pode levar algum tempo)
-probe.jsp.applications.status.down=parada
-probe.jsp.applications.status.down.title=Iniciar {0}
-probe.jsp.applications.status.up=rodando
-probe.jsp.applications.title.reload=Recarregar {0}
-probe.jsp.applications.title.status.up=Parar {0}
-probe.jsp.applications.title.undeploy=Undeploy {0}
-probe.jsp.applications.undeploy.confirm=Esta opera\u00e7\u00e3o n\u00e3o pode ser desfeita. Voc\u00ea realmente quer EXCLUIR {0}?
-
-probe.jsp.connectors.information=Informa\u00e7\u00e3o de tr\u00e1fego para todos os conectores dispon\u00edveis. Os gr\u00e1ficos s\u00e3o automaticamente atualizados. Voc\u00ea n\u00e3o precisa ficar nesta p\u00e1gina para os gr\u00e1ficos serem atualizados.
-probe.jsp.connectors.processor.errorCount=N\u00fameros de erros:
-probe.jsp.connectors.processor.maxTime=Tempo m\u00e1ximo:
-probe.jsp.connectors.processor.processingTime=Tempo de processamento:
-probe.jsp.connectors.processor.received=Recebidos:
-probe.jsp.connectors.processor.requestCount=N\u00famero de requisi\u00e7\u00f5es:
-probe.jsp.connectors.processor.sent=Enviados:
-probe.jsp.connectors.proc_time.title=Tempo de processamento (ms) em cada intervalo
-probe.jsp.connectors.requests.title=N\u00famero de requisi\u00e7\u00f5es em cada intervalo
-probe.jsp.connectors.traffic.title=Volume de tr\u00e1fego (em bytes) em cada intervalo
-probe.jsp.connectors.wrk.col.in=ENTRADA
-probe.jsp.connectors.wrk.col.out=SA\u00cdDA
-probe.jsp.connectors.wrk.col.processingTime=Tempo Proc.
-probe.jsp.connectors.wrk.col.remoteAddr=IP remoto
-probe.jsp.connectors.wrk.col.stage=est\u00e1gio
-probe.jsp.connectors.wrk.col.url=URL
-probe.jsp.connectors.wrk.col.thread=Thread
-probe.jsp.connectors.wrk.empty=Nenhum processamento
-probe.jsp.connectors.wrk.stage.endInput=FimEntrada
-probe.jsp.connectors.wrk.stage.endOutput=FimSa\u00edda
-probe.jsp.connectors.wrk.stage.ended=Finalizado
-probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
-probe.jsp.connectors.wrk.stage.new=Novo
-probe.jsp.connectors.wrk.stage.parse=Parseando
-probe.jsp.connectors.wrk.stage.prepare=Preparando
-probe.jsp.connectors.wrk.stage.service=Tratando
-
-probe.jsp.cluster.chart.requests=Requisi\u00e7\u00f5es em intervalos de {0} segundos
-probe.jsp.cluster.chart.traffic=Tr\u00e1fego em intervalos de {0} segundos
-probe.jsp.cluster.h3.info=Informa\u00e7\u00f5es sobre o cluster
-probe.jsp.cluster.h3.members=Membros do cluster
-probe.jsp.cluster.heartbeatFreq=Freq\u00fc\u00eancia de Heartbeat:
-probe.jsp.cluster.heartbeatTimeout=Timeout de Heartbeat:
-probe.jsp.cluster.info=Informa\u00e7\u00f5es:
-probe.jsp.cluster.manager=Gerenciador:
-probe.jsp.cluster.mcastAddress=Endere\u00e7o de Mcast:
-probe.jsp.cluster.mcastBindAddress=Endere\u00e7o de bind Mcast:
-probe.jsp.cluster.mcastBindAddress.all=todos
-probe.jsp.cluster.mcastTTL=Mcast TTL
-probe.jsp.cluster.members.col.address=Endere\u00e7o
-probe.jsp.cluster.members.col.avgMsgSize=Tamanho m\u00e9dio
-probe.jsp.cluster.members.col.closes=Fechamentos
-probe.jsp.cluster.members.col.connectCount=No.Con
-probe.jsp.cluster.members.col.connected=Con.?
-probe.jsp.cluster.members.col.disconnectCount=No.DCon
-probe.jsp.cluster.members.col.failures=Falhas
-probe.jsp.cluster.members.col.inQueueCounter=InQ
-probe.jsp.cluster.members.col.keepAlive=Keep Alive
-probe.jsp.cluster.members.col.openFailures=Falhas de abertura
-probe.jsp.cluster.members.col.opens=Aberturas
-probe.jsp.cluster.members.col.outQueueCounter=OutQ
-probe.jsp.cluster.members.col.queueSize=QSz
-probe.jsp.cluster.members.col.queueSizeBytes=QSzB
-probe.jsp.cluster.members.col.requests=Req.
-probe.jsp.cluster.members.col.resends=Reenvios
-probe.jsp.cluster.members.col.sent=Enviados
-probe.jsp.cluster.members.col.socketLimit=Limite de Socket
-probe.jsp.cluster.members.failing.alt=falhando
-probe.jsp.cluster.members.failing.title=O membro \u00e9 suspeito de falha
-probe.jsp.cluster.members.healthy.alt=sa\u00fade
-probe.jsp.cluster.members.healthy.title=O membro est\u00e1 ok
-probe.jsp.cluster.mode=Modo de replica\u00e7\u00e3o:
-probe.jsp.cluster.name=Nome:
-probe.jsp.cluster.noMembers=N\u00e3o membros de cluster ativos neste n\u00f3
-probe.jsp.cluster.notAvailable=Informa\u00e7\u00f5es sobre cluster s\u00f3 est\u00e1 dispon\u00edvel para o Tomcat 5.5.x com suporte a cluster habilitado.
-probe.jsp.cluster.received=recebidos
-probe.jsp.cluster.receiverAddress=Endere\u00e7o de recebimento:
-probe.jsp.cluster.receiverPort=Porta de recebimento:
-probe.jsp.cluster.sent=enviados
-
-probe.jsp.copyright=Copyright 2009-${copyright}. Tem alguma d\u00favida ou sugest\u00f5es? Nos visite em https://github.com/psi-probe/psi-probe
-
-probe.jsp.dataSourceGroups.empty=N\u00e3o h\u00e1 data sources configurados nesta inst\u00e2ncia
-probe.jsp.dataSourceGroups.information=A tabela abaixo cont\u00e9m o n\u00famero total de conex\u00f5es abertas e potencialmente permitidas ao banco de dados agrupadas pela url jdbc. Esta informa\u00e7\u00e3o pode ajud\u00e1-lo a estimar quantas conex\u00f5es a um banco de dados particular podem ser abertas por recursos jdbc configurados pelo container.
-probe.jsp.dataSourceGroups.jdbcUsage.title=Uso de conex\u00f5es {0}%
-probe.jsp.dataSourceGroups.list.col.busy=Conex\u00f5es em uso
-probe.jsp.dataSourceGroups.list.col.established=Conex\u00f5es estabelecidas
-probe.jsp.dataSourceGroups.list.col.max=M\u00e1ximo de conex\u00f5es
-probe.jsp.dataSourceGroups.list.col.resourceCount=Quantidade de recursos
-probe.jsp.dataSourceGroups.list.col.url=URL
-probe.jsp.dataSourceGroups.list.col.usage=Uso
-probe.jsp.dataSourceGroups.menu.back=Voltar \u00e0 lista de data sources
-
-#probe.jsp.datasources.h3.global=Global Resources
-#probe.jsp.datasources.h3.app=Application Resources
-#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
-#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
-probe.jsp.datasources.empty=N\u00e3o h\u00e1 data sources configurados para esta inst\u00e2ncia do Tomcat
-probe.jsp.datasources.help.max=n\u00famero m\u00e1ximo de conex\u00f5es no pool
-probe.jsp.datasources.help.established=n\u00famero de conex\u00f5es estabelecidas, podem ser reusadas
-probe.jsp.datasources.help.busy=n\u00famero de conex\u00f5es ocupadas, n\u00e3o podem ser reusadas
-probe.jsp.datasources.list.col.application=Aplica\u00e7\u00e3o
-probe.jsp.datasources.list.col.auth=Autentica\u00e7\u00e3o
-probe.jsp.datasources.list.col.busy=O
-probe.jsp.datasources.list.col.description=Descri\u00e7\u00e3o
-probe.jsp.datasources.list.col.established=E
-probe.jsp.datasources.list.col.linkTo=Lnk
-probe.jsp.datasources.list.col.max=M
-probe.jsp.datasources.list.col.reset.alt=resetar
-probe.jsp.datasources.list.col.resource=Recurso
-probe.jsp.datasources.list.col.type=Tipo
-probe.jsp.datasources.list.col.url=URL
-probe.jsp.datasources.list.col.usage=Uso
-probe.jsp.datasources.list.col.user=Usu\u00e1rio
-probe.jsp.datasources.list.misconfigured.alt=erro
-probe.jsp.datasources.opt.groupByJdbcUrl=agrupar por url jdbc
-
-probe.jsp.deployment.war.success={0} foi deployada
-probe.jsp.deployment.compilationDetails=Ver detalhes de compila\u00e7\u00e3o
-probe.jsp.deployment.s1.compile.label=Pr\u00e9-compilar p\u00e1ginas JSP depois do deploy (pode levar alguns minutos)
-probe.jsp.deployment.s1.description=Fazer upload de um arquivo .war. Se o nome do contexto n\u00e3o for especificado, o nome do arquivo ser\u00e1 usado. Quando estiver enviando arquivos .war contendo o META-INF/context.xml, por favor tenha certeza que o contexto tem o mesmo valor para o atributo "path", caso contr\u00e1rio o Tomcat 5.0.x se confundir\u00e1
-probe.jsp.deployment.s1.discard.label=Descartar o diret\u00f3rio "work" se existir
-probe.jsp.deployment.s1.file.label=Selecione um arquivo .war para fazer upload
-probe.jsp.deployment.s1.submit=Deploy
-probe.jsp.deployment.s1.title=Fazer upload de aplica\u00e7\u00e3o (simples)
-probe.jsp.deployment.s1.update.label=Atualizar aplica\u00e7\u00e3o se j\u00e1 estiver deployada
-probe.jsp.deployment.s2.context.label=Nome do contexto (ex. /teste)
-probe.jsp.deployment.s2.description=Use est\u00e1 op\u00e7\u00e3o de voc\u00ea tiver criado um arquivo .xml de contexto em %CATALINA_BASE%/conf/Catalina/localhost/. Assume-se que o nome do contexto \u00e9 o nome do arquivo .xml. Por exemplo, contexto "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml. NOTA: O Tomcat 5.0.x requer que o arquivo .xml contenha um atributo "path"!
-probe.jsp.deployment.s2.title=Deployar por nome de contexto (avan\u00e7ado)
-
-probe.jsp.follow.h3.fileContent=Conte\u00fado do arquivo
-probe.jsp.follow.h3.fileInfo=Informa\u00e7\u00f5es do arquivo
-#probe.jsp.follow.h3.sources=Logging sources
-probe.jsp.follow.loading=Carregando...
-probe.jsp.follow.menu.back=voltar \u00e0 lista de arquivos de log
-probe.jsp.follow.menu.clear=limpar buffer
-probe.jsp.follow.menu.download=download
-probe.jsp.follow.menu.nowrap=sem quebra de linha autom\u00e1tica
-probe.jsp.follow.menu.pause=pausar tailing
-probe.jsp.follow.menu.resume=iniciar tailing
-probe.jsp.follow.menu.wrap=quebra de linha autom\u00e1tica
-probe.jsp.follow.menu.zoomin=dar zoom
-probe.jsp.follow.menu.zoomout=retirar zoom
-probe.jsp.followed_file_info.fileName=Nome do arquivo:
-probe.jsp.followed_file_info.lastModified=\u00daltima modifica\u00e7\u00e3o:
-probe.jsp.followed_file_info.size=Tamanho:
-
-probe.jsp.jsps.col.lastmodified=\u00daltima modifica\u00e7\u00e3o
-probe.jsp.jsps.col.message=Mensagem
-probe.jsp.jsps.col.name=Nome do JSP
-probe.jsp.jsps.col.size=Tamanho
-probe.jsp.jsps.col.status=Status
-probe.jsp.jsps.notfound=Esta aplica\u00e7\u00e3o n\u00e3o possui arquivos JSP
-probe.jsp.jsps.opt.compile=Compilar selecionados
-probe.jsp.jsps.opt.compileall=Compilar todos
-probe.jsp.jsps.opt.discardscratch=descartar o diret\u00f3rio "work"
-probe.jsp.jsps.opt.toggleall=Marcar/Desmarcar todos
-probe.jsp.jsps.status.compiled=Compilado
-probe.jsp.jsps.status.failed=FALHOU
-probe.jsp.jsps.status.outdated=Desatualizado
-
-probe.jsp.logs.col.app=Aplica\u00e7\u00e3o
-probe.jsp.logs.col.class=Classe
-probe.jsp.logs.col.file=Nome do arquivo
-#probe.jsp.logs.col.level=Level
-probe.jsp.logs.col.modified=Modificado
-probe.jsp.logs.col.name=Nome
-probe.jsp.logs.col.size=Tamanho
-probe.jsp.logs.col.type=Tipo
-probe.jsp.logs.download.alt=download
-probe.jsp.logs.hideapps=exibir somente existentes
-probe.jsp.logs.showapps=exibir todos
-probe.jsp.logs_notSupported.message=Sua M\u00e1quina Virtual Java {0} {1} n\u00e3o suporta a API de reflection da SUN totalmente - sun.reflect.ReflectionFactory. A funcionalidade de navega\u00e7\u00e3o de log est\u00e1 desabilitada.
-
-probe.jsp.memory.advise.finalization=Sugerir finaliza\u00e7\u00e3o
-probe.jsp.memory.advise.gc=Sugerir GC
-probe.jsp.memory.col.committed=Alocada
-probe.jsp.memory.col.group=Grupo
-probe.jsp.memory.col.initial=Inicial
-probe.jsp.memory.col.max=M\u00e1ximo
-probe.jsp.memory.col.name=Nome
-probe.jsp.memory.col.plot=Gr\u00e1fico
-probe.jsp.memory.col.usageScore=Contagem de uso
-probe.jsp.memory.col.used=Usada
-probe.jsp.memory.h3.charts=Hist\u00f3rico de uso de mem\u00f3ria
-probe.jsp.memory.h3.table=Uso corrente de mem\u00f3ria
-probe.jsp.memory.loading=Carregando...
-probe.jsp.memory.usage.title=Uso {0}%
-probe.jsp.memory.notAvailable=Esta p\u00e1gina requer o Agente JMX Java 5 ativo. Para habilitar o Agente JMX, por favor adicione "-Dcom.sun.management.jmxremote" \u00e0 linha de comando java ou \u00e0 vari\u00e1vel de ambiente $JAVA_OPTS. Se voc\u00ea usa um JDK IBM, por favor adicione estas propriedades: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
-
-probe.jsp.menu.applications=Aplica\u00e7\u00f5es
-probe.jsp.menu.cluster=Cluster
-probe.jsp.menu.connectors=Conectores
-probe.jsp.menu.datasources=Data Sources
-probe.jsp.menu.deployment=Deployment
-probe.jsp.menu.logs=Logs
-probe.jsp.menu.memory=Mem\u00f3ria
-probe.jsp.menu.quickcheck=Checagem r\u00e1pida
-probe.jsp.menu.sysinfo=Sistema
-probe.jsp.menu.threads=Threads
-
-probe.jsp.noaccess=Voc\u00ea n\u00e3o possui privil\u00e9gios suficientes para acessar esta p\u00e1gina. Por favor, use a barra de navega\u00e7\u00e3o para acessar outra \u00e1rea ou clique no bot\u00e3o "voltar" do seu browser.
-probe.jsp.noaccess.ajax=Voc\u00ea n\u00e3o possui privil\u00e9gios suficientes para acessar esta funcionalidade.
-probe.jsp.noaccess.title=403 Forbidden
-probe.jsp.notfound=A p\u00e1gina que voc\u00ea requisitou n\u00e3o existe neste servidor. Por favor, use a barra de navega\u00e7\u00e3o para localizar a \u00e1rea que voc\u00ea quer acessar.
-probe.jsp.notfound.title=404 Not Found
-
-probe.jsp.resources.col.auth=Autentica\u00e7\u00e3o
-probe.jsp.resources.col.linkTo=Link para
-probe.jsp.resources.col.name=Nome
-probe.jsp.resources.col.type=Tipo
-probe.jsp.resources.empty=N\u00e3o h\u00e1 recursos definidos para esta aplica\u00e7\u00e3o
-probe.jsp.resources.info.busy=Ocupado:
-probe.jsp.resources.info.connectionUsage.alt=Uso de conex\u00f5es {0}%
-probe.jsp.resources.info.established=Estabelecidas:
-probe.jsp.resources.info.max=M\u00e1ximo:
-probe.jsp.resources.info.misconfigured=Este recurso est\u00e1 mal-configurado, n\u00e3o informa\u00e7\u00f5es de tempo de execu\u00e7\u00e3o
-probe.jsp.resources.info.misconfigured.alt=sinal de exclama\u00e7\u00e3o
-probe.jsp.resources.info.reset=
-probe.jsp.resources.info.reset.alt=resetar
-probe.jsp.resources.info.title=Informa\u00e7\u00f5es adicionais:
-
-probe.jsp.servlet_source.h3.source=C\u00f3digo de servlet gerado automaticamente
-probe.jsp.servlet_source.opt.jsp=ver JSP
-
-probe.jsp.sessionAttibutes.card.age=Idade:
-probe.jsp.sessionAttibutes.card.application=Aplica\u00e7\u00e3o:
-probe.jsp.sessionAttibutes.card.created=Cria\u00e7\u00e3o:
-probe.jsp.sessionAttibutes.card.expiryTime=Expira\u00e7\u00e3o:
-probe.jsp.sessionAttibutes.card.id=ID:
-probe.jsp.sessionAttibutes.card.idleTime=Tempo de inatividade:
-probe.jsp.sessionAttibutes.card.info=Informa\u00e7\u00f5es:
-probe.jsp.sessionAttibutes.card.lastAccessed=\u00daltimo acesso:
-probe.jsp.sessionAttibutes.card.manager=Gerenciador:
-probe.jsp.sessionAttibutes.card.maxIdleTime=Tempo m\u00e1ximo de inatividade:
-probe.jsp.sessionAttibutes.card.serializable=Serializ\u00e1vel:
-probe.jsp.sessionAttibutes.card.serializable.no=N\u00c3O
-probe.jsp.sessionAttibutes.card.serializable.yes=sim
-probe.jsp.sessionAttibutes.card.size=Tamanho:
-probe.jsp.sessionAttibutes.col.delete=excluir
-probe.jsp.sessionAttibutes.col.delete.title=Excluir atributo
-probe.jsp.sessionAttibutes.col.name=Nome
-probe.jsp.sessionAttibutes.col.serializable=Ser.?
-probe.jsp.sessionAttibutes.col.size=Tamanho
-probe.jsp.sessionAttibutes.col.type=Tipo
-probe.jsp.sessionAttibutes.col.value=Valor
-probe.jsp.sessionAttibutes.h3.attributes=Atributos da sess\u00e3o
-probe.jsp.sessionAttibutes.h3.card=Sess\u00e3o
-probe.jsp.sessionAttibutes.invalidSid=ID da sess\u00e3o \u00e9 inv\u00e1lido ou a sess\u00e3o expirou
-probe.jsp.sessionAttibutes.menu.back=voltar \u00e0 lista de sess\u00f5es
-probe.jsp.sessionAttibutes.menu.destroy=Destruir esta sess\u00e3o
-probe.jsp.sessionAttibutes.noattributes=Esta sess\u00e3o n\u00e3o possui atributos
-
-probe.jsp.sessions.col.age=Idade
-probe.jsp.sessions.col.creationTime=Cria\u00e7\u00e3o
-probe.jsp.sessions.col.expiryTime=Expira\u00e7\u00e3o
-probe.jsp.sessions.col.id=ID
-probe.jsp.sessions.col.applicationName=Aplica\u00e7\u00e3o
-probe.jsp.sessions.col.idleTime=Tempo de inatividade
-probe.jsp.sessions.col.lastAccessTime=\u00daltimo acesso
-probe.jsp.sessions.col.objectCount=N\u00famero de objetos
-probe.jsp.sessions.col.serializable=Ser.
-probe.jsp.sessions.col.size=Tamanho
-probe.jsp.sessions.col.lastIP=\u00daltimo IP
-probe.jsp.sessions.unknown.ip=desconhecido
-probe.jsp.sessions.empty=N\u00e3o h\u00e1 sess\u00f5es nesta aplica\u00e7\u00e3o
-probe.jsp.sessions.menu.expire=Expirar
-probe.jsp.sessions.menu.toggle=Marcar/Desmarcar Todos
-probe.jsp.sessions.status.no=N\u00c3O
-probe.jsp.sessions.status.yes=sim
-#probe.jsp.sessions.opt.all=Show all
-probe.jsp.showsize=estimar tamanhos
-probe.jsp.hidesize=esconder tamanho
-
-probe.jsp.sysinfo.col.name=Nome
-probe.jsp.sysinfo.col.value=Valor
-probe.jsp.sysinfo.container.title=Informa\u00e7\u00f5es do Container
-probe.jsp.sysinfo.memory.adviseGC=Sugerir Garbage Collection
-probe.jsp.sysinfo.memory.free=Livre:
-probe.jsp.sysinfo.memory.max=M\u00e1ximo:
-probe.jsp.sysinfo.memory.title=Utiliza\u00e7\u00e3o de mem\u00f3ria
-probe.jsp.sysinfo.memory.total=Total:
-probe.jsp.sysinfo.memory.usage=Uso corrente de mem\u00f3ria
-probe.jsp.sysinfo.memory.usage.alt=Barra de uso de mem\u00f3ria
-probe.jsp.sysinfo.os.applicationBase=Base de aplica\u00e7\u00f5es:
-probe.jsp.sysinfo.os.catalinaBase=catalina.base:
-probe.jsp.sysinfo.os.catalinaHome=catalina.home:
-probe.jsp.sysinfo.os.configBase=Base de configura\u00e7\u00f5es:
-probe.jsp.sysinfo.os.container=Container:
-probe.jsp.sysinfo.os.currentTime=Hor\u00e1rio:
-probe.jsp.sysinfo.os.jvm=JVM:
-probe.jsp.sysinfo.os.name=SO:
-probe.jsp.sysinfo.os.processors=Processadores:
-probe.jsp.sysinfo.os.title=Informa\u00e7\u00f5es do SO
-probe.jsp.sysinfo.os.workingDir=Diret\u00f3rio de trabalho:
-probe.jsp.sysinfo.sysproperties.title=Propriedades de sistema
-
-probe.jsp.threadpools.currentThreadCount=N\u00famero de threads
-probe.jsp.threadpools.currentThreadsBusy=N\u00famero de threads ocupados
-probe.jsp.threadpools.maxSpareThreads=N\u00famero m\u00e1ximo de threads sobressalentes
-probe.jsp.threadpools.maxThreads=N\u00famero m\u00e1ximo de threads
-probe.jsp.threadpools.menu.threads=Threads rodando
-probe.jsp.threadpools.minSpareThreads=N\u00famero m\u00ednimo de threads sobressalentes
-probe.jsp.threadpools.name=Nome
-
-probe.jsp.threads.col.application=Aplica\u00e7\u00e3o
-probe.jsp.threads.col.classLoader=Class loader
-probe.jsp.threads.col.daemon=D
-probe.jsp.threads.col.groupName=Grupo
-probe.jsp.threads.col.interrupted=I
-probe.jsp.threads.col.name=Nome
-probe.jsp.threads.col.priority=P
-probe.jsp.threads.col.runnableClass=Runnable
-probe.jsp.threads.col.threadClass=Thread class
-probe.jsp.threads.col.id=ID
-probe.jsp.threads.col.execPoint=Ponto de execu\u00e7\u00e3o
-probe.jsp.threads.col.state=Estado
-probe.jsp.threads.col.inNative=Nativo
-probe.jsp.threads.col.suspended=Susp.
-probe.jsp.threads.col.waitedCount=NE
-probe.jsp.threads.col.blockedCount=NB
-probe.jsp.threads.help.priority=prioridade do thread, quanto maior o n\u00famero maior a prioridade
-probe.jsp.threads.help.daemon=o thread \u00e9 um daemon
-probe.jsp.threads.help.interrupted=o thread foi interrompido
-probe.jsp.threads.help.inNative=true se o thread estiver executando c\u00f3digo nativo
-probe.jsp.threads.help.suspended=o thread est\u00e1 suspenso
-probe.jsp.threads.help.waitedCount="n\u00famero de esperas" - n\u00famero de vezes que o thread ficou esperando alguma coisa
-probe.jsp.threads.help.blockedCount="n\u00famero de bloqueios" - n\u00famero de vezes que o thread foi bloqueado
-probe.jsp.threads.info.loading=Carregando...
-probe.jsp.threads.info.unavailable=URL de informa\u00e7\u00f5es n\u00e3o est\u00e1 dispon\u00edvel
-probe.jsp.threads.killmsg=Matar threads indiscriminadamente pode desestabilizar a JVM. Voc\u00ea tem certeza que quer parar {0}?
-probe.jsp.threads.menu.threadpools=Thread pools
-probe.jsp.threads.stop.alt=parar
-
-probe.jsp.title.app.attributes={0} - atributos de contexto
-probe.jsp.title.applications=Aplica\u00e7\u00f5es instaladas
-probe.jsp.title.cluster=Status do cluster
-probe.jsp.title.connectors=Conectores
-probe.jsp.title.dataSourceGroups=Data sources agrupados por url jdbc
-probe.jsp.title.datasources=Data Sources dispon\u00edveis
-probe.jsp.title.deployment=Deploy de aplica\u00e7\u00e3o
-probe.jsp.title.follow=Visualiza\u00e7\u00e3o de Log
-probe.jsp.title.jsps={0} - JSPs deployados
-probe.jsp.title.logs=Logs
-probe.jsp.title.logs_notSupported=N\u00e3o suportado
-probe.jsp.title.memory=Uso de mem\u00f3ria da JVM
-probe.jsp.title.quickcheck=Chacagem r\u00e1pida
-probe.jsp.title.resources={0} - recursos
-probe.jsp.title.servlet_source=C\u00f3digo-fonte de servlet gerado
-probe.jsp.title.sessionAttibutes=Atributos de sess\u00e3o
-probe.jsp.title.sessions={0} - sess\u00f5es
-probe.jsp.title.sessions.all=Sess\u00f5es
-probe.jsp.title.sysinfo=Informa\u00e7\u00f5es do sistema
-probe.jsp.title.threadpools=Thread pools
-probe.jsp.title.threads=Threads rodando
-probe.jsp.title.viewsource={0} - Ver c\u00f3digo-fonte
-probe.jsp.uptime=RODANDO por {0} dias {1} horas e {2} minutos
-probe.jsp.version=Vers\u00e3o {0} rodando em {1}
-
-probe.jsp.viewsource.appname=Nome da aplica\u00e7\u00e3o:
-probe.jsp.viewsource.encoding=Encoding:
-probe.jsp.viewsource.filename=Nome do arquivo:
-probe.jsp.viewsource.h3.info=Informa\u00e7\u00f5es do JSP
-probe.jsp.viewsource.h3.source=C\u00f3digo-fonte do JSP
-probe.jsp.viewsource.lastmodified=\u00daltima modifica\u00e7\u00e3o:
-probe.jsp.viewsource.notfound=Infelizmente voc\u00ea n\u00e3o pode visualizar o conte\u00fado deste arquivo. Por favor, volte e selecione um arquivo da lista.
-probe.jsp.viewsource.opt.back=voltar \u00e0 lista de JSPs
-probe.jsp.viewsource.opt.compile=compilar
-probe.jsp.viewsource.opt.viewServlet=visualizar o servlet gerado
-probe.jsp.viewsource.size=Tamanho:
-probe.jsp.viewsource.state=Estado:
-
-probe.jsp.wrongparams=Voc\u00ea passou par\u00e2metros inv\u00e1lidos para esta p\u00e1gina.
-probe.jsp.wrongsvrversion=Esta funcionalidade n\u00e3o est\u00e1 implementada em {0}
-probe.jsp.zoomedchart.back=voltar aos grupos de gr\u00e1ficos
-probe.jsp.zoomedchart.information=Voc\u00ea pode usar a barra para alterar o tamanho da imagem de acordo com a resolu\u00e7\u00e3o do seu monitor. O gr\u00e1fico ser\u00e1 atualizado automaticamente a cada {0} segundos.
-
-probe.src.contextAction.cannotActOnSelf=N\u00e3o \u00e9 poss\u00edvel parar/iniciar/desinstalar est\u00e1 aplica\u00e7\u00e3o
-probe.src.contextDoesntExist=Contexto {0} n\u00e3o existe
-probe.src.deploy.context.failure=O deploy de {0} falhou
-probe.src.deploy.context.success=Aplica\u00e7\u00e3o deployada de {0}
-probe.src.deploy.exploded.success={0} foi instalada com sucesso em {1}
-probe.src.deploy.war.alreadyExists=Contexto {0} j\u00e1 est\u00e1 em uso
-probe.src.deploy.war.failure=Houve um erro levantado pelo Tomcat durante o deploy: "{0}". Isto n\u00e3o significa necessariamente que sua aplica\u00e7\u00e3o n\u00e3o foi instalada. Por favor, verifique o status na lista de aplica\u00e7\u00f5es
-probe.src.deploy.war.notWar.failure=Deploy falhou. O nome do arquivo deve terminar com .war
-probe.src.deploy.war.notinstalled={0} n\u00e3o foi instalado
-probe.src.deploy.war.uploadfailure=Houve um erro durante o upload do arquivo: {0}
-probe.src.reset.datasource.c3p0=Este datasource n\u00e3o pode ser resetado
-probe.src.reset.datasource.notfound=Recurso {0} n\u00e3o existe
-
-probe.jsp.title.wrapper=Java Service Wrapper
-probe.jsp.wrapper.not_available=Esta JVM n\u00e3o \u00e9 controlado pelo Java Service Wrapper
-probe.jsp.wrapper.menu.restart=reiniciar a JVM
-probe.jsp.wrapper.menu.stop=parar a JVM
-probe.jsp.wrapper.menu.thread_dump=Requisitar thread dump
-probe.jsp.wrapper.h3.info=Informa\u00e7\u00f5es do Wrapper
-probe.jsp.wrapper.h3.props=Propriedades do Wrapper
-probe.jsp.wrapper.confirm.restart=Voc\u00ea tem certeza que quer reiniciar a JVM?
-probe.jsp.wrapper.confirm.stop=A JVM n\u00e3o pode ser iniciada novamente pelo Probe. Voc\u00ea tem certeza que quer parar a JVM?
-probe.jsp.wrapper.jvm.stopping=Parada da JVM em progresso. Se voc\u00ea precisar inici\u00e1-la novamente, voc\u00ea deve faz\u00ea-lo via linha de comando.
-probe.jsp.wrapper.jvm.restarting=Reinicializa\u00e7\u00e3o da JVM em progresso. Isto pode levar alguns minutos.
-probe.jsp.wrapper.jvm.thread_dump=Thread Dump requisitado. Normalmente, voc\u00ea pode encontr\u00e1-lo no arquivo de log do Wrapper.
-
-probe.jsp.wrapper.user=Usu\u00e1rio:
-probe.jsp.wrapper.interactive_user=Usu\u00e1rio interativo:
-probe.jsp.wrapper.java_pid=PID da JVM:
-probe.jsp.wrapper.pid=PID do Wrapper:
-probe.jsp.wrapper.service=Rodando como servi\u00e7o:
-probe.jsp.wrapper.debug=Debug habilitado:
-probe.jsp.wrapper.version=Vers\u00e3o do Wrapper:
-
-probe.jsp.decorator.system.title=Sistema
-probe.jsp.decorator.system.overview=Vis\u00e3o geral
-probe.jsp.decorator.system.memory=Utiliza\u00e7\u00e3o de mem\u00f3ria
-probe.jsp.decorator.system.props=Propriedades de sistema
-probe.jsp.decorator.system.os=Informa\u00e7\u00f5es do SO
-probe.jsp.decorator.system.wrapper=Controle do Wrapper
-
-probe.jsp.os.h3.information=Informa\u00e7\u00f5es do SO
-probe.jsp.os.h3.charts=Gr\u00e1ficos hist\u00f3ricos
-probe.jsp.os.chart.cpu=Uso de CPU da JVM (%)
-probe.jsp.os.chart.cpu.alt=Gr\u00e1fico de uso de CPU da JVM
-probe.jsp.os.chart.cpu.legend=Uso de CPU
-probe.jsp.os.chart.memory=Uso de mem\u00f3ria do SO & JVM (KB)
-probe.jsp.os.chart.memory.alt=Gr\u00e1fico de uso de mem\u00f3ria f\u00edsica do OS & JVM
-probe.jsp.os.chart.memory.legend.total=uso total
-probe.jsp.os.chart.memory.legend.jvm=uso pela JVM
-probe.jsp.os.chart.swap=Uso do swap (KB)
-probe.jsp.os.chart.swap.alt=Gr\u00e1fico de uso do swap
-probe.jsp.os.chart.swap.legend=uso do swap
-#probe.jsp.os.chart.fd=File descriptors
-#probe.jsp.os.chart.fd.alt=File descriptors chart
-#probe.jsp.os.chart.fd.legend.open=open file descriptors
-#probe.jsp.os.chart.fd.legend.max=max file descriptors
-probe.jsp.os.card.name=Nome do SO:
-probe.jsp.os.card.version=Vers\u00e3o do SO:
-probe.jsp.os.card.processors=Processadores:
-probe.jsp.os.card.totalMemory=RAM total:
-probe.jsp.os.card.freeMemory=RAM livre:
-probe.jsp.os.card.committedVirtualMemory=Mem\u00f3ria alocada pela JVM:
-probe.jsp.os.card.totalSwap=Swap total:
-probe.jsp.os.card.freeSwap=Swap livre:
-
-probe.jsp.title.testDataSource={0} -> {1}
-probe.src.dataSourceTest.resource.lookup.failure=Data source {0} n\u00e3o existe
-probe.src.dataSourceTest.connection.failure=N\u00e3o \u00e9 poss\u00edvel estabelecer uma conex\u00e3o ao banco de dados. {0}
-probe.src.dataSourceTest.connection.success=Conex\u00e3o ao banco de dados aberta
-probe.src.dataSourceTest.sql.required=SQL \u00e9 obrigat\u00f3ria
-probe.src.dataSourceTest.sql.failure=Ocorreu um erro durante a execu\u00e7\u00e3o da query. {0}
-probe.src.dataSourceTest.sql.null=NULL
-probe.src.dataSourceTest.cachedResultSet.failure=N\u00e3o \u00e9 poss\u00edvel recuperar um result set cacheado
-probe.jsp.dataSourceTest.help=Esta tela pode ajud\u00e1-lo a testar a conectividade de seu data source.\
-Testar a conex\u00e3o verifica se uma conex\u00e3o pode ser estabelecida e exibe algumas informa\u00e7\u00f5es do banco de dados.\
-Executar SQL executa uma query SQL contra o banco de dados.\
-Voc\u00ea pode ver a sa\u00edda da opera\u00e7\u00e3o ou uma mensagem de erro na parte inferior da tela.\
-Exibir hist\u00f3rico exibe uma lista com as queries que voc\u00ea executou.\
-Por favor, considere usar Exibir op\u00e7\u00f5es para limitar o n\u00famero de registros retornados pelas suas queries para n\u00e3o exaurir os recursos do sistema.
-probe.jsp.dataSourceTest.menu.back=voltar \u00e0 lista de data sources
-probe.jsp.dataSourceTest.menu.connect=Testar a conex\u00e3o
-probe.jsp.dataSourceTest.menu.execute=Executar SQL (Ctrl+Enter)
-probe.jsp.dataSourceTest.menu.showHistory=Exibir hist\u00f3rico (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.hideHistory=Esconder hist\u00f3rico (Ctrl+Down)
-probe.jsp.dataSourceTest.menu.showOptions=Exibir op\u00e7\u00f5es (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.hideOptions=Esconder op\u00e7\u00f5es (Ctrl+Up)
-probe.jsp.dataSourceTest.menu.wrap=quebra de linha autom\u00e1tica
-probe.jsp.dataSourceTest.menu.nowrap=sem quebra de linha autom\u00e1tica
-probe.jsp.dataSourceTest.menu.abbreviations=Ajuda!
-probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit habilitado)
-probe.jsp.dataSourceTest.sqlForm.maxRows.label=Regitros a recuperar
-probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Registros por p\u00e1gina
-probe.jsp.dataSourceTest.sqlForm.historySize.label=Tamanho do hist\u00f3rico
-probe.jsp.dataSourceTest.h3.results=Resultados da query
-probe.jsp.dataSourceTest.results.rowcount={0} registros(s) afetados.
-probe.jsp.dataSourceTest.h3.metaData=Informa\u00e7\u00f5es do banco de dados
-probe.jsp.dataSourceTest.chart.usage.title=Uso de data sources
-probe.jsp.dataSourceTest.dbMetaData.col.propName=Nome
-probe.jsp.dataSourceTest.dbMetaData.col.propValue=Valor
-probe.jsp.dataSourceTest.dbMetaData.dbProdName=Nome do SGBD
-probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Vers\u00e3o do SGBD
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=Nome do driver JDBC
-probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=Vers\u00e3o do driver JDBC
-probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=Vers\u00e3o da JDBC
-probe.jsp.dataSourceTest.results.paging.banner.item_name=registro
-probe.jsp.dataSourceTest.results.paging.banner.items_name=registros
-probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
-probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Exibindo um {0}.
-probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Exibindo todos os {2}.
-probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Exibindo {2} a {3}.
-probe.jsp.dataSourceTest.results.paging.banner.first=Primeiro
-probe.jsp.dataSourceTest.results.paging.banner.prev=Anterior
-probe.jsp.dataSourceTest.results.paging.banner.next=Pr\u00f3ximo
-probe.jsp.dataSourceTest.results.paging.banner.last=\u00daltimo
-probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Ir para a p\u00e1gina {0}
-probe.jsp.dataSourceTest.sql.completed=Sql executado.
-probe.jsp.dataSourceTest.h3.queryHistory=Hist\u00f3rico de queries
-probe.jsp.dataSourceTest.queryHistory.empty=O hist\u00f3rico est\u00e1 vazio
-
-probe.jsp.whois.timeout=N\u00e3o foi poss\u00edvel completar WHOIS. Verifique se WHOIS est\u00e1 bloqueado pela sua rede.
-
-probe.jsp.threadstack.native=c\u00f3digo nativo
-probe.jsp.threadstack.unknown=fonte desconhecida
-probe.jsp.threadstack.unavailable=Pilha de execu\u00e7\u00e3o indispon\u00edvel para este thread
-
-probe.jsp.tooltip.close=fechar
-
-probe.jsp.sessions.h3=Sess\u00f5es
-probe.jsp.sessions.search.h3=Crit\u00e9rio de busca
-probe.jsp.sessions.menu.showSearch=Buscar sess\u00e3o
-probe.jsp.sessions.menu.applySearch=Buscar
-probe.jsp.sessions.menu.clearSearch=Limpar busca
-probe.jsp.sessions.menu.searchHelp=Ajuda
-probe.jsp.sessions.search.help=Os seguintes crit\u00e9rios de busca est\u00e3o dispon\u00edveis para filtrar a lista de sess\u00f5es.\
-O ID da sess\u00e3o satisfaz uma express\u00e3o regular.\
-O \u00daltimo IP cont\u00e9m uma string.\
-O Tempo de inatividade est\u00e1 dentro de um intervalo especificado em segundos.\
-A Idade est\u00e1 dentro de um intervalo especificado em segundos.\
-Os Nomes de atributos satisfazem pelo menos uma express\u00e3o regular de uma lista de express\u00f5es regulares separadas por v\u00edrgula.\
-Este crit\u00e9rio permite encontrar uma sess\u00e3o com um atributo A e/ou um atributo B.
-probe.jsp.sessions.search.sessionId=ID da sess\u00e3o (RegExp)
-probe.jsp.sessions.search.attrName=Nomes de atributos (lista de RegExp)
-probe.jsp.sessions.search.ageFrom=Idade de (sec)
-probe.jsp.sessions.search.ageTo=at\u00e9
-probe.jsp.sessions.search.idleTimeFrom=Tempo de inatividade de (sec)
-probe.jsp.sessions.search.idleTimeTo=at\u00e9
-probe.jsp.sessions.search.lastIP=\u00daltimo IP (substring)
-probe.jsp.sessions.search.results.h3=Resultados da busca
-probe.src.sessions.search.empty=O crit\u00e9rio de busca est\u00e1 vazio
-probe.src.sessions.search.results.empty=Nenhuma sess\u00e3o satisfez o crit\u00e9rio de busca
-probe.src.sessions.search.invalid=Crit\u00e9rio de busca inv\u00e1lido
-probe.src.sessions.search.invalid.sessionId=Express\u00e3o regular para o ID da sess\u00e3o \u00e9 inv\u00e1lida. {0}
-probe.src.sessions.search.invalid.attrName=Express\u00e3o regular para o nome do atributo \u00e9 inv\u00e1lida. {0}
-probe.src.sessions.search.invalid.ageFrom=Valor inicial para idade \u00e9 inv\u00e1lido
-probe.src.sessions.search.invalid.ageTo=Valor final para idade \u00e9 inv\u00e1lido
-probe.src.sessions.search.invalid.idleTimeFrom=Valor inicial para tempo de inatividade \u00e9 inv\u00e1lido
-probe.src.sessions.search.invalid.idleTimeTo=Valor final para tempo de inatividade \u00e9 inv\u00e1lido
-probe.src.sessions.search.invalid.lastIP=Express\u00e3o regular para o \u00faltimo IP \u00e9 inv\u00e1lida. {0}
-
-probe.jsp.app.nav.title=Aplica\u00e7\u00e3o
-probe.jsp.app.nav.summary=Sum\u00e1rio
-probe.jsp.app.nav.sessions=Sess\u00f5es
-probe.jsp.app.nav.attributes=Atributos
-probe.jsp.app.nav.jsps=JSPs
-probe.jsp.app.nav.resources=Recursos
-probe.jsp.app.nav.initParams=Par\u00e2metros
-probe.jsp.app.nav.webxml=Descritor de deploy
-probe.jsp.app.nav.contextxml=Descritor de contexto
-probe.jsp.app.nav.filters=Filtros
-probe.jsp.app.nav.servlets=Servlets
-
-probe.jsp.title.app.initParams={0} - par\u00e2metros de inicializa\u00e7\u00e3o
-probe.jsp.app.initParams.h3.params=Par\u00e2metros de inicializa\u00e7\u00e3o do contexto
-probe.jsp.app.initParams.col.name=Nome
-probe.jsp.app.initParams.col.value=Valor
-probe.jsp.app.initParams.col.source=Fonte
-probe.jsp.app.initParams.source.deplDescr=web.xml
-probe.jsp.app.initParams.source.context=context
-probe.jsp.app.initParams.empty=N\u00e3o h\u00e1 par\u00e2metros de inicializa\u00e7\u00e3o definidos para esta aplica\u00e7\u00e3o
-
-probe.jsp.title.app.viewXMLConf={0} - {1}
-probe.jsp.app.viewXMLConf.notfound= {0} n\u00e3o foi encontrado para esta aplica\u00e7\u00e3o
-probe.jsp.app.viewXMLConf.h3.scr={0} fonte
-probe.src.app.viewxmlconf.webxml.desc=descritor de deploy
-probe.src.app.viewxmlconf.contextxml.desc=descritor de contexto
-
-probe.jsp.title.app.filters={0} - filtros
-probe.jsp.title.app.filtermaps={0} - mapeamentos de filtros
-probe.jsp.app.filtermaps.opt.defs=Defini\u00e7\u00f5es de filtros
-probe.jsp.app.filters.opt.maps=Mapeamentos de filtros
-probe.jsp.app.filters.h3.defs=Filtros
-probe.jsp.app.filtermaps.h3.maps=Mapeamentos de filtros
-probe.jsp.app.filters.col.filterName=Nome
-probe.jsp.app.filters.col.filterClass=Classe
-probe.jsp.app.filters.col.filterDesc=Descri\u00e7\u00e3o
-probe.jsp.app.filtermaps.col.url=Url
-probe.jsp.app.filtermaps.col.filterName=Nome do filtro
-probe.jsp.app.filtermaps.col.servletName=Nome do servlet
-probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
-probe.jsp.app.filters.empty=N\u00e3o h\u00e1 filtros definidos nesta aplica\u00e7\u00e3o
-probe.jsp.app.filtermaps.empty=N\u00e3o h\u00e1 mapeamentos de filtros nesta aplica\u00e7\u00e3o
-
-probe.jsp.title.servlets.all=Servlets
-probe.jsp.title.servlets.app={0} - servlets
-probe.jsp.title.servletmaps.all=Mapeamentos de servlets
-probe.jsp.title.servletmaps.app={0} - mapeamentos de servlets
-probe.jsp.servletmaps.opt.defs=Servlets
-#probe.jsp.servletmaps.opt.all=Show all
-probe.jsp.servlets.opt.maps=Mapeamentos de servlets
-#probe.jsp.servlets.opt.all=Show all
-probe.jsp.servlets.h3.defs=Servlets
-probe.jsp.servletmaps.h3.maps=Mapeamentos de servlets
-probe.jsp.servletmaps.col.url=Url
-probe.jsp.servletmaps.col.servletName=Nome do servlet
-probe.jsp.servlets.col.applicationName=Aplica\u00e7\u00e3o
-probe.jsp.servlets.col.servletName=Nome
-probe.jsp.servletmaps.col.servletClass=Classe do Servlet
-probe.jsp.servlets.col.available=Disponibilidade
-probe.jsp.servlets.col.loadOnStartup=Inicializa\u00e7\u00e3o
-probe.jsp.servlets.empty=N\u00e3o h\u00e1 servlets definidos nesta aplica\u00e7\u00e3o
-probe.jsp.servletmaps.empty=N\u00e3o h\u00e1 mapeamentos de servlets nesta aplica\u00e7\u00e3o
-probe.jsp.servlets.col.minTime=Menor tempo
-probe.jsp.servlets.col.maxTime=Maior tempo
-probe.jsp.servlets.col.processingTime=Tempo de Proc
-probe.jsp.servlets.col.loadTime=Tempo de carga
-probe.jsp.servlets.col.multiThreaded=Multi-Thread
-probe.jsp.servlets.col.requestCount=Requisi\u00e7\u00f5es
-probe.jsp.servlets.col.errorCount=Erros
-
-probe.jsp.title.app.summary={0} - sum\u00e1rio
-probe.jsp.app.summary.application=Nome:
-probe.jsp.app.summary.description=Descri\u00e7\u00e3o:
-probe.jsp.app.summary.distributable=Clusterizada:
-probe.jsp.app.summary.docBase=Doc. base:
-probe.jsp.app.summary.servletVersion=Vers\u00e3o de servlet:
-probe.jsp.app.summary.sessionTimeout=Timeout de sess\u00e3o:
-probe.jsp.app.summary.servletCount=N\u00famero de servlets:
-probe.jsp.app.summary.status=Esta aplica\u00e7\u00e3o est\u00e1
-probe.jsp.app.summary.requestCount=N\u00famero de requisi\u00e7\u00f5es:
-probe.jsp.app.summary.sessionCount=Sess\u00f5es
-probe.jsp.app.summary.sessionAttributeCount=Atributos de sess\u00e3o
-probe.jsp.app.summary.sessionSize=Tamanho da sess\u00e3o
-probe.jsp.app.summary.contextAttributeCount=Atributos de contexto
-probe.jsp.app.summary.serializable=Serializ\u00e1vel
-probe.jsp.app.summary.errorCount=N\u00fameros de erros:
-probe.jsp.app.summary.processingTime=Tempo de processamento:
-probe.jsp.app.summary.minTime=Menor tempo:
-probe.jsp.app.summary.maxTime=Maior tempo:
-probe.jsp.app.summary.avgTime=Tempo m\u00e9dio de resp.:
-probe.jsp.app.summary.h3.static=Informa\u00e7\u00f5es da aplica\u00e7\u00e3o
-probe.jsp.app.summary.h3.runtime=Informa\u00e7\u00f5es de execu\u00e7\u00e3o
-probe.jsp.app.summary.invalidApp=A aplica\u00e7\u00e3o \u00e9 inv\u00e1lida
-probe.jsp.app.summary.runtime.unavailable=Esta aplica\u00e7\u00e3o n\u00e3o est\u00e1 rodando, informa\u00e7\u00f5es indispon\u00edveis
-probe.jsp.app.summary.menu.start=Iniciar
-probe.jsp.app.summary.menu.stop=Parar
-probe.jsp.app.summary.menu.reload=Recarregar
-probe.jsp.app.summary.menu.undeploy=Desinstalar
-probe.jsp.app.summary.menu.goTo=Acessar
-probe.jsp.app.summary.menu.startStats=Iniciar coleta de estat\u00edsticas
-probe.jsp.app.summary.menu.stopStats=Parar coleta de estat\u00edsticas
-probe.jsp.app.summary.undeploy.confirm=Esta opera\u00e7\u00e3o n\u00e3o pode ser desfeita. Voc\u00ea realmente quer DESINSTALAR {0}?
-probe.jsp.app.summary.dataSourceUsageScore=Uso de data sources
-probe.jsp.app.summary.jdbcUsage.title=Uso m\u00e1ximo de conex\u00f5es {0}%
-probe.jsp.app.summary.h3.charts=Gr\u00e1ficos de Estat\u00edsticas
-probe.jsp.app.summary.charts.requests.title=N\u00famero de requisi\u00e7\u00f5es
-probe.jsp.app.summary.charts.avgProcTime.title=Tempo m\u00e9dio de resposta (ms)
-probe.jsp.app.summary.charts.requests.legend=Requisi\u00e7\u00f5es
-probe.jsp.app.summary.charts.errors.legend=Erros
-probe.jsp.app.summary.charts.avgProcTime.legend=Tempo m\u00e9dio de resp.
-
-probe.jsp.title.allappstats=Estat\u00edsticas das Aplica\u00e7\u00f5es
-probe.jsp.allappstats.charts.totalAvgProcTime.legend=Tempo m\u00e9dio de resposta
-probe.jsp.allappstats.charts.totalReq.legend=Requisi\u00e7\u00f5es
-probe.jsp.allappstats.charts.totalAvgProcTime.title=Tempo m\u00e9dio de resposta cumulativo (ms)
-probe.jsp.allappstats.charts.allAppAvgProcTime.title=Tempo m\u00e9dio de resp. por app (ms)
-probe.jsp.allappstats.charts.totalReq.title=Requisi\u00e7\u00f5es cumulativas
-probe.jsp.allappstats.charts.allAppReq.title=Requisi\u00e7\u00f5es por aplica\u00e7\u00e3o (ms)
-probe.jsp.allappstats.h3.charts=Gr\u00e1ficos de Estat\u00edsticas
-
-#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
-#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
-#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
-#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
-
-#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
-#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
+#
+# Licensed under the GPL License. You may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+#
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+# Brazilian Portuguese translation by Leandro de Oliveira (lehphyro@gmail.com)
+probe.jsp.i18n.credit=Tradu\u00e7\u00e3o Portugu\u00eas de Leandro de Oliveira
+#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
+
+probe.jsp.generic.no=n\u00e3o
+probe.jsp.generic.yes=sim
+probe.jsp.generic.abbreviations=O que significam as abrevia\u00e7\u00f5es?
+
+probe.jsp.app.attributes.col.delete=Excluir atributo
+probe.jsp.app.attributes.col.delete.title=Excluir atributo
+probe.jsp.app.attributes.col.name=Nome
+probe.jsp.app.attributes.col.type=Tipo
+probe.jsp.app.attributes.col.value=Valor
+probe.jsp.app.attributes.h3.attributes=Atributos do Servlet context
+probe.jsp.app.attributes.noattributes=N\u00e3o h\u00e1 atributos neste servlet context
+
+probe.jsp.applications.alt.reload=recarregar
+probe.jsp.applications.alt.undeploy=Undeploy
+probe.jsp.applications.col.contextAttributeCount=C.Atrib
+probe.jsp.applications.col.description=Descri\u00e7\u00e3o
+probe.jsp.applications.col.distributable=Cluster?
+probe.jsp.applications.col.jdbcUsage=Uso de Jdbc
+probe.jsp.applications.col.jsp=JSP
+probe.jsp.applications.col.name=Nome
+probe.jsp.applications.col.serializable=Ser.?
+probe.jsp.applications.col.sessionAttributeCount=S.Atrib
+probe.jsp.applications.col.sessionCount=Sess.
+probe.jsp.applications.col.sessionTimeout=Sess.Timeout
+probe.jsp.applications.col.size=Tamanho
+probe.jsp.applications.col.status=Status
+probe.jsp.applications.col.requestCount=Req.
+probe.jsp.applications.help.contextAttributeCount=n\u00famero total de atributos de contexto
+probe.jsp.applications.help.distributable=aplica\u00e7\u00e3o \u00e9 clusterizada
+probe.jsp.applications.help.requestCount=n\u00famero total de requsi\u00e7\u00f5es processadas pelos servlets
+probe.jsp.applications.help.serializable=todos os atributos de sess\u00e3o implementam java.io.Serializable
+probe.jsp.applications.help.sessionAttributeCount=n\u00famero total de atributos de sess\u00e3o
+probe.jsp.applications.help.sessionCount=n\u00famero de sess\u00f5es
+probe.jsp.applications.hidesize=Esconder tamanho das sess\u00f5es
+probe.jsp.applications.jdbcUsage.title=Uso m\u00e1x de conex\u00f5es {0}%
+probe.jsp.applications.jsp.view=visualizar
+probe.jsp.applications.serializable.no=N\u00c3O
+probe.jsp.applications.serializable.yes=sim
+probe.jsp.applications.showsize=estimar tamanho das sess\u00f5es (pode levar algum tempo)
+probe.jsp.applications.status.down=parada
+probe.jsp.applications.status.down.title=Iniciar {0}
+probe.jsp.applications.status.up=rodando
+probe.jsp.applications.title.reload=Recarregar {0}
+probe.jsp.applications.title.status.up=Parar {0}
+probe.jsp.applications.title.undeploy=Undeploy {0}
+probe.jsp.applications.undeploy.confirm=Esta opera\u00e7\u00e3o n\u00e3o pode ser desfeita. Voc\u00ea realmente quer EXCLUIR {0}?
+
+probe.jsp.connectors.information=Informa\u00e7\u00e3o de tr\u00e1fego para todos os conectores dispon\u00edveis. Os gr\u00e1ficos s\u00e3o automaticamente atualizados. Voc\u00ea n\u00e3o precisa ficar nesta p\u00e1gina para os gr\u00e1ficos serem atualizados.
+probe.jsp.connectors.processor.errorCount=N\u00fameros de erros:
+probe.jsp.connectors.processor.maxTime=Tempo m\u00e1ximo:
+probe.jsp.connectors.processor.processingTime=Tempo de processamento:
+probe.jsp.connectors.processor.received=Recebidos:
+probe.jsp.connectors.processor.requestCount=N\u00famero de requisi\u00e7\u00f5es:
+probe.jsp.connectors.processor.sent=Enviados:
+probe.jsp.connectors.proc_time.title=Tempo de processamento (ms) em cada intervalo
+probe.jsp.connectors.requests.title=N\u00famero de requisi\u00e7\u00f5es em cada intervalo
+probe.jsp.connectors.traffic.title=Volume de tr\u00e1fego (em bytes) em cada intervalo
+probe.jsp.connectors.wrk.col.in=ENTRADA
+probe.jsp.connectors.wrk.col.out=SA\u00cdDA
+probe.jsp.connectors.wrk.col.processingTime=Tempo Proc.
+probe.jsp.connectors.wrk.col.remoteAddr=IP remoto
+probe.jsp.connectors.wrk.col.stage=est\u00e1gio
+probe.jsp.connectors.wrk.col.url=URL
+probe.jsp.connectors.wrk.col.thread=Thread
+probe.jsp.connectors.wrk.empty=Nenhum processamento
+probe.jsp.connectors.wrk.stage.endInput=FimEntrada
+probe.jsp.connectors.wrk.stage.endOutput=FimSa\u00edda
+probe.jsp.connectors.wrk.stage.ended=Finalizado
+probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
+probe.jsp.connectors.wrk.stage.new=Novo
+probe.jsp.connectors.wrk.stage.parse=Parseando
+probe.jsp.connectors.wrk.stage.prepare=Preparando
+probe.jsp.connectors.wrk.stage.service=Tratando
+
+probe.jsp.cluster.chart.requests=Requisi\u00e7\u00f5es em intervalos de {0} segundos
+probe.jsp.cluster.chart.traffic=Tr\u00e1fego em intervalos de {0} segundos
+probe.jsp.cluster.h3.info=Informa\u00e7\u00f5es sobre o cluster
+probe.jsp.cluster.h3.members=Membros do cluster
+probe.jsp.cluster.heartbeatFreq=Freq\u00fc\u00eancia de Heartbeat:
+probe.jsp.cluster.heartbeatTimeout=Timeout de Heartbeat:
+probe.jsp.cluster.info=Informa\u00e7\u00f5es:
+probe.jsp.cluster.manager=Gerenciador:
+probe.jsp.cluster.mcastAddress=Endere\u00e7o de Mcast:
+probe.jsp.cluster.mcastBindAddress=Endere\u00e7o de bind Mcast:
+probe.jsp.cluster.mcastBindAddress.all=todos
+probe.jsp.cluster.mcastTTL=Mcast TTL
+probe.jsp.cluster.members.col.address=Endere\u00e7o
+probe.jsp.cluster.members.col.avgMsgSize=Tamanho m\u00e9dio
+probe.jsp.cluster.members.col.closes=Fechamentos
+probe.jsp.cluster.members.col.connectCount=No.Con
+probe.jsp.cluster.members.col.connected=Con.?
+probe.jsp.cluster.members.col.disconnectCount=No.DCon
+probe.jsp.cluster.members.col.failures=Falhas
+probe.jsp.cluster.members.col.inQueueCounter=InQ
+probe.jsp.cluster.members.col.keepAlive=Keep Alive
+probe.jsp.cluster.members.col.openFailures=Falhas de abertura
+probe.jsp.cluster.members.col.opens=Aberturas
+probe.jsp.cluster.members.col.outQueueCounter=OutQ
+probe.jsp.cluster.members.col.queueSize=QSz
+probe.jsp.cluster.members.col.queueSizeBytes=QSzB
+probe.jsp.cluster.members.col.requests=Req.
+probe.jsp.cluster.members.col.resends=Reenvios
+probe.jsp.cluster.members.col.sent=Enviados
+probe.jsp.cluster.members.col.socketLimit=Limite de Socket
+probe.jsp.cluster.members.failing.alt=falhando
+probe.jsp.cluster.members.failing.title=O membro \u00e9 suspeito de falha
+probe.jsp.cluster.members.healthy.alt=sa\u00fade
+probe.jsp.cluster.members.healthy.title=O membro est\u00e1 ok
+probe.jsp.cluster.mode=Modo de replica\u00e7\u00e3o:
+probe.jsp.cluster.name=Nome:
+probe.jsp.cluster.noMembers=N\u00e3o membros de cluster ativos neste n\u00f3
+probe.jsp.cluster.notAvailable=Informa\u00e7\u00f5es sobre cluster s\u00f3 est\u00e1 dispon\u00edvel para o Tomcat 5.5.x com suporte a cluster habilitado.
+probe.jsp.cluster.received=recebidos
+probe.jsp.cluster.receiverAddress=Endere\u00e7o de recebimento:
+probe.jsp.cluster.receiverPort=Porta de recebimento:
+probe.jsp.cluster.sent=enviados
+
+probe.jsp.copyright=Copyright 2009-${copyright}. Tem alguma d\u00favida ou sugest\u00f5es? Nos visite em https://github.com/psi-probe/psi-probe
+
+probe.jsp.dataSourceGroups.empty=N\u00e3o h\u00e1 data sources configurados nesta inst\u00e2ncia
+probe.jsp.dataSourceGroups.information=A tabela abaixo cont\u00e9m o n\u00famero total de conex\u00f5es abertas e potencialmente permitidas ao banco de dados agrupadas pela url jdbc. Esta informa\u00e7\u00e3o pode ajud\u00e1-lo a estimar quantas conex\u00f5es a um banco de dados particular podem ser abertas por recursos jdbc configurados pelo container.
+probe.jsp.dataSourceGroups.jdbcUsage.title=Uso de conex\u00f5es {0}%
+probe.jsp.dataSourceGroups.list.col.busy=Conex\u00f5es em uso
+probe.jsp.dataSourceGroups.list.col.established=Conex\u00f5es estabelecidas
+probe.jsp.dataSourceGroups.list.col.max=M\u00e1ximo de conex\u00f5es
+probe.jsp.dataSourceGroups.list.col.resourceCount=Quantidade de recursos
+probe.jsp.dataSourceGroups.list.col.url=URL
+probe.jsp.dataSourceGroups.list.col.usage=Uso
+probe.jsp.dataSourceGroups.menu.back=Voltar \u00e0 lista de data sources
+
+#probe.jsp.datasources.h3.global=Global Resources
+#probe.jsp.datasources.h3.app=Application Resources
+#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
+#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
+probe.jsp.datasources.empty=N\u00e3o h\u00e1 data sources configurados para esta inst\u00e2ncia do Tomcat
+probe.jsp.datasources.help.max=n\u00famero m\u00e1ximo de conex\u00f5es no pool
+probe.jsp.datasources.help.established=n\u00famero de conex\u00f5es estabelecidas, podem ser reusadas
+probe.jsp.datasources.help.busy=n\u00famero de conex\u00f5es ocupadas, n\u00e3o podem ser reusadas
+probe.jsp.datasources.list.col.application=Aplica\u00e7\u00e3o
+probe.jsp.datasources.list.col.auth=Autentica\u00e7\u00e3o
+probe.jsp.datasources.list.col.busy=O
+probe.jsp.datasources.list.col.description=Descri\u00e7\u00e3o
+probe.jsp.datasources.list.col.established=E
+probe.jsp.datasources.list.col.linkTo=Lnk
+probe.jsp.datasources.list.col.max=M
+probe.jsp.datasources.list.col.reset.alt=resetar
+probe.jsp.datasources.list.col.resource=Recurso
+probe.jsp.datasources.list.col.type=Tipo
+probe.jsp.datasources.list.col.url=URL
+probe.jsp.datasources.list.col.usage=Uso
+probe.jsp.datasources.list.col.user=Usu\u00e1rio
+probe.jsp.datasources.list.misconfigured.alt=erro
+probe.jsp.datasources.opt.groupByJdbcUrl=agrupar por url jdbc
+
+probe.jsp.deployment.war.success={0} foi deployada
+probe.jsp.deployment.compilationDetails=Ver detalhes de compila\u00e7\u00e3o
+probe.jsp.deployment.s1.compile.label=Pr\u00e9-compilar p\u00e1ginas JSP depois do deploy (pode levar alguns minutos)
+probe.jsp.deployment.s1.description=Fazer upload de um arquivo .war. Se o nome do contexto n\u00e3o for especificado, o nome do arquivo ser\u00e1 usado. Quando estiver enviando arquivos .war contendo o META-INF/context.xml, por favor tenha certeza que o contexto tem o mesmo valor para o atributo "path", caso contr\u00e1rio o Tomcat 5.0.x se confundir\u00e1
+probe.jsp.deployment.s1.discard.label=Descartar o diret\u00f3rio "work" se existir
+probe.jsp.deployment.s1.file.label=Selecione um arquivo .war para fazer upload
+probe.jsp.deployment.s1.submit=Deploy
+probe.jsp.deployment.s1.title=Fazer upload de aplica\u00e7\u00e3o (simples)
+probe.jsp.deployment.s1.update.label=Atualizar aplica\u00e7\u00e3o se j\u00e1 estiver deployada
+probe.jsp.deployment.s2.context.label=Nome do contexto (ex. /teste)
+probe.jsp.deployment.s2.description=Use est\u00e1 op\u00e7\u00e3o de voc\u00ea tiver criado um arquivo .xml de contexto em %CATALINA_BASE%/conf/Catalina/localhost/. Assume-se que o nome do contexto \u00e9 o nome do arquivo .xml. Por exemplo, contexto "/joedog" = %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml. NOTA: O Tomcat 5.0.x requer que o arquivo .xml contenha um atributo "path"!
+probe.jsp.deployment.s2.title=Deployar por nome de contexto (avan\u00e7ado)
+
+probe.jsp.follow.h3.fileContent=Conte\u00fado do arquivo
+probe.jsp.follow.h3.fileInfo=Informa\u00e7\u00f5es do arquivo
+#probe.jsp.follow.h3.sources=Logging sources
+probe.jsp.follow.loading=Carregando...
+probe.jsp.follow.menu.back=voltar \u00e0 lista de arquivos de log
+probe.jsp.follow.menu.clear=limpar buffer
+probe.jsp.follow.menu.download=download
+probe.jsp.follow.menu.nowrap=sem quebra de linha autom\u00e1tica
+probe.jsp.follow.menu.pause=pausar tailing
+probe.jsp.follow.menu.resume=iniciar tailing
+probe.jsp.follow.menu.wrap=quebra de linha autom\u00e1tica
+probe.jsp.follow.menu.zoomin=dar zoom
+probe.jsp.follow.menu.zoomout=retirar zoom
+probe.jsp.followed_file_info.fileName=Nome do arquivo:
+probe.jsp.followed_file_info.lastModified=\u00daltima modifica\u00e7\u00e3o:
+probe.jsp.followed_file_info.size=Tamanho:
+
+probe.jsp.jsps.col.lastmodified=\u00daltima modifica\u00e7\u00e3o
+probe.jsp.jsps.col.message=Mensagem
+probe.jsp.jsps.col.name=Nome do JSP
+probe.jsp.jsps.col.size=Tamanho
+probe.jsp.jsps.col.status=Status
+probe.jsp.jsps.notfound=Esta aplica\u00e7\u00e3o n\u00e3o possui arquivos JSP
+probe.jsp.jsps.opt.compile=Compilar selecionados
+probe.jsp.jsps.opt.compileall=Compilar todos
+probe.jsp.jsps.opt.discardscratch=descartar o diret\u00f3rio "work"
+probe.jsp.jsps.opt.toggleall=Marcar/Desmarcar todos
+probe.jsp.jsps.status.compiled=Compilado
+probe.jsp.jsps.status.failed=FALHOU
+probe.jsp.jsps.status.outdated=Desatualizado
+
+probe.jsp.logs.col.app=Aplica\u00e7\u00e3o
+probe.jsp.logs.col.class=Classe
+probe.jsp.logs.col.file=Nome do arquivo
+#probe.jsp.logs.col.level=Level
+probe.jsp.logs.col.modified=Modificado
+probe.jsp.logs.col.name=Nome
+probe.jsp.logs.col.size=Tamanho
+probe.jsp.logs.col.type=Tipo
+probe.jsp.logs.download.alt=download
+probe.jsp.logs.hideapps=exibir somente existentes
+probe.jsp.logs.showapps=exibir todos
+probe.jsp.logs_notSupported.message=Sua M\u00e1quina Virtual Java {0} {1} n\u00e3o suporta a API de reflection da SUN totalmente - sun.reflect.ReflectionFactory. A funcionalidade de navega\u00e7\u00e3o de log est\u00e1 desabilitada.
+
+probe.jsp.memory.advise.finalization=Sugerir finaliza\u00e7\u00e3o
+probe.jsp.memory.advise.gc=Sugerir GC
+probe.jsp.memory.col.committed=Alocada
+probe.jsp.memory.col.group=Grupo
+probe.jsp.memory.col.initial=Inicial
+probe.jsp.memory.col.max=M\u00e1ximo
+probe.jsp.memory.col.name=Nome
+probe.jsp.memory.col.plot=Gr\u00e1fico
+probe.jsp.memory.col.usageScore=Contagem de uso
+probe.jsp.memory.col.used=Usada
+probe.jsp.memory.h3.charts=Hist\u00f3rico de uso de mem\u00f3ria
+probe.jsp.memory.h3.table=Uso corrente de mem\u00f3ria
+probe.jsp.memory.loading=Carregando...
+probe.jsp.memory.usage.title=Uso {0}%
+probe.jsp.memory.notAvailable=Esta p\u00e1gina requer o Agente JMX Java 5 ativo. Para habilitar o Agente JMX, por favor adicione "-Dcom.sun.management.jmxremote" \u00e0 linha de comando java ou \u00e0 vari\u00e1vel de ambiente $JAVA_OPTS. Se voc\u00ea usa um JDK IBM, por favor adicione estas propriedades: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
+
+probe.jsp.menu.applications=Aplica\u00e7\u00f5es
+probe.jsp.menu.cluster=Cluster
+probe.jsp.menu.connectors=Conectores
+probe.jsp.menu.datasources=Data Sources
+probe.jsp.menu.deployment=Deployment
+probe.jsp.menu.logs=Logs
+probe.jsp.menu.memory=Mem\u00f3ria
+probe.jsp.menu.quickcheck=Checagem r\u00e1pida
+probe.jsp.menu.sysinfo=Sistema
+probe.jsp.menu.threads=Threads
+
+probe.jsp.noaccess=Voc\u00ea n\u00e3o possui privil\u00e9gios suficientes para acessar esta p\u00e1gina. Por favor, use a barra de navega\u00e7\u00e3o para acessar outra \u00e1rea ou clique no bot\u00e3o "voltar" do seu browser.
+probe.jsp.noaccess.ajax=Voc\u00ea n\u00e3o possui privil\u00e9gios suficientes para acessar esta funcionalidade.
+probe.jsp.noaccess.title=403 Forbidden
+probe.jsp.notfound=A p\u00e1gina que voc\u00ea requisitou n\u00e3o existe neste servidor. Por favor, use a barra de navega\u00e7\u00e3o para localizar a \u00e1rea que voc\u00ea quer acessar.
+probe.jsp.notfound.title=404 Not Found
+
+probe.jsp.resources.col.auth=Autentica\u00e7\u00e3o
+probe.jsp.resources.col.linkTo=Link para
+probe.jsp.resources.col.name=Nome
+probe.jsp.resources.col.type=Tipo
+probe.jsp.resources.empty=N\u00e3o h\u00e1 recursos definidos para esta aplica\u00e7\u00e3o
+probe.jsp.resources.info.busy=Ocupado:
+probe.jsp.resources.info.connectionUsage.alt=Uso de conex\u00f5es {0}%
+probe.jsp.resources.info.established=Estabelecidas:
+probe.jsp.resources.info.max=M\u00e1ximo:
+probe.jsp.resources.info.misconfigured=Este recurso est\u00e1 mal-configurado, n\u00e3o informa\u00e7\u00f5es de tempo de execu\u00e7\u00e3o
+probe.jsp.resources.info.misconfigured.alt=sinal de exclama\u00e7\u00e3o
+probe.jsp.resources.info.reset=
+probe.jsp.resources.info.reset.alt=resetar
+probe.jsp.resources.info.title=Informa\u00e7\u00f5es adicionais:
+
+probe.jsp.servlet_source.h3.source=C\u00f3digo de servlet gerado automaticamente
+probe.jsp.servlet_source.opt.jsp=ver JSP
+
+probe.jsp.sessionAttibutes.card.age=Idade:
+probe.jsp.sessionAttibutes.card.application=Aplica\u00e7\u00e3o:
+probe.jsp.sessionAttibutes.card.created=Cria\u00e7\u00e3o:
+probe.jsp.sessionAttibutes.card.expiryTime=Expira\u00e7\u00e3o:
+probe.jsp.sessionAttibutes.card.id=ID:
+probe.jsp.sessionAttibutes.card.idleTime=Tempo de inatividade:
+probe.jsp.sessionAttibutes.card.info=Informa\u00e7\u00f5es:
+probe.jsp.sessionAttibutes.card.lastAccessed=\u00daltimo acesso:
+probe.jsp.sessionAttibutes.card.manager=Gerenciador:
+probe.jsp.sessionAttibutes.card.maxIdleTime=Tempo m\u00e1ximo de inatividade:
+probe.jsp.sessionAttibutes.card.serializable=Serializ\u00e1vel:
+probe.jsp.sessionAttibutes.card.serializable.no=N\u00c3O
+probe.jsp.sessionAttibutes.card.serializable.yes=sim
+probe.jsp.sessionAttibutes.card.size=Tamanho:
+probe.jsp.sessionAttibutes.col.delete=excluir
+probe.jsp.sessionAttibutes.col.delete.title=Excluir atributo
+probe.jsp.sessionAttibutes.col.name=Nome
+probe.jsp.sessionAttibutes.col.serializable=Ser.?
+probe.jsp.sessionAttibutes.col.size=Tamanho
+probe.jsp.sessionAttibutes.col.type=Tipo
+probe.jsp.sessionAttibutes.col.value=Valor
+probe.jsp.sessionAttibutes.h3.attributes=Atributos da sess\u00e3o
+probe.jsp.sessionAttibutes.h3.card=Sess\u00e3o
+probe.jsp.sessionAttibutes.invalidSid=ID da sess\u00e3o \u00e9 inv\u00e1lido ou a sess\u00e3o expirou
+probe.jsp.sessionAttibutes.menu.back=voltar \u00e0 lista de sess\u00f5es
+probe.jsp.sessionAttibutes.menu.destroy=Destruir esta sess\u00e3o
+probe.jsp.sessionAttibutes.noattributes=Esta sess\u00e3o n\u00e3o possui atributos
+
+probe.jsp.sessions.col.age=Idade
+probe.jsp.sessions.col.creationTime=Cria\u00e7\u00e3o
+probe.jsp.sessions.col.expiryTime=Expira\u00e7\u00e3o
+probe.jsp.sessions.col.id=ID
+probe.jsp.sessions.col.applicationName=Aplica\u00e7\u00e3o
+probe.jsp.sessions.col.idleTime=Tempo de inatividade
+probe.jsp.sessions.col.lastAccessTime=\u00daltimo acesso
+probe.jsp.sessions.col.objectCount=N\u00famero de objetos
+probe.jsp.sessions.col.serializable=Ser.
+probe.jsp.sessions.col.size=Tamanho
+probe.jsp.sessions.col.lastIP=\u00daltimo IP
+probe.jsp.sessions.unknown.ip=desconhecido
+probe.jsp.sessions.empty=N\u00e3o h\u00e1 sess\u00f5es nesta aplica\u00e7\u00e3o
+probe.jsp.sessions.menu.expire=Expirar
+probe.jsp.sessions.menu.toggle=Marcar/Desmarcar Todos
+probe.jsp.sessions.status.no=N\u00c3O
+probe.jsp.sessions.status.yes=sim
+#probe.jsp.sessions.opt.all=Show all
+probe.jsp.showsize=estimar tamanhos
+probe.jsp.hidesize=esconder tamanho
+
+probe.jsp.sysinfo.col.name=Nome
+probe.jsp.sysinfo.col.value=Valor
+probe.jsp.sysinfo.container.title=Informa\u00e7\u00f5es do Container
+probe.jsp.sysinfo.memory.adviseGC=Sugerir Garbage Collection
+probe.jsp.sysinfo.memory.free=Livre:
+probe.jsp.sysinfo.memory.max=M\u00e1ximo:
+probe.jsp.sysinfo.memory.title=Utiliza\u00e7\u00e3o de mem\u00f3ria
+probe.jsp.sysinfo.memory.total=Total:
+probe.jsp.sysinfo.memory.usage=Uso corrente de mem\u00f3ria
+probe.jsp.sysinfo.memory.usage.alt=Barra de uso de mem\u00f3ria
+probe.jsp.sysinfo.os.applicationBase=Base de aplica\u00e7\u00f5es:
+probe.jsp.sysinfo.os.catalinaBase=catalina.base:
+probe.jsp.sysinfo.os.catalinaHome=catalina.home:
+probe.jsp.sysinfo.os.configBase=Base de configura\u00e7\u00f5es:
+probe.jsp.sysinfo.os.container=Container:
+probe.jsp.sysinfo.os.currentTime=Hor\u00e1rio:
+probe.jsp.sysinfo.os.jvm=JVM:
+probe.jsp.sysinfo.os.name=SO:
+probe.jsp.sysinfo.os.processors=Processadores:
+probe.jsp.sysinfo.os.title=Informa\u00e7\u00f5es do SO
+probe.jsp.sysinfo.os.workingDir=Diret\u00f3rio de trabalho:
+probe.jsp.sysinfo.sysproperties.title=Propriedades de sistema
+
+probe.jsp.threadpools.currentThreadCount=N\u00famero de threads
+probe.jsp.threadpools.currentThreadsBusy=N\u00famero de threads ocupados
+probe.jsp.threadpools.maxSpareThreads=N\u00famero m\u00e1ximo de threads sobressalentes
+probe.jsp.threadpools.maxThreads=N\u00famero m\u00e1ximo de threads
+probe.jsp.threadpools.menu.threads=Threads rodando
+probe.jsp.threadpools.minSpareThreads=N\u00famero m\u00ednimo de threads sobressalentes
+probe.jsp.threadpools.name=Nome
+
+probe.jsp.threads.col.application=Aplica\u00e7\u00e3o
+probe.jsp.threads.col.classLoader=Class loader
+probe.jsp.threads.col.daemon=D
+probe.jsp.threads.col.groupName=Grupo
+probe.jsp.threads.col.interrupted=I
+probe.jsp.threads.col.name=Nome
+probe.jsp.threads.col.priority=P
+probe.jsp.threads.col.runnableClass=Runnable
+probe.jsp.threads.col.threadClass=Thread class
+probe.jsp.threads.col.id=ID
+probe.jsp.threads.col.execPoint=Ponto de execu\u00e7\u00e3o
+probe.jsp.threads.col.state=Estado
+probe.jsp.threads.col.inNative=Nativo
+probe.jsp.threads.col.suspended=Susp.
+probe.jsp.threads.col.waitedCount=NE
+probe.jsp.threads.col.blockedCount=NB
+probe.jsp.threads.help.priority=prioridade do thread, quanto maior o n\u00famero maior a prioridade
+probe.jsp.threads.help.daemon=o thread \u00e9 um daemon
+probe.jsp.threads.help.interrupted=o thread foi interrompido
+probe.jsp.threads.help.inNative=true se o thread estiver executando c\u00f3digo nativo
+probe.jsp.threads.help.suspended=o thread est\u00e1 suspenso
+probe.jsp.threads.help.waitedCount="n\u00famero de esperas" - n\u00famero de vezes que o thread ficou esperando alguma coisa
+probe.jsp.threads.help.blockedCount="n\u00famero de bloqueios" - n\u00famero de vezes que o thread foi bloqueado
+probe.jsp.threads.info.loading=Carregando...
+probe.jsp.threads.info.unavailable=URL de informa\u00e7\u00f5es n\u00e3o est\u00e1 dispon\u00edvel
+probe.jsp.threads.killmsg=Matar threads indiscriminadamente pode desestabilizar a JVM. Voc\u00ea tem certeza que quer parar {0}?
+probe.jsp.threads.menu.threadpools=Thread pools
+probe.jsp.threads.stop.alt=parar
+
+probe.jsp.title.app.attributes={0} - atributos de contexto
+probe.jsp.title.applications=Aplica\u00e7\u00f5es instaladas
+probe.jsp.title.cluster=Status do cluster
+probe.jsp.title.connectors=Conectores
+probe.jsp.title.dataSourceGroups=Data sources agrupados por url jdbc
+probe.jsp.title.datasources=Data Sources dispon\u00edveis
+probe.jsp.title.deployment=Deploy de aplica\u00e7\u00e3o
+probe.jsp.title.follow=Visualiza\u00e7\u00e3o de Log
+probe.jsp.title.jsps={0} - JSPs deployados
+probe.jsp.title.logs=Logs
+probe.jsp.title.logs_notSupported=N\u00e3o suportado
+probe.jsp.title.memory=Uso de mem\u00f3ria da JVM
+probe.jsp.title.quickcheck=Chacagem r\u00e1pida
+probe.jsp.title.resources={0} - recursos
+probe.jsp.title.servlet_source=C\u00f3digo-fonte de servlet gerado
+probe.jsp.title.sessionAttibutes=Atributos de sess\u00e3o
+probe.jsp.title.sessions={0} - sess\u00f5es
+probe.jsp.title.sessions.all=Sess\u00f5es
+probe.jsp.title.sysinfo=Informa\u00e7\u00f5es do sistema
+probe.jsp.title.threadpools=Thread pools
+probe.jsp.title.threads=Threads rodando
+probe.jsp.title.viewsource={0} - Ver c\u00f3digo-fonte
+probe.jsp.uptime=RODANDO por {0} dias {1} horas e {2} minutos
+probe.jsp.version=Vers\u00e3o {0} rodando em {1}
+
+probe.jsp.viewsource.appname=Nome da aplica\u00e7\u00e3o:
+probe.jsp.viewsource.encoding=Encoding:
+probe.jsp.viewsource.filename=Nome do arquivo:
+probe.jsp.viewsource.h3.info=Informa\u00e7\u00f5es do JSP
+probe.jsp.viewsource.h3.source=C\u00f3digo-fonte do JSP
+probe.jsp.viewsource.lastmodified=\u00daltima modifica\u00e7\u00e3o:
+probe.jsp.viewsource.notfound=Infelizmente voc\u00ea n\u00e3o pode visualizar o conte\u00fado deste arquivo. Por favor, volte e selecione um arquivo da lista.
+probe.jsp.viewsource.opt.back=voltar \u00e0 lista de JSPs
+probe.jsp.viewsource.opt.compile=compilar
+probe.jsp.viewsource.opt.viewServlet=visualizar o servlet gerado
+probe.jsp.viewsource.size=Tamanho:
+probe.jsp.viewsource.state=Estado:
+
+probe.jsp.wrongparams=Voc\u00ea passou par\u00e2metros inv\u00e1lidos para esta p\u00e1gina.
+probe.jsp.wrongsvrversion=Esta funcionalidade n\u00e3o est\u00e1 implementada em {0}
+probe.jsp.zoomedchart.back=voltar aos grupos de gr\u00e1ficos
+probe.jsp.zoomedchart.information=Voc\u00ea pode usar a barra para alterar o tamanho da imagem de acordo com a resolu\u00e7\u00e3o do seu monitor. O gr\u00e1fico ser\u00e1 atualizado automaticamente a cada {0} segundos.
+
+probe.src.contextAction.cannotActOnSelf=N\u00e3o \u00e9 poss\u00edvel parar/iniciar/desinstalar est\u00e1 aplica\u00e7\u00e3o
+probe.src.contextDoesntExist=Contexto {0} n\u00e3o existe
+probe.src.deploy.context.failure=O deploy de {0} falhou
+probe.src.deploy.context.success=Aplica\u00e7\u00e3o deployada de {0}
+probe.src.deploy.exploded.success={0} foi instalada com sucesso em {1}
+probe.src.deploy.war.alreadyExists=Contexto {0} j\u00e1 est\u00e1 em uso
+probe.src.deploy.war.failure=Houve um erro levantado pelo Tomcat durante o deploy: "{0}". Isto n\u00e3o significa necessariamente que sua aplica\u00e7\u00e3o n\u00e3o foi instalada. Por favor, verifique o status na lista de aplica\u00e7\u00f5es
+probe.src.deploy.war.notWar.failure=Deploy falhou. O nome do arquivo deve terminar com .war
+probe.src.deploy.war.notinstalled={0} n\u00e3o foi instalado
+probe.src.deploy.war.uploadfailure=Houve um erro durante o upload do arquivo: {0}
+probe.src.reset.datasource.c3p0=Este datasource n\u00e3o pode ser resetado
+probe.src.reset.datasource.notfound=Recurso {0} n\u00e3o existe
+
+probe.jsp.title.wrapper=Java Service Wrapper
+probe.jsp.wrapper.not_available=Esta JVM n\u00e3o \u00e9 controlado pelo Java Service Wrapper
+probe.jsp.wrapper.menu.restart=reiniciar a JVM
+probe.jsp.wrapper.menu.stop=parar a JVM
+probe.jsp.wrapper.menu.thread_dump=Requisitar thread dump
+probe.jsp.wrapper.h3.info=Informa\u00e7\u00f5es do Wrapper
+probe.jsp.wrapper.h3.props=Propriedades do Wrapper
+probe.jsp.wrapper.confirm.restart=Voc\u00ea tem certeza que quer reiniciar a JVM?
+probe.jsp.wrapper.confirm.stop=A JVM n\u00e3o pode ser iniciada novamente pelo Probe. Voc\u00ea tem certeza que quer parar a JVM?
+probe.jsp.wrapper.jvm.stopping=Parada da JVM em progresso. Se voc\u00ea precisar inici\u00e1-la novamente, voc\u00ea deve faz\u00ea-lo via linha de comando.
+probe.jsp.wrapper.jvm.restarting=Reinicializa\u00e7\u00e3o da JVM em progresso. Isto pode levar alguns minutos.
+probe.jsp.wrapper.jvm.thread_dump=Thread Dump requisitado. Normalmente, voc\u00ea pode encontr\u00e1-lo no arquivo de log do Wrapper.
+
+probe.jsp.wrapper.user=Usu\u00e1rio:
+probe.jsp.wrapper.interactive_user=Usu\u00e1rio interativo:
+probe.jsp.wrapper.java_pid=PID da JVM:
+probe.jsp.wrapper.pid=PID do Wrapper:
+probe.jsp.wrapper.service=Rodando como servi\u00e7o:
+probe.jsp.wrapper.debug=Debug habilitado:
+probe.jsp.wrapper.version=Vers\u00e3o do Wrapper:
+
+probe.jsp.decorator.system.title=Sistema
+probe.jsp.decorator.system.overview=Vis\u00e3o geral
+probe.jsp.decorator.system.memory=Utiliza\u00e7\u00e3o de mem\u00f3ria
+probe.jsp.decorator.system.props=Propriedades de sistema
+probe.jsp.decorator.system.os=Informa\u00e7\u00f5es do SO
+probe.jsp.decorator.system.wrapper=Controle do Wrapper
+
+probe.jsp.os.h3.information=Informa\u00e7\u00f5es do SO
+probe.jsp.os.h3.charts=Gr\u00e1ficos hist\u00f3ricos
+probe.jsp.os.chart.cpu=Uso de CPU da JVM (%)
+probe.jsp.os.chart.cpu.alt=Gr\u00e1fico de uso de CPU da JVM
+probe.jsp.os.chart.cpu.legend=Uso de CPU
+probe.jsp.os.chart.memory=Uso de mem\u00f3ria do SO & JVM (KB)
+probe.jsp.os.chart.memory.alt=Gr\u00e1fico de uso de mem\u00f3ria f\u00edsica do OS & JVM
+probe.jsp.os.chart.memory.legend.total=uso total
+probe.jsp.os.chart.memory.legend.jvm=uso pela JVM
+probe.jsp.os.chart.swap=Uso do swap (KB)
+probe.jsp.os.chart.swap.alt=Gr\u00e1fico de uso do swap
+probe.jsp.os.chart.swap.legend=uso do swap
+#probe.jsp.os.chart.fd=File descriptors
+#probe.jsp.os.chart.fd.alt=File descriptors chart
+#probe.jsp.os.chart.fd.legend.open=open file descriptors
+#probe.jsp.os.chart.fd.legend.max=max file descriptors
+probe.jsp.os.card.name=Nome do SO:
+probe.jsp.os.card.version=Vers\u00e3o do SO:
+probe.jsp.os.card.processors=Processadores:
+probe.jsp.os.card.totalMemory=RAM total:
+probe.jsp.os.card.freeMemory=RAM livre:
+probe.jsp.os.card.committedVirtualMemory=Mem\u00f3ria alocada pela JVM:
+probe.jsp.os.card.totalSwap=Swap total:
+probe.jsp.os.card.freeSwap=Swap livre:
+
+probe.jsp.title.testDataSource={0} -> {1}
+probe.src.dataSourceTest.resource.lookup.failure=Data source {0} n\u00e3o existe
+probe.src.dataSourceTest.connection.failure=N\u00e3o \u00e9 poss\u00edvel estabelecer uma conex\u00e3o ao banco de dados. {0}
+probe.src.dataSourceTest.connection.success=Conex\u00e3o ao banco de dados aberta
+probe.src.dataSourceTest.sql.required=SQL \u00e9 obrigat\u00f3ria
+probe.src.dataSourceTest.sql.failure=Ocorreu um erro durante a execu\u00e7\u00e3o da query. {0}
+probe.src.dataSourceTest.sql.null=NULL
+probe.src.dataSourceTest.cachedResultSet.failure=N\u00e3o \u00e9 poss\u00edvel recuperar um result set cacheado
+probe.jsp.dataSourceTest.help=Esta tela pode ajud\u00e1-lo a testar a conectividade de seu data source.\
+Testar a conex\u00e3o verifica se uma conex\u00e3o pode ser estabelecida e exibe algumas informa\u00e7\u00f5es do banco de dados.\
+Executar SQL executa uma query SQL contra o banco de dados.\
+Voc\u00ea pode ver a sa\u00edda da opera\u00e7\u00e3o ou uma mensagem de erro na parte inferior da tela.\
+Exibir hist\u00f3rico exibe uma lista com as queries que voc\u00ea executou.\
+Por favor, considere usar Exibir op\u00e7\u00f5es para limitar o n\u00famero de registros retornados pelas suas queries para n\u00e3o exaurir os recursos do sistema.
+probe.jsp.dataSourceTest.menu.back=voltar \u00e0 lista de data sources
+probe.jsp.dataSourceTest.menu.connect=Testar a conex\u00e3o
+probe.jsp.dataSourceTest.menu.execute=Executar SQL (Ctrl+Enter)
+probe.jsp.dataSourceTest.menu.showHistory=Exibir hist\u00f3rico (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.hideHistory=Esconder hist\u00f3rico (Ctrl+Down)
+probe.jsp.dataSourceTest.menu.showOptions=Exibir op\u00e7\u00f5es (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.hideOptions=Esconder op\u00e7\u00f5es (Ctrl+Up)
+probe.jsp.dataSourceTest.menu.wrap=quebra de linha autom\u00e1tica
+probe.jsp.dataSourceTest.menu.nowrap=sem quebra de linha autom\u00e1tica
+probe.jsp.dataSourceTest.menu.abbreviations=Ajuda!
+probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit habilitado)
+probe.jsp.dataSourceTest.sqlForm.maxRows.label=Regitros a recuperar
+probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Registros por p\u00e1gina
+probe.jsp.dataSourceTest.sqlForm.historySize.label=Tamanho do hist\u00f3rico
+probe.jsp.dataSourceTest.h3.results=Resultados da query
+probe.jsp.dataSourceTest.results.rowcount={0} registros(s) afetados.
+probe.jsp.dataSourceTest.h3.metaData=Informa\u00e7\u00f5es do banco de dados
+probe.jsp.dataSourceTest.chart.usage.title=Uso de data sources
+probe.jsp.dataSourceTest.dbMetaData.col.propName=Nome
+probe.jsp.dataSourceTest.dbMetaData.col.propValue=Valor
+probe.jsp.dataSourceTest.dbMetaData.dbProdName=Nome do SGBD
+probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Vers\u00e3o do SGBD
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=Nome do driver JDBC
+probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=Vers\u00e3o do driver JDBC
+probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=Vers\u00e3o da JDBC
+probe.jsp.dataSourceTest.results.paging.banner.item_name=registro
+probe.jsp.dataSourceTest.results.paging.banner.items_name=registros
+probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
+probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Exibindo um {0}.
+probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Exibindo todos os {2}.
+probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Exibindo {2} a {3}.
+probe.jsp.dataSourceTest.results.paging.banner.first=Primeiro
+probe.jsp.dataSourceTest.results.paging.banner.prev=Anterior
+probe.jsp.dataSourceTest.results.paging.banner.next=Pr\u00f3ximo
+probe.jsp.dataSourceTest.results.paging.banner.last=\u00daltimo
+probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Ir para a p\u00e1gina {0}
+probe.jsp.dataSourceTest.sql.completed=Sql executado.
+probe.jsp.dataSourceTest.h3.queryHistory=Hist\u00f3rico de queries
+probe.jsp.dataSourceTest.queryHistory.empty=O hist\u00f3rico est\u00e1 vazio
+
+probe.jsp.whois.timeout=N\u00e3o foi poss\u00edvel completar WHOIS. Verifique se WHOIS est\u00e1 bloqueado pela sua rede.
+
+probe.jsp.threadstack.native=c\u00f3digo nativo
+probe.jsp.threadstack.unknown=fonte desconhecida
+probe.jsp.threadstack.unavailable=Pilha de execu\u00e7\u00e3o indispon\u00edvel para este thread
+
+probe.jsp.tooltip.close=fechar
+
+probe.jsp.sessions.h3=Sess\u00f5es
+probe.jsp.sessions.search.h3=Crit\u00e9rio de busca
+probe.jsp.sessions.menu.showSearch=Buscar sess\u00e3o
+probe.jsp.sessions.menu.applySearch=Buscar
+probe.jsp.sessions.menu.clearSearch=Limpar busca
+probe.jsp.sessions.menu.searchHelp=Ajuda
+probe.jsp.sessions.search.help=Os seguintes crit\u00e9rios de busca est\u00e3o dispon\u00edveis para filtrar a lista de sess\u00f5es.\
+O ID da sess\u00e3o satisfaz uma express\u00e3o regular.\
+O \u00daltimo IP cont\u00e9m uma string.\
+O Tempo de inatividade est\u00e1 dentro de um intervalo especificado em segundos.\
+A Idade est\u00e1 dentro de um intervalo especificado em segundos.\
+Os Nomes de atributos satisfazem pelo menos uma express\u00e3o regular de uma lista de express\u00f5es regulares separadas por v\u00edrgula.\
+Este crit\u00e9rio permite encontrar uma sess\u00e3o com um atributo A e/ou um atributo B.
+probe.jsp.sessions.search.sessionId=ID da sess\u00e3o (RegExp)
+probe.jsp.sessions.search.attrName=Nomes de atributos (lista de RegExp)
+probe.jsp.sessions.search.ageFrom=Idade de (sec)
+probe.jsp.sessions.search.ageTo=at\u00e9
+probe.jsp.sessions.search.idleTimeFrom=Tempo de inatividade de (sec)
+probe.jsp.sessions.search.idleTimeTo=at\u00e9
+probe.jsp.sessions.search.lastIP=\u00daltimo IP (substring)
+probe.jsp.sessions.search.results.h3=Resultados da busca
+probe.src.sessions.search.empty=O crit\u00e9rio de busca est\u00e1 vazio
+probe.src.sessions.search.results.empty=Nenhuma sess\u00e3o satisfez o crit\u00e9rio de busca
+probe.src.sessions.search.invalid=Crit\u00e9rio de busca inv\u00e1lido
+probe.src.sessions.search.invalid.sessionId=Express\u00e3o regular para o ID da sess\u00e3o \u00e9 inv\u00e1lida. {0}
+probe.src.sessions.search.invalid.attrName=Express\u00e3o regular para o nome do atributo \u00e9 inv\u00e1lida. {0}
+probe.src.sessions.search.invalid.ageFrom=Valor inicial para idade \u00e9 inv\u00e1lido
+probe.src.sessions.search.invalid.ageTo=Valor final para idade \u00e9 inv\u00e1lido
+probe.src.sessions.search.invalid.idleTimeFrom=Valor inicial para tempo de inatividade \u00e9 inv\u00e1lido
+probe.src.sessions.search.invalid.idleTimeTo=Valor final para tempo de inatividade \u00e9 inv\u00e1lido
+probe.src.sessions.search.invalid.lastIP=Express\u00e3o regular para o \u00faltimo IP \u00e9 inv\u00e1lida. {0}
+
+probe.jsp.app.nav.title=Aplica\u00e7\u00e3o
+probe.jsp.app.nav.summary=Sum\u00e1rio
+probe.jsp.app.nav.sessions=Sess\u00f5es
+probe.jsp.app.nav.attributes=Atributos
+probe.jsp.app.nav.jsps=JSPs
+probe.jsp.app.nav.resources=Recursos
+probe.jsp.app.nav.initParams=Par\u00e2metros
+probe.jsp.app.nav.webxml=Descritor de deploy
+probe.jsp.app.nav.contextxml=Descritor de contexto
+probe.jsp.app.nav.filters=Filtros
+probe.jsp.app.nav.servlets=Servlets
+
+probe.jsp.title.app.initParams={0} - par\u00e2metros de inicializa\u00e7\u00e3o
+probe.jsp.app.initParams.h3.params=Par\u00e2metros de inicializa\u00e7\u00e3o do contexto
+probe.jsp.app.initParams.col.name=Nome
+probe.jsp.app.initParams.col.value=Valor
+probe.jsp.app.initParams.col.source=Fonte
+probe.jsp.app.initParams.source.deplDescr=web.xml
+probe.jsp.app.initParams.source.context=context
+probe.jsp.app.initParams.empty=N\u00e3o h\u00e1 par\u00e2metros de inicializa\u00e7\u00e3o definidos para esta aplica\u00e7\u00e3o
+
+probe.jsp.title.app.viewXMLConf={0} - {1}
+probe.jsp.app.viewXMLConf.notfound= {0} n\u00e3o foi encontrado para esta aplica\u00e7\u00e3o
+probe.jsp.app.viewXMLConf.h3.scr={0} fonte
+probe.src.app.viewxmlconf.webxml.desc=descritor de deploy
+probe.src.app.viewxmlconf.contextxml.desc=descritor de contexto
+
+probe.jsp.title.app.filters={0} - filtros
+probe.jsp.title.app.filtermaps={0} - mapeamentos de filtros
+probe.jsp.app.filtermaps.opt.defs=Defini\u00e7\u00f5es de filtros
+probe.jsp.app.filters.opt.maps=Mapeamentos de filtros
+probe.jsp.app.filters.h3.defs=Filtros
+probe.jsp.app.filtermaps.h3.maps=Mapeamentos de filtros
+probe.jsp.app.filters.col.filterName=Nome
+probe.jsp.app.filters.col.filterClass=Classe
+probe.jsp.app.filters.col.filterDesc=Descri\u00e7\u00e3o
+probe.jsp.app.filtermaps.col.url=Url
+probe.jsp.app.filtermaps.col.filterName=Nome do filtro
+probe.jsp.app.filtermaps.col.servletName=Nome do servlet
+probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
+probe.jsp.app.filters.empty=N\u00e3o h\u00e1 filtros definidos nesta aplica\u00e7\u00e3o
+probe.jsp.app.filtermaps.empty=N\u00e3o h\u00e1 mapeamentos de filtros nesta aplica\u00e7\u00e3o
+
+probe.jsp.title.servlets.all=Servlets
+probe.jsp.title.servlets.app={0} - servlets
+probe.jsp.title.servletmaps.all=Mapeamentos de servlets
+probe.jsp.title.servletmaps.app={0} - mapeamentos de servlets
+probe.jsp.servletmaps.opt.defs=Servlets
+#probe.jsp.servletmaps.opt.all=Show all
+probe.jsp.servlets.opt.maps=Mapeamentos de servlets
+#probe.jsp.servlets.opt.all=Show all
+probe.jsp.servlets.h3.defs=Servlets
+probe.jsp.servletmaps.h3.maps=Mapeamentos de servlets
+probe.jsp.servletmaps.col.url=Url
+probe.jsp.servletmaps.col.servletName=Nome do servlet
+probe.jsp.servlets.col.applicationName=Aplica\u00e7\u00e3o
+probe.jsp.servlets.col.servletName=Nome
+probe.jsp.servletmaps.col.servletClass=Classe do Servlet
+probe.jsp.servlets.col.available=Disponibilidade
+probe.jsp.servlets.col.loadOnStartup=Inicializa\u00e7\u00e3o
+probe.jsp.servlets.empty=N\u00e3o h\u00e1 servlets definidos nesta aplica\u00e7\u00e3o
+probe.jsp.servletmaps.empty=N\u00e3o h\u00e1 mapeamentos de servlets nesta aplica\u00e7\u00e3o
+probe.jsp.servlets.col.minTime=Menor tempo
+probe.jsp.servlets.col.maxTime=Maior tempo
+probe.jsp.servlets.col.processingTime=Tempo de Proc
+probe.jsp.servlets.col.loadTime=Tempo de carga
+probe.jsp.servlets.col.multiThreaded=Multi-Thread
+probe.jsp.servlets.col.requestCount=Requisi\u00e7\u00f5es
+probe.jsp.servlets.col.errorCount=Erros
+
+probe.jsp.title.app.summary={0} - sum\u00e1rio
+probe.jsp.app.summary.application=Nome:
+probe.jsp.app.summary.description=Descri\u00e7\u00e3o:
+probe.jsp.app.summary.distributable=Clusterizada:
+probe.jsp.app.summary.docBase=Doc. base:
+probe.jsp.app.summary.servletVersion=Vers\u00e3o de servlet:
+probe.jsp.app.summary.sessionTimeout=Timeout de sess\u00e3o:
+probe.jsp.app.summary.servletCount=N\u00famero de servlets:
+probe.jsp.app.summary.status=Esta aplica\u00e7\u00e3o est\u00e1
+probe.jsp.app.summary.requestCount=N\u00famero de requisi\u00e7\u00f5es:
+probe.jsp.app.summary.sessionCount=Sess\u00f5es
+probe.jsp.app.summary.sessionAttributeCount=Atributos de sess\u00e3o
+probe.jsp.app.summary.sessionSize=Tamanho da sess\u00e3o
+probe.jsp.app.summary.contextAttributeCount=Atributos de contexto
+probe.jsp.app.summary.serializable=Serializ\u00e1vel
+probe.jsp.app.summary.errorCount=N\u00fameros de erros:
+probe.jsp.app.summary.processingTime=Tempo de processamento:
+probe.jsp.app.summary.minTime=Menor tempo:
+probe.jsp.app.summary.maxTime=Maior tempo:
+probe.jsp.app.summary.avgTime=Tempo m\u00e9dio de resp.:
+probe.jsp.app.summary.h3.static=Informa\u00e7\u00f5es da aplica\u00e7\u00e3o
+probe.jsp.app.summary.h3.runtime=Informa\u00e7\u00f5es de execu\u00e7\u00e3o
+probe.jsp.app.summary.invalidApp=A aplica\u00e7\u00e3o \u00e9 inv\u00e1lida
+probe.jsp.app.summary.runtime.unavailable=Esta aplica\u00e7\u00e3o n\u00e3o est\u00e1 rodando, informa\u00e7\u00f5es indispon\u00edveis
+probe.jsp.app.summary.menu.start=Iniciar
+probe.jsp.app.summary.menu.stop=Parar
+probe.jsp.app.summary.menu.reload=Recarregar
+probe.jsp.app.summary.menu.undeploy=Desinstalar
+probe.jsp.app.summary.menu.goTo=Acessar
+probe.jsp.app.summary.menu.startStats=Iniciar coleta de estat\u00edsticas
+probe.jsp.app.summary.menu.stopStats=Parar coleta de estat\u00edsticas
+probe.jsp.app.summary.undeploy.confirm=Esta opera\u00e7\u00e3o n\u00e3o pode ser desfeita. Voc\u00ea realmente quer DESINSTALAR {0}?
+probe.jsp.app.summary.dataSourceUsageScore=Uso de data sources
+probe.jsp.app.summary.jdbcUsage.title=Uso m\u00e1ximo de conex\u00f5es {0}%
+probe.jsp.app.summary.h3.charts=Gr\u00e1ficos de Estat\u00edsticas
+probe.jsp.app.summary.charts.requests.title=N\u00famero de requisi\u00e7\u00f5es
+probe.jsp.app.summary.charts.avgProcTime.title=Tempo m\u00e9dio de resposta (ms)
+probe.jsp.app.summary.charts.requests.legend=Requisi\u00e7\u00f5es
+probe.jsp.app.summary.charts.errors.legend=Erros
+probe.jsp.app.summary.charts.avgProcTime.legend=Tempo m\u00e9dio de resp.
+
+probe.jsp.title.allappstats=Estat\u00edsticas das Aplica\u00e7\u00f5es
+probe.jsp.allappstats.charts.totalAvgProcTime.legend=Tempo m\u00e9dio de resposta
+probe.jsp.allappstats.charts.totalReq.legend=Requisi\u00e7\u00f5es
+probe.jsp.allappstats.charts.totalAvgProcTime.title=Tempo m\u00e9dio de resposta cumulativo (ms)
+probe.jsp.allappstats.charts.allAppAvgProcTime.title=Tempo m\u00e9dio de resp. por app (ms)
+probe.jsp.allappstats.charts.totalReq.title=Requisi\u00e7\u00f5es cumulativas
+probe.jsp.allappstats.charts.allAppReq.title=Requisi\u00e7\u00f5es por aplica\u00e7\u00e3o (ms)
+probe.jsp.allappstats.h3.charts=Gr\u00e1ficos de Estat\u00edsticas
+
+#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
+#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
+#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
+#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
+
+#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
+#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
diff --git a/web/src/main/conf/WEB-INF/messages_ru.properties b/web/src/main/conf/WEB-INF/messages_ru.properties
index 30a3a04442..b58af38a92 100644
--- a/web/src/main/conf/WEB-INF/messages_ru.properties
+++ b/web/src/main/conf/WEB-INF/messages_ru.properties
@@ -1,718 +1,718 @@
-#
-# Licensed under the GPL License. You may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-#
-# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-#
-# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-
-# Russian translation by Vlad Ilyushchenko
-probe.jsp.i18n.credit=\u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: \u0412\u043b\u0430\u0434 \u0418\u043b\u044c\u044e\u0449\u0435\u043d\u043a\u043e
-#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
-
-probe.jsp.generic.no=\u043d\u0435\u0442
-probe.jsp.generic.yes=\u0434\u0430
-#probe.jsp.generic.abbreviations=O que significam as abrevia\u00e7\u00f5es?
-
-probe.jsp.app.attributes.col.delete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442
-probe.jsp.app.attributes.col.delete.title=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442
-probe.jsp.app.attributes.col.name=\u0418\u043c\u044f
-probe.jsp.app.attributes.col.type=\u0422\u0438\u043f
-probe.jsp.app.attributes.col.value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
-probe.jsp.app.attributes.h3.attributes=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430
-probe.jsp.app.attributes.noattributes=\u042d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432
-
-probe.jsp.applications.alt.reload=\u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u0438\u0442\u044c
-probe.jsp.applications.alt.undeploy=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
-probe.jsp.applications.col.contextAttributeCount=\u041a.\u0410\u0442\u0442\u0440
-probe.jsp.applications.col.description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
-probe.jsp.applications.col.distributable=\u041a\u043b\u0430\u0441\u0442\u0435\u0440?
-probe.jsp.applications.col.jdbcUsage=JDBC \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430
-probe.jsp.applications.col.jsp=JSP
-probe.jsp.applications.col.name=\u0418\u043c\u044f
-probe.jsp.applications.col.serializable=\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u043e?
-probe.jsp.applications.col.sessionAttributeCount=\u0421.\u0410\u0442\u0442\u0440
-probe.jsp.applications.col.sessionCount=\u0421\u0435\u0441\u0441\u0438\u0438
-probe.jsp.applications.col.sessionTimeout=\u0422\u0430\u0439\u043c\u0430\u0443\u0442
-probe.jsp.applications.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
-probe.jsp.applications.col.status=\u0421\u0442\u0430\u0442\u0443\u0441
-#probe.jsp.applications.col.requestCount=Req.
-#probe.jsp.applications.help.contextAttributeCount=total number of ServletContext attributes
-#probe.jsp.applications.help.distributable=application is "distributable"
-#probe.jsp.applications.help.requestCount=total number of requests processed by servlets
-#probe.jsp.applications.help.serializable=all session attributes implement java.io.Serializable
-#probe.jsp.applications.help.sessionAttributeCount=total number of session attributes
-#probe.jsp.applications.help.sessionCount=number of sessions
-probe.jsp.applications.hidesize=\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440
-probe.jsp.applications.jdbcUsage.title=\u041c\u0430\u043a\u0441.\u0438\u0441\u043f\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 {0}%
-probe.jsp.applications.jsp.view=\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440
-probe.jsp.applications.serializable.no=\u043d\u0435\u0442
-probe.jsp.applications.serializable.yes=\u0434\u0430
-probe.jsp.applications.showsize=\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0441\u0435\u0441\u0441\u0438\u0439 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e)
-probe.jsp.applications.status.down=\u0432\u044b\u043a\u043b.
-probe.jsp.applications.status.down.title=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
-probe.jsp.applications.status.up=\u0432\u043a\u043b.
-probe.jsp.applications.title.reload=\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c {0}
-probe.jsp.applications.title.status.up=\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
-probe.jsp.applications.title.undeploy=\u0423\u0434\u0430\u043b\u0438\u0442\u044c {0}
-probe.jsp.applications.undeploy.confirm=\u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0430. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0423\u0414\u0410\u041b\u0418\u0422\u042c {0}?
-
-probe.jsp.connectors.information=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u0440\u0430\u0444\u0444\u0438\u043a\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430\u0445. \u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f. \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0447\u0442\u043e\u0431\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f.
-probe.jsp.connectors.processor.errorCount=\u0427\u0438\u0441\u043b\u043e \u043e\u0448\u0438\u0431\u043e\u043a:
-probe.jsp.connectors.processor.maxTime=\u041c\u0430\u043a\u0441. \u0432\u0440\u0435\u043c\u044f:
-probe.jsp.connectors.processor.processingTime=\u041e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f:
-probe.jsp.connectors.processor.received=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043e:
-probe.jsp.connectors.processor.requestCount=\u0417\u0430\u043f\u0440\u043e\u0441\u043e\u0432:
-probe.jsp.connectors.processor.sent=\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e:
-probe.jsp.connectors.proc_time.title=\u041e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f (\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a.) \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435
-probe.jsp.connectors.requests.title=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435
-probe.jsp.connectors.traffic.title=\u041e\u0431\u044a\u0435\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 (\u0432 \u0431\u0430\u0439\u0442\u0430\u0445) \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430
-probe.jsp.connectors.wrk.col.in=\u0412\u0445\u043e\u0434
-probe.jsp.connectors.wrk.col.out=\u0412\u044b\u0445\u043e\u0434
-probe.jsp.connectors.wrk.col.processingTime=\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f
-probe.jsp.connectors.wrk.col.remoteAddr=IP \u0430\u0434\u0440\u0435\u0441
-probe.jsp.connectors.wrk.col.stage=\u0421\u0442\u0430\u0434\u0438\u044f
-probe.jsp.connectors.wrk.col.url=\u0417\u0430\u043f\u0440\u043e\u0441
-#probe.jsp.connectors.wrk.col.thread=Thread
-probe.jsp.connectors.wrk.empty=\u041d\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432
-#probe.jsp.connectors.wrk.stage.endInput=EndInput
-#probe.jsp.connectors.wrk.stage.endOutput=EndOutput
-#probe.jsp.connectors.wrk.stage.ended=Ended
-probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
-#probe.jsp.connectors.wrk.stage.new=New
-#probe.jsp.connectors.wrk.stage.parse=Parse
-#probe.jsp.connectors.wrk.stage.prepare=Prepare
-#probe.jsp.connectors.wrk.stage.service=Service
-
-probe.jsp.cluster.chart.requests=\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0437\u0430 {0}-\u0442\u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a
-probe.jsp.cluster.chart.traffic=\u0422\u0440\u0430\u0444\u0444\u0438\u043a \u0437\u0430 {0}-\u0442\u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a
-probe.jsp.cluster.h3.info=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435
-probe.jsp.cluster.h3.members=\u0427\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
-probe.jsp.cluster.heartbeatFreq=\u0427\u0430\u0441\u0442\u043e\u0442\u0430 "heartbeat":
-probe.jsp.cluster.heartbeatTimeout=\u0422\u0430\u0439\u043c\u0430\u0443\u0442 "heartbeat":
-probe.jsp.cluster.info=\u0418\u043d\u0444\u043e:
-probe.jsp.cluster.manager=\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440:
-probe.jsp.cluster.mcastAddress=Mcast \u0430\u0434\u0440\u0435\u0441:
-probe.jsp.cluster.mcastBindAddress=Mcast bind \u0430\u0434\u0440\u0435\u0441:
-probe.jsp.cluster.mcastBindAddress.all=\u0432\u0441\u0435
-probe.jsp.cluster.mcastTTL=Mcast TTL
-probe.jsp.cluster.members.col.address=\u0410\u0434\u0440\u0435\u0441
-probe.jsp.cluster.members.col.avgMsgSize=\u0421\u0440\u0420\u0430\u0437\u043c.
-probe.jsp.cluster.members.col.closes=\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0439
-probe.jsp.cluster.members.col.connectCount=\u0427\u0421
-probe.jsp.cluster.members.col.connected=\u0421\u043e\u0435\u0434.?
-probe.jsp.cluster.members.col.disconnectCount=\u0427\u0417
-probe.jsp.cluster.members.col.failures=\u041e\u0448\u0438\u0431\u043a\u0438
-probe.jsp.cluster.members.col.inQueueCounter=\u0412\u0445.\u041e\u0447.
-probe.jsp.cluster.members.col.keepAlive=Keep Alive
-probe.jsp.cluster.members.col.openFailures=\u041e\u0448\u0438\u0431\u043a\u0438 \u043e\u043a\u0442\u0440.
-probe.jsp.cluster.members.col.opens=\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u044f
-probe.jsp.cluster.members.col.outQueueCounter=\u0412\u044b\u0445.\u041e\u0447.
-probe.jsp.cluster.members.col.queueSize=\u0420\u0430\u0437\u043c.\u041e\u0447.
-probe.jsp.cluster.members.col.queueSizeBytes=\u0420\u0430\u0437\u043c\u041e\u0447\u0411
-probe.jsp.cluster.members.col.requests=\u0417\u0430\u043f\u0440.
-probe.jsp.cluster.members.col.resends=\u041f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438
-probe.jsp.cluster.members.col.sent=\u041e\u0442\u043f\u0440\u0430\u0432\u043b.
-probe.jsp.cluster.members.col.socketLimit=\u041c\u0430\u043a\u0441. \u0421\u043e\u043a\u0435\u0442\u043e\u0432
-probe.jsp.cluster.members.failing.alt=\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430
-probe.jsp.cluster.members.failing.title=\u042d\u0442\u043e\u0442 \u0447\u043b\u0435\u043d \u0441\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b
-probe.jsp.cluster.members.healthy.alt=\u0437\u0434\u043e\u0440\u043e\u0432
-probe.jsp.cluster.members.healthy.title=\u042d\u0442\u043e\u0442 \u0447\u043b\u0435\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0437\u0434\u043e\u0440\u043e\u0432
-probe.jsp.cluster.mode=\u0420\u0435\u0436\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438:
-probe.jsp.cluster.name=\u0418\u043c\u044f:
-probe.jsp.cluster.noMembers=\u041d\u0435\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0447\u043b\u0435\u043d\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
-probe.jsp.cluster.notAvailable=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Tomcat 5.5 \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.
-probe.jsp.cluster.received=\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e
-probe.jsp.cluster.receiverAddress=\u0410\u0434\u0440\u0435\u0441 \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430:
-probe.jsp.cluster.receiverPort=\u041f\u043e\u0440\u0442 \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430:
-probe.jsp.cluster.sent=\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e
-
-probe.jsp.copyright=\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 (C) \u0412\u043b\u0430\u0434 \u0418\u043b\u044e\u0449\u0435\u043d\u043a\u043e 2009-${copyright}. \u0415\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b? \u0418\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f? \u041f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 \u043d\u0430\u0448 \u0441\u0430\u0439\u0442 https://github.com/psi-probe/psi-probe (english)
-
-probe.jsp.dataSourceGroups.empty=
-probe.jsp.dataSourceGroups.information=
-#probe.jsp.dataSourceGroups.jdbcUsage.title=Max.conn.usage {0}%
-probe.jsp.dataSourceGroups.list.col.busy=
-probe.jsp.dataSourceGroups.list.col.established=
-probe.jsp.dataSourceGroups.list.col.max=
-probe.jsp.dataSourceGroups.list.col.resourceCount=
-probe.jsp.dataSourceGroups.list.col.url=
-probe.jsp.dataSourceGroups.list.col.usage=
-probe.jsp.dataSourceGroups.menu.back=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443
-
-#probe.jsp.datasources.h3.global=Global Resources
-#probe.jsp.datasources.h3.app=Application Resources
-#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
-#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
-probe.jsp.datasources.empty=\u0412 \u044d\u0442\u043e\u043c \u0422\u043e\u043c\u043a\u0430\u0442\u0435 \u043d\u0435\u0442 \u0434\u0430\u0442\u0430\u0441\u043e\u0443\u0440\u0441\u043e\u0432
-#probe.jsp.datasources.help.max=maximum number of connections in the pool
-#probe.jsp.datasources.help.established=number of established connections that can be reused
-#probe.jsp.datasources.help.busy=number of busy connections cannot be reused
-probe.jsp.datasources.list.col.application=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
-probe.jsp.datasources.list.col.auth=\u0410\u0432\u0442\u043e\u0440\u0438\u0437.
-probe.jsp.datasources.list.col.busy=\u0417
-probe.jsp.datasources.list.col.description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
-probe.jsp.datasources.list.col.established=\u0423
-probe.jsp.datasources.list.col.linkTo=\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430
-probe.jsp.datasources.list.col.max=\u041c
-probe.jsp.datasources.list.col.reset.alt=\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c
-probe.jsp.datasources.list.col.resource=\u0420\u0435\u0441\u0443\u0440\u0441
-probe.jsp.datasources.list.col.type=\u0422\u0438\u043f
-probe.jsp.datasources.list.col.url=URL
-probe.jsp.datasources.list.col.usage=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430
-probe.jsp.datasources.list.col.user=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437.
-probe.jsp.datasources.list.misconfigured.alt=\u041e\u0448\u0438\u0431\u043a\u0430
-probe.jsp.datasources.opt.groupByJdbcUrl=\u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e URL
-
-probe.jsp.deployment.war.success={0} \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d
-probe.jsp.deployment.compilationDetails=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438
-probe.jsp.deployment.s1.compile.label=\u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c JSP \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 WAR (\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442)
-probe.jsp.deployment.s1.description=\u0417\u0430\u043b\u0438\u0442\u044c .war \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u0415\u0441\u043b\u0438 \u0438\u043c\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 META-INF/context.xml \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 "path" \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0438\u043d\u0430\u0447\u0435 \u0422\u043e\u043c\u043a\u0430\u0442 \u0437\u0430\u043f\u0443\u0442\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0448\u0442\u0430\u043d\u0430\u0445.
-probe.jsp.deployment.s1.discard.label=\u0423\u0434\u0430\u043b\u0438\u0442\u044c "work" \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e
-probe.jsp.deployment.s1.file.label=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 .war \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438
-probe.jsp.deployment.s1.submit=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c
-probe.jsp.deployment.s1.title=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u043f\u0440\u043e\u0441\u0442\u043e)
-probe.jsp.deployment.s1.update.label=\u041e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
-probe.jsp.deployment.s2.context.label=\u0418\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 /joedog)
-probe.jsp.deployment.s2.description=\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0435\u0439 \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 %CATALINA_BASE%/conf/Catalina/localhost/. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0438\u043c\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 "/joedog" \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml.
-probe.jsp.deployment.s2.title=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u0441\u043b\u043e\u0436\u043d\u0435\u0435)
-
-probe.jsp.follow.h3.fileContent=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430
-probe.jsp.follow.h3.fileInfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0444\u0430\u0439\u043b\u0435
-#probe.jsp.follow.h3.sources=Logging sources
-probe.jsp.follow.loading=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...
-probe.jsp.follow.menu.back=\u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u043b\u043e\u0433\u043e\u0432
-probe.jsp.follow.menu.clear=\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0431\u0443\u0444\u0435\u0440
-probe.jsp.follow.menu.download=\u0421\u043a\u0430\u0447\u0430\u0442\u044c
-probe.jsp.follow.menu.nowrap=\u041d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438
-probe.jsp.follow.menu.pause=\u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443
-probe.jsp.follow.menu.resume=\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443
-probe.jsp.follow.menu.wrap=\u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438
-probe.jsp.follow.menu.zoomin=\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0448\u0440\u0438\u0444\u0442
-probe.jsp.follow.menu.zoomout=\u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0448\u0440\u0438\u0444\u0442
-probe.jsp.followed_file_info.fileName=\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430:
-probe.jsp.followed_file_info.lastModified=\u0414\u0430\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438:
-probe.jsp.followed_file_info.size=\u0420\u0430\u0437\u043c\u0435\u0440:
-
-probe.jsp.jsps.col.lastmodified=\u0414\u0430\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438
-probe.jsp.jsps.col.message=\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438
-probe.jsp.jsps.col.name=\u0418\u043c\u044f JSP
-probe.jsp.jsps.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
-probe.jsp.jsps.col.status=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
-probe.jsp.jsps.notfound=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 JSP \u0444\u0430\u0439\u043b\u043e\u0432
-probe.jsp.jsps.opt.compile=\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435
-probe.jsp.jsps.opt.compileall=\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435
-probe.jsp.jsps.opt.discardscratch=\u0423\u0434\u0430\u043b\u0438\u0442\u044c "work" \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e
-probe.jsp.jsps.opt.toggleall=\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0435
-probe.jsp.jsps.status.compiled=\u041a\u043e\u043c\u043f.
-probe.jsp.jsps.status.failed=\u041e\u0448\u0438\u0431\u043a\u0430
-probe.jsp.jsps.status.outdated=\u0423\u0441\u0442\u0430\u0440\u0435\u043b\u043e
-
-probe.jsp.logs.col.app=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
-probe.jsp.logs.col.class=\u041a\u043b\u0430\u0441\u0441
-probe.jsp.logs.col.file=\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430
-#probe.jsp.logs.col.level=Level
-probe.jsp.logs.col.modified=\u0414\u0430\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438
-probe.jsp.logs.col.name=\u0418\u043c\u044f
-probe.jsp.logs.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
-probe.jsp.logs.col.type=\u0422\u0438\u043f
-probe.jsp.logs.download.alt=\u0421\u043a\u0430\u0447\u0430\u0442\u044c
-probe.jsp.logs.hideapps=\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
-probe.jsp.logs.showapps=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
-probe.jsp.logs_notSupported.message=\u0412\u0430\u0448\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 {0} {1} \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 SUN reflection API - sun.reflect.ReflectionFactory. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043b\u043e\u0433 \u0444\u0430\u0439\u043b\u043e\u0432 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d.
-
-#probe.jsp.memory.advise.finalization=Advise Finalization
-#probe.jsp.memory.advise.gc=Advise GC
-#probe.jsp.memory.col.committed=Committed
-#probe.jsp.memory.col.group=Group
-#probe.jsp.memory.col.initial=Initial
-#probe.jsp.memory.col.max=Maximum
-#probe.jsp.memory.col.name=Name
-#probe.jsp.memory.col.plot=Plot
-#probe.jsp.memory.col.usageScore=Usage score
-#probe.jsp.memory.col.used=Used
-#probe.jsp.memory.h3.charts=Memory usage history
-#probe.jsp.memory.h3.table=Current memory usage
-#probe.jsp.memory.loading=Loading...
-#probe.jsp.memory.usage.title=Usage {0}%
-#probe.jsp.memory.notAvailable=This page requires Java5 with enabled JMX Agent. To enable the JXM Agent please add "-Dcom.sun.management.jmxremote" to java command line or $JAVA_OPTS environment variable. If you are an IBM JDK user please add these properties: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
-
-probe.jsp.menu.applications=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
-probe.jsp.menu.cluster=\u041a\u043b\u0430\u0441\u0442\u0435\u0440
-probe.jsp.menu.connectors=\u0420\u0430\u0437\u044a\u0435\u043c\u044b
-probe.jsp.menu.datasources=\u0414\u0430\u0442\u0430\u0441\u043e\u0443\u0440\u0441\u044b
-probe.jsp.menu.deployment=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430
-probe.jsp.menu.logs=\u041b\u043e\u0433 \u0444\u0430\u0439\u043b\u044b
-#probe.jsp.menu.memory=Memory
-probe.jsp.menu.quickcheck=\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430
-probe.jsp.menu.sysinfo=\u0421\u0438\u0441\u0442\u0435\u043c\u0435
-probe.jsp.menu.threads=\u041f\u043e\u0442\u043e\u043a\u0438
-
-probe.jsp.noaccess=\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u0442\u043e\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u044e\u0441\u0442\u0430 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0412 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 "\u043d\u0430\u0437\u0430\u0434" \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435
-#probe.jsp.noaccess.ajax=You do not have sufficient privileges to access this functionality.
-probe.jsp.noaccess.title=403 \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e
-probe.jsp.notfound=\u0417\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0434\u043b\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443.
-probe.jsp.notfound.title=404 \u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e
-
-probe.jsp.resources.col.auth=\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f
-probe.jsp.resources.col.linkTo=\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430
-probe.jsp.resources.col.name=\u0418\u043c\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430
-probe.jsp.resources.col.type=\u0422\u0438\u043f
-probe.jsp.resources.empty=\u0423 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442
-probe.jsp.resources.info.busy=\u0417\u0430\u043d\u044f\u0442\u043e:
-probe.jsp.resources.info.connectionUsage.alt=\u0418\u0441\u043f.\u0441\u043e\u0435\u0434 {0}%
-probe.jsp.resources.info.established=\u0422\u0435\u043a.\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439:
-probe.jsp.resources.info.max=\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c:
-probe.jsp.resources.info.misconfigured=\u042d\u0442\u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u043d\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043d\u0435\u043c \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430
-probe.jsp.resources.info.misconfigured.alt=\u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a
-probe.jsp.resources.info.reset=
-probe.jsp.resources.info.reset.alt=\u0421\u0431\u0440\u043e\u0441
-probe.jsp.resources.info.title=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f:
-
-#probe.jsp.servlet_source.h3.source=Auto generated servlet code
-#probe.jsp.servlet_source.opt.jsp=view JSP
-
-probe.jsp.sessionAttibutes.card.age=\u0412\u043e\u0437\u0440\u0430\u0441\u0442:
-probe.jsp.sessionAttibutes.card.application=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435:
-probe.jsp.sessionAttibutes.card.created=\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f:
-probe.jsp.sessionAttibutes.card.expiryTime=\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043e:
-probe.jsp.sessionAttibutes.card.id=ID:
-probe.jsp.sessionAttibutes.card.idleTime=\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f:
-probe.jsp.sessionAttibutes.card.info=\u0418\u043d\u0444\u043e:
-probe.jsp.sessionAttibutes.card.lastAccessed=\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430:
-probe.jsp.sessionAttibutes.card.manager=\u0422\u0438\u043f Manager:
-probe.jsp.sessionAttibutes.card.maxIdleTime=\u041c\u0430\u043a\u0441. \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u044f
-probe.jsp.sessionAttibutes.card.serializable=\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u0430:
-probe.jsp.sessionAttibutes.card.serializable.no=\u043d\u0435\u0442
-probe.jsp.sessionAttibutes.card.serializable.yes=\u0434\u0430
-probe.jsp.sessionAttibutes.card.size=\u0420\u0430\u0437\u043c\u0435\u0440:
-probe.jsp.sessionAttibutes.col.delete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
-probe.jsp.sessionAttibutes.col.delete.title=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442
-probe.jsp.sessionAttibutes.col.name=\u0418\u043c\u044f
-probe.jsp.sessionAttibutes.col.serializable=\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u043e?
-probe.jsp.sessionAttibutes.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
-probe.jsp.sessionAttibutes.col.type=\u0422\u0438\u043f
-probe.jsp.sessionAttibutes.col.value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
-probe.jsp.sessionAttibutes.h3.attributes=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b
-probe.jsp.sessionAttibutes.h3.card=\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0441\u0435\u0441\u0441\u0438\u0438
-probe.jsp.sessionAttibutes.invalidSid=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 ID \u0441\u0435\u0441\u0441\u0438\u0438 \u0438\u043b\u0438 \u0441\u0435\u0441\u0441\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c (expired)
-probe.jsp.sessionAttibutes.menu.back=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0441\u0435\u0441\u0441\u0438\u0439
-probe.jsp.sessionAttibutes.menu.destroy=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e
-probe.jsp.sessionAttibutes.noattributes=\u042d\u0442\u0430 \u0441\u0435\u0441\u0441\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432
-
-probe.jsp.sessions.col.age=\u0412\u043e\u0437\u0440\u0430\u0441\u0442
-probe.jsp.sessions.col.creationTime=\u0412\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f
-probe.jsp.sessions.col.expiryTime=\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043e
-probe.jsp.sessions.col.id=ID \u0441\u0435\u0441\u0441\u0438\u0438
-#probe.jsp.sessions.col.applicationName=App
-probe.jsp.sessions.col.idleTime=\u0411\u0435\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442
-probe.jsp.sessions.col.lastAccessTime=\u0412\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430
-probe.jsp.sessions.col.objectCount=\u041a\u043e\u043b. \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432
-probe.jsp.sessions.col.serializable=\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u0430
-probe.jsp.sessions.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
-#probe.jsp.sessions.col.lastIP=Last IP
-#probe.jsp.sessions.unknown.ip=unknown
-probe.jsp.sessions.empty=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442
-probe.jsp.sessions.menu.expire=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
-probe.jsp.sessions.menu.toggle=\u0418\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c
-probe.jsp.sessions.status.no=\u043d\u0435\u0442
-probe.jsp.sessions.status.yes=\u0434\u0430
-#probe.jsp.sessions.opt.all=Show all
-probe.jsp.showsize=\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b
-probe.jsp.hidesize=\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b
-
-probe.jsp.sysinfo.col.name=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440
-probe.jsp.sysinfo.col.value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
-probe.jsp.sysinfo.container.title=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435
-probe.jsp.sysinfo.memory.adviseGC=\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c GC
-probe.jsp.sysinfo.memory.free=\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u043e:
-probe.jsp.sysinfo.memory.max=\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c:
-probe.jsp.sysinfo.memory.title=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438
-probe.jsp.sysinfo.memory.total=\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0431\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440:
-probe.jsp.sysinfo.memory.usage=\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438
-probe.jsp.sysinfo.memory.usage.alt=\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438
-#probe.jsp.sysinfo.os.applicationBase=Application base:
-probe.jsp.sysinfo.os.catalinaBase=catalina.base:
-probe.jsp.sysinfo.os.catalinaHome=catalina.home:
-#probe.jsp.sysinfo.os.configBase=Configuration base:
-probe.jsp.sysinfo.os.container=\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:
-probe.jsp.sysinfo.os.currentTime=\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f:
-probe.jsp.sysinfo.os.jvm=\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430:
-probe.jsp.sysinfo.os.name=\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430:
-probe.jsp.sysinfo.os.processors=\u041a\u043e\u043b-\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432:
-probe.jsp.sysinfo.os.title=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0421\u0438\u0441\u0442\u0435\u043c\u0435
-probe.jsp.sysinfo.os.workingDir=\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f
-probe.jsp.sysinfo.sysproperties.title=\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (System.properties)
-
-probe.jsp.threadpools.currentThreadCount=\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432
-probe.jsp.threadpools.currentThreadsBusy=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043d\u044f\u0442\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
-probe.jsp.threadpools.maxSpareThreads=\u041c\u0430\u043a\u0441. \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
-probe.jsp.threadpools.maxThreads=\u041c\u0430\u043a\u0441. \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432
-probe.jsp.threadpools.menu.threads=\u0417\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438
-probe.jsp.threadpools.minSpareThreads=\u041c\u0438\u043d. \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
-probe.jsp.threadpools.name=\u0418\u043c\u044f
-
-probe.jsp.threads.col.application=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
-probe.jsp.threads.col.classLoader=Class loader
-probe.jsp.threads.col.daemon=\u0414
-probe.jsp.threads.col.groupName=\u0413\u0440\u0443\u043f\u043f\u0430
-probe.jsp.threads.col.interrupted=\u041e
-probe.jsp.threads.col.name=\u0418\u043c\u044f
-probe.jsp.threads.col.priority=\u041f
-probe.jsp.threads.col.runnableClass=Runnable
-probe.jsp.threads.col.threadClass=\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u0442\u043e\u043a\u0430
-#probe.jsp.threads.col.id=ID
-#probe.jsp.threads.col.execPoint=Exec. point
-#probe.jsp.threads.col.state=State
-#probe.jsp.threads.col.inNative=In.Native
-#probe.jsp.threads.col.suspended=Susp.
-#probe.jsp.threads.col.waitedCount=WC
-#probe.jsp.threads.col.blockedCount=BC
-#probe.jsp.threads.help.priority=thread priority, the higher the number the higher the priority
-#probe.jsp.threads.help.daemon=thread is a daemon
-#probe.jsp.threads.help.interrupted=thread has been interrupted
-#probe.jsp.threads.help.inNative=true if thread is executing native code
-#probe.jsp.threads.help.suspended=thread is suspended
-#probe.jsp.threads.help.waitedCount="wait count" - number of times thread has been waiting on something
-#probe.jsp.threads.help.blockedCount="blocked count" - number of times thread has been blocked
-probe.jsp.threads.info.loading=\u0417\u0430\u0440\u0443\u0437\u043a\u0430...
-probe.jsp.threads.info.unavailable=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e URL \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430
-probe.jsp.threads.killmsg=\u041d\u0435\u043e\u0431\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c JVM. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c {0}?
-probe.jsp.threads.menu.threadpools=\u041f\u0443\u043b\u044b \u043f\u043e\u0442\u043e\u043a\u043e\u0432
-probe.jsp.threads.stop.alt=\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c
-
-probe.jsp.title.app.attributes=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430
-probe.jsp.title.applications=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
-probe.jsp.title.cluster=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
-probe.jsp.title.connectors=\u0420\u0430\u0437\u044a\u0435\u043c\u044b
-probe.jsp.title.dataSourceGroups=
-probe.jsp.title.datasources=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u0430\u0442\u0430\u0441\u043e\u0443\u0440\u0441\u044b
-probe.jsp.title.deployment=\u0417\u0430\u043a\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439
-probe.jsp.title.follow=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043b\u043e\u0433 \u0444\u0430\u0439\u043b\u0430
-probe.jsp.title.jsps={0} - JSP \u0444\u0430\u0439\u043b\u044b
-probe.jsp.title.logs=\u041b\u043e\u0433 \u0444\u0430\u0439\u043b\u044b
-probe.jsp.title.logs_notSupported=\u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f
-probe.jsp.title.memory=JMV \u043f\u0430\u043c\u044f\u0442\u044c
-probe.jsp.title.quickcheck=\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430
-probe.jsp.title.resources={0} - \u0420\u0435\u0441\u0443\u0440\u0441\u044b
-probe.jsp.title.servlet_source=\u041a\u043e\u0434 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430
-probe.jsp.title.sessionAttibutes=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u0435\u0441\u0441\u0438\u0438
-probe.jsp.title.sessions={0} - \u0421\u0435\u0441\u0441\u0438\u0438
-#probe.jsp.title.sessions.all=Sessions
-probe.jsp.title.sysinfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435
-probe.jsp.title.threadpools=\u041f\u0443\u043b\u044b \u043f\u043e\u0442\u043e\u043a\u043e\u0432
-probe.jsp.title.threads=\u0417\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438
-probe.jsp.title.viewsource={0} - \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434
-probe.jsp.uptime=\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c {0} \u0434\u043d\u044f {1} \u0447\u0430\u0441\u043e\u0432 {2} \u043c\u0438\u043d\u0443\u0442
-probe.jsp.version=\u0412\u0435\u0440\u0441\u0438\u044f {0} \u043d\u0430 {1}
-
-probe.jsp.viewsource.appname=\u0418\u043c\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:
-probe.jsp.viewsource.encoding=\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430:
-probe.jsp.viewsource.filename=\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430:
-probe.jsp.viewsource.h3.info=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e JSP
-probe.jsp.viewsource.h3.source=\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 JSP
-probe.jsp.viewsource.lastmodified=\u0414\u0430\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438:
-probe.jsp.viewsource.notfound=\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b.
-probe.jsp.viewsource.opt.back=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 JSP
-probe.jsp.viewsource.opt.compile=\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c
-probe.jsp.viewsource.opt.viewServlet=\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043e\u0434\u0430 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430
-probe.jsp.viewsource.size=\u0420\u0430\u0437\u043c\u0435\u0440:
-probe.jsp.viewsource.state=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435:
-
-probe.jsp.wrongparams=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b
-#probe.jsp.wrongsvrversion=This feature is not implemented for {0}
-probe.jsp.zoomedchart.back=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0433\u0440\u0443\u043f\u043f\u0430\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432
-probe.jsp.zoomedchart.information=\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0430. \u0413\u0440\u0430\u0444\u0438\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 {0} \u0441\u0435\u043a\u0443\u043d\u0434.
-
-probe.src.contextAction.cannotActOnSelf=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c/\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c/\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
-probe.src.contextDoesntExist=\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 {0} \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442
-probe.src.deploy.context.failure=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c {0}
-probe.src.deploy.context.success=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 {0} \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e
-probe.src.deploy.exploded.success=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 {0} \u0431\u044b\u043b\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 {1}
-probe.src.deploy.war.alreadyExists=\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 {0} \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f
-probe.src.deploy.war.failure=Tomcat \u0432\u0435\u0440\u043d\u0443\u043b \u043e\u0448\u0438\u0431\u043a\u0443 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 "{0}". \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e. \u041f\u043e\u0436\u0430\u043b\u0443\u044e\u0441\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.
-probe.src.deploy.war.notWar.failure=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0430\u0441\u044c. \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043e\u0431\u044f\u0437\u0430\u043d\u043e \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 .war
-#probe.src.deploy.war.notinstalled={0} was not installed
-probe.src.deploy.war.uploadfailure=\u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0437\u0430\u0440\u0433\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b: {0}
-probe.src.reset.datasource.c3p0=\u042d\u0442\u043e\u0442 \u0434\u0430\u043d\u0430\u0441\u043e\u0443\u0440\u0441 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0431\u0440\u043e\u0448\u0435\u043d
-probe.src.reset.datasource.notfound=\u0420\u0435\u0441\u0443\u0440\u0441 {0} \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d
-
-#probe.jsp.title.wrapper=Java Service Wrapper
-#probe.jsp.wrapper.not_available=This JVM is not controlled by Java Service Wrapper
-#probe.jsp.wrapper.menu.restart=restart JVM
-#probe.jsp.wrapper.menu.stop=stop JVM
-#probe.jsp.wrapper.menu.thread_dump=Request thread dump
-#probe.jsp.wrapper.h3.info=Wrapper information
-#probe.jsp.wrapper.h3.props=Wrapper properties
-#probe.jsp.wrapper.confirm.restart=Are you sure you want to restart JVM?
-#probe.jsp.wrapper.confirm.stop=JVM cannot be started again from Probe. Are you sure you want to stop JVM?
-#probe.jsp.wrapper.jvm.stopping=JVM shutdown is now in progress. If you need to start it up again you would have to do it via the console.
-#probe.jsp.wrapper.jvm.restarting=JVM restart is now in progress. This may take a few minutes.
-#probe.jsp.wrapper.jvm.thread_dump=JMV Thread Dump has been requested. You can normally find it in the Wrapper log file.
-
-#probe.jsp.wrapper.user=User:
-#probe.jsp.wrapper.interactive_user=Interactive user:
-#probe.jsp.wrapper.java_pid=Java PID:
-#probe.jsp.wrapper.pid=Wrapper PID:
-#probe.jsp.wrapper.service=Running as service:
-#probe.jsp.wrapper.debug=Debug enabled:
-#probe.jsp.wrapper.version=Wrapper version:
-
-probe.jsp.decorator.system.title=\u0421\u0438\u0441\u0442\u0435\u043c\u0435
-#probe.jsp.decorator.system.overview=Overview
-#probe.jsp.decorator.system.memory=Memory utilization
-#probe.jsp.decorator.system.props=System properties
-#probe.jsp.decorator.system.os=OS information
-#probe.jsp.decorator.system.wrapper=Wrapper control
-
-#probe.jsp.os.h3.information=OS information
-#probe.jsp.os.h3.charts=Historical charts
-#probe.jsp.os.chart.cpu=JVM CPU utilization (%)
-#probe.jsp.os.chart.cpu.alt=JVM CPU utilization chart
-#probe.jsp.os.chart.cpu.legend=CPU usage
-#probe.jsp.os.chart.memory=OS & JVM memory usage (KB)
-#probe.jsp.os.chart.memory.alt=OS and JVM physical memory usage chart
-#probe.jsp.os.chart.memory.legend.total=total used
-#probe.jsp.os.chart.memory.legend.jvm=used by JVM
-#probe.jsp.os.chart.swap=Swap usage (KB)
-#probe.jsp.os.chart.swap.alt=Swap usage chart
-#probe.jsp.os.chart.swap.legend=swap used
-#probe.jsp.os.chart.fd=File descriptors
-#probe.jsp.os.chart.fd.alt=File descriptors chart
-#probe.jsp.os.chart.fd.legend.open=open file descriptors
-#probe.jsp.os.chart.fd.legend.max=max file descriptors
-#probe.jsp.os.card.name=OS Name:
-#probe.jsp.os.card.version=OS Version:
-#probe.jsp.os.card.processors=Processors:
-#probe.jsp.os.card.totalMemory=Total RAM:
-#probe.jsp.os.card.freeMemory=Free RAM:
-#probe.jsp.os.card.committedVirtualMemory=Committed JVM memory:
-#probe.jsp.os.card.totalSwap=Total swap:
-#probe.jsp.os.card.freeSwap=Free swap:
-
-#probe.jsp.title.testDataSource={0} -> {1}
-#probe.src.dataSourceTest.resource.lookup.failure=Data source {0} does not exist
-#probe.src.dataSourceTest.connection.failure=Cannot establish a database connection. {0}
-#probe.src.dataSourceTest.connection.success=Successfully connected to the database
-#probe.src.dataSourceTest.sql.required=Sql query text is required
-#probe.src.dataSourceTest.sql.failure=Error encountered while executing the query. {0}
-#probe.src.dataSourceTest.sql.null=NULL
-#probe.src.dataSourceTest.cachedResultSet.failure=Cannot retrieve a cached result set
-#probe.jsp.dataSourceTest.help=This screen can help you to test your data source database connectivity.\
-#Test connection checks if a database connection can be established and displays some database information.\
-#Execute SQL executes an SQL query you enter against the database.\
-#You can see a database operation output or an error message at the bottom of the screen.\
-#Show history displays a list of queries you have executed.\
-#Please consider using Show options to limit the number of records returned by you query for not to waste your system resources.
-#probe.jsp.dataSourceTest.menu.back=Back to data sources
-#probe.jsp.dataSourceTest.menu.connect=Test connection
-#probe.jsp.dataSourceTest.menu.execute=Execute sql (Ctrl+Enter)
-#probe.jsp.dataSourceTest.menu.showHistory=Show history (Ctrl+Down)
-#probe.jsp.dataSourceTest.menu.hideHistory=Hide history (Ctrl+Down)
-#probe.jsp.dataSourceTest.menu.showOptions=Show options (Ctrl+Up)
-#probe.jsp.dataSourceTest.menu.hideOptions=Hide options (Ctrl+Up)
-#probe.jsp.dataSourceTest.menu.wrap=Wrap lines
-#probe.jsp.dataSourceTest.menu.nowrap=Don't wrap lines
-#probe.jsp.dataSourceTest.menu.abbreviations=Help!
-#probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit enabled)
-#probe.jsp.dataSourceTest.sqlForm.maxRows.label=Records to retrieve
-#probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Records per page
-#probe.jsp.dataSourceTest.sqlForm.historySize.label=History size
-#probe.jsp.dataSourceTest.h3.results=Query results
-#probe.jsp.dataSourceTest.results.rowcount={0} record(s) affected.
-#probe.jsp.dataSourceTest.h3.metaData=Database Info
-#probe.jsp.dataSourceTest.chart.usage.title=Datasource usage
-#probe.jsp.dataSourceTest.dbMetaData.col.propName=Property Name
-#probe.jsp.dataSourceTest.dbMetaData.col.propValue=Property Value
-#probe.jsp.dataSourceTest.dbMetaData.dbProdName=Database Product Name
-#probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Database Product Version
-#probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=JDBC Driver Name
-#probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=JDBC Driver Version
-#probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=JDBC Version
-#probe.jsp.dataSourceTest.results.paging.banner.item_name=record
-#probe.jsp.dataSourceTest.results.paging.banner.items_name=records
-#probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
-#probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Displaying one {0}.
-#probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Displaying all {2}.
-#probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Displaying {2} to {3}.
-#probe.jsp.dataSourceTest.results.paging.banner.first=First
-#probe.jsp.dataSourceTest.results.paging.banner.prev=Prev
-#probe.jsp.dataSourceTest.results.paging.banner.next=Next
-#probe.jsp.dataSourceTest.results.paging.banner.last=Last
-#probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Go to page {0}
-#probe.jsp.dataSourceTest.sql.completed=Statement completed.
-#probe.jsp.dataSourceTest.h3.queryHistory=Query history
-#probe.jsp.dataSourceTest.queryHistory.empty=The history list is empty
-
-#probe.jsp.whois.timeout=Could not completed WHOIS query. Check if WHOIS is blocked by your network.
-
-#probe.jsp.threadstack.native=native code
-#probe.jsp.threadstack.unknown=unknown source
-#probe.jsp.threadstack.unavailable=Trace stack is unavailable for this thread
-
-#probe.jsp.tooltip.close=close
-
-#probe.jsp.sessions.h3=Sessions
-#probe.jsp.sessions.search.h3=Session search criteria
-#probe.jsp.sessions.menu.showSearch=Session search
-#probe.jsp.sessions.menu.applySearch=Apply search
-#probe.jsp.sessions.menu.clearSearch=Clear search
-#probe.jsp.sessions.menu.searchHelp=Help
-#probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
-#Whether Session Id matches a regular expression.\
-#Whether Last IP contains a substring.\
-#Whether Idle Time falls into a range specified in seconds.\
-#Whether Age falls into a range specified in seconds.\
-#Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
-#This condition allows finding a session with an attribute A and/or an attribute B set.
-#probe.jsp.sessions.search.sessionId=Session id (RE)
-#probe.jsp.sessions.search.attrName=Attribute names (RE list)
-#probe.jsp.sessions.search.ageFrom=Age from (sec)
-#probe.jsp.sessions.search.ageTo=to
-#probe.jsp.sessions.search.idleTimeFrom=Idle time from (sec)
-#probe.jsp.sessions.search.idleTimeTo=to
-#probe.jsp.sessions.search.lastIP=Last IP (substring)
-#probe.jsp.sessions.search.results.h3=Session search results
-#probe.src.sessions.search.empty=Search criteria is empty
-#probe.src.sessions.search.results.empty=No sessions have matched the search criteria
-#probe.src.sessions.search.invalid=Search criteria is invalid
-#probe.src.sessions.search.invalid.sessionId=Session id regular expression is invalid. {0}
-#probe.src.sessions.search.invalid.attrName=Attribute name regular expression is invalid. {0}
-#probe.src.sessions.search.invalid.ageFrom=Age from value is invalid
-#probe.src.sessions.search.invalid.ageTo=Age to value is invalid
-#probe.src.sessions.search.invalid.idleTimeFrom=Idle time from value is invalid
-#probe.src.sessions.search.invalid.idleTimeTo=Idle time to value is invalid
-#probe.src.sessions.search.invalid.lastIP=Last IP regular expression is invalid. {0}
-
-#probe.jsp.app.nav.title=Application
-#probe.jsp.app.nav.summary=Summary
-#probe.jsp.app.nav.sessions=Sessions
-#probe.jsp.app.nav.attributes=Attributes
-#probe.jsp.app.nav.jsps=JSPs
-#probe.jsp.app.nav.resources=Resources
-#probe.jsp.app.nav.initParams=Parameters
-#probe.jsp.app.nav.webxml=Deployment descriptor
-#probe.jsp.app.nav.contextxml=Context descriptor
-#probe.jsp.app.nav.filters=Filters
-#probe.jsp.app.nav.servlets=Servlets
-
-#probe.jsp.title.app.initParams={0} - initialization parameters
-#probe.jsp.app.initParams.h3.params=Context initialization parameters
-#probe.jsp.app.initParams.col.name=Name
-#probe.jsp.app.initParams.col.value=Value
-#probe.jsp.app.initParams.col.source=Source
-#probe.jsp.app.initParams.source.deplDescr=web.xml
-#probe.jsp.app.initParams.source.context=context
-#probe.jsp.app.initParams.empty=There are no context initialization parameters defined for this application
-
-#probe.jsp.title.app.viewXMLConf={0} - {1}
-#probe.jsp.app.viewXMLConf.notfound= Cannot find {0} of this application
-#probe.jsp.app.viewXMLConf.h3.scr={0} source
-#probe.src.app.viewxmlconf.webxml.desc=deployment descriptor
-#probe.src.app.viewxmlconf.contextxml.desc=context descriptor
-
-#probe.jsp.title.app.filters={0} - filters
-#probe.jsp.title.app.filtermaps={0} - filter mappings
-#probe.jsp.app.filtermaps.opt.defs=Filter definitions
-#probe.jsp.app.filters.opt.maps=Filter mappings
-#probe.jsp.app.filters.h3.defs=Filters
-#probe.jsp.app.filtermaps.h3.maps=Filter mappings
-#probe.jsp.app.filters.col.filterName=Name
-#probe.jsp.app.filters.col.filterClass=Class
-#probe.jsp.app.filters.col.filterDesc=Description
-#probe.jsp.app.filtermaps.col.url=Url
-#probe.jsp.app.filtermaps.col.filterName=Filter name
-#probe.jsp.app.filtermaps.col.servletName=Servlet name
-#probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
-#probe.jsp.app.filters.empty=There are no filters defined for this application
-#probe.jsp.app.filtermaps.empty=There are no filter mappings defined for this application
-
-#probe.jsp.title.servlets.all=Servlets
-#probe.jsp.title.servlets.app={0} - servlets
-#probe.jsp.title.servletmaps.all=Servlet mappings
-#probe.jsp.title.servletmaps.app={0} - servlet mappings
-#probe.jsp.servletmaps.opt.defs=Servlets
-#probe.jsp.servletmaps.opt.all=Show all
-#probe.jsp.servlets.opt.maps=Servlet mappings
-#probe.jsp.servlets.opt.all=Show all
-#probe.jsp.servlets.h3.defs=Servlets
-#probe.jsp.servletmaps.h3.maps=Servlet mappings
-#probe.jsp.servletmaps.col.url=Url
-#probe.jsp.servletmaps.col.servletName=Servlet name
-#probe.jsp.servlets.col.applicationName=App
-#probe.jsp.servlets.col.servletName=Name
-#probe.jsp.servletmaps.col.servletClass=Servlet class
-#probe.jsp.servlets.col.available=Avail
-#probe.jsp.servlets.col.loadOnStartup=Startup
-#probe.jsp.servlets.empty=There are no servlets defined
-#probe.jsp.servletmaps.empty=There are no servlet mappings defined
-#probe.jsp.servlets.col.minTime=Min time
-#probe.jsp.servlets.col.maxTime=Max time
-#probe.jsp.servlets.col.processingTime=Proc time
-#probe.jsp.servlets.col.loadTime=Load time
-#probe.jsp.servlets.col.multiThreaded=Mult Thrd
-#probe.jsp.servlets.col.requestCount=Req
-#probe.jsp.servlets.col.errorCount=Err
-
-#probe.jsp.title.app.summary={0} - application summary
-#probe.jsp.app.summary.application=Application name:
-#probe.jsp.app.summary.description=Description:
-#probe.jsp.app.summary.distributable=Clustered:
-#probe.jsp.app.summary.docBase=Doc. base:
-#probe.jsp.app.summary.servletVersion=Servlet version:
-#probe.jsp.app.summary.sessionTimeout=Session timeout:
-#probe.jsp.app.summary.servletCount=Servlet count:
-#probe.jsp.app.summary.status=This application is
-probe.jsp.app.summary.requestCount=\u0417\u0430\u043f\u0440\u043e\u0441\u043e\u0432:
-#probe.jsp.app.summary.sessionCount=Sessions
-#probe.jsp.app.summary.sessionAttributeCount=Session attrs.
-#probe.jsp.app.summary.sessionSize=Session size
-#probe.jsp.app.summary.contextAttributeCount=Context attrs.
-#probe.jsp.app.summary.serializable=Ser.
-probe.jsp.app.summary.errorCount=\u0427\u0438\u0441\u043b\u043e \u043e\u0448\u0438\u0431\u043e\u043a:
-#probe.jsp.app.summary.processingTime=\u041e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f:
-#probe.jsp.app.summary.minTime=Min time:
-probe.jsp.app.summary.maxTime=\u041c\u0430\u043a\u0441. \u0432\u0440\u0435\u043c\u044f:
-#probe.jsp.app.summary.avgTime=Avg response time:
-#probe.jsp.app.summary.h3.static=Application information
-#probe.jsp.app.summary.h3.runtime=Runtime information
-#probe.jsp.app.summary.invalidApp=The application is invalid
-#probe.jsp.app.summary.runtime.unavailable=This application is not running, runtime information is unavailable
-#probe.jsp.app.summary.menu.start=Start
-#probe.jsp.app.summary.menu.stop=Stop
-#probe.jsp.app.summary.menu.reload=Reload
-#probe.jsp.app.summary.menu.undeploy=Undeploy
-#probe.jsp.app.summary.menu.goTo=Go to
-#probe.jsp.app.summary.menu.startStats=Start collecting stats
-#probe.jsp.app.summary.menu.stopStats=Stop collecting stats
-#probe.jsp.app.summary.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
-#probe.jsp.app.summary.dataSourceUsageScore=Datasource usage
-#probe.jsp.app.summary.jdbcUsage.title=Max.conn.usage {0}%
-#probe.jsp.app.summary.h3.charts=Statistics charts
-#probe.jsp.app.summary.charts.requests.title=Number of requests
-#probe.jsp.app.summary.charts.avgProcTime.title=Average response time (ms)
-#probe.jsp.app.summary.charts.requests.legend=Requests
-#probe.jsp.app.summary.charts.errors.legend=Errors
-#probe.jsp.app.summary.charts.avgProcTime.legend=Avg. response time
-
-#probe.jsp.title.allappstats=Application statistics
-#probe.jsp.allappstats.charts.totalAvgProcTime.legend=Avg. response time
-#probe.jsp.allappstats.charts.totalReq.legend=Requests
-#probe.jsp.allappstats.charts.totalAvgProcTime.title=Cumulative avg. response time (ms)
-#probe.jsp.allappstats.charts.allAppAvgProcTime.title=Avg. response time by app (ms)
-#probe.jsp.allappstats.charts.totalReq.title=Cumulative requests
-#probe.jsp.allappstats.charts.allAppReq.title=Requests by app (ms)
-#probe.jsp.allappstats.h3.charts=Statistics charts
-
-#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
-#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
-#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
-#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
-#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
-
-#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
-#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
+#
+# Licensed under the GPL License. You may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+#
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+
+# Russian translation by Vlad Ilyushchenko
+probe.jsp.i18n.credit=\u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: \u0412\u043b\u0430\u0434 \u0418\u043b\u044c\u044e\u0449\u0435\u043d\u043a\u043e
+#probe.jsp.icons.credit="Silk" icons from famfamfam.com.
+
+probe.jsp.generic.no=\u043d\u0435\u0442
+probe.jsp.generic.yes=\u0434\u0430
+#probe.jsp.generic.abbreviations=O que significam as abrevia\u00e7\u00f5es?
+
+probe.jsp.app.attributes.col.delete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442
+probe.jsp.app.attributes.col.delete.title=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442
+probe.jsp.app.attributes.col.name=\u0418\u043c\u044f
+probe.jsp.app.attributes.col.type=\u0422\u0438\u043f
+probe.jsp.app.attributes.col.value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
+probe.jsp.app.attributes.h3.attributes=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430
+probe.jsp.app.attributes.noattributes=\u042d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432
+
+probe.jsp.applications.alt.reload=\u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u0438\u0442\u044c
+probe.jsp.applications.alt.undeploy=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+probe.jsp.applications.col.contextAttributeCount=\u041a.\u0410\u0442\u0442\u0440
+probe.jsp.applications.col.description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
+probe.jsp.applications.col.distributable=\u041a\u043b\u0430\u0441\u0442\u0435\u0440?
+probe.jsp.applications.col.jdbcUsage=JDBC \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430
+probe.jsp.applications.col.jsp=JSP
+probe.jsp.applications.col.name=\u0418\u043c\u044f
+probe.jsp.applications.col.serializable=\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u043e?
+probe.jsp.applications.col.sessionAttributeCount=\u0421.\u0410\u0442\u0442\u0440
+probe.jsp.applications.col.sessionCount=\u0421\u0435\u0441\u0441\u0438\u0438
+probe.jsp.applications.col.sessionTimeout=\u0422\u0430\u0439\u043c\u0430\u0443\u0442
+probe.jsp.applications.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
+probe.jsp.applications.col.status=\u0421\u0442\u0430\u0442\u0443\u0441
+#probe.jsp.applications.col.requestCount=Req.
+#probe.jsp.applications.help.contextAttributeCount=total number of ServletContext attributes
+#probe.jsp.applications.help.distributable=application is "distributable"
+#probe.jsp.applications.help.requestCount=total number of requests processed by servlets
+#probe.jsp.applications.help.serializable=all session attributes implement java.io.Serializable
+#probe.jsp.applications.help.sessionAttributeCount=total number of session attributes
+#probe.jsp.applications.help.sessionCount=number of sessions
+probe.jsp.applications.hidesize=\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440
+probe.jsp.applications.jdbcUsage.title=\u041c\u0430\u043a\u0441.\u0438\u0441\u043f\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 {0}%
+probe.jsp.applications.jsp.view=\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440
+probe.jsp.applications.serializable.no=\u043d\u0435\u0442
+probe.jsp.applications.serializable.yes=\u0434\u0430
+probe.jsp.applications.showsize=\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0441\u0435\u0441\u0441\u0438\u0439 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e)
+probe.jsp.applications.status.down=\u0432\u044b\u043a\u043b.
+probe.jsp.applications.status.down.title=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
+probe.jsp.applications.status.up=\u0432\u043a\u043b.
+probe.jsp.applications.title.reload=\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c {0}
+probe.jsp.applications.title.status.up=\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
+probe.jsp.applications.title.undeploy=\u0423\u0434\u0430\u043b\u0438\u0442\u044c {0}
+probe.jsp.applications.undeploy.confirm=\u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0430. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0423\u0414\u0410\u041b\u0418\u0422\u042c {0}?
+
+probe.jsp.connectors.information=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u0440\u0430\u0444\u0444\u0438\u043a\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430\u0445. \u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f. \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0447\u0442\u043e\u0431\u044b \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f.
+probe.jsp.connectors.processor.errorCount=\u0427\u0438\u0441\u043b\u043e \u043e\u0448\u0438\u0431\u043e\u043a:
+probe.jsp.connectors.processor.maxTime=\u041c\u0430\u043a\u0441. \u0432\u0440\u0435\u043c\u044f:
+probe.jsp.connectors.processor.processingTime=\u041e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f:
+probe.jsp.connectors.processor.received=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043e:
+probe.jsp.connectors.processor.requestCount=\u0417\u0430\u043f\u0440\u043e\u0441\u043e\u0432:
+probe.jsp.connectors.processor.sent=\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e:
+probe.jsp.connectors.proc_time.title=\u041e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f (\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a.) \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435
+probe.jsp.connectors.requests.title=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0435
+probe.jsp.connectors.traffic.title=\u041e\u0431\u044a\u0435\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 (\u0432 \u0431\u0430\u0439\u0442\u0430\u0445) \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430
+probe.jsp.connectors.wrk.col.in=\u0412\u0445\u043e\u0434
+probe.jsp.connectors.wrk.col.out=\u0412\u044b\u0445\u043e\u0434
+probe.jsp.connectors.wrk.col.processingTime=\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f
+probe.jsp.connectors.wrk.col.remoteAddr=IP \u0430\u0434\u0440\u0435\u0441
+probe.jsp.connectors.wrk.col.stage=\u0421\u0442\u0430\u0434\u0438\u044f
+probe.jsp.connectors.wrk.col.url=\u0417\u0430\u043f\u0440\u043e\u0441
+#probe.jsp.connectors.wrk.col.thread=Thread
+probe.jsp.connectors.wrk.empty=\u041d\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432
+#probe.jsp.connectors.wrk.stage.endInput=EndInput
+#probe.jsp.connectors.wrk.stage.endOutput=EndOutput
+#probe.jsp.connectors.wrk.stage.ended=Ended
+probe.jsp.connectors.wrk.stage.keepAlive=KeepAlive
+#probe.jsp.connectors.wrk.stage.new=New
+#probe.jsp.connectors.wrk.stage.parse=Parse
+#probe.jsp.connectors.wrk.stage.prepare=Prepare
+#probe.jsp.connectors.wrk.stage.service=Service
+
+probe.jsp.cluster.chart.requests=\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0437\u0430 {0}-\u0442\u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a
+probe.jsp.cluster.chart.traffic=\u0422\u0440\u0430\u0444\u0444\u0438\u043a \u0437\u0430 {0}-\u0442\u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a
+probe.jsp.cluster.h3.info=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435
+probe.jsp.cluster.h3.members=\u0427\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
+probe.jsp.cluster.heartbeatFreq=\u0427\u0430\u0441\u0442\u043e\u0442\u0430 "heartbeat":
+probe.jsp.cluster.heartbeatTimeout=\u0422\u0430\u0439\u043c\u0430\u0443\u0442 "heartbeat":
+probe.jsp.cluster.info=\u0418\u043d\u0444\u043e:
+probe.jsp.cluster.manager=\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440:
+probe.jsp.cluster.mcastAddress=Mcast \u0430\u0434\u0440\u0435\u0441:
+probe.jsp.cluster.mcastBindAddress=Mcast bind \u0430\u0434\u0440\u0435\u0441:
+probe.jsp.cluster.mcastBindAddress.all=\u0432\u0441\u0435
+probe.jsp.cluster.mcastTTL=Mcast TTL
+probe.jsp.cluster.members.col.address=\u0410\u0434\u0440\u0435\u0441
+probe.jsp.cluster.members.col.avgMsgSize=\u0421\u0440\u0420\u0430\u0437\u043c.
+probe.jsp.cluster.members.col.closes=\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0439
+probe.jsp.cluster.members.col.connectCount=\u0427\u0421
+probe.jsp.cluster.members.col.connected=\u0421\u043e\u0435\u0434.?
+probe.jsp.cluster.members.col.disconnectCount=\u0427\u0417
+probe.jsp.cluster.members.col.failures=\u041e\u0448\u0438\u0431\u043a\u0438
+probe.jsp.cluster.members.col.inQueueCounter=\u0412\u0445.\u041e\u0447.
+probe.jsp.cluster.members.col.keepAlive=Keep Alive
+probe.jsp.cluster.members.col.openFailures=\u041e\u0448\u0438\u0431\u043a\u0438 \u043e\u043a\u0442\u0440.
+probe.jsp.cluster.members.col.opens=\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u044f
+probe.jsp.cluster.members.col.outQueueCounter=\u0412\u044b\u0445.\u041e\u0447.
+probe.jsp.cluster.members.col.queueSize=\u0420\u0430\u0437\u043c.\u041e\u0447.
+probe.jsp.cluster.members.col.queueSizeBytes=\u0420\u0430\u0437\u043c\u041e\u0447\u0411
+probe.jsp.cluster.members.col.requests=\u0417\u0430\u043f\u0440.
+probe.jsp.cluster.members.col.resends=\u041f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0438
+probe.jsp.cluster.members.col.sent=\u041e\u0442\u043f\u0440\u0430\u0432\u043b.
+probe.jsp.cluster.members.col.socketLimit=\u041c\u0430\u043a\u0441. \u0421\u043e\u043a\u0435\u0442\u043e\u0432
+probe.jsp.cluster.members.failing.alt=\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430
+probe.jsp.cluster.members.failing.title=\u042d\u0442\u043e\u0442 \u0447\u043b\u0435\u043d \u0441\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b
+probe.jsp.cluster.members.healthy.alt=\u0437\u0434\u043e\u0440\u043e\u0432
+probe.jsp.cluster.members.healthy.title=\u042d\u0442\u043e\u0442 \u0447\u043b\u0435\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0437\u0434\u043e\u0440\u043e\u0432
+probe.jsp.cluster.mode=\u0420\u0435\u0436\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438:
+probe.jsp.cluster.name=\u0418\u043c\u044f:
+probe.jsp.cluster.noMembers=\u041d\u0435\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0447\u043b\u0435\u043d\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
+probe.jsp.cluster.notAvailable=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Tomcat 5.5 \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.
+probe.jsp.cluster.received=\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e
+probe.jsp.cluster.receiverAddress=\u0410\u0434\u0440\u0435\u0441 \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430:
+probe.jsp.cluster.receiverPort=\u041f\u043e\u0440\u0442 \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u0430:
+probe.jsp.cluster.sent=\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e
+
+probe.jsp.copyright=\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 (C) \u0412\u043b\u0430\u0434 \u0418\u043b\u044e\u0449\u0435\u043d\u043a\u043e 2009-${copyright}. \u0415\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b? \u0418\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f? \u041f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 \u043d\u0430\u0448 \u0441\u0430\u0439\u0442 https://github.com/psi-probe/psi-probe (english)
+
+probe.jsp.dataSourceGroups.empty=
+probe.jsp.dataSourceGroups.information=
+#probe.jsp.dataSourceGroups.jdbcUsage.title=Max.conn.usage {0}%
+probe.jsp.dataSourceGroups.list.col.busy=
+probe.jsp.dataSourceGroups.list.col.established=
+probe.jsp.dataSourceGroups.list.col.max=
+probe.jsp.dataSourceGroups.list.col.resourceCount=
+probe.jsp.dataSourceGroups.list.col.url=
+probe.jsp.dataSourceGroups.list.col.usage=
+probe.jsp.dataSourceGroups.menu.back=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443
+
+#probe.jsp.datasources.h3.global=Global Resources
+#probe.jsp.datasources.h3.app=Application Resources
+#probe.jsp.datasources.global.empty=There no server-level data sources configured for this Tomcat instance
+#probe.jsp.datasources.app.empty=There no application-level data sources configured for this Tomcat instance
+probe.jsp.datasources.empty=\u0412 \u044d\u0442\u043e\u043c \u0422\u043e\u043c\u043a\u0430\u0442\u0435 \u043d\u0435\u0442 \u0434\u0430\u0442\u0430\u0441\u043e\u0443\u0440\u0441\u043e\u0432
+#probe.jsp.datasources.help.max=maximum number of connections in the pool
+#probe.jsp.datasources.help.established=number of established connections that can be reused
+#probe.jsp.datasources.help.busy=number of busy connections cannot be reused
+probe.jsp.datasources.list.col.application=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
+probe.jsp.datasources.list.col.auth=\u0410\u0432\u0442\u043e\u0440\u0438\u0437.
+probe.jsp.datasources.list.col.busy=\u0417
+probe.jsp.datasources.list.col.description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
+probe.jsp.datasources.list.col.established=\u0423
+probe.jsp.datasources.list.col.linkTo=\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430
+probe.jsp.datasources.list.col.max=\u041c
+probe.jsp.datasources.list.col.reset.alt=\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c
+probe.jsp.datasources.list.col.resource=\u0420\u0435\u0441\u0443\u0440\u0441
+probe.jsp.datasources.list.col.type=\u0422\u0438\u043f
+probe.jsp.datasources.list.col.url=URL
+probe.jsp.datasources.list.col.usage=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430
+probe.jsp.datasources.list.col.user=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437.
+probe.jsp.datasources.list.misconfigured.alt=\u041e\u0448\u0438\u0431\u043a\u0430
+probe.jsp.datasources.opt.groupByJdbcUrl=\u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e URL
+
+probe.jsp.deployment.war.success={0} \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d
+probe.jsp.deployment.compilationDetails=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438
+probe.jsp.deployment.s1.compile.label=\u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c JSP \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 WAR (\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442)
+probe.jsp.deployment.s1.description=\u0417\u0430\u043b\u0438\u0442\u044c .war \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u0415\u0441\u043b\u0438 \u0438\u043c\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 META-INF/context.xml \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 "path" \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0438\u043d\u0430\u0447\u0435 \u0422\u043e\u043c\u043a\u0430\u0442 \u0437\u0430\u043f\u0443\u0442\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0448\u0442\u0430\u043d\u0430\u0445.
+probe.jsp.deployment.s1.discard.label=\u0423\u0434\u0430\u043b\u0438\u0442\u044c "work" \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e
+probe.jsp.deployment.s1.file.label=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 .war \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438
+probe.jsp.deployment.s1.submit=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c
+probe.jsp.deployment.s1.title=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u043f\u0440\u043e\u0441\u0442\u043e)
+probe.jsp.deployment.s1.update.label=\u041e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
+probe.jsp.deployment.s2.context.label=\u0418\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 /joedog)
+probe.jsp.deployment.s2.description=\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0435\u0439 \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 %CATALINA_BASE%/conf/Catalina/localhost/. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0438\u043c\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 "/joedog" \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 %CATALINA_BASE%/conf/Catalina/localhost/joedog.xml.
+probe.jsp.deployment.s2.title=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u0441\u043b\u043e\u0436\u043d\u0435\u0435)
+
+probe.jsp.follow.h3.fileContent=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430
+probe.jsp.follow.h3.fileInfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0444\u0430\u0439\u043b\u0435
+#probe.jsp.follow.h3.sources=Logging sources
+probe.jsp.follow.loading=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...
+probe.jsp.follow.menu.back=\u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u043b\u043e\u0433\u043e\u0432
+probe.jsp.follow.menu.clear=\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0431\u0443\u0444\u0435\u0440
+probe.jsp.follow.menu.download=\u0421\u043a\u0430\u0447\u0430\u0442\u044c
+probe.jsp.follow.menu.nowrap=\u041d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438
+probe.jsp.follow.menu.pause=\u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443
+probe.jsp.follow.menu.resume=\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0443
+probe.jsp.follow.menu.wrap=\u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438
+probe.jsp.follow.menu.zoomin=\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0448\u0440\u0438\u0444\u0442
+probe.jsp.follow.menu.zoomout=\u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0448\u0440\u0438\u0444\u0442
+probe.jsp.followed_file_info.fileName=\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430:
+probe.jsp.followed_file_info.lastModified=\u0414\u0430\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438:
+probe.jsp.followed_file_info.size=\u0420\u0430\u0437\u043c\u0435\u0440:
+
+probe.jsp.jsps.col.lastmodified=\u0414\u0430\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438
+probe.jsp.jsps.col.message=\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438
+probe.jsp.jsps.col.name=\u0418\u043c\u044f JSP
+probe.jsp.jsps.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
+probe.jsp.jsps.col.status=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435
+probe.jsp.jsps.notfound=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 JSP \u0444\u0430\u0439\u043b\u043e\u0432
+probe.jsp.jsps.opt.compile=\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435
+probe.jsp.jsps.opt.compileall=\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435
+probe.jsp.jsps.opt.discardscratch=\u0423\u0434\u0430\u043b\u0438\u0442\u044c "work" \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e
+probe.jsp.jsps.opt.toggleall=\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0435
+probe.jsp.jsps.status.compiled=\u041a\u043e\u043c\u043f.
+probe.jsp.jsps.status.failed=\u041e\u0448\u0438\u0431\u043a\u0430
+probe.jsp.jsps.status.outdated=\u0423\u0441\u0442\u0430\u0440\u0435\u043b\u043e
+
+probe.jsp.logs.col.app=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
+probe.jsp.logs.col.class=\u041a\u043b\u0430\u0441\u0441
+probe.jsp.logs.col.file=\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430
+#probe.jsp.logs.col.level=Level
+probe.jsp.logs.col.modified=\u0414\u0430\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438
+probe.jsp.logs.col.name=\u0418\u043c\u044f
+probe.jsp.logs.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
+probe.jsp.logs.col.type=\u0422\u0438\u043f
+probe.jsp.logs.download.alt=\u0421\u043a\u0430\u0447\u0430\u0442\u044c
+probe.jsp.logs.hideapps=\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
+probe.jsp.logs.showapps=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
+probe.jsp.logs_notSupported.message=\u0412\u0430\u0448\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 {0} {1} \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 SUN reflection API - sun.reflect.ReflectionFactory. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043b\u043e\u0433 \u0444\u0430\u0439\u043b\u043e\u0432 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d.
+
+#probe.jsp.memory.advise.finalization=Advise Finalization
+#probe.jsp.memory.advise.gc=Advise GC
+#probe.jsp.memory.col.committed=Committed
+#probe.jsp.memory.col.group=Group
+#probe.jsp.memory.col.initial=Initial
+#probe.jsp.memory.col.max=Maximum
+#probe.jsp.memory.col.name=Name
+#probe.jsp.memory.col.plot=Plot
+#probe.jsp.memory.col.usageScore=Usage score
+#probe.jsp.memory.col.used=Used
+#probe.jsp.memory.h3.charts=Memory usage history
+#probe.jsp.memory.h3.table=Current memory usage
+#probe.jsp.memory.loading=Loading...
+#probe.jsp.memory.usage.title=Usage {0}%
+#probe.jsp.memory.notAvailable=This page requires Java5 with enabled JMX Agent. To enable the JXM Agent please add "-Dcom.sun.management.jmxremote" to java command line or $JAVA_OPTS environment variable. If you are an IBM JDK user please add these properties: -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.ssl=false
+
+probe.jsp.menu.applications=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
+probe.jsp.menu.cluster=\u041a\u043b\u0430\u0441\u0442\u0435\u0440
+probe.jsp.menu.connectors=\u0420\u0430\u0437\u044a\u0435\u043c\u044b
+probe.jsp.menu.datasources=\u0414\u0430\u0442\u0430\u0441\u043e\u0443\u0440\u0441\u044b
+probe.jsp.menu.deployment=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430
+probe.jsp.menu.logs=\u041b\u043e\u0433 \u0444\u0430\u0439\u043b\u044b
+#probe.jsp.menu.memory=Memory
+probe.jsp.menu.quickcheck=\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430
+probe.jsp.menu.sysinfo=\u0421\u0438\u0441\u0442\u0435\u043c\u0435
+probe.jsp.menu.threads=\u041f\u043e\u0442\u043e\u043a\u0438
+
+probe.jsp.noaccess=\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u0442\u043e\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u044e\u0441\u0442\u0430 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0412 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 "\u043d\u0430\u0437\u0430\u0434" \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435
+#probe.jsp.noaccess.ajax=You do not have sufficient privileges to access this functionality.
+probe.jsp.noaccess.title=403 \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e
+probe.jsp.notfound=\u0417\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0434\u043b\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443.
+probe.jsp.notfound.title=404 \u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e
+
+probe.jsp.resources.col.auth=\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f
+probe.jsp.resources.col.linkTo=\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430
+probe.jsp.resources.col.name=\u0418\u043c\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430
+probe.jsp.resources.col.type=\u0422\u0438\u043f
+probe.jsp.resources.empty=\u0423 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442
+probe.jsp.resources.info.busy=\u0417\u0430\u043d\u044f\u0442\u043e:
+probe.jsp.resources.info.connectionUsage.alt=\u0418\u0441\u043f.\u0441\u043e\u0435\u0434 {0}%
+probe.jsp.resources.info.established=\u0422\u0435\u043a.\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439:
+probe.jsp.resources.info.max=\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c:
+probe.jsp.resources.info.misconfigured=\u042d\u0442\u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u043d\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043d\u0435\u043c \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430
+probe.jsp.resources.info.misconfigured.alt=\u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a
+probe.jsp.resources.info.reset=
+probe.jsp.resources.info.reset.alt=\u0421\u0431\u0440\u043e\u0441
+probe.jsp.resources.info.title=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f:
+
+#probe.jsp.servlet_source.h3.source=Auto generated servlet code
+#probe.jsp.servlet_source.opt.jsp=view JSP
+
+probe.jsp.sessionAttibutes.card.age=\u0412\u043e\u0437\u0440\u0430\u0441\u0442:
+probe.jsp.sessionAttibutes.card.application=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435:
+probe.jsp.sessionAttibutes.card.created=\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f:
+probe.jsp.sessionAttibutes.card.expiryTime=\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043e:
+probe.jsp.sessionAttibutes.card.id=ID:
+probe.jsp.sessionAttibutes.card.idleTime=\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f:
+probe.jsp.sessionAttibutes.card.info=\u0418\u043d\u0444\u043e:
+probe.jsp.sessionAttibutes.card.lastAccessed=\u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430:
+probe.jsp.sessionAttibutes.card.manager=\u0422\u0438\u043f Manager:
+probe.jsp.sessionAttibutes.card.maxIdleTime=\u041c\u0430\u043a\u0441. \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u044f
+probe.jsp.sessionAttibutes.card.serializable=\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u0430:
+probe.jsp.sessionAttibutes.card.serializable.no=\u043d\u0435\u0442
+probe.jsp.sessionAttibutes.card.serializable.yes=\u0434\u0430
+probe.jsp.sessionAttibutes.card.size=\u0420\u0430\u0437\u043c\u0435\u0440:
+probe.jsp.sessionAttibutes.col.delete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+probe.jsp.sessionAttibutes.col.delete.title=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442
+probe.jsp.sessionAttibutes.col.name=\u0418\u043c\u044f
+probe.jsp.sessionAttibutes.col.serializable=\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u043e?
+probe.jsp.sessionAttibutes.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
+probe.jsp.sessionAttibutes.col.type=\u0422\u0438\u043f
+probe.jsp.sessionAttibutes.col.value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
+probe.jsp.sessionAttibutes.h3.attributes=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b
+probe.jsp.sessionAttibutes.h3.card=\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0441\u0435\u0441\u0441\u0438\u0438
+probe.jsp.sessionAttibutes.invalidSid=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 ID \u0441\u0435\u0441\u0441\u0438\u0438 \u0438\u043b\u0438 \u0441\u0435\u0441\u0441\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c (expired)
+probe.jsp.sessionAttibutes.menu.back=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0441\u0435\u0441\u0441\u0438\u0439
+probe.jsp.sessionAttibutes.menu.destroy=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e
+probe.jsp.sessionAttibutes.noattributes=\u042d\u0442\u0430 \u0441\u0435\u0441\u0441\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432
+
+probe.jsp.sessions.col.age=\u0412\u043e\u0437\u0440\u0430\u0441\u0442
+probe.jsp.sessions.col.creationTime=\u0412\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f
+probe.jsp.sessions.col.expiryTime=\u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043e
+probe.jsp.sessions.col.id=ID \u0441\u0435\u0441\u0441\u0438\u0438
+#probe.jsp.sessions.col.applicationName=App
+probe.jsp.sessions.col.idleTime=\u0411\u0435\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442
+probe.jsp.sessions.col.lastAccessTime=\u0412\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430
+probe.jsp.sessions.col.objectCount=\u041a\u043e\u043b. \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432
+probe.jsp.sessions.col.serializable=\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u0430
+probe.jsp.sessions.col.size=\u0420\u0430\u0437\u043c\u0435\u0440
+#probe.jsp.sessions.col.lastIP=Last IP
+#probe.jsp.sessions.unknown.ip=unknown
+probe.jsp.sessions.empty=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442
+probe.jsp.sessions.menu.expire=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+probe.jsp.sessions.menu.toggle=\u0418\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c
+probe.jsp.sessions.status.no=\u043d\u0435\u0442
+probe.jsp.sessions.status.yes=\u0434\u0430
+#probe.jsp.sessions.opt.all=Show all
+probe.jsp.showsize=\u0412\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b
+probe.jsp.hidesize=\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b
+
+probe.jsp.sysinfo.col.name=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440
+probe.jsp.sysinfo.col.value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
+probe.jsp.sysinfo.container.title=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435
+probe.jsp.sysinfo.memory.adviseGC=\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c GC
+probe.jsp.sysinfo.memory.free=\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u043e:
+probe.jsp.sysinfo.memory.max=\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c:
+probe.jsp.sysinfo.memory.title=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438
+probe.jsp.sysinfo.memory.total=\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0431\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440:
+probe.jsp.sysinfo.memory.usage=\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438
+probe.jsp.sysinfo.memory.usage.alt=\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438
+#probe.jsp.sysinfo.os.applicationBase=Application base:
+probe.jsp.sysinfo.os.catalinaBase=catalina.base:
+probe.jsp.sysinfo.os.catalinaHome=catalina.home:
+#probe.jsp.sysinfo.os.configBase=Configuration base:
+probe.jsp.sysinfo.os.container=\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:
+probe.jsp.sysinfo.os.currentTime=\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f:
+probe.jsp.sysinfo.os.jvm=\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430:
+probe.jsp.sysinfo.os.name=\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430:
+probe.jsp.sysinfo.os.processors=\u041a\u043e\u043b-\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432:
+probe.jsp.sysinfo.os.title=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0421\u0438\u0441\u0442\u0435\u043c\u0435
+probe.jsp.sysinfo.os.workingDir=\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f
+probe.jsp.sysinfo.sysproperties.title=\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (System.properties)
+
+probe.jsp.threadpools.currentThreadCount=\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+probe.jsp.threadpools.currentThreadsBusy=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043d\u044f\u0442\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+probe.jsp.threadpools.maxSpareThreads=\u041c\u0430\u043a\u0441. \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+probe.jsp.threadpools.maxThreads=\u041c\u0430\u043a\u0441. \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+probe.jsp.threadpools.menu.threads=\u0417\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438
+probe.jsp.threadpools.minSpareThreads=\u041c\u0438\u043d. \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+probe.jsp.threadpools.name=\u0418\u043c\u044f
+
+probe.jsp.threads.col.application=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
+probe.jsp.threads.col.classLoader=Class loader
+probe.jsp.threads.col.daemon=\u0414
+probe.jsp.threads.col.groupName=\u0413\u0440\u0443\u043f\u043f\u0430
+probe.jsp.threads.col.interrupted=\u041e
+probe.jsp.threads.col.name=\u0418\u043c\u044f
+probe.jsp.threads.col.priority=\u041f
+probe.jsp.threads.col.runnableClass=Runnable
+probe.jsp.threads.col.threadClass=\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u0442\u043e\u043a\u0430
+#probe.jsp.threads.col.id=ID
+#probe.jsp.threads.col.execPoint=Exec. point
+#probe.jsp.threads.col.state=State
+#probe.jsp.threads.col.inNative=In.Native
+#probe.jsp.threads.col.suspended=Susp.
+#probe.jsp.threads.col.waitedCount=WC
+#probe.jsp.threads.col.blockedCount=BC
+#probe.jsp.threads.help.priority=thread priority, the higher the number the higher the priority
+#probe.jsp.threads.help.daemon=thread is a daemon
+#probe.jsp.threads.help.interrupted=thread has been interrupted
+#probe.jsp.threads.help.inNative=true if thread is executing native code
+#probe.jsp.threads.help.suspended=thread is suspended
+#probe.jsp.threads.help.waitedCount="wait count" - number of times thread has been waiting on something
+#probe.jsp.threads.help.blockedCount="blocked count" - number of times thread has been blocked
+probe.jsp.threads.info.loading=\u0417\u0430\u0440\u0443\u0437\u043a\u0430...
+probe.jsp.threads.info.unavailable=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e URL \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430
+probe.jsp.threads.killmsg=\u041d\u0435\u043e\u0431\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c JVM. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c {0}?
+probe.jsp.threads.menu.threadpools=\u041f\u0443\u043b\u044b \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+probe.jsp.threads.stop.alt=\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c
+
+probe.jsp.title.app.attributes=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430
+probe.jsp.title.applications=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f
+probe.jsp.title.cluster=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430
+probe.jsp.title.connectors=\u0420\u0430\u0437\u044a\u0435\u043c\u044b
+probe.jsp.title.dataSourceGroups=
+probe.jsp.title.datasources=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u0430\u0442\u0430\u0441\u043e\u0443\u0440\u0441\u044b
+probe.jsp.title.deployment=\u0417\u0430\u043a\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439
+probe.jsp.title.follow=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043b\u043e\u0433 \u0444\u0430\u0439\u043b\u0430
+probe.jsp.title.jsps={0} - JSP \u0444\u0430\u0439\u043b\u044b
+probe.jsp.title.logs=\u041b\u043e\u0433 \u0444\u0430\u0439\u043b\u044b
+probe.jsp.title.logs_notSupported=\u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f
+probe.jsp.title.memory=JMV \u043f\u0430\u043c\u044f\u0442\u044c
+probe.jsp.title.quickcheck=\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430
+probe.jsp.title.resources={0} - \u0420\u0435\u0441\u0443\u0440\u0441\u044b
+probe.jsp.title.servlet_source=\u041a\u043e\u0434 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430
+probe.jsp.title.sessionAttibutes=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u0435\u0441\u0441\u0438\u0438
+probe.jsp.title.sessions={0} - \u0421\u0435\u0441\u0441\u0438\u0438
+#probe.jsp.title.sessions.all=Sessions
+probe.jsp.title.sysinfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435
+probe.jsp.title.threadpools=\u041f\u0443\u043b\u044b \u043f\u043e\u0442\u043e\u043a\u043e\u0432
+probe.jsp.title.threads=\u0417\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438
+probe.jsp.title.viewsource={0} - \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434
+probe.jsp.uptime=\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c {0} \u0434\u043d\u044f {1} \u0447\u0430\u0441\u043e\u0432 {2} \u043c\u0438\u043d\u0443\u0442
+probe.jsp.version=\u0412\u0435\u0440\u0441\u0438\u044f {0} \u043d\u0430 {1}
+
+probe.jsp.viewsource.appname=\u0418\u043c\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:
+probe.jsp.viewsource.encoding=\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430:
+probe.jsp.viewsource.filename=\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430:
+probe.jsp.viewsource.h3.info=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e JSP
+probe.jsp.viewsource.h3.source=\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 JSP
+probe.jsp.viewsource.lastmodified=\u0414\u0430\u0442\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438:
+probe.jsp.viewsource.notfound=\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b.
+probe.jsp.viewsource.opt.back=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 JSP
+probe.jsp.viewsource.opt.compile=\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c
+probe.jsp.viewsource.opt.viewServlet=\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043e\u0434\u0430 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430
+probe.jsp.viewsource.size=\u0420\u0430\u0437\u043c\u0435\u0440:
+probe.jsp.viewsource.state=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435:
+
+probe.jsp.wrongparams=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b
+#probe.jsp.wrongsvrversion=This feature is not implemented for {0}
+probe.jsp.zoomedchart.back=\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0433\u0440\u0443\u043f\u043f\u0430\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432
+probe.jsp.zoomedchart.information=\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0430. \u0413\u0440\u0430\u0444\u0438\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 {0} \u0441\u0435\u043a\u0443\u043d\u0434.
+
+probe.src.contextAction.cannotActOnSelf=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c/\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c/\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
+probe.src.contextDoesntExist=\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 {0} \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442
+probe.src.deploy.context.failure=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c {0}
+probe.src.deploy.context.success=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 {0} \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e
+probe.src.deploy.exploded.success=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 {0} \u0431\u044b\u043b\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 {1}
+probe.src.deploy.war.alreadyExists=\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 {0} \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f
+probe.src.deploy.war.failure=Tomcat \u0432\u0435\u0440\u043d\u0443\u043b \u043e\u0448\u0438\u0431\u043a\u0443 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 "{0}". \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e. \u041f\u043e\u0436\u0430\u043b\u0443\u044e\u0441\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.
+probe.src.deploy.war.notWar.failure=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0430\u0441\u044c. \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043e\u0431\u044f\u0437\u0430\u043d\u043e \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 .war
+#probe.src.deploy.war.notinstalled={0} was not installed
+probe.src.deploy.war.uploadfailure=\u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0437\u0430\u0440\u0433\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b: {0}
+probe.src.reset.datasource.c3p0=\u042d\u0442\u043e\u0442 \u0434\u0430\u043d\u0430\u0441\u043e\u0443\u0440\u0441 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0431\u0440\u043e\u0448\u0435\u043d
+probe.src.reset.datasource.notfound=\u0420\u0435\u0441\u0443\u0440\u0441 {0} \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d
+
+#probe.jsp.title.wrapper=Java Service Wrapper
+#probe.jsp.wrapper.not_available=This JVM is not controlled by Java Service Wrapper
+#probe.jsp.wrapper.menu.restart=restart JVM
+#probe.jsp.wrapper.menu.stop=stop JVM
+#probe.jsp.wrapper.menu.thread_dump=Request thread dump
+#probe.jsp.wrapper.h3.info=Wrapper information
+#probe.jsp.wrapper.h3.props=Wrapper properties
+#probe.jsp.wrapper.confirm.restart=Are you sure you want to restart JVM?
+#probe.jsp.wrapper.confirm.stop=JVM cannot be started again from Probe. Are you sure you want to stop JVM?
+#probe.jsp.wrapper.jvm.stopping=JVM shutdown is now in progress. If you need to start it up again you would have to do it via the console.
+#probe.jsp.wrapper.jvm.restarting=JVM restart is now in progress. This may take a few minutes.
+#probe.jsp.wrapper.jvm.thread_dump=JMV Thread Dump has been requested. You can normally find it in the Wrapper log file.
+
+#probe.jsp.wrapper.user=User:
+#probe.jsp.wrapper.interactive_user=Interactive user:
+#probe.jsp.wrapper.java_pid=Java PID:
+#probe.jsp.wrapper.pid=Wrapper PID:
+#probe.jsp.wrapper.service=Running as service:
+#probe.jsp.wrapper.debug=Debug enabled:
+#probe.jsp.wrapper.version=Wrapper version:
+
+probe.jsp.decorator.system.title=\u0421\u0438\u0441\u0442\u0435\u043c\u0435
+#probe.jsp.decorator.system.overview=Overview
+#probe.jsp.decorator.system.memory=Memory utilization
+#probe.jsp.decorator.system.props=System properties
+#probe.jsp.decorator.system.os=OS information
+#probe.jsp.decorator.system.wrapper=Wrapper control
+
+#probe.jsp.os.h3.information=OS information
+#probe.jsp.os.h3.charts=Historical charts
+#probe.jsp.os.chart.cpu=JVM CPU utilization (%)
+#probe.jsp.os.chart.cpu.alt=JVM CPU utilization chart
+#probe.jsp.os.chart.cpu.legend=CPU usage
+#probe.jsp.os.chart.memory=OS & JVM memory usage (KB)
+#probe.jsp.os.chart.memory.alt=OS and JVM physical memory usage chart
+#probe.jsp.os.chart.memory.legend.total=total used
+#probe.jsp.os.chart.memory.legend.jvm=used by JVM
+#probe.jsp.os.chart.swap=Swap usage (KB)
+#probe.jsp.os.chart.swap.alt=Swap usage chart
+#probe.jsp.os.chart.swap.legend=swap used
+#probe.jsp.os.chart.fd=File descriptors
+#probe.jsp.os.chart.fd.alt=File descriptors chart
+#probe.jsp.os.chart.fd.legend.open=open file descriptors
+#probe.jsp.os.chart.fd.legend.max=max file descriptors
+#probe.jsp.os.card.name=OS Name:
+#probe.jsp.os.card.version=OS Version:
+#probe.jsp.os.card.processors=Processors:
+#probe.jsp.os.card.totalMemory=Total RAM:
+#probe.jsp.os.card.freeMemory=Free RAM:
+#probe.jsp.os.card.committedVirtualMemory=Committed JVM memory:
+#probe.jsp.os.card.totalSwap=Total swap:
+#probe.jsp.os.card.freeSwap=Free swap:
+
+#probe.jsp.title.testDataSource={0} -> {1}
+#probe.src.dataSourceTest.resource.lookup.failure=Data source {0} does not exist
+#probe.src.dataSourceTest.connection.failure=Cannot establish a database connection. {0}
+#probe.src.dataSourceTest.connection.success=Successfully connected to the database
+#probe.src.dataSourceTest.sql.required=Sql query text is required
+#probe.src.dataSourceTest.sql.failure=Error encountered while executing the query. {0}
+#probe.src.dataSourceTest.sql.null=NULL
+#probe.src.dataSourceTest.cachedResultSet.failure=Cannot retrieve a cached result set
+#probe.jsp.dataSourceTest.help=This screen can help you to test your data source database connectivity.\
+#Test connection checks if a database connection can be established and displays some database information.\
+#Execute SQL executes an SQL query you enter against the database.\
+#You can see a database operation output or an error message at the bottom of the screen.\
+#Show history displays a list of queries you have executed.\
+#Please consider using Show options to limit the number of records returned by you query for not to waste your system resources.
+#probe.jsp.dataSourceTest.menu.back=Back to data sources
+#probe.jsp.dataSourceTest.menu.connect=Test connection
+#probe.jsp.dataSourceTest.menu.execute=Execute sql (Ctrl+Enter)
+#probe.jsp.dataSourceTest.menu.showHistory=Show history (Ctrl+Down)
+#probe.jsp.dataSourceTest.menu.hideHistory=Hide history (Ctrl+Down)
+#probe.jsp.dataSourceTest.menu.showOptions=Show options (Ctrl+Up)
+#probe.jsp.dataSourceTest.menu.hideOptions=Hide options (Ctrl+Up)
+#probe.jsp.dataSourceTest.menu.wrap=Wrap lines
+#probe.jsp.dataSourceTest.menu.nowrap=Don't wrap lines
+#probe.jsp.dataSourceTest.menu.abbreviations=Help!
+#probe.jsp.dataSourceTest.sqlForm.sql.label=Sql (auto-commit enabled)
+#probe.jsp.dataSourceTest.sqlForm.maxRows.label=Records to retrieve
+#probe.jsp.dataSourceTest.sqlForm.rowsPerPage.label=Records per page
+#probe.jsp.dataSourceTest.sqlForm.historySize.label=History size
+#probe.jsp.dataSourceTest.h3.results=Query results
+#probe.jsp.dataSourceTest.results.rowcount={0} record(s) affected.
+#probe.jsp.dataSourceTest.h3.metaData=Database Info
+#probe.jsp.dataSourceTest.chart.usage.title=Datasource usage
+#probe.jsp.dataSourceTest.dbMetaData.col.propName=Property Name
+#probe.jsp.dataSourceTest.dbMetaData.col.propValue=Property Value
+#probe.jsp.dataSourceTest.dbMetaData.dbProdName=Database Product Name
+#probe.jsp.dataSourceTest.dbMetaData.dbProdVersion=Database Product Version
+#probe.jsp.dataSourceTest.dbMetaData.jdbcDriverName=JDBC Driver Name
+#probe.jsp.dataSourceTest.dbMetaData.jdbcDriverVersion=JDBC Driver Version
+#probe.jsp.dataSourceTest.dbMetaData.jdbcVersion=JDBC Version
+#probe.jsp.dataSourceTest.results.paging.banner.item_name=record
+#probe.jsp.dataSourceTest.results.paging.banner.items_name=records
+#probe.jsp.dataSourceTest.results.paging.banner.no_items_found=
+#probe.jsp.dataSourceTest.results.paging.banner.one_item_found=Displaying one {0}.
+#probe.jsp.dataSourceTest.results.paging.banner.all_items_found=Displaying all {2}.
+#probe.jsp.dataSourceTest.results.paging.banner.some_items_found=Displaying {2} to {3}.
+#probe.jsp.dataSourceTest.results.paging.banner.first=First
+#probe.jsp.dataSourceTest.results.paging.banner.prev=Prev
+#probe.jsp.dataSourceTest.results.paging.banner.next=Next
+#probe.jsp.dataSourceTest.results.paging.banner.last=Last
+#probe.jsp.dataSourceTest.results.paging.banner.page.link.title=Go to page {0}
+#probe.jsp.dataSourceTest.sql.completed=Statement completed.
+#probe.jsp.dataSourceTest.h3.queryHistory=Query history
+#probe.jsp.dataSourceTest.queryHistory.empty=The history list is empty
+
+#probe.jsp.whois.timeout=Could not completed WHOIS query. Check if WHOIS is blocked by your network.
+
+#probe.jsp.threadstack.native=native code
+#probe.jsp.threadstack.unknown=unknown source
+#probe.jsp.threadstack.unavailable=Trace stack is unavailable for this thread
+
+#probe.jsp.tooltip.close=close
+
+#probe.jsp.sessions.h3=Sessions
+#probe.jsp.sessions.search.h3=Session search criteria
+#probe.jsp.sessions.menu.showSearch=Session search
+#probe.jsp.sessions.menu.applySearch=Apply search
+#probe.jsp.sessions.menu.clearSearch=Clear search
+#probe.jsp.sessions.menu.searchHelp=Help
+#probe.jsp.sessions.search.help=The following search conditions are available to filter the session list.\
+#Whether Session Id matches a regular expression.\
+#Whether Last IP contains a substring.\
+#Whether Idle Time falls into a range specified in seconds.\
+#Whether Age falls into a range specified in seconds.\
+#Whether Attribute Name matches at least one regular expression from a comma-separated regular expression list.\
+#This condition allows finding a session with an attribute A and/or an attribute B set.
+#probe.jsp.sessions.search.sessionId=Session id (RE)
+#probe.jsp.sessions.search.attrName=Attribute names (RE list)
+#probe.jsp.sessions.search.ageFrom=Age from (sec)
+#probe.jsp.sessions.search.ageTo=to
+#probe.jsp.sessions.search.idleTimeFrom=Idle time from (sec)
+#probe.jsp.sessions.search.idleTimeTo=to
+#probe.jsp.sessions.search.lastIP=Last IP (substring)
+#probe.jsp.sessions.search.results.h3=Session search results
+#probe.src.sessions.search.empty=Search criteria is empty
+#probe.src.sessions.search.results.empty=No sessions have matched the search criteria
+#probe.src.sessions.search.invalid=Search criteria is invalid
+#probe.src.sessions.search.invalid.sessionId=Session id regular expression is invalid. {0}
+#probe.src.sessions.search.invalid.attrName=Attribute name regular expression is invalid. {0}
+#probe.src.sessions.search.invalid.ageFrom=Age from value is invalid
+#probe.src.sessions.search.invalid.ageTo=Age to value is invalid
+#probe.src.sessions.search.invalid.idleTimeFrom=Idle time from value is invalid
+#probe.src.sessions.search.invalid.idleTimeTo=Idle time to value is invalid
+#probe.src.sessions.search.invalid.lastIP=Last IP regular expression is invalid. {0}
+
+#probe.jsp.app.nav.title=Application
+#probe.jsp.app.nav.summary=Summary
+#probe.jsp.app.nav.sessions=Sessions
+#probe.jsp.app.nav.attributes=Attributes
+#probe.jsp.app.nav.jsps=JSPs
+#probe.jsp.app.nav.resources=Resources
+#probe.jsp.app.nav.initParams=Parameters
+#probe.jsp.app.nav.webxml=Deployment descriptor
+#probe.jsp.app.nav.contextxml=Context descriptor
+#probe.jsp.app.nav.filters=Filters
+#probe.jsp.app.nav.servlets=Servlets
+
+#probe.jsp.title.app.initParams={0} - initialization parameters
+#probe.jsp.app.initParams.h3.params=Context initialization parameters
+#probe.jsp.app.initParams.col.name=Name
+#probe.jsp.app.initParams.col.value=Value
+#probe.jsp.app.initParams.col.source=Source
+#probe.jsp.app.initParams.source.deplDescr=web.xml
+#probe.jsp.app.initParams.source.context=context
+#probe.jsp.app.initParams.empty=There are no context initialization parameters defined for this application
+
+#probe.jsp.title.app.viewXMLConf={0} - {1}
+#probe.jsp.app.viewXMLConf.notfound= Cannot find {0} of this application
+#probe.jsp.app.viewXMLConf.h3.scr={0} source
+#probe.src.app.viewxmlconf.webxml.desc=deployment descriptor
+#probe.src.app.viewxmlconf.contextxml.desc=context descriptor
+
+#probe.jsp.title.app.filters={0} - filters
+#probe.jsp.title.app.filtermaps={0} - filter mappings
+#probe.jsp.app.filtermaps.opt.defs=Filter definitions
+#probe.jsp.app.filters.opt.maps=Filter mappings
+#probe.jsp.app.filters.h3.defs=Filters
+#probe.jsp.app.filtermaps.h3.maps=Filter mappings
+#probe.jsp.app.filters.col.filterName=Name
+#probe.jsp.app.filters.col.filterClass=Class
+#probe.jsp.app.filters.col.filterDesc=Description
+#probe.jsp.app.filtermaps.col.url=Url
+#probe.jsp.app.filtermaps.col.filterName=Filter name
+#probe.jsp.app.filtermaps.col.servletName=Servlet name
+#probe.jsp.app.filtermaps.col.dispatcherMap=Dispatcher
+#probe.jsp.app.filters.empty=There are no filters defined for this application
+#probe.jsp.app.filtermaps.empty=There are no filter mappings defined for this application
+
+#probe.jsp.title.servlets.all=Servlets
+#probe.jsp.title.servlets.app={0} - servlets
+#probe.jsp.title.servletmaps.all=Servlet mappings
+#probe.jsp.title.servletmaps.app={0} - servlet mappings
+#probe.jsp.servletmaps.opt.defs=Servlets
+#probe.jsp.servletmaps.opt.all=Show all
+#probe.jsp.servlets.opt.maps=Servlet mappings
+#probe.jsp.servlets.opt.all=Show all
+#probe.jsp.servlets.h3.defs=Servlets
+#probe.jsp.servletmaps.h3.maps=Servlet mappings
+#probe.jsp.servletmaps.col.url=Url
+#probe.jsp.servletmaps.col.servletName=Servlet name
+#probe.jsp.servlets.col.applicationName=App
+#probe.jsp.servlets.col.servletName=Name
+#probe.jsp.servletmaps.col.servletClass=Servlet class
+#probe.jsp.servlets.col.available=Avail
+#probe.jsp.servlets.col.loadOnStartup=Startup
+#probe.jsp.servlets.empty=There are no servlets defined
+#probe.jsp.servletmaps.empty=There are no servlet mappings defined
+#probe.jsp.servlets.col.minTime=Min time
+#probe.jsp.servlets.col.maxTime=Max time
+#probe.jsp.servlets.col.processingTime=Proc time
+#probe.jsp.servlets.col.loadTime=Load time
+#probe.jsp.servlets.col.multiThreaded=Mult Thrd
+#probe.jsp.servlets.col.requestCount=Req
+#probe.jsp.servlets.col.errorCount=Err
+
+#probe.jsp.title.app.summary={0} - application summary
+#probe.jsp.app.summary.application=Application name:
+#probe.jsp.app.summary.description=Description:
+#probe.jsp.app.summary.distributable=Clustered:
+#probe.jsp.app.summary.docBase=Doc. base:
+#probe.jsp.app.summary.servletVersion=Servlet version:
+#probe.jsp.app.summary.sessionTimeout=Session timeout:
+#probe.jsp.app.summary.servletCount=Servlet count:
+#probe.jsp.app.summary.status=This application is
+probe.jsp.app.summary.requestCount=\u0417\u0430\u043f\u0440\u043e\u0441\u043e\u0432:
+#probe.jsp.app.summary.sessionCount=Sessions
+#probe.jsp.app.summary.sessionAttributeCount=Session attrs.
+#probe.jsp.app.summary.sessionSize=Session size
+#probe.jsp.app.summary.contextAttributeCount=Context attrs.
+#probe.jsp.app.summary.serializable=Ser.
+probe.jsp.app.summary.errorCount=\u0427\u0438\u0441\u043b\u043e \u043e\u0448\u0438\u0431\u043e\u043a:
+#probe.jsp.app.summary.processingTime=\u041e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f:
+#probe.jsp.app.summary.minTime=Min time:
+probe.jsp.app.summary.maxTime=\u041c\u0430\u043a\u0441. \u0432\u0440\u0435\u043c\u044f:
+#probe.jsp.app.summary.avgTime=Avg response time:
+#probe.jsp.app.summary.h3.static=Application information
+#probe.jsp.app.summary.h3.runtime=Runtime information
+#probe.jsp.app.summary.invalidApp=The application is invalid
+#probe.jsp.app.summary.runtime.unavailable=This application is not running, runtime information is unavailable
+#probe.jsp.app.summary.menu.start=Start
+#probe.jsp.app.summary.menu.stop=Stop
+#probe.jsp.app.summary.menu.reload=Reload
+#probe.jsp.app.summary.menu.undeploy=Undeploy
+#probe.jsp.app.summary.menu.goTo=Go to
+#probe.jsp.app.summary.menu.startStats=Start collecting stats
+#probe.jsp.app.summary.menu.stopStats=Stop collecting stats
+#probe.jsp.app.summary.undeploy.confirm=This operation cannot be reversed. Do you really want to REMOVE {0}?
+#probe.jsp.app.summary.dataSourceUsageScore=Datasource usage
+#probe.jsp.app.summary.jdbcUsage.title=Max.conn.usage {0}%
+#probe.jsp.app.summary.h3.charts=Statistics charts
+#probe.jsp.app.summary.charts.requests.title=Number of requests
+#probe.jsp.app.summary.charts.avgProcTime.title=Average response time (ms)
+#probe.jsp.app.summary.charts.requests.legend=Requests
+#probe.jsp.app.summary.charts.errors.legend=Errors
+#probe.jsp.app.summary.charts.avgProcTime.legend=Avg. response time
+
+#probe.jsp.title.allappstats=Application statistics
+#probe.jsp.allappstats.charts.totalAvgProcTime.legend=Avg. response time
+#probe.jsp.allappstats.charts.totalReq.legend=Requests
+#probe.jsp.allappstats.charts.totalAvgProcTime.title=Cumulative avg. response time (ms)
+#probe.jsp.allappstats.charts.allAppAvgProcTime.title=Avg. response time by app (ms)
+#probe.jsp.allappstats.charts.totalReq.title=Cumulative requests
+#probe.jsp.allappstats.charts.allAppReq.title=Requests by app (ms)
+#probe.jsp.allappstats.h3.charts=Statistics charts
+
+#probe.src.stats.listener.memory.pool.aboveThreshold.subject=WARNING{0} - Memory pool "{1}" above its threshold
+#probe.src.stats.listener.memory.pool.aboveThreshold.body={0}The size of the memory pool "{1}" has risen above its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.belowThreshold.subject=OK{0} - Memory pool "{1}" below its threshold
+#probe.src.stats.listener.memory.pool.belowThreshold.body={0}The size of memory pool "{1}" has fallen below its threshold.\n\nCurrent size: {2} bytes.\nThreshold: {3} bytes.
+#probe.src.stats.listener.memory.pool.flappingStart.subject=Flapping{0} - Memory pool "{1}" messages suppressed
+#probe.src.stats.listener.memory.pool.flappingStart.body={0}The size of memory pool "{1}" is oscillating above and below its size threshold ("flapping"). To avoid sending too many emails, further messages will be suppressed until it stabilizes.
+
+#probe.src.stats.listener.memory.pool.flappingStop.subject.infix=*
+#probe.src.stats.listener.memory.pool.flappingStop.body.prefix=* This value is no longer flapping. Messages have resumed.\n\n
diff --git a/web/src/main/resources/displaytag.properties b/web/src/main/resources/displaytag.properties
index 0503a45776..2cb5b43978 100644
--- a/web/src/main/resources/displaytag.properties
+++ b/web/src/main/resources/displaytag.properties
@@ -1,3 +1,3 @@
-locale.resolver=org.displaytag.localization.I18nSpringAdapter
-locale.provider=org.displaytag.localization.I18nSpringAdapter
+locale.resolver=org.displaytag.localization.I18nSpringAdapter
+locale.provider=org.displaytag.localization.I18nSpringAdapter
export.types=xml
\ No newline at end of file
diff --git a/web/src/main/resources/theme-classic.properties b/web/src/main/resources/theme-classic.properties
index 5c65edeaf1..01daccfde6 100644
--- a/web/src/main/resources/theme-classic.properties
+++ b/web/src/main/resources/theme-classic.properties
@@ -1,35 +1,35 @@
-tables.css=/css/classic/tables.css
-main.css=/css/classic/main.css
-mainnav.css=/css/classic/mainnav.css
-progressbar.css=/css/classic/progressbar.css
-resources.css=/css/classic/resources.css
-messages.css=/css/classic/messages.css
-deploy.css=/css/classic/deploy.css
-datasourcetest.css=/css/classic/datasourcetest.css
-scroller.css=/css/classic/scroller.css
-syntax.css=/css/classic/syntax.css
-java_syntax.css=/css/classic/java_syntax.css
-servlets.css=/css/classic/servlets.css
-tooltip.css=/css/classic/tooltip.css
-
-progressBarOverlapImage=/css/classic/img/white_bar.png
-remove.img=/css/classic/img/bin.jpg
-exclamation.gif=/css/classic/img/exclamation.gif
-reset.gif=/css/classic/gifs/reset.gif
-animated_reset.gif=/css/classic/gifs/animated_reset.gif
-slider.gif=/css/classic/img/scaler_slider.gif
-magnifier.png=/css/classic/gifs/silk/magnifier.gif
-download.png=/css/classic/gifs/silk/page_white_put.gif
-delete.png=/css/classic/gifs/silk/control_eject_blue.gif
-transmit.png=/css/classic/gifs/silk/transmit_blue.gif
-transmit_error.png=/css/classic/gifs/silk/transmit_error.gif
-heap_pool.png=/css/classic/gifs/silk/package_green.gif
-non_heap_pool.png=/css/classic/gifs/silk/brick.gif
-memory_chart_visible.png=/css/classic/gifs/silk/bricks.gif
-memory_chart_hidden.png=/css/classic/gifs/silk/custom/bricks_grey.gif
-bullet_arrow_down.gif=/css/classic/gifs/silk/bullet_arrow_down.gif
-progressbar_editnplace.gif=/css/classic/gifs/progressbar_editnplace.gif
-deployment_descriptor.img=/css/classic/gifs/silk/page_white_cup.gif
-context.img=/css/classic/gifs/silk/page_white_c.gif
-section.expand.img=/css/classic/gifs/icon_plus.gif
-section.collapse.img=/css/classic/gifs/icon_minus.gif
+tables.css=/css/classic/tables.css
+main.css=/css/classic/main.css
+mainnav.css=/css/classic/mainnav.css
+progressbar.css=/css/classic/progressbar.css
+resources.css=/css/classic/resources.css
+messages.css=/css/classic/messages.css
+deploy.css=/css/classic/deploy.css
+datasourcetest.css=/css/classic/datasourcetest.css
+scroller.css=/css/classic/scroller.css
+syntax.css=/css/classic/syntax.css
+java_syntax.css=/css/classic/java_syntax.css
+servlets.css=/css/classic/servlets.css
+tooltip.css=/css/classic/tooltip.css
+
+progressBarOverlapImage=/css/classic/img/white_bar.png
+remove.img=/css/classic/img/bin.jpg
+exclamation.gif=/css/classic/img/exclamation.gif
+reset.gif=/css/classic/gifs/reset.gif
+animated_reset.gif=/css/classic/gifs/animated_reset.gif
+slider.gif=/css/classic/img/scaler_slider.gif
+magnifier.png=/css/classic/gifs/silk/magnifier.gif
+download.png=/css/classic/gifs/silk/page_white_put.gif
+delete.png=/css/classic/gifs/silk/control_eject_blue.gif
+transmit.png=/css/classic/gifs/silk/transmit_blue.gif
+transmit_error.png=/css/classic/gifs/silk/transmit_error.gif
+heap_pool.png=/css/classic/gifs/silk/package_green.gif
+non_heap_pool.png=/css/classic/gifs/silk/brick.gif
+memory_chart_visible.png=/css/classic/gifs/silk/bricks.gif
+memory_chart_hidden.png=/css/classic/gifs/silk/custom/bricks_grey.gif
+bullet_arrow_down.gif=/css/classic/gifs/silk/bullet_arrow_down.gif
+progressbar_editnplace.gif=/css/classic/gifs/progressbar_editnplace.gif
+deployment_descriptor.img=/css/classic/gifs/silk/page_white_cup.gif
+context.img=/css/classic/gifs/silk/page_white_c.gif
+section.expand.img=/css/classic/gifs/icon_plus.gif
+section.collapse.img=/css/classic/gifs/icon_minus.gif
diff --git a/web/src/main/webapp/WEB-INF/decorators.xml b/web/src/main/webapp/WEB-INF/decorators.xml
index 781fb731dc..52668f57f2 100644
--- a/web/src/main/webapp/WEB-INF/decorators.xml
+++ b/web/src/main/webapp/WEB-INF/decorators.xml
@@ -1,13 +1,13 @@
-
-
- /*.xml.htm
- /*.ajax*
- /WEB-INF/*
-
-
-
-
- /
- /*.htm
-
+
+
+ /*.xml.htm
+ /*.ajax*
+ /WEB-INF/*
+
+
+
+
+ /
+ /*.htm
+
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/jsp/ajax/cluster/requests.jsp b/web/src/main/webapp/WEB-INF/jsp/ajax/cluster/requests.jsp
index 4cbd433a60..d1a002efa7 100644
--- a/web/src/main/webapp/WEB-INF/jsp/ajax/cluster/requests.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/ajax/cluster/requests.jsp
@@ -1,17 +1,17 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-
- ${cluster.senderNrOfRequests}
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+
+ ${cluster.senderNrOfRequests}
${cluster.nrOfMsgsReceived}
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/jsp/ajax/jvm_stopped.jsp b/web/src/main/webapp/WEB-INF/jsp/ajax/jvm_stopped.jsp
index 86e5cad29d..d8134d4d44 100644
--- a/web/src/main/webapp/WEB-INF/jsp/ajax/jvm_stopped.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/ajax/jvm_stopped.jsp
@@ -1,27 +1,27 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-
-
-
-
-
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/jsp/ajax/thread_dump.jsp b/web/src/main/webapp/WEB-INF/jsp/ajax/thread_dump.jsp
index 4f11d62c0d..ca89111048 100644
--- a/web/src/main/webapp/WEB-INF/jsp/ajax/thread_dump.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/ajax/thread_dump.jsp
@@ -1,27 +1,27 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-
-
-
-
-
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/jsp/applications.jsp b/web/src/main/webapp/WEB-INF/jsp/applications.jsp
index f37818667c..29dfdc61d3 100644
--- a/web/src/main/webapp/WEB-INF/jsp/applications.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/applications.jsp
@@ -1,271 +1,271 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
-<%@ taglib uri="/WEB-INF/tld/probe.tld" prefix="probe" %>
-
-<%--
- Probe "home" page. Displays list of web applications.
- It is assumed that command by the name "apps" is created by the controller.
-
- Author: Vlad Ilyushchenko
---%>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
+<%@ taglib uri="/WEB-INF/tld/probe.tld" prefix="probe" %>
+
+<%--
+ Probe "home" page. Displays list of web applications.
+ It is assumed that command by the name "apps" is created by the controller.
+
+ Author: Vlad Ilyushchenko
+--%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/main/webapp/WEB-INF/jsp/decorators/application.jsp b/web/src/main/webapp/WEB-INF/jsp/decorators/application.jsp
index 36bfabe61d..bf396e0332 100644
--- a/web/src/main/webapp/WEB-INF/jsp/decorators/application.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/decorators/application.jsp
@@ -1,78 +1,78 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-
-
-
-
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+
+
+
+
+
+
+
diff --git a/web/src/main/webapp/WEB-INF/jsp/errors/403.jsp b/web/src/main/webapp/WEB-INF/jsp/errors/403.jsp
index eae5358e22..1cffaf31ba 100644
--- a/web/src/main/webapp/WEB-INF/jsp/errors/403.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/errors/403.jsp
@@ -1,32 +1,32 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-
-<%--
- "403 - Forbidden" error handler.
-
- Author: Vlad Ilyushchenko
---%>
-
-
-
-
-
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+
+<%--
+ "403 - Forbidden" error handler.
+
+ Author: Vlad Ilyushchenko
+--%>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/jsp/errors/403_ajax.jsp b/web/src/main/webapp/WEB-INF/jsp/errors/403_ajax.jsp
index 79016334f2..c11bec6792 100644
--- a/web/src/main/webapp/WEB-INF/jsp/errors/403_ajax.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/errors/403_ajax.jsp
@@ -1,25 +1,25 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-
-<%--
- "403 - Forbidden" error handler.
-
- Author: Vlad Ilyushchenko
---%>
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+
+<%--
+ "403 - Forbidden" error handler.
+
+ Author: Vlad Ilyushchenko
+--%>
+
+
diff --git a/web/src/main/webapp/WEB-INF/jsp/errors/404.jsp b/web/src/main/webapp/WEB-INF/jsp/errors/404.jsp
index 5f0d6c99e0..38a0d89827 100644
--- a/web/src/main/webapp/WEB-INF/jsp/errors/404.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/errors/404.jsp
@@ -1,31 +1,31 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
-<%--
- "404 - Not Found" error handler.
-
- Author: Vlad Ilyushchenko
---%>
-
-
-
-
-
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
+<%--
+ "404 - Not Found" error handler.
+
+ Author: Vlad Ilyushchenko
+--%>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/jsp/quickcheck.xml.jsp b/web/src/main/webapp/WEB-INF/jsp/quickcheck.xml.jsp
index 6817aafff2..ac1b302138 100644
--- a/web/src/main/webapp/WEB-INF/jsp/quickcheck.xml.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/quickcheck.xml.jsp
@@ -1,34 +1,34 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/xml;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-
-<%--
- "Quick check" results in machine-readable XML format.
-
- Author: Vlad Ilyushchenko
---%>
-
-
-
-
- OK
-
-
- FAULTY
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/xml;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+<%--
+ "Quick check" results in machine-readable XML format.
+
+ Author: Vlad Ilyushchenko
+--%>
+
+
+
+
+ OK
+
+
+ FAULTY
+
+
+
diff --git a/web/src/main/webapp/WEB-INF/jsp/sysinfo.jsp b/web/src/main/webapp/WEB-INF/jsp/sysinfo.jsp
index cd9870966f..696a10dc2f 100644
--- a/web/src/main/webapp/WEB-INF/jsp/sysinfo.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/sysinfo.jsp
@@ -1,88 +1,88 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
-<%@ taglib uri="/WEB-INF/tld/probe.tld" prefix="probe" %>
-
-<%--
- Displays various system information including System.properties. This page helps to evaluate
- the environment Tomcat is running in.
-
- Author: Vlad Ilyushchenko
---%>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
- |
- % |
- |
-
-
-
-
-
-
-
-
-
-
-
- ${systemInformation.serverInfo}
- ${systemInformation.systemProperties['catalina.base'] }
- ${systemInformation.systemProperties['catalina.home'] }
- ${systemInformation.appBase}
- ${systemInformation.configBase}
-
-
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
+<%@ taglib uri="/WEB-INF/tld/probe.tld" prefix="probe" %>
+
+<%--
+ Displays various system information including System.properties. This page helps to evaluate
+ the environment Tomcat is running in.
+
+ Author: Vlad Ilyushchenko
+--%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+ % |
+ |
+
+
+
+
+
+
+
+
+
+
+
+ ${systemInformation.serverInfo}
+ ${systemInformation.systemProperties['catalina.base'] }
+ ${systemInformation.systemProperties['catalina.home'] }
+ ${systemInformation.appBase}
+ ${systemInformation.configBase}
+
+
+
+
+
diff --git a/web/src/main/webapp/WEB-INF/jsp/threads_sun.jsp b/web/src/main/webapp/WEB-INF/jsp/threads_sun.jsp
index 61c82371ec..6f77abb783 100644
--- a/web/src/main/webapp/WEB-INF/jsp/threads_sun.jsp
+++ b/web/src/main/webapp/WEB-INF/jsp/threads_sun.jsp
@@ -1,139 +1,139 @@
-<%--
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
---%>
-
-<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
-<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+<%--
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/main/webapp/WEB-INF/sitemesh.xml b/web/src/main/webapp/WEB-INF/sitemesh.xml
index 398f6d1767..650b151732 100644
--- a/web/src/main/webapp/WEB-INF/sitemesh.xml
+++ b/web/src/main/webapp/WEB-INF/sitemesh.xml
@@ -1,33 +1,33 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/spring-probe-controllers.xml b/web/src/main/webapp/WEB-INF/spring-probe-controllers.xml
index 2655c5a2db..e373ebd6e7 100644
--- a/web/src/main/webapp/WEB-INF/spring-probe-controllers.xml
+++ b/web/src/main/webapp/WEB-INF/spring-probe-controllers.xml
@@ -1,643 +1,643 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- jmxremote.password
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.runtime.period}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.datasource.period}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.app.period}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.app.period}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.connector.period}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.connector.period}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.cluster.period}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.memory.period}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ jmxremote.password
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.runtime.period}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.datasource.period}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.app.period}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.app.period}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.connector.period}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.connector.period}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.cluster.period}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.memory.period}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/spring-probe-resources.xml b/web/src/main/webapp/WEB-INF/spring-probe-resources.xml
index 1dc70d5888..475468b680 100644
--- a/web/src/main/webapp/WEB-INF/spring-probe-resources.xml
+++ b/web/src/main/webapp/WEB-INF/spring-probe-resources.xml
@@ -1,111 +1,111 @@
-
-
-
-
-
-
-
-
-
-
-
-
- NULL
- [PSI Probe]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- catalina.out
- wrapper.log
- stdout.log
- stdout.err
-
-
-
-
-
-
-
-
-
-
- com.googlecode.psiprobe.Tomcat80ContainerAdaptor
- com.googlecode.psiprobe.Tomcat70ContainerAdaptor
- com.googlecode.psiprobe.Tomcat60ContainerAdaptor
- com.googlecode.psiprobe.Tomcat55ContainerAdaptor
- com.googlecode.psiprobe.Tomcat50ContainerAdaptor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.tools.mail.to}
-
-
- ${com.googlecode.psiprobe.tools.mail.subjectPrefix}
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ NULL
+ [PSI Probe]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ catalina.out
+ wrapper.log
+ stdout.log
+ stdout.err
+
+
+
+
+
+
+
+
+
+
+ com.googlecode.psiprobe.Tomcat80ContainerAdaptor
+ com.googlecode.psiprobe.Tomcat70ContainerAdaptor
+ com.googlecode.psiprobe.Tomcat60ContainerAdaptor
+ com.googlecode.psiprobe.Tomcat55ContainerAdaptor
+ com.googlecode.psiprobe.Tomcat50ContainerAdaptor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.tools.mail.to}
+
+
+ ${com.googlecode.psiprobe.tools.mail.subjectPrefix}
+
+
+
+
+
+
+
+
diff --git a/web/src/main/webapp/WEB-INF/spring-probe-security.xml b/web/src/main/webapp/WEB-INF/spring-probe-security.xml
index 9332eb9c19..289a4123e3 100644
--- a/web/src/main/webapp/WEB-INF/spring-probe-security.xml
+++ b/web/src/main/webapp/WEB-INF/spring-probe-security.xml
@@ -1,103 +1,103 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/main/webapp/WEB-INF/spring-probe-servlet.xml b/web/src/main/webapp/WEB-INF/spring-probe-servlet.xml
index dbf7a6954b..acd6f1b38b 100644
--- a/web/src/main/webapp/WEB-INF/spring-probe-servlet.xml
+++ b/web/src/main/webapp/WEB-INF/spring-probe-servlet.xml
@@ -1,53 +1,53 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/webapp/WEB-INF/spring-probe-stats.xml b/web/src/main/webapp/WEB-INF/spring-probe-stats.xml
index 99c3d548a1..1bfc02f614 100644
--- a/web/src/main/webapp/WEB-INF/spring-probe-stats.xml
+++ b/web/src/main/webapp/WEB-INF/spring-probe-stats.xml
@@ -1,494 +1,494 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.connector.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.connector.span}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.cluster.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.cluster.span}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.memory.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.memory.span}
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.listeners.flapInterval}
-
-
- ${com.googlecode.psiprobe.beans.stats.listeners.flapStartThreshold}
-
-
- ${com.googlecode.psiprobe.beans.stats.listeners.flapStopThreshold}
-
-
- ${com.googlecode.psiprobe.beans.stats.listeners.flapLowWeight}
-
-
- ${com.googlecode.psiprobe.beans.stats.listeners.flapHighWeight}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.runtime.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.runtime.span}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.app.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.app.span}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.datasource.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.datasource.span}
-
-
-
-
-
-
-
-
-
-
-
-
- cluster.sent
- cluster.received
-
-
-
-
-
-
-
- cluster.req.sent
- cluster.req.received
-
-
-
-
-
-
-
- stat.connector.{0}.requests
- stat.connector.{0}.errors
-
-
-
-
-
-
-
- stat.connector.{0}.sent
- stat.connector.{0}.received
-
-
-
-
-
-
-
- stat.connector.{0}.proc_time
-
-
-
-
-
-
-
- memory.pool.{0}
-
-
-
-
-
-
-
- os.memory.physical
- os.memory.committed
-
-
-
-
-
-
-
- os.memory.swap
-
-
-
-
-
-
-
- os.cpu
-
-
-
-
-
-
-
- os.fd.open
- os.fd.max
-
-
-
-
-
-
-
- app.requests.{0}
- app.errors.{0}
-
-
-
-
-
-
-
- app.avg_proc_time.{0}
-
-
-
-
-
-
-
- total.avg_proc_time
-
-
-
-
-
-
-
-
-
-
-
-
-
- total.requests
- total.errors
-
-
-
-
-
-
-
-
-
-
-
-
-
- ds.est.{0}
- ds.busy.{0}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.connector.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.connector.phase}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.cluster.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.cluster.phase}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.memory.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.memory.phase}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.runtime.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.runtime.phase}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.app.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.app.phase}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.collectors.datasource.period}
- ${com.googlecode.psiprobe.beans.stats.collectors.datasource.phase}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${com.googlecode.psiprobe.beans.stats.serializer.period}
- ${com.googlecode.psiprobe.beans.stats.serializer.phase}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.connector.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.connector.span}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.cluster.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.cluster.span}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.memory.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.memory.span}
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.listeners.flapInterval}
+
+
+ ${com.googlecode.psiprobe.beans.stats.listeners.flapStartThreshold}
+
+
+ ${com.googlecode.psiprobe.beans.stats.listeners.flapStopThreshold}
+
+
+ ${com.googlecode.psiprobe.beans.stats.listeners.flapLowWeight}
+
+
+ ${com.googlecode.psiprobe.beans.stats.listeners.flapHighWeight}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.runtime.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.runtime.span}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.app.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.app.span}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.datasource.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.datasource.span}
+
+
+
+
+
+
+
+
+
+
+
+
+ cluster.sent
+ cluster.received
+
+
+
+
+
+
+
+ cluster.req.sent
+ cluster.req.received
+
+
+
+
+
+
+
+ stat.connector.{0}.requests
+ stat.connector.{0}.errors
+
+
+
+
+
+
+
+ stat.connector.{0}.sent
+ stat.connector.{0}.received
+
+
+
+
+
+
+
+ stat.connector.{0}.proc_time
+
+
+
+
+
+
+
+ memory.pool.{0}
+
+
+
+
+
+
+
+ os.memory.physical
+ os.memory.committed
+
+
+
+
+
+
+
+ os.memory.swap
+
+
+
+
+
+
+
+ os.cpu
+
+
+
+
+
+
+
+ os.fd.open
+ os.fd.max
+
+
+
+
+
+
+
+ app.requests.{0}
+ app.errors.{0}
+
+
+
+
+
+
+
+ app.avg_proc_time.{0}
+
+
+
+
+
+
+
+ total.avg_proc_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+ total.requests
+ total.errors
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ds.est.{0}
+ ds.busy.{0}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.connector.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.connector.phase}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.cluster.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.cluster.phase}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.memory.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.memory.phase}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.runtime.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.runtime.phase}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.app.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.app.phase}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.collectors.datasource.period}
+ ${com.googlecode.psiprobe.beans.stats.collectors.datasource.phase}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${com.googlecode.psiprobe.beans.stats.serializer.period}
+ ${com.googlecode.psiprobe.beans.stats.serializer.phase}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/main/webapp/WEB-INF/tld/probe.tld b/web/src/main/webapp/WEB-INF/tld/probe.tld
index 4b9630428b..51e6ef7f3b 100644
--- a/web/src/main/webapp/WEB-INF/tld/probe.tld
+++ b/web/src/main/webapp/WEB-INF/tld/probe.tld
@@ -1,221 +1,221 @@
-
-
-
-
-
-
-
-
-
- 1.1
- probe
- https://github.com/psi-probe/psi-probe/jsp/tags
-
-
-
-
-
-
- duration
- com.googlecode.psiprobe.jsp.DurationTag
- JSP
-
-
- value
- true
- true
-
-
-
-
-
-
-
-
- volume
- com.googlecode.psiprobe.jsp.VolumeTag
- JSP
-
-
- value
- true
- true
-
-
-
- fractions
- false
- true
-
-
-
-
-
-
-
-
- toggle
- com.googlecode.psiprobe.jsp.ParamToggleTag
- JSP
-
-
- param
- true
- true
-
-
-
-
-
-
-
-
- addQueryParam
- com.googlecode.psiprobe.jsp.AddQueryParamTag
- JSP
-
-
- param
- true
- true
-
-
-
- value
- true
- true
-
-
-
-
-
-
-
-
- out
- com.googlecode.psiprobe.jsp.OutTag
- JSP
-
-
- value
- false
- true
-
-
-
- maxLength
- false
- true
-
-
-
- ellipsisRight
- false
- true
-
-
-
-
- score
- com.googlecode.psiprobe.jsp.VisualScoreTag
- JSP
-
- value
- true
- true
-
-
- value2
- false
- true
-
-
- maxValue
- false
- true
-
-
- minValue
- false
- true
-
-
- partialBlocks
- false
- true
-
-
- fullBlocks
- true
- true
-
-
- showEmptyBlocks
- false
- true
-
-
- showA
- false
- true
-
-
- showB
- false
- true
-
-
-
-
- max
- max
- java.lang.Math
- long max(long, long)
-
-
-
- escapeJS
- escapeJS
- org.springframework.web.util.JavaScriptUtils
- java.lang.String javaScriptEscape(java.lang.String)
-
-
-
- escapeHtml
- escapeHtml
- org.springframework.web.util.HtmlUtils
- java.lang.String htmlEscape(java.lang.String)
-
-
-
- safeCookieName
- safeCookieName
- com.googlecode.psiprobe.jsp.Functions
- java.lang.String safeCookieName(java.lang.String)
-
-
-
+
+
+
+
+
+
+
+
+
+ 1.1
+ probe
+ https://github.com/psi-probe/psi-probe/jsp/tags
+
+
+
+
+
+
+ duration
+ com.googlecode.psiprobe.jsp.DurationTag
+ JSP
+
+
+ value
+ true
+ true
+
+
+
+
+
+
+
+
+ volume
+ com.googlecode.psiprobe.jsp.VolumeTag
+ JSP
+
+
+ value
+ true
+ true
+
+
+
+ fractions
+ false
+ true
+
+
+
+
+
+
+
+
+ toggle
+ com.googlecode.psiprobe.jsp.ParamToggleTag
+ JSP
+
+
+ param
+ true
+ true
+
+
+
+
+
+
+
+
+ addQueryParam
+ com.googlecode.psiprobe.jsp.AddQueryParamTag
+ JSP
+
+
+ param
+ true
+ true
+
+
+
+ value
+ true
+ true
+
+
+
+
+
+
+
+
+ out
+ com.googlecode.psiprobe.jsp.OutTag
+ JSP
+
+
+ value
+ false
+ true
+
+
+
+ maxLength
+ false
+ true
+
+
+
+ ellipsisRight
+ false
+ true
+
+
+
+
+ score
+ com.googlecode.psiprobe.jsp.VisualScoreTag
+ JSP
+
+ value
+ true
+ true
+
+
+ value2
+ false
+ true
+
+
+ maxValue
+ false
+ true
+
+
+ minValue
+ false
+ true
+
+
+ partialBlocks
+ false
+ true
+
+
+ fullBlocks
+ true
+ true
+
+
+ showEmptyBlocks
+ false
+ true
+
+
+ showA
+ false
+ true
+
+
+ showB
+ false
+ true
+
+
+
+
+ max
+ max
+ java.lang.Math
+ long max(long, long)
+
+
+
+ escapeJS
+ escapeJS
+ org.springframework.web.util.JavaScriptUtils
+ java.lang.String javaScriptEscape(java.lang.String)
+
+
+
+ escapeHtml
+ escapeHtml
+ org.springframework.web.util.HtmlUtils
+ java.lang.String htmlEscape(java.lang.String)
+
+
+
+ safeCookieName
+ safeCookieName
+ com.googlecode.psiprobe.jsp.Functions
+ java.lang.String safeCookieName(java.lang.String)
+
+
+
diff --git a/web/src/main/webapp/css/classic/datasourcetest.css b/web/src/main/webapp/css/classic/datasourcetest.css
index 40d58139e8..b8f1ad5a00 100644
--- a/web/src/main/webapp/css/classic/datasourcetest.css
+++ b/web/src/main/webapp/css/classic/datasourcetest.css
@@ -1,290 +1,290 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-div.dataSourceTestMenu, div.dataSourceTestContent {
- clear: both;
-}
-
-li#connect {
- float: left;
- background: url( "gifs/silk/database_key.gif" ) top left no-repeat;
-}
-
-li#executeSql {
- float: left;
- background: url( "gifs/silk/database_lightning.gif" ) top left no-repeat;
-}
-
-li#showHistory {
- float: left;
- background: url( "gifs/silk/script_go.gif" ) top left no-repeat;
-}
-
-li#hideHistory {
- float: left;
- background: url( "gifs/silk/script_delete.gif" ) top left no-repeat;
-}
-
-li#showOptions {
- float: left;
- background: url( "gifs/silk/application_form_edit.gif" ) top left no-repeat;
-}
-
-li#hideOptions {
- float: left;
- background: url( "gifs/silk/application_form_delete.gif" ) top left no-repeat;
-}
-
-li#wrap {
- float: right;
- padding-top: 10px;
- background: url( "gifs/silk/arrow_undo.gif" ) center left no-repeat;
-}
-
-li#nowrap {
- float: right;
- padding-top: 10px;
- background: url( "gifs/silk/arrow_right.gif" ) center left no-repeat;
-}
-
-#sqlForm {
- margin: 0;
- padding: 0;
-}
-
-#sql {
- font-family: 'Lucida Sans Typewriter', 'Courier New', monospace;
- font-size: 100%;
- width: 99%;
- border: none;
- overflow: auto;
- margin: 0;
- padding: 2px 0px 2px 5px;
- height: 100px;
- background-color: #fff;
-}
-
-div#sqlDragHandle {
- background: #ddd;
- cursor: n-resize;
- height: 3px;
- margin-top: 0px; /* for IE */
- font-size: 0px;
- line-height: 0px;
-}
-
-div#sqlDragHandle:hover {
- background: #000;
-}
-
-h3 {
- float: left;
- height: 2em;
- margin: 0;
- padding: 10px 0 5px 2px;
-}
-
-div#outputHolder {
- padding: 0;
- margin: 0;
-}
-
-#sqlResultsWrapper {
- clear: both;
-}
-
-#sqlResultsContainer {
- margin: 0;
- padding: 0;
- width: 99%;
- overflow: hidden;
-}
-
-#rowsAffected {
- margin: 0 0 5px 0;
- padding: 0;
- float: left;
- color: #4f6b72;
- text-align: left;
-}
-
-#sqlResultTbl {
- border-left: 1px solid #C1DAD7;
- padding: 0;
- margin: 0;
- clear: both;
-}
-
-#sqlResultTbl td {
- white-space: nowrap;
-}
-
-#pagebanner {
- color: #4f6b72;
- float: left;
- padding: 0 0 0 5px;
- margin: 0;
-}
-
-#pagelinks {
- color: #4f6b72;
- float: left;
- padding: 0 0 0 5px;
- margin: 0;
-}
-
-#pagelinks a:link, #pagelinks a:visited {
- color: #40659B;
- border-bottom: 1px none;
-}
-
-#pagelinks td a:hover, #pagelinks td:hover a {
- color: #003366;
- border-bottom: 1px dashed #bbb;
-}
-
-.ajax_activity {
- float: right;
- width: 50%;
- height: 2em;
- padding: 0px 20px 5px 20px;
- margin: 0;
- background-position: left center;
- font-size: 95%;
-}
-
-#rs_rowsAffected, #rs_pagebanner, #rs_pagelinks {
- display: none;
-}
-
-#queryHistoryContainer {
- margin: 5px 0 0 0;
- clear: both;
- width: 100%;
-}
-
-#queryHistoryBorder {
- margin: 0;
- padding: 0;
- border: 1px solid #ccc;
- clear: both;
-}
-
-#queryHistoryHolder {
- margin: 0;
- padding: 0;
- clear: both;
- overflow: auto;
- width: 100%;
-}
-
-#queryHistoryHolder ul {
- margin: 5px 5px 5px 5px;
- padding: 0;
- list-style: none;
- /*overflow: hidden;*/
- width: 99%;
-}
-
-#queryHistoryHolder ul li {
- padding: 0;
- margin: 5px 0;
-}
-
-#queryHistoryHolder ul a {
- display: block;
-}
-
-#queryHistoryHolder ul a:link, #queryHistoryHolder ul a:visited {
- color: #40659B;
- text-decoration: none;
- padding-left: 10px;
- padding-right: 10px;
- border: 1px solid #fff;
-}
-
-#queryHistoryHolder ul a:hover, #queryHistoryHolder ul a:hover a {
- background-color: #F0F8FF;
- color: #000;
- border: 1px solid #ccc;
-}
-
-#historyEmpty {
- margin: 5px 5px 5px 10px;;
- padding: 0;
-}
-
-div#historyDragHandle {
- background: #ddd;
- cursor: n-resize;
- height: 3px;
- margin-top: 0px; /* for IE */
- font-size: 0px;
- line-height: 0px;
-}
-
-div#historyDragHandle:hover {
- background: #000;
-}
-
-.txtInput {
- border: 1px solid #ccc;
- padding: 0 0 0 3px;
- font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
-}
-
-dl#optionsDL {
- clear: both;
- padding: 10px 0 0 0;
- margin: 0;
- list-style: none;
-}
-
-dl#optionsDL dt {
- margin: 0;
- padding: 0 5px 0 0;
- float: left;
-}
-
-dl#optionsDL dd {
- margin: 0;
- padding: 0 10px 0 0;
- float: left;
-}
-
-dl#sqlDL {
- clear: both;
- padding: 0;
- margin: 0;
- list-style: none;
-}
-
-dl#sqlDL dt {
- margin: 0;
- padding: 0;
-}
-
-dl#sqlDL dd {
- margin: 0;
- padding: 0;
-}
-
-#sqlContainer {
- border: 1px solid #ccc;
-}
-
-#h3Container {
- clear: both;
-}
-
-#sqlResultsHeader {
- clear: both;
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+div.dataSourceTestMenu, div.dataSourceTestContent {
+ clear: both;
+}
+
+li#connect {
+ float: left;
+ background: url( "gifs/silk/database_key.gif" ) top left no-repeat;
+}
+
+li#executeSql {
+ float: left;
+ background: url( "gifs/silk/database_lightning.gif" ) top left no-repeat;
+}
+
+li#showHistory {
+ float: left;
+ background: url( "gifs/silk/script_go.gif" ) top left no-repeat;
+}
+
+li#hideHistory {
+ float: left;
+ background: url( "gifs/silk/script_delete.gif" ) top left no-repeat;
+}
+
+li#showOptions {
+ float: left;
+ background: url( "gifs/silk/application_form_edit.gif" ) top left no-repeat;
+}
+
+li#hideOptions {
+ float: left;
+ background: url( "gifs/silk/application_form_delete.gif" ) top left no-repeat;
+}
+
+li#wrap {
+ float: right;
+ padding-top: 10px;
+ background: url( "gifs/silk/arrow_undo.gif" ) center left no-repeat;
+}
+
+li#nowrap {
+ float: right;
+ padding-top: 10px;
+ background: url( "gifs/silk/arrow_right.gif" ) center left no-repeat;
+}
+
+#sqlForm {
+ margin: 0;
+ padding: 0;
+}
+
+#sql {
+ font-family: 'Lucida Sans Typewriter', 'Courier New', monospace;
+ font-size: 100%;
+ width: 99%;
+ border: none;
+ overflow: auto;
+ margin: 0;
+ padding: 2px 0px 2px 5px;
+ height: 100px;
+ background-color: #fff;
+}
+
+div#sqlDragHandle {
+ background: #ddd;
+ cursor: n-resize;
+ height: 3px;
+ margin-top: 0px; /* for IE */
+ font-size: 0px;
+ line-height: 0px;
+}
+
+div#sqlDragHandle:hover {
+ background: #000;
+}
+
+h3 {
+ float: left;
+ height: 2em;
+ margin: 0;
+ padding: 10px 0 5px 2px;
+}
+
+div#outputHolder {
+ padding: 0;
+ margin: 0;
+}
+
+#sqlResultsWrapper {
+ clear: both;
+}
+
+#sqlResultsContainer {
+ margin: 0;
+ padding: 0;
+ width: 99%;
+ overflow: hidden;
+}
+
+#rowsAffected {
+ margin: 0 0 5px 0;
+ padding: 0;
+ float: left;
+ color: #4f6b72;
+ text-align: left;
+}
+
+#sqlResultTbl {
+ border-left: 1px solid #C1DAD7;
+ padding: 0;
+ margin: 0;
+ clear: both;
+}
+
+#sqlResultTbl td {
+ white-space: nowrap;
+}
+
+#pagebanner {
+ color: #4f6b72;
+ float: left;
+ padding: 0 0 0 5px;
+ margin: 0;
+}
+
+#pagelinks {
+ color: #4f6b72;
+ float: left;
+ padding: 0 0 0 5px;
+ margin: 0;
+}
+
+#pagelinks a:link, #pagelinks a:visited {
+ color: #40659B;
+ border-bottom: 1px none;
+}
+
+#pagelinks td a:hover, #pagelinks td:hover a {
+ color: #003366;
+ border-bottom: 1px dashed #bbb;
+}
+
+.ajax_activity {
+ float: right;
+ width: 50%;
+ height: 2em;
+ padding: 0px 20px 5px 20px;
+ margin: 0;
+ background-position: left center;
+ font-size: 95%;
+}
+
+#rs_rowsAffected, #rs_pagebanner, #rs_pagelinks {
+ display: none;
+}
+
+#queryHistoryContainer {
+ margin: 5px 0 0 0;
+ clear: both;
+ width: 100%;
+}
+
+#queryHistoryBorder {
+ margin: 0;
+ padding: 0;
+ border: 1px solid #ccc;
+ clear: both;
+}
+
+#queryHistoryHolder {
+ margin: 0;
+ padding: 0;
+ clear: both;
+ overflow: auto;
+ width: 100%;
+}
+
+#queryHistoryHolder ul {
+ margin: 5px 5px 5px 5px;
+ padding: 0;
+ list-style: none;
+ /*overflow: hidden;*/
+ width: 99%;
+}
+
+#queryHistoryHolder ul li {
+ padding: 0;
+ margin: 5px 0;
+}
+
+#queryHistoryHolder ul a {
+ display: block;
+}
+
+#queryHistoryHolder ul a:link, #queryHistoryHolder ul a:visited {
+ color: #40659B;
+ text-decoration: none;
+ padding-left: 10px;
+ padding-right: 10px;
+ border: 1px solid #fff;
+}
+
+#queryHistoryHolder ul a:hover, #queryHistoryHolder ul a:hover a {
+ background-color: #F0F8FF;
+ color: #000;
+ border: 1px solid #ccc;
+}
+
+#historyEmpty {
+ margin: 5px 5px 5px 10px;;
+ padding: 0;
+}
+
+div#historyDragHandle {
+ background: #ddd;
+ cursor: n-resize;
+ height: 3px;
+ margin-top: 0px; /* for IE */
+ font-size: 0px;
+ line-height: 0px;
+}
+
+div#historyDragHandle:hover {
+ background: #000;
+}
+
+.txtInput {
+ border: 1px solid #ccc;
+ padding: 0 0 0 3px;
+ font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+}
+
+dl#optionsDL {
+ clear: both;
+ padding: 10px 0 0 0;
+ margin: 0;
+ list-style: none;
+}
+
+dl#optionsDL dt {
+ margin: 0;
+ padding: 0 5px 0 0;
+ float: left;
+}
+
+dl#optionsDL dd {
+ margin: 0;
+ padding: 0 10px 0 0;
+ float: left;
+}
+
+dl#sqlDL {
+ clear: both;
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+
+dl#sqlDL dt {
+ margin: 0;
+ padding: 0;
+}
+
+dl#sqlDL dd {
+ margin: 0;
+ padding: 0;
+}
+
+#sqlContainer {
+ border: 1px solid #ccc;
+}
+
+#h3Container {
+ clear: both;
+}
+
+#sqlResultsHeader {
+ clear: both;
+}
diff --git a/web/src/main/webapp/css/classic/deploy.css b/web/src/main/webapp/css/classic/deploy.css
index 61ac887c08..3bd0c380e0 100644
--- a/web/src/main/webapp/css/classic/deploy.css
+++ b/web/src/main/webapp/css/classic/deploy.css
@@ -1,67 +1,67 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-div.deploy {
- padding: 10px 10px 10px 10px;
- margin: 0 0 10px 0;
- border: 1px solid #ccc;
- vertical-align: middle;
- min-width: 700px;
-}
-
-div.deploy div.deployDescription {
- padding: 5px 50px 15px 0;
-}
-
-div.deploy .deployLabel {
- border: 1px dashed white;
- padding: 0 5px 0 5px;
- background: #06c;
- color: white;
- font-weight: bold;
-
-}
-
-div.deploy .submit {
- text-align: right;
- padding-top: 15px;
- padding-right: 30px;
-}
-
-div.deploy .submit input.b {
- font-size: 90%;
- font-weight: bold;
- padding: 2px 4px 2px 4px;
- border: 1px solid #06c;
- background-color: #c2e3ff;
- color: #007ce6;
-}
-
-div#deployScenario1 {
- background-color: #ebf8ff;
- margin-bottom: 10px;
-}
-
-.cb input {
- margin-left: 0;
-}
-
-em {
- color: #cc0000;
- font-weight: bold;
- font-style: normal;
-}
-
-.deploy dl dd {
- margin: 0;
- padding: 0 0 1em 0;
- line-height: 1.5em;
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+div.deploy {
+ padding: 10px 10px 10px 10px;
+ margin: 0 0 10px 0;
+ border: 1px solid #ccc;
+ vertical-align: middle;
+ min-width: 700px;
+}
+
+div.deploy div.deployDescription {
+ padding: 5px 50px 15px 0;
+}
+
+div.deploy .deployLabel {
+ border: 1px dashed white;
+ padding: 0 5px 0 5px;
+ background: #06c;
+ color: white;
+ font-weight: bold;
+
+}
+
+div.deploy .submit {
+ text-align: right;
+ padding-top: 15px;
+ padding-right: 30px;
+}
+
+div.deploy .submit input.b {
+ font-size: 90%;
+ font-weight: bold;
+ padding: 2px 4px 2px 4px;
+ border: 1px solid #06c;
+ background-color: #c2e3ff;
+ color: #007ce6;
+}
+
+div#deployScenario1 {
+ background-color: #ebf8ff;
+ margin-bottom: 10px;
+}
+
+.cb input {
+ margin-left: 0;
+}
+
+em {
+ color: #cc0000;
+ font-weight: bold;
+ font-style: normal;
+}
+
+.deploy dl dd {
+ margin: 0;
+ padding: 0 0 1em 0;
+ line-height: 1.5em;
}
\ No newline at end of file
diff --git a/web/src/main/webapp/css/classic/java_syntax.css b/web/src/main/webapp/css/classic/java_syntax.css
index 16af7df0ec..d1a69b27fe 100644
--- a/web/src/main/webapp/css/classic/java_syntax.css
+++ b/web/src/main/webapp/css/classic/java_syntax.css
@@ -1,64 +1,64 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-.java_type {
- color: #002cdd;
-}
-
-.java_comment {
- color: #939393;
- background-color: #f7f7f7;
-}
-
-.java_operator {
- color: #007c1f;
-}
-
-.java_separator {
- color: #0021ff;
-}
-
-.java_plain {
- color: #000000;
-}
-
-h1 {
- font-family: sans-serif;
- font-size: 16pt;
- font-weight: bold;
- color: #000000;
- background-color: #d2d2d2;
- border: solid 1px black;
- padding: 5px;
- text-align: center;
-}
-
-.java_javadoc_comment {
- color: #939393;
- background-color: #f7f7f7;
- font-style: italic;
-}
-
-.java_keyword {
- color: #000000;
- font-weight: bold;
-}
-
-.java_literal {
- color: #bc0000;
-}
-
-.java_javadoc_tag {
- color: #939393;
- background-color: #f7f7f7;
- font-style: italic;
- font-weight: bold;
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+.java_type {
+ color: #002cdd;
+}
+
+.java_comment {
+ color: #939393;
+ background-color: #f7f7f7;
+}
+
+.java_operator {
+ color: #007c1f;
+}
+
+.java_separator {
+ color: #0021ff;
+}
+
+.java_plain {
+ color: #000000;
+}
+
+h1 {
+ font-family: sans-serif;
+ font-size: 16pt;
+ font-weight: bold;
+ color: #000000;
+ background-color: #d2d2d2;
+ border: solid 1px black;
+ padding: 5px;
+ text-align: center;
+}
+
+.java_javadoc_comment {
+ color: #939393;
+ background-color: #f7f7f7;
+ font-style: italic;
+}
+
+.java_keyword {
+ color: #000000;
+ font-weight: bold;
+}
+
+.java_literal {
+ color: #bc0000;
+}
+
+.java_javadoc_tag {
+ color: #939393;
+ background-color: #f7f7f7;
+ font-style: italic;
+ font-weight: bold;
+}
diff --git a/web/src/main/webapp/css/classic/main.css b/web/src/main/webapp/css/classic/main.css
index edea553bec..9448e9d2cf 100644
--- a/web/src/main/webapp/css/classic/main.css
+++ b/web/src/main/webapp/css/classic/main.css
@@ -1,828 +1,828 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-BODY {
- font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
- font-size: 75%;
- line-height: 20px;
- color: #000000;
- text-decoration: none;
- background-color: #fff; /* this is an IE hack to enable :hover behavior */
- /*behavior: url( 'css/csshover.htc' );*/
-}
-
-h3 {
- color: #003366;
- background: inherit;
- font-size: 95%;
- font-weight: bold;
- text-transform: uppercase;
- padding: 0;
- margin: 10px 0 10px 0;
-}
-
-img {
- border: none;
-}
-
-/*
- Top panel
-*/
-div#caption {
- height: 70px;
- min-height: 70px;
- max-height: 70px;
-}
-
-#top {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-li#logo {
- float: left;
- padding-top: 15px;
- padding-left: 10px;
- padding-right: 10px;
-}
-
-li#logo img {
- border: none;
-}
-
-li#runtime {
- float: left;
- margin-top: 33px;
-}
-
-li#title {
- float: right;
- font-size: 160%;
- color: #0066ff;
- padding-right: 10px;
- margin-top: 20px;
-}
-
-/*
- Content area
-*/
-div#mainBody {
- width: 90%;
- padding: 10px 5px 5px 10px;
- clear: both;
-}
-
-div#footer {
- clear: both;
- text-align: center;
- padding-top: 20px;
-}
-
-div#footer li {
- display: inline;
- border-left: 1px solid #000000;
- padding-left: 3px;
-}
-
-div#footer li.last {
- padding-right: 3px;
- border-right: 1px solid #000000;
-}
-
-/*
- Color "ok" and "error/warning" values in table cells
-*/
-
-.errorValue, .bigErrorValue {
- color: #DC143C;
-}
-
-.okValue, .bigOkValue {
- color: green;
-}
-
-.bigErrorValue, .bigOkValue {
- font-size: 130%;
- font-weight: bold;
-}
-
-
-
-.shadow {
- background-color: #E6E6E6;
- margin-bottom: 20px;
- margin-top: 20px;
- clear: left;
-}
-
-.info {
- position: relative;
- top: -3px;
- left: -3px;
- background-color: #fefcf5;
- padding: 5px 10px 5px 10px;
- border: 1px solid #aaa;
-}
-
-.info p {
- margin: 0;
- padding: 0;
-}
-
-.value {
- color: #40659B;
-}
-
-.info:hover .value {
- color: #003366;
-}
-
-.value a:link, .value a:visited {
- color: #40659B;
- text-decoration: none;
- border-bottom: 1px none;
-}
-
-.value a:hover {
- color: #003366;
- border-bottom: 1px dashed #bbb;
-}
-
-/*
- Small navigation on the attributes page
-*/
-ul.options {
- list-style: none;
- padding: 0 0 10px 0;
- margin: 0;
-}
-
-ul.options li {
- display: inline; /*padding: 0 20px 10px 30px;*/
- padding: 0 10px 7px 20px;
-}
-
-ul.options li a:link, ul.options li a:visited, #successMessage a:link, #successMessage a:visited {
- color: #40659B;
- text-decoration: none;
- border-bottom: 1px dashed #bbbbbb;
- font-size: 100%;
-}
-
-ul.options li a:hover, #successMessage a:hover {
- color: #003366;
- border-bottom-style: solid;
-}
-
-.memory ul.options {
- float: right;
-}
-
-/*
- Menu options
-*/
-
-li#back {
- float: left; /*background: url( "img/back-arrow.gif" ) top left no-repeat;*/
- background: url( "gifs/silk/control_rewind_blue.gif" ) top left no-repeat;
-}
-
-li#allStats {
- float: left;
- background: url( "gifs/silk/bricks.gif" ) top left no-repeat;
-}
-
-li#size {
- float: right; /*background: url( "img/gear.gif" ) top left no-repeat;*/
- background: url( "gifs/browser_galeon.gif" ) top left no-repeat;
-}
-
-li#toggle {
- float: left; /*background: url( "img/inverse.gif" ) top left no-repeat;*/
- background: url( "gifs/silk/tag_blue.gif" ) top left no-repeat;
-}
-
-li#delete, li#delete_r {
- float: left;
- background: url( "gifs/silk/folder_delete.gif" ) top left no-repeat;
-}
-
-li#delete_r {
- float: right;
-}
-
-li#showSearch {
- float: left;
- background: url( "gifs/silk/folder_explore.gif" ) top left no-repeat;
-}
-
-li#applySearch {
- float: left;
- background: url( "gifs/silk/application_form_magnify.gif" ) top left no-repeat;
-}
-
-li#clearSearch {
- float: left;
- background: url( "gifs/silk/application_form_delete.gif" ) top left no-repeat;
-}
-
-li#showAll {
- float: right;
- background: url( "gifs/silk/application_view_list.gif" ) top left no-repeat;
-}
-
-li#download {
- float: right;
- background: url( "gifs/silk/page_white_put.gif" ) top left no-repeat;
-}
-
-li#pause {
- float: left;
- background: url( "gifs/silk/control_pause_blue.gif" ) top left no-repeat;
-}
-
-li#resume {
- float: left;
- background: url( "gifs/silk/control_play_blue.gif" ) top left no-repeat;
-}
-
-li#zoomin {
- float: left;
- background: url( "gifs/silk/magnifier_zoom_in.gif" ) top left no-repeat;
-}
-
-li#zoomout {
- float: left;
- background: url( "gifs/silk/magnifier_zoom_out.gif" ) top left no-repeat;
-}
-
-li#wrap {
- float: left;
- background: url( "gifs/silk/arrow_undo.gif" ) top left no-repeat;
-}
-
-li#nowrap {
- float: left;
- background: url( "gifs/silk/arrow_right.gif" ) top left no-repeat;
-}
-
-li#groupByJdbcUrl {
- float: right;
- background: url( "gifs/silk/database_table.gif" ) top left no-repeat;
-}
-
-li#viewservlet {
- float: left;
- background: url( "gifs/silk/script_gear.gif" ) top left no-repeat;
-}
-
-li#viewJSP {
- float: left;
- background: url( "gifs/silk/script_code_red.gif" ) top left no-repeat;
-}
-
-li#clear {
- float: left;
- background: url( "gifs/silk/pill.gif" ) top left no-repeat;
-}
-
-span.fail {
- background: url( "img/exclamation.gif" ) top left no-repeat;
- padding-left: 20px;
-}
-
-li#compileall {
- float: left; /*background: url( "img/compileall.gif" ) top left no-repeat;*/
- background: url( "gifs/silk/lightning.gif" ) top left no-repeat;
-
-}
-
-li#compile, li#compilesingle {
- float: left;
- background: url( "gifs/silk/table_lightning.gif" ) top left no-repeat;
-}
-
-li#compilesingle {
- float: right;
-}
-
-li#adviseGC {
- background: url( "gifs/silk/wrench_orange.gif" ) top left no-repeat;
-}
-
-li#adviseFin {
- background: url( "gifs/silk/wrench.gif" ) top left no-repeat;
-}
-
-li#stop_jvm {
- background: url("gifs/silk/cup_delete.gif") top left no-repeat;
- float: right;
-}
-
-li#restart_jvm {
- background: url("gifs/silk/cup_go.gif") top left no-repeat;
- float: right;
-}
-
-li#pools {
- background: url("gifs/silk/application_link.gif") top left no-repeat;
- float: left;
-}
-
-li#threads {
- background: url("gifs/silk/application_view_list.gif") top left no-repeat;
- float: left;
-}
-
-li#thread_dump {
- background: url("gifs/silk/bug_edit.gif") top left no-repeat;
- float: right;
-}
-
-li#abbreviations {
- float: right;
- background: url("gifs/silk/lightbulb.gif") top left no-repeat;
-}
-
-li#viewServlets {
- float: left;
- background: url( "gifs/silk/application_view_list.gif" ) top left no-repeat;
-}
-
-li#viewServletMaps {
- float: left;
- background: url( "gifs/silk/application_link.gif" ) top left no-repeat;
-}
-
-li#viewAllServlets {
- float: right;
- background: url( "gifs/silk/application_view_list.gif" ) top left no-repeat;
-}
-
-li#viewAllServletMaps {
- float: right;
- background: url( "gifs/silk/application_link.gif" ) top left no-repeat;
-}
-
-li#viewAppFilters {
- float: left;
- background: url( "gifs/silk/application_view_list.gif" ) top left no-repeat;
-}
-
-li#viewAppFilterMaps {
- float: left;
- background: url( "gifs/silk/application_link.gif" ) top left no-repeat;
-}
-
-li#appStart {
- float: left;
- background: url( "gifs/silk/control_play_blue.gif" ) top left no-repeat;
-}
-
-li#appStop {
- float: left;
- background: url( "gifs/silk/control_stop_blue.gif" ) top left no-repeat;
-}
-
-li#appReload {
- float: left;
- background: url( "gifs/silk/control_repeat_blue.gif" ) top left no-repeat;
-}
-
-li#appUndeploy {
- float: left;
- background: url( "img/bin.jpg" ) top left no-repeat;
-}
-
-li#appSurfTo {
- float: left;
- background: url( "gifs/silk/page_world.gif" ) top left no-repeat;
-}
-
-.fixed_width {
- font-family: fixed-width, monospace;
-}
-pre {
- font-size: 85%;
-}
-
-code {
- font-family: monospace;
- font-size: 120%;
- white-space: nowrap;
- line-height: 120%;
-}
-
-#srccontent {
- border: 1px solid #ccc;
- padding: 20px 0 20px 0;
-}
-
-.linenum {
- background-color: #eee;
- margin-right: 10px;
-}
-
-.codeline {
- display: block;
- width: 100%;
-}
-
-.codeline:hover {
- background-color: #F0F8FF;
-}
-
-.codeline:hover .linenum {
- background-color: #ccc;
-}
-
-#jsps table {
- table-layout: fixed;
-}
-
-.errors {
- margin: 0;
- padding: 10px 5px 10px 5px;
- color: red;
- background-color: #ffc4c4;
- border-top: 3px solid red;
- border-bottom: 3px solid red;
-}
-
-.cumulative,
-.combined {
- clear: left;
-}
-
-.chartContainer {
- float: left;
-}
-
-.chartContainer dd, .chartContainer dt {
- padding: 0;
- margin: 0;
- text-align: center;
-}
-
-.chartContainer dt {
- font-size: 100%;
- font-weight: bold;
- text-transform: uppercase;
-}
-
-.chartContainer dd {
- font-size: 92%;
- letter-spacing: 0.1em;
-}
-
-dd.image {
- margin: 0;
- padding: 11px 11px 1px 11px;
- cursor: pointer;
-}
-
-dd.image:hover {
- padding: 10px 10px 0 10px;
- border: 1px dashed #ff7f2f;
-}
-
-.connectorChartHeader {
- clear: both;
- background-color: #f2f9ff;
- border-top: 1px dashed #ccc;
- border-bottom: 1px dashed #ccc;
- padding: 5px 5px 5px 20px;
- margin-bottom: 2px;
- color: #aaa;
- text-align: left;
-}
-
-.connectorChartHeader .headerTitle {
- font-weight: bold;
- letter-spacing: 0.1em;
- color: #444;
- cursor: pointer;
-}
-
-.connectorChartHeader .headerTitle img {
- background-color: #ffffff;
-}
-
-.connectorChartHeader .actions {
- float: right;
-}
-
-.connectorInfo {
- clear: both;
- margin-bottom: 2em;
-}
-
-img.lnk {
- border: 0;
- padding: 0 0 0 0;
- margin: 0 0 0 0;
-}
-
-/**
- System info page
-*/
-div#memoryInfo td {
- padding: 0;
- margin: 0;
-}
-
-span.name {
- color: #4f6b72;
- font-variant: small-caps;
- text-transform: lowercase;
-}
-
-div#sliderContainer {
- margin: 0 0 10px 30px;
- clear: both;
-}
-
-div#track, div#handle {
- height: 18px;
-}
-
-div#track {
- width: 200px;
- background: url( 'img/scaler_slider_track.gif' ) center left repeat-x;
-}
-
-div#handle {
- width: 18px;
-}
-
-li#showapps {
- float: right;
- background-image: url( "gifs/silk/application_link.gif" );
- background-position: center left;
- background-repeat: no-repeat;
- height: 16px; /*padding: 3px 0 8px 24px;*/
-}
-
-.expandable:hover {
- border-bottom: 1px dashed #ccc;
- cursor: pointer;
-}
-
-.urlinfo {
- padding: 7px;
- margin: 5px 0 5px 0;
- background-color: #e6ffe6;
- border: 1px solid #00E600;
- color: #888;
-}
-
-td.leftMostIcon {
- padding: 1px 0 0 5px;
- border-right: 0;
- border-left: 1px solid #C1DAD7;
- vertical-align: middle;
-}
-
-.shaper {
- border: 1px solid #ddd;
- padding: 10px;
-}
-
-.line {
- padding-left: 10px;
- padding-right: 10px;
- border: 1px solid #fff;
-}
-
-.line:hover {
- background-color: #F0F8FF;
- color: #000;
- border: 1px solid #ccc;
-}
-
-.shaper_inverse {
- border: 1px solid #ddd;
- padding: 10px;
- background: #000;
- color: #BB0;
-}
-
-.line_inverse {
- padding-left: 10px;
- padding-right: 10px;
- border: 1px solid #000;
-}
-
-.line_inverse:hover {
- background-color: #dd0;
- color: #000;
- border: 1px solid #ccc;
-}
-
-#file_content {
- width: 100%;
- overflow: auto;
- white-space: nowrap;
-}
-
-p.empty_list {
- text-align: center;
-}
-
-.uptime {
- color: #009933;
-}
-
-.memoryChart {
- float: left;
-}
-
-.memoryChart dl, .memoryChart dt {
- padding: 0;
- margin: 0;
- width: 240px;
-}
-
-.memoryChart dt {
- padding-top: 10px;
- text-align: center;
-}
-
-.memoryChart dt img {
- float: right;
- cursor: pointer;
-}
-
-.clickable {
- cursor: pointer;
-}
-
-.blockContainer {
- clear: both;
-}
-
-.embeddedBlockContainer {
- clear: left;
-}
-
-
-/*
- All browsers
-*/
-#systemProperties {
- border-right: 1px solid #C1DAD7;
-}
-
-/*
- Non-IE browsers
-*/
-html>body #systemProperties {
- overflow: auto;
-}
-
-/*
- IE hack, see http://browservulsel.blogspot.com/2005/04/ie-overflow-auto-scrollbar-overlap.html
-*/
-* html #systemProperties {
- overflow-x: auto;
- /* cannot be 100%, funnily enough */
- width: 99%;
-}
-
-/*
- For IE browser table width cannot be 100%. So we make it "auto"
-*/
-#memoryPools table {
- width: auto;
-}
-
-/*
- This selector restores table width for non-IE browsers
-*/
-html>body #memoryPools table {
- width: 100%;
-}
-
-.verticalMenu {
- float: right;
- width: 180px;
- margin-top: 10px;
- padding: 10px;
- border: 1px solid #eee;
-}
-
-.verticalMenu div {
- margin: 0 0 10px 0;
- border: 1px solid #C1DAD7;
-}
-
-.verticalMenu p {
- margin: 0 10px 0 10px;
- padding: 2px 0 2px 0;
- color: #003366;
- background: url( "gifs/silk/computer.gif" ) center left no-repeat;
- font-size: 93%;
- text-transform: uppercase;
- text-align: center;
-}
-
-.verticalMenu ul {
- list-style: none;
- padding: 0;
- margin: 0;
-}
-
-.verticalMenu a {
- text-decoration: none;
- color: #666;
- background: #f3f3f3;
- display: block;
- border: 1px solid #ddd;
- padding: 4px 20px 0 20px;
- margin: 2px 0 0 0;
- height: 24px;
-}
-
-.verticalMenu li {
- padding: 0;
- margin: 0;
-}
-
-.verticalMenu a:hover, .verticalMenu a.active {
- color: #000;
- background: #FFFFFF url( "gifs/silk/bullet_go.gif" ) center left no-repeat;
-}
-
-#contentBody {
- margin-right: 200px;
- clear: none;
- padding-left: 20px;
- padding-right: 20px;
- margin-top: 10px;
-}
-
-.ajax_activity {
- background: url("gifs/progressbar_microsoft.gif") center top no-repeat;
- height: 30px;
-}
-
-#outputHolder {
- clear: both;
-}
-
-.ck_fail {
- color: #f00;
- font-weight: bold;
-}
-
-.ck_pass {
- color: #090;
- font-weight: bold;
-}
-
-#searchFormContainer {
- clear: left;
- margin: 0 0 10px 0;
- padding: 0;
-}
-
-.txtInput {
- border: 1px solid #ccc;
- padding: 0 0 0 3px;
- font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
-}
-
-#searchFormTable {
- border-collapse: separate;
- border-spacing: 2px;
- border-style: none;
- text-align: right;
- width: auto;
-}
-
-td.labelCell {
- text-align: right;
- padding-right: 10px;
-}
-
-td.inputCell {
- text-align: left;
- padding-right: 10px;
-}
-
-.score_wrapper {
- width: 110px;
-}
-
-#locales {
- margin-top: 10px;
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+BODY {
+ font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+ font-size: 75%;
+ line-height: 20px;
+ color: #000000;
+ text-decoration: none;
+ background-color: #fff; /* this is an IE hack to enable :hover behavior */
+ /*behavior: url( 'css/csshover.htc' );*/
+}
+
+h3 {
+ color: #003366;
+ background: inherit;
+ font-size: 95%;
+ font-weight: bold;
+ text-transform: uppercase;
+ padding: 0;
+ margin: 10px 0 10px 0;
+}
+
+img {
+ border: none;
+}
+
+/*
+ Top panel
+*/
+div#caption {
+ height: 70px;
+ min-height: 70px;
+ max-height: 70px;
+}
+
+#top {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+li#logo {
+ float: left;
+ padding-top: 15px;
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+li#logo img {
+ border: none;
+}
+
+li#runtime {
+ float: left;
+ margin-top: 33px;
+}
+
+li#title {
+ float: right;
+ font-size: 160%;
+ color: #0066ff;
+ padding-right: 10px;
+ margin-top: 20px;
+}
+
+/*
+ Content area
+*/
+div#mainBody {
+ width: 90%;
+ padding: 10px 5px 5px 10px;
+ clear: both;
+}
+
+div#footer {
+ clear: both;
+ text-align: center;
+ padding-top: 20px;
+}
+
+div#footer li {
+ display: inline;
+ border-left: 1px solid #000000;
+ padding-left: 3px;
+}
+
+div#footer li.last {
+ padding-right: 3px;
+ border-right: 1px solid #000000;
+}
+
+/*
+ Color "ok" and "error/warning" values in table cells
+*/
+
+.errorValue, .bigErrorValue {
+ color: #DC143C;
+}
+
+.okValue, .bigOkValue {
+ color: green;
+}
+
+.bigErrorValue, .bigOkValue {
+ font-size: 130%;
+ font-weight: bold;
+}
+
+
+
+.shadow {
+ background-color: #E6E6E6;
+ margin-bottom: 20px;
+ margin-top: 20px;
+ clear: left;
+}
+
+.info {
+ position: relative;
+ top: -3px;
+ left: -3px;
+ background-color: #fefcf5;
+ padding: 5px 10px 5px 10px;
+ border: 1px solid #aaa;
+}
+
+.info p {
+ margin: 0;
+ padding: 0;
+}
+
+.value {
+ color: #40659B;
+}
+
+.info:hover .value {
+ color: #003366;
+}
+
+.value a:link, .value a:visited {
+ color: #40659B;
+ text-decoration: none;
+ border-bottom: 1px none;
+}
+
+.value a:hover {
+ color: #003366;
+ border-bottom: 1px dashed #bbb;
+}
+
+/*
+ Small navigation on the attributes page
+*/
+ul.options {
+ list-style: none;
+ padding: 0 0 10px 0;
+ margin: 0;
+}
+
+ul.options li {
+ display: inline; /*padding: 0 20px 10px 30px;*/
+ padding: 0 10px 7px 20px;
+}
+
+ul.options li a:link, ul.options li a:visited, #successMessage a:link, #successMessage a:visited {
+ color: #40659B;
+ text-decoration: none;
+ border-bottom: 1px dashed #bbbbbb;
+ font-size: 100%;
+}
+
+ul.options li a:hover, #successMessage a:hover {
+ color: #003366;
+ border-bottom-style: solid;
+}
+
+.memory ul.options {
+ float: right;
+}
+
+/*
+ Menu options
+*/
+
+li#back {
+ float: left; /*background: url( "img/back-arrow.gif" ) top left no-repeat;*/
+ background: url( "gifs/silk/control_rewind_blue.gif" ) top left no-repeat;
+}
+
+li#allStats {
+ float: left;
+ background: url( "gifs/silk/bricks.gif" ) top left no-repeat;
+}
+
+li#size {
+ float: right; /*background: url( "img/gear.gif" ) top left no-repeat;*/
+ background: url( "gifs/browser_galeon.gif" ) top left no-repeat;
+}
+
+li#toggle {
+ float: left; /*background: url( "img/inverse.gif" ) top left no-repeat;*/
+ background: url( "gifs/silk/tag_blue.gif" ) top left no-repeat;
+}
+
+li#delete, li#delete_r {
+ float: left;
+ background: url( "gifs/silk/folder_delete.gif" ) top left no-repeat;
+}
+
+li#delete_r {
+ float: right;
+}
+
+li#showSearch {
+ float: left;
+ background: url( "gifs/silk/folder_explore.gif" ) top left no-repeat;
+}
+
+li#applySearch {
+ float: left;
+ background: url( "gifs/silk/application_form_magnify.gif" ) top left no-repeat;
+}
+
+li#clearSearch {
+ float: left;
+ background: url( "gifs/silk/application_form_delete.gif" ) top left no-repeat;
+}
+
+li#showAll {
+ float: right;
+ background: url( "gifs/silk/application_view_list.gif" ) top left no-repeat;
+}
+
+li#download {
+ float: right;
+ background: url( "gifs/silk/page_white_put.gif" ) top left no-repeat;
+}
+
+li#pause {
+ float: left;
+ background: url( "gifs/silk/control_pause_blue.gif" ) top left no-repeat;
+}
+
+li#resume {
+ float: left;
+ background: url( "gifs/silk/control_play_blue.gif" ) top left no-repeat;
+}
+
+li#zoomin {
+ float: left;
+ background: url( "gifs/silk/magnifier_zoom_in.gif" ) top left no-repeat;
+}
+
+li#zoomout {
+ float: left;
+ background: url( "gifs/silk/magnifier_zoom_out.gif" ) top left no-repeat;
+}
+
+li#wrap {
+ float: left;
+ background: url( "gifs/silk/arrow_undo.gif" ) top left no-repeat;
+}
+
+li#nowrap {
+ float: left;
+ background: url( "gifs/silk/arrow_right.gif" ) top left no-repeat;
+}
+
+li#groupByJdbcUrl {
+ float: right;
+ background: url( "gifs/silk/database_table.gif" ) top left no-repeat;
+}
+
+li#viewservlet {
+ float: left;
+ background: url( "gifs/silk/script_gear.gif" ) top left no-repeat;
+}
+
+li#viewJSP {
+ float: left;
+ background: url( "gifs/silk/script_code_red.gif" ) top left no-repeat;
+}
+
+li#clear {
+ float: left;
+ background: url( "gifs/silk/pill.gif" ) top left no-repeat;
+}
+
+span.fail {
+ background: url( "img/exclamation.gif" ) top left no-repeat;
+ padding-left: 20px;
+}
+
+li#compileall {
+ float: left; /*background: url( "img/compileall.gif" ) top left no-repeat;*/
+ background: url( "gifs/silk/lightning.gif" ) top left no-repeat;
+
+}
+
+li#compile, li#compilesingle {
+ float: left;
+ background: url( "gifs/silk/table_lightning.gif" ) top left no-repeat;
+}
+
+li#compilesingle {
+ float: right;
+}
+
+li#adviseGC {
+ background: url( "gifs/silk/wrench_orange.gif" ) top left no-repeat;
+}
+
+li#adviseFin {
+ background: url( "gifs/silk/wrench.gif" ) top left no-repeat;
+}
+
+li#stop_jvm {
+ background: url("gifs/silk/cup_delete.gif") top left no-repeat;
+ float: right;
+}
+
+li#restart_jvm {
+ background: url("gifs/silk/cup_go.gif") top left no-repeat;
+ float: right;
+}
+
+li#pools {
+ background: url("gifs/silk/application_link.gif") top left no-repeat;
+ float: left;
+}
+
+li#threads {
+ background: url("gifs/silk/application_view_list.gif") top left no-repeat;
+ float: left;
+}
+
+li#thread_dump {
+ background: url("gifs/silk/bug_edit.gif") top left no-repeat;
+ float: right;
+}
+
+li#abbreviations {
+ float: right;
+ background: url("gifs/silk/lightbulb.gif") top left no-repeat;
+}
+
+li#viewServlets {
+ float: left;
+ background: url( "gifs/silk/application_view_list.gif" ) top left no-repeat;
+}
+
+li#viewServletMaps {
+ float: left;
+ background: url( "gifs/silk/application_link.gif" ) top left no-repeat;
+}
+
+li#viewAllServlets {
+ float: right;
+ background: url( "gifs/silk/application_view_list.gif" ) top left no-repeat;
+}
+
+li#viewAllServletMaps {
+ float: right;
+ background: url( "gifs/silk/application_link.gif" ) top left no-repeat;
+}
+
+li#viewAppFilters {
+ float: left;
+ background: url( "gifs/silk/application_view_list.gif" ) top left no-repeat;
+}
+
+li#viewAppFilterMaps {
+ float: left;
+ background: url( "gifs/silk/application_link.gif" ) top left no-repeat;
+}
+
+li#appStart {
+ float: left;
+ background: url( "gifs/silk/control_play_blue.gif" ) top left no-repeat;
+}
+
+li#appStop {
+ float: left;
+ background: url( "gifs/silk/control_stop_blue.gif" ) top left no-repeat;
+}
+
+li#appReload {
+ float: left;
+ background: url( "gifs/silk/control_repeat_blue.gif" ) top left no-repeat;
+}
+
+li#appUndeploy {
+ float: left;
+ background: url( "img/bin.jpg" ) top left no-repeat;
+}
+
+li#appSurfTo {
+ float: left;
+ background: url( "gifs/silk/page_world.gif" ) top left no-repeat;
+}
+
+.fixed_width {
+ font-family: fixed-width, monospace;
+}
+pre {
+ font-size: 85%;
+}
+
+code {
+ font-family: monospace;
+ font-size: 120%;
+ white-space: nowrap;
+ line-height: 120%;
+}
+
+#srccontent {
+ border: 1px solid #ccc;
+ padding: 20px 0 20px 0;
+}
+
+.linenum {
+ background-color: #eee;
+ margin-right: 10px;
+}
+
+.codeline {
+ display: block;
+ width: 100%;
+}
+
+.codeline:hover {
+ background-color: #F0F8FF;
+}
+
+.codeline:hover .linenum {
+ background-color: #ccc;
+}
+
+#jsps table {
+ table-layout: fixed;
+}
+
+.errors {
+ margin: 0;
+ padding: 10px 5px 10px 5px;
+ color: red;
+ background-color: #ffc4c4;
+ border-top: 3px solid red;
+ border-bottom: 3px solid red;
+}
+
+.cumulative,
+.combined {
+ clear: left;
+}
+
+.chartContainer {
+ float: left;
+}
+
+.chartContainer dd, .chartContainer dt {
+ padding: 0;
+ margin: 0;
+ text-align: center;
+}
+
+.chartContainer dt {
+ font-size: 100%;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+
+.chartContainer dd {
+ font-size: 92%;
+ letter-spacing: 0.1em;
+}
+
+dd.image {
+ margin: 0;
+ padding: 11px 11px 1px 11px;
+ cursor: pointer;
+}
+
+dd.image:hover {
+ padding: 10px 10px 0 10px;
+ border: 1px dashed #ff7f2f;
+}
+
+.connectorChartHeader {
+ clear: both;
+ background-color: #f2f9ff;
+ border-top: 1px dashed #ccc;
+ border-bottom: 1px dashed #ccc;
+ padding: 5px 5px 5px 20px;
+ margin-bottom: 2px;
+ color: #aaa;
+ text-align: left;
+}
+
+.connectorChartHeader .headerTitle {
+ font-weight: bold;
+ letter-spacing: 0.1em;
+ color: #444;
+ cursor: pointer;
+}
+
+.connectorChartHeader .headerTitle img {
+ background-color: #ffffff;
+}
+
+.connectorChartHeader .actions {
+ float: right;
+}
+
+.connectorInfo {
+ clear: both;
+ margin-bottom: 2em;
+}
+
+img.lnk {
+ border: 0;
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
+}
+
+/**
+ System info page
+*/
+div#memoryInfo td {
+ padding: 0;
+ margin: 0;
+}
+
+span.name {
+ color: #4f6b72;
+ font-variant: small-caps;
+ text-transform: lowercase;
+}
+
+div#sliderContainer {
+ margin: 0 0 10px 30px;
+ clear: both;
+}
+
+div#track, div#handle {
+ height: 18px;
+}
+
+div#track {
+ width: 200px;
+ background: url( 'img/scaler_slider_track.gif' ) center left repeat-x;
+}
+
+div#handle {
+ width: 18px;
+}
+
+li#showapps {
+ float: right;
+ background-image: url( "gifs/silk/application_link.gif" );
+ background-position: center left;
+ background-repeat: no-repeat;
+ height: 16px; /*padding: 3px 0 8px 24px;*/
+}
+
+.expandable:hover {
+ border-bottom: 1px dashed #ccc;
+ cursor: pointer;
+}
+
+.urlinfo {
+ padding: 7px;
+ margin: 5px 0 5px 0;
+ background-color: #e6ffe6;
+ border: 1px solid #00E600;
+ color: #888;
+}
+
+td.leftMostIcon {
+ padding: 1px 0 0 5px;
+ border-right: 0;
+ border-left: 1px solid #C1DAD7;
+ vertical-align: middle;
+}
+
+.shaper {
+ border: 1px solid #ddd;
+ padding: 10px;
+}
+
+.line {
+ padding-left: 10px;
+ padding-right: 10px;
+ border: 1px solid #fff;
+}
+
+.line:hover {
+ background-color: #F0F8FF;
+ color: #000;
+ border: 1px solid #ccc;
+}
+
+.shaper_inverse {
+ border: 1px solid #ddd;
+ padding: 10px;
+ background: #000;
+ color: #BB0;
+}
+
+.line_inverse {
+ padding-left: 10px;
+ padding-right: 10px;
+ border: 1px solid #000;
+}
+
+.line_inverse:hover {
+ background-color: #dd0;
+ color: #000;
+ border: 1px solid #ccc;
+}
+
+#file_content {
+ width: 100%;
+ overflow: auto;
+ white-space: nowrap;
+}
+
+p.empty_list {
+ text-align: center;
+}
+
+.uptime {
+ color: #009933;
+}
+
+.memoryChart {
+ float: left;
+}
+
+.memoryChart dl, .memoryChart dt {
+ padding: 0;
+ margin: 0;
+ width: 240px;
+}
+
+.memoryChart dt {
+ padding-top: 10px;
+ text-align: center;
+}
+
+.memoryChart dt img {
+ float: right;
+ cursor: pointer;
+}
+
+.clickable {
+ cursor: pointer;
+}
+
+.blockContainer {
+ clear: both;
+}
+
+.embeddedBlockContainer {
+ clear: left;
+}
+
+
+/*
+ All browsers
+*/
+#systemProperties {
+ border-right: 1px solid #C1DAD7;
+}
+
+/*
+ Non-IE browsers
+*/
+html>body #systemProperties {
+ overflow: auto;
+}
+
+/*
+ IE hack, see http://browservulsel.blogspot.com/2005/04/ie-overflow-auto-scrollbar-overlap.html
+*/
+* html #systemProperties {
+ overflow-x: auto;
+ /* cannot be 100%, funnily enough */
+ width: 99%;
+}
+
+/*
+ For IE browser table width cannot be 100%. So we make it "auto"
+*/
+#memoryPools table {
+ width: auto;
+}
+
+/*
+ This selector restores table width for non-IE browsers
+*/
+html>body #memoryPools table {
+ width: 100%;
+}
+
+.verticalMenu {
+ float: right;
+ width: 180px;
+ margin-top: 10px;
+ padding: 10px;
+ border: 1px solid #eee;
+}
+
+.verticalMenu div {
+ margin: 0 0 10px 0;
+ border: 1px solid #C1DAD7;
+}
+
+.verticalMenu p {
+ margin: 0 10px 0 10px;
+ padding: 2px 0 2px 0;
+ color: #003366;
+ background: url( "gifs/silk/computer.gif" ) center left no-repeat;
+ font-size: 93%;
+ text-transform: uppercase;
+ text-align: center;
+}
+
+.verticalMenu ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.verticalMenu a {
+ text-decoration: none;
+ color: #666;
+ background: #f3f3f3;
+ display: block;
+ border: 1px solid #ddd;
+ padding: 4px 20px 0 20px;
+ margin: 2px 0 0 0;
+ height: 24px;
+}
+
+.verticalMenu li {
+ padding: 0;
+ margin: 0;
+}
+
+.verticalMenu a:hover, .verticalMenu a.active {
+ color: #000;
+ background: #FFFFFF url( "gifs/silk/bullet_go.gif" ) center left no-repeat;
+}
+
+#contentBody {
+ margin-right: 200px;
+ clear: none;
+ padding-left: 20px;
+ padding-right: 20px;
+ margin-top: 10px;
+}
+
+.ajax_activity {
+ background: url("gifs/progressbar_microsoft.gif") center top no-repeat;
+ height: 30px;
+}
+
+#outputHolder {
+ clear: both;
+}
+
+.ck_fail {
+ color: #f00;
+ font-weight: bold;
+}
+
+.ck_pass {
+ color: #090;
+ font-weight: bold;
+}
+
+#searchFormContainer {
+ clear: left;
+ margin: 0 0 10px 0;
+ padding: 0;
+}
+
+.txtInput {
+ border: 1px solid #ccc;
+ padding: 0 0 0 3px;
+ font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+}
+
+#searchFormTable {
+ border-collapse: separate;
+ border-spacing: 2px;
+ border-style: none;
+ text-align: right;
+ width: auto;
+}
+
+td.labelCell {
+ text-align: right;
+ padding-right: 10px;
+}
+
+td.inputCell {
+ text-align: left;
+ padding-right: 10px;
+}
+
+.score_wrapper {
+ width: 110px;
+}
+
+#locales {
+ margin-top: 10px;
}
\ No newline at end of file
diff --git a/web/src/main/webapp/css/classic/mainnav.css b/web/src/main/webapp/css/classic/mainnav.css
index 8a62e2d67a..560d97e2c5 100644
--- a/web/src/main/webapp/css/classic/mainnav.css
+++ b/web/src/main/webapp/css/classic/mainnav.css
@@ -1,47 +1,47 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#tabnav {
- height: 20px;
- margin: 0;
- padding-left: 10px;
- background: url( img/tab_bottom.gif ) repeat-x bottom;
-}
-
-#tabnav li {
- margin: 0;
- padding: 0;
- display: inline;
- list-style-type: none;
-}
-
-#tabnav a:link, #tabnav a:visited {
- float: left;
- background: #f3f3f3;
- font-size: 12px;
- line-height: 14px;
- font-weight: bold;
- padding: 2px 10px 2px 10px;
- margin-right: 4px;
- border: 1px solid #ccc;
- text-decoration: none;
- color: #666;
-}
-
-#tabnav a:link.active, #tabnav a:visited.active {
- border-bottom: 1px solid #fff;
- background: #fff;
- color: #000;
-}
-
-#tabnav a:hover {
- background: #fff;
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#tabnav {
+ height: 20px;
+ margin: 0;
+ padding-left: 10px;
+ background: url( img/tab_bottom.gif ) repeat-x bottom;
+}
+
+#tabnav li {
+ margin: 0;
+ padding: 0;
+ display: inline;
+ list-style-type: none;
+}
+
+#tabnav a:link, #tabnav a:visited {
+ float: left;
+ background: #f3f3f3;
+ font-size: 12px;
+ line-height: 14px;
+ font-weight: bold;
+ padding: 2px 10px 2px 10px;
+ margin-right: 4px;
+ border: 1px solid #ccc;
+ text-decoration: none;
+ color: #666;
+}
+
+#tabnav a:link.active, #tabnav a:visited.active {
+ border-bottom: 1px solid #fff;
+ background: #fff;
+ color: #000;
+}
+
+#tabnav a:hover {
+ background: #fff;
}
\ No newline at end of file
diff --git a/web/src/main/webapp/css/classic/messages.css b/web/src/main/webapp/css/classic/messages.css
index 1c182b857b..46257de6e2 100644
--- a/web/src/main/webapp/css/classic/messages.css
+++ b/web/src/main/webapp/css/classic/messages.css
@@ -1,110 +1,110 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-div#errorMessage, div#successMessage {
- margin: 0 5% 20px 5%;
- padding: 20px 20px 20px 20px;
- border: 1px dashed #666;
- font-weight: bold;
- /*clear: both;*/
- text-align: center;
-}
-
-div#errorMessage {
- color: #DC143C;
-}
-
-div#errorMessage b {
- font-size: 14px;
- font-variant: small-caps;
- color: #228B22;
-}
-
-
-div#successMessage {
- color: green;
-}
-
-div.errorMessageDetails {
- margin: 0 5% 20px 5%;
- padding: 10px 10px 10px 10px;
- color: black;
- font-size: 10px;
- font-weight: bold;
- background-color: #FFB6C1;
- border: 1px dashed #666;
- white-space: pre-wrap;
-}
-
-div.codesample {
- margin: 0 5% 20px 5%;
- padding: 10px 10px 10px 10px;
- font-size: 11px;
- color: black;
- background-color: #F5F5DC;
-}
-
-.errorMessage, .warningMessage, .infoMessage {
- margin: 30px 50px 25px 50px;
-}
-
-.errorMessage {
- border-top: 2px solid #FF3333;
- border-bottom: 2px solid #FF3333;
- background: #FFECEC;
-}
-
-.warningMessage {
- background: #FFFFCC;
- border-top: 2px solid #FBEACF;
- border-bottom: 2px solid #FBEACF;
-}
-
-.infoMessage {
- background: #DFFFDF;
- border-top: 2px solid #6FFF6F;
- border-bottom: 2px solid #6FFF6F;
-}
-
-.helpMessage{
- background: #FFFFF0;
- border-top: 2px solid #FFCC66;
- border-bottom: 2px solid #FFCC66;
- margin-bottom: 10px;
-}
-
-.errorMessage p, .warningMessage p, .infoMessage p {
- padding: 5px 30px 5px 30px;
- color: #A80000;
- font-weight: bold;
-}
-
-.helpMessage p {
- padding: 5px 30px 5px 30px;
- color: #222222;
-}
-
-.helpMessage em {
- color: #000099;
- font-weight: bold;
- font-style: normal;
-}
-
-.errorMessage p, .warningMessage p, .infoMessage p {
- text-align: center;
-}
-
-.statusMessage {
- padding: 10px 0 10px 0;
- text-align: center;
- font-weight: bold;
- border: 1px dashed #ccc;
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+div#errorMessage, div#successMessage {
+ margin: 0 5% 20px 5%;
+ padding: 20px 20px 20px 20px;
+ border: 1px dashed #666;
+ font-weight: bold;
+ /*clear: both;*/
+ text-align: center;
+}
+
+div#errorMessage {
+ color: #DC143C;
+}
+
+div#errorMessage b {
+ font-size: 14px;
+ font-variant: small-caps;
+ color: #228B22;
+}
+
+
+div#successMessage {
+ color: green;
+}
+
+div.errorMessageDetails {
+ margin: 0 5% 20px 5%;
+ padding: 10px 10px 10px 10px;
+ color: black;
+ font-size: 10px;
+ font-weight: bold;
+ background-color: #FFB6C1;
+ border: 1px dashed #666;
+ white-space: pre-wrap;
+}
+
+div.codesample {
+ margin: 0 5% 20px 5%;
+ padding: 10px 10px 10px 10px;
+ font-size: 11px;
+ color: black;
+ background-color: #F5F5DC;
+}
+
+.errorMessage, .warningMessage, .infoMessage {
+ margin: 30px 50px 25px 50px;
+}
+
+.errorMessage {
+ border-top: 2px solid #FF3333;
+ border-bottom: 2px solid #FF3333;
+ background: #FFECEC;
+}
+
+.warningMessage {
+ background: #FFFFCC;
+ border-top: 2px solid #FBEACF;
+ border-bottom: 2px solid #FBEACF;
+}
+
+.infoMessage {
+ background: #DFFFDF;
+ border-top: 2px solid #6FFF6F;
+ border-bottom: 2px solid #6FFF6F;
+}
+
+.helpMessage{
+ background: #FFFFF0;
+ border-top: 2px solid #FFCC66;
+ border-bottom: 2px solid #FFCC66;
+ margin-bottom: 10px;
+}
+
+.errorMessage p, .warningMessage p, .infoMessage p {
+ padding: 5px 30px 5px 30px;
+ color: #A80000;
+ font-weight: bold;
+}
+
+.helpMessage p {
+ padding: 5px 30px 5px 30px;
+ color: #222222;
+}
+
+.helpMessage em {
+ color: #000099;
+ font-weight: bold;
+ font-style: normal;
+}
+
+.errorMessage p, .warningMessage p, .infoMessage p {
+ text-align: center;
+}
+
+.statusMessage {
+ padding: 10px 0 10px 0;
+ text-align: center;
+ font-weight: bold;
+ border: 1px dashed #ccc;
}
\ No newline at end of file
diff --git a/web/src/main/webapp/css/classic/resources.css b/web/src/main/webapp/css/classic/resources.css
index 064c4fab3a..85e25a7da7 100644
--- a/web/src/main/webapp/css/classic/resources.css
+++ b/web/src/main/webapp/css/classic/resources.css
@@ -1,20 +1,20 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-div#resources div.dbConnAdditionalInfo {
- color: #228B22;
- max-width: 1024px;
-}
-
-div#resources div.dbConnMisconfigured {
- color: #DC143C;
- max-width: 1024px;
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+div#resources div.dbConnAdditionalInfo {
+ color: #228B22;
+ max-width: 1024px;
+}
+
+div#resources div.dbConnMisconfigured {
+ color: #DC143C;
+ max-width: 1024px;
+}
diff --git a/web/src/main/webapp/css/classic/scroller.css b/web/src/main/webapp/css/classic/scroller.css
index 5c39b5b32a..1fc5408f6c 100644
--- a/web/src/main/webapp/css/classic/scroller.css
+++ b/web/src/main/webapp/css/classic/scroller.css
@@ -1,40 +1,40 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#resultsTable {
- width: 99%;
- table-layout: fixed;
- clear: left;
-}
-
-.scroller {
- width: 15px;
- cursor: pointer;
- border: 1px solid #ccc;
-}
-
-#right_scroller {
- background: #eee url("gifs/scroll_arrow_right.gif") repeat-y;
-}
-
-#left_scroller {
- background: #eee url("gifs/scroll_arrow_left.gif") repeat-y;
- margin-left: 5px;
-}
-
-.scroller:hover {
- background-color: #000;
-}
-
-.scrollable_content {
- overflow: hidden;
- width: 99%;
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#resultsTable {
+ width: 99%;
+ table-layout: fixed;
+ clear: left;
+}
+
+.scroller {
+ width: 15px;
+ cursor: pointer;
+ border: 1px solid #ccc;
+}
+
+#right_scroller {
+ background: #eee url("gifs/scroll_arrow_right.gif") repeat-y;
+}
+
+#left_scroller {
+ background: #eee url("gifs/scroll_arrow_left.gif") repeat-y;
+ margin-left: 5px;
+}
+
+.scroller:hover {
+ background-color: #000;
+}
+
+.scrollable_content {
+ overflow: hidden;
+ width: 99%;
}
\ No newline at end of file
diff --git a/web/src/main/webapp/css/classic/servlets.css b/web/src/main/webapp/css/classic/servlets.css
index 0ea5d2d2c9..3906095a99 100644
--- a/web/src/main/webapp/css/classic/servlets.css
+++ b/web/src/main/webapp/css/classic/servlets.css
@@ -1,32 +1,32 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#servletTbl tr td {
- vertical-align: bottom;
-}
-
-.servletName {
- font-weight: bold;
-}
-
-.servletName span {
- color: #666;
- font-weight: normal;
- font-size: 90%;
-}
-
-.servletClass {
- font-size: 90%;
- line-height: 90%;
- padding-bottom:2px;
- padding-top:1px;
- color: #999;
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#servletTbl tr td {
+ vertical-align: bottom;
+}
+
+.servletName {
+ font-weight: bold;
+}
+
+.servletName span {
+ color: #666;
+ font-weight: normal;
+ font-size: 90%;
+}
+
+.servletClass {
+ font-size: 90%;
+ line-height: 90%;
+ padding-bottom:2px;
+ padding-top:1px;
+ color: #999;
}
\ No newline at end of file
diff --git a/web/src/main/webapp/css/classic/syntax.css b/web/src/main/webapp/css/classic/syntax.css
index 8c310710c5..727689e100 100644
--- a/web/src/main/webapp/css/classic/syntax.css
+++ b/web/src/main/webapp/css/classic/syntax.css
@@ -1,67 +1,67 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-.xml_tag_symbols {
- color: #003bff;
-}
-
-.xml_rife_tag {
- color: #000000;
- background-color: #e4e6a0;
-}
-
-.xml_plain {
- color: #000000;
-}
-
-.xml_comment {
- color: #939393;
- background-color: #f7f7f7;
-}
-
-.xml_attribute_name {
- color: #000000;
- font-weight: bold;
-}
-
-h1 {
- font-family: sans-serif;
- font-size: 16pt;
- font-weight: bold;
- color: #000000;
- background-color: #d2d2d2;
- border: solid 1px black;
- padding: 5px;
- text-align: center;
-}
-
-.xml_tag_name {
- color: #0037ff;
-}
-
-.xml_char_data {
- color: #000000;
-}
-
-.xml_processing_instruction {
- color: #000000;
- font-weight: bold;
- font-style: italic;
-}
-
-.xml_attribute_value {
- color: #c10000;
-}
-
-.xml_rife_name {
- color: #0000c4;
- background-color: #e4e6a0;
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+.xml_tag_symbols {
+ color: #003bff;
+}
+
+.xml_rife_tag {
+ color: #000000;
+ background-color: #e4e6a0;
+}
+
+.xml_plain {
+ color: #000000;
+}
+
+.xml_comment {
+ color: #939393;
+ background-color: #f7f7f7;
+}
+
+.xml_attribute_name {
+ color: #000000;
+ font-weight: bold;
+}
+
+h1 {
+ font-family: sans-serif;
+ font-size: 16pt;
+ font-weight: bold;
+ color: #000000;
+ background-color: #d2d2d2;
+ border: solid 1px black;
+ padding: 5px;
+ text-align: center;
+}
+
+.xml_tag_name {
+ color: #0037ff;
+}
+
+.xml_char_data {
+ color: #000000;
+}
+
+.xml_processing_instruction {
+ color: #000000;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.xml_attribute_value {
+ color: #c10000;
+}
+
+.xml_rife_name {
+ color: #0000c4;
+ background-color: #e4e6a0;
+}
diff --git a/web/src/main/webapp/css/classic/tables.css b/web/src/main/webapp/css/classic/tables.css
index 95ab444702..f1d30c1046 100644
--- a/web/src/main/webapp/css/classic/tables.css
+++ b/web/src/main/webapp/css/classic/tables.css
@@ -1,130 +1,130 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-.genericTbl {
- color: #4f6b72;
- background-color: #fff;
- width: 99%;
- font-size: 95%;
- font-style: normal;
- padding: 0;
- margin: 0;
-}
-
-.genericTbl th, .genericTbl td {
- padding: 1px 5px 2px 5px;
-}
-
-.genericTbl th {
- border-top: 1px solid #C1DAD7;
- text-transform: uppercase;
- text-align: left;
- background-color: #cadceb;
-}
-
-.genericTbl td {
- border-right: 1px solid #C1DAD7;
- border-bottom: 1px solid #C1DAD7;
- margin: 0; /*color: #4f6b72;*/
-}
-
-.genericTbl td.leftmost {
- border-left: 1px solid #C1DAD7;
-}
-
-.genericTbl tr.even {
- background-color: #f5faff;
-}
-
-.genericTbl tr:hover {
- background-color: #fcfced;
-}
-
-.genericTbl tr.even:hover {
- background-color: #f4f5e4;
-}
-
-.genericTbl a:link, .genericTbl a:active, .genericTbl th a:visited {
- color: #4f6b72;
- text-decoration: none;
- border-bottom: 1px dashed #4f6b72;
-}
-
-.genericTbl th a:hover {
- color: #000;
- border-bottom: 1px solid #000;
-}
-
-.genericTbl td a:link, .genericTbl a:visited {
- color: #40659B;
- text-decoration: none;
- border-bottom: 1px none;
-}
-
-.genericTbl td a:hover, .genericTbl td:hover a {
- color: #003366;
- border-bottom: 1px dashed #bbb;
-}
-
-.genericTbl td a.imglink:hover, .genericTbl td:hover a.imglink {
- border-bottom: none;
-}
-
-tr td.highlighted {
- background-color: #fff0f0;
-}
-
-tr.even td.highlighted {
- background-color: #f2e4e4;
-}
-
-tr:hover td.highlighted {
- background-color: #fcebeb;
-}
-
-tr.even:hover td.highlighted {
- background-color: #f0dddd;
-}
-
-.statsTable {
- padding: 0;
- margin: 0;
-}
-
-.statsTable th, .statsTable td {
- padding: 1px 5px 1px 5px;
- border-right: 1px solid #ddd;
- color: #444;
-}
-
-.statsTable th {
- border-top: 1px solid #ddd;
- background-color: #eee;
-}
-
-.statsTable td {
- border-bottom: 1px solid #ddd;
- text-align: right;
-}
-
-.statsTable .leftMost {
- border-left: 1px solid #ddd;
-}
-
-.statsTable a:link, .statsTable a:active, .statsTable a:visited {
- color: #40659B;
- text-decoration: none;
- border-bottom: 1px dashed #bbb;
-}
-
-a.imglink:visited, a.imglink:active, a.imglink:link {
- border-bottom: none;
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+.genericTbl {
+ color: #4f6b72;
+ background-color: #fff;
+ width: 99%;
+ font-size: 95%;
+ font-style: normal;
+ padding: 0;
+ margin: 0;
+}
+
+.genericTbl th, .genericTbl td {
+ padding: 1px 5px 2px 5px;
+}
+
+.genericTbl th {
+ border-top: 1px solid #C1DAD7;
+ text-transform: uppercase;
+ text-align: left;
+ background-color: #cadceb;
+}
+
+.genericTbl td {
+ border-right: 1px solid #C1DAD7;
+ border-bottom: 1px solid #C1DAD7;
+ margin: 0; /*color: #4f6b72;*/
+}
+
+.genericTbl td.leftmost {
+ border-left: 1px solid #C1DAD7;
+}
+
+.genericTbl tr.even {
+ background-color: #f5faff;
+}
+
+.genericTbl tr:hover {
+ background-color: #fcfced;
+}
+
+.genericTbl tr.even:hover {
+ background-color: #f4f5e4;
+}
+
+.genericTbl a:link, .genericTbl a:active, .genericTbl th a:visited {
+ color: #4f6b72;
+ text-decoration: none;
+ border-bottom: 1px dashed #4f6b72;
+}
+
+.genericTbl th a:hover {
+ color: #000;
+ border-bottom: 1px solid #000;
+}
+
+.genericTbl td a:link, .genericTbl a:visited {
+ color: #40659B;
+ text-decoration: none;
+ border-bottom: 1px none;
+}
+
+.genericTbl td a:hover, .genericTbl td:hover a {
+ color: #003366;
+ border-bottom: 1px dashed #bbb;
+}
+
+.genericTbl td a.imglink:hover, .genericTbl td:hover a.imglink {
+ border-bottom: none;
+}
+
+tr td.highlighted {
+ background-color: #fff0f0;
+}
+
+tr.even td.highlighted {
+ background-color: #f2e4e4;
+}
+
+tr:hover td.highlighted {
+ background-color: #fcebeb;
+}
+
+tr.even:hover td.highlighted {
+ background-color: #f0dddd;
+}
+
+.statsTable {
+ padding: 0;
+ margin: 0;
+}
+
+.statsTable th, .statsTable td {
+ padding: 1px 5px 1px 5px;
+ border-right: 1px solid #ddd;
+ color: #444;
+}
+
+.statsTable th {
+ border-top: 1px solid #ddd;
+ background-color: #eee;
+}
+
+.statsTable td {
+ border-bottom: 1px solid #ddd;
+ text-align: right;
+}
+
+.statsTable .leftMost {
+ border-left: 1px solid #ddd;
+}
+
+.statsTable a:link, .statsTable a:active, .statsTable a:visited {
+ color: #40659B;
+ text-decoration: none;
+ border-bottom: 1px dashed #bbb;
+}
+
+a.imglink:visited, a.imglink:active, a.imglink:link {
+ border-bottom: none;
+}
diff --git a/web/src/main/webapp/css/classic/tooltip.css b/web/src/main/webapp/css/classic/tooltip.css
index 6624903d98..80d0133fd1 100644
--- a/web/src/main/webapp/css/classic/tooltip.css
+++ b/web/src/main/webapp/css/classic/tooltip.css
@@ -1,45 +1,45 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-.tooltip {
- font: lighter 90% / 1.3 Arial, sans-serif;
- /*line-height: 1.5em;*/
- text-decoration: none;
- text-align: left;
- border: 3px solid #FBEACF;
- background-color: #FFFFCC;
- color: #A80000;
- padding: 10px;
-}
-
-.tooltip .tt_top {
- font-weight: bold;
- text-align: right;
- padding: 5px 5px 5px;
- margin-bottom: 5px;
- background-color: #eee;
- border: 1px solid #ccc;
-}
-
-.tooltip .tt_top a:link, .tooltip .tt_top a:visited {
- color: #A80000;
- text-decoration: none;
- border-bottom: 1px none;
-}
-
-.tooltip .tt_top a:hover {
- color: #A80000;
- border-bottom: 1px dashed #bbb;
-}
-
-#tt_title {
- float: left;
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+.tooltip {
+ font: lighter 90% / 1.3 Arial, sans-serif;
+ /*line-height: 1.5em;*/
+ text-decoration: none;
+ text-align: left;
+ border: 3px solid #FBEACF;
+ background-color: #FFFFCC;
+ color: #A80000;
+ padding: 10px;
+}
+
+.tooltip .tt_top {
+ font-weight: bold;
+ text-align: right;
+ padding: 5px 5px 5px;
+ margin-bottom: 5px;
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+.tooltip .tt_top a:link, .tooltip .tt_top a:visited {
+ color: #A80000;
+ text-decoration: none;
+ border-bottom: 1px none;
+}
+
+.tooltip .tt_top a:hover {
+ color: #A80000;
+ border-bottom: 1px dashed #bbb;
+}
+
+#tt_title {
+ float: left;
+}
diff --git a/web/src/main/webapp/js/areascroller.js b/web/src/main/webapp/js/areascroller.js
index 7b7a591eeb..64ffdd201d 100644
--- a/web/src/main/webapp/js/areascroller.js
+++ b/web/src/main/webapp/js/areascroller.js
@@ -1,104 +1,104 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-Effect.Scroll = Class.create();
-Object.extend(Object.extend(Effect.Scroll.prototype, Effect.Base.prototype), {
- initialize: function(element, options) {
- this.element = $(element);
- this.direction = options && options.direction ? options.direction : 'right';
- this.pps = options && options.pps ? options.pps : 100;
-
- var opts = Object.extend({
- duration: (this.element.scrollWidth - this.element.scrollLeft) / this.pps
- }, options || {});
-
-
- this.start(opts);
- },
- setup: function() {
- this.scrollStart = this.element.scrollLeft;
- this.delta = this.element.scrollWidth;
- },
- update: function(position) {
- if (this.direction == 'right')
- this.element.scrollLeft = this.scrollStart + (position * this.delta);
- else
- this.element.scrollLeft = this.scrollStart - (position * this.delta);
- }
-});
-
-
-var rightScroller;
-var leftScroller;
-
-function setupScrollers(container) {
- var containerID = container;
- var r = {
- '#right_scroller': function(e) {
- e.onmouseover = function(e) {
- if (leftScroller) leftScroller.cancel();
- rightScroller = new Effect.Scroll(containerID, {
- pps: 100,
- direction: 'right'
- });
- }
- e.onmouseout = function(e) {
- if (rightScroller) {
- rightScroller.cancel();
- }
- }
- e.onmousedown = function(e) {
- if (rightScroller) rightScroller.cancel();
- rightScroller = new Effect.Scroll(containerID, {
- pps: 1000,
- direction: 'right'
- });
- }
- e.onmouseup = function(e) {
- if (rightScroller) rightScroller.cancel();
- rightScroller = new Effect.Scroll(containerID, {
- pps: 100,
- direction: 'right'
- });
- }
- },
- '#left_scroller': function(e) {
- e.onmouseover = function(e) {
- if (rightScroller) rightScroller.cancel();
- leftScroller = new Effect.Scroll(containerID, {
- pps: 100,
- direction: 'left'
- });
- }
- e.onmouseout = function(e) {
- if (leftScroller) {
- leftScroller.cancel();
- }
- }
- e.onmousedown = function(e) {
- if (leftScroller) leftScroller.cancel();
- leftScroller = new Effect.Scroll(containerID, {
- pps: 1000,
- direction: 'left'
- });
- }
- e.onmouseup = function(e) {
- if (leftScroller) leftScroller.cancel();
- leftScroller = new Effect.Scroll(containerID, {
- pps: 100,
- direction: 'left'
- });
- }
- }
- }
-
- Behaviour.register(r);
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+Effect.Scroll = Class.create();
+Object.extend(Object.extend(Effect.Scroll.prototype, Effect.Base.prototype), {
+ initialize: function(element, options) {
+ this.element = $(element);
+ this.direction = options && options.direction ? options.direction : 'right';
+ this.pps = options && options.pps ? options.pps : 100;
+
+ var opts = Object.extend({
+ duration: (this.element.scrollWidth - this.element.scrollLeft) / this.pps
+ }, options || {});
+
+
+ this.start(opts);
+ },
+ setup: function() {
+ this.scrollStart = this.element.scrollLeft;
+ this.delta = this.element.scrollWidth;
+ },
+ update: function(position) {
+ if (this.direction == 'right')
+ this.element.scrollLeft = this.scrollStart + (position * this.delta);
+ else
+ this.element.scrollLeft = this.scrollStart - (position * this.delta);
+ }
+});
+
+
+var rightScroller;
+var leftScroller;
+
+function setupScrollers(container) {
+ var containerID = container;
+ var r = {
+ '#right_scroller': function(e) {
+ e.onmouseover = function(e) {
+ if (leftScroller) leftScroller.cancel();
+ rightScroller = new Effect.Scroll(containerID, {
+ pps: 100,
+ direction: 'right'
+ });
+ }
+ e.onmouseout = function(e) {
+ if (rightScroller) {
+ rightScroller.cancel();
+ }
+ }
+ e.onmousedown = function(e) {
+ if (rightScroller) rightScroller.cancel();
+ rightScroller = new Effect.Scroll(containerID, {
+ pps: 1000,
+ direction: 'right'
+ });
+ }
+ e.onmouseup = function(e) {
+ if (rightScroller) rightScroller.cancel();
+ rightScroller = new Effect.Scroll(containerID, {
+ pps: 100,
+ direction: 'right'
+ });
+ }
+ },
+ '#left_scroller': function(e) {
+ e.onmouseover = function(e) {
+ if (rightScroller) rightScroller.cancel();
+ leftScroller = new Effect.Scroll(containerID, {
+ pps: 100,
+ direction: 'left'
+ });
+ }
+ e.onmouseout = function(e) {
+ if (leftScroller) {
+ leftScroller.cancel();
+ }
+ }
+ e.onmousedown = function(e) {
+ if (leftScroller) leftScroller.cancel();
+ leftScroller = new Effect.Scroll(containerID, {
+ pps: 1000,
+ direction: 'left'
+ });
+ }
+ e.onmouseup = function(e) {
+ if (leftScroller) leftScroller.cancel();
+ leftScroller = new Effect.Scroll(containerID, {
+ pps: 100,
+ direction: 'left'
+ });
+ }
+ }
+ }
+
+ Behaviour.register(r);
+}
diff --git a/web/src/main/webapp/js/behaviour.js b/web/src/main/webapp/js/behaviour.js
index fdde861bba..d86df13b2c 100644
--- a/web/src/main/webapp/js/behaviour.js
+++ b/web/src/main/webapp/js/behaviour.js
@@ -1,254 +1,254 @@
-/*
- Behaviour v1.1 by Ben Nolan, June 2005. Based largely on the work
- of Simon Willison (see comments by Simon below).
-
- Description:
-
- Uses css selectors to apply javascript behaviours to enable
- unobtrusive javascript in html documents.
-
- Usage:
-
- var myrules = {
- 'b.someclass' : function(element){
- element.onclick = function(){
- alert(this.innerHTML);
- }
- },
- '#someid u' : function(element){
- element.onmouseover = function(){
- this.innerHTML = "BLAH!";
- }
- }
- };
-
- Behaviour.register(myrules);
-
- // Call Behaviour.apply() to re-apply the rules (if you
- // update the dom, etc).
-
- License:
-
+/*
+ Behaviour v1.1 by Ben Nolan, June 2005. Based largely on the work
+ of Simon Willison (see comments by Simon below).
+
+ Description:
+
+ Uses css selectors to apply javascript behaviours to enable
+ unobtrusive javascript in html documents.
+
+ Usage:
+
+ var myrules = {
+ 'b.someclass' : function(element){
+ element.onclick = function(){
+ alert(this.innerHTML);
+ }
+ },
+ '#someid u' : function(element){
+ element.onmouseover = function(){
+ this.innerHTML = "BLAH!";
+ }
+ }
+ };
+
+ Behaviour.register(myrules);
+
+ // Call Behaviour.apply() to re-apply the rules (if you
+ // update the dom, etc).
+
+ License:
+
This file is entirely BSD licensed.
-
- More information:
-
- http://ripcord.co.nz/behaviour/
-
-*/
-
-var Behaviour = {
- list : new Array,
-
- register : function(sheet){
- Behaviour.list.push(sheet);
- },
-
- start : function(){
- Behaviour.addLoadEvent(function(){
- Behaviour.apply();
- });
- },
-
- apply : function(){
- for (h=0;sheet=Behaviour.list[h];h++){
- for (selector in sheet){
- list = document.getElementsBySelector(selector);
-
- if (!list){
- continue;
- }
-
- for (i=0;element=list[i];i++){
- sheet[selector](element);
- }
- }
- }
- },
-
- addLoadEvent : function(func){
- var oldonload = window.onload;
-
- if (typeof window.onload != 'function') {
- window.onload = func;
- } else {
- window.onload = function() {
- oldonload();
- func();
- }
- }
- }
-}
-
-Behaviour.start();
-
-/*
- The following code is Copyright (C) Simon Willison 2004.
-
- document.getElementsBySelector(selector)
- - returns an array of element objects from the current document
- matching the CSS selector. Selectors can contain element names,
- class names and ids and can be nested. For example:
-
- elements = document.getElementsBySelect('div#main p a.external')
-
- Will return an array of all 'a' elements with 'external' in their
- class attribute that are contained inside 'p' elements that are
- contained inside the 'div' element which has id="main"
-
- New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
- See http://www.w3.org/TR/css3-selectors/#attribute-selectors
-
- Version 0.4 - Simon Willison, March 25th 2003
- -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows
- -- Opera 7 fails
-*/
-
-function getAllChildren(e) {
- // Returns all children of element. Workaround required for IE5/Windows. Ugh.
- return e.all ? e.all : e.getElementsByTagName('*');
-}
-
-document.getElementsBySelector = function(selector) {
- // Attempt to fail gracefully in lesser browsers
- if (!document.getElementsByTagName) {
- return new Array();
- }
- // Split selector in to tokens
- var tokens = selector.split(' ');
- var currentContext = new Array(document);
- for (var i = 0; i < tokens.length; i++) {
- token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;
- if (token.indexOf('#') > -1) {
- // Token is an ID selector
- var bits = token.split('#');
- var tagName = bits[0];
- var id = bits[1];
- var element = document.getElementById(id);
- if (tagName && element.nodeName.toLowerCase() != tagName) {
- // tag with that ID not found, return false
- return new Array();
- }
- // Set currentContext to contain just this element
- currentContext = new Array(element);
- continue; // Skip to next token
- }
- if (token.indexOf('.') > -1) {
- // Token contains a class selector
- var bits = token.split('.');
- var tagName = bits[0];
- var className = bits[1];
- if (!tagName) {
- tagName = '*';
- }
- // Get elements matching tag, filter them for class selector
- var found = new Array;
- var foundCount = 0;
- for (var h = 0; h < currentContext.length; h++) {
- var elements;
- if (tagName == '*') {
- elements = getAllChildren(currentContext[h]);
- } else {
- elements = currentContext[h].getElementsByTagName(tagName);
- }
- for (var j = 0; j < elements.length; j++) {
- found[foundCount++] = elements[j];
- }
- }
- currentContext = new Array;
- var currentContextIndex = 0;
- for (var k = 0; k < found.length; k++) {
- if (found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b'))) {
- currentContext[currentContextIndex++] = found[k];
- }
- }
- continue; // Skip to next token
- }
- // Code to deal with attribute selectors
- if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
- var tagName = RegExp.$1;
- var attrName = RegExp.$2;
- var attrOperator = RegExp.$3;
- var attrValue = RegExp.$4;
- if (!tagName) {
- tagName = '*';
- }
- // Grab all of the tagName elements within current context
- var found = new Array;
- var foundCount = 0;
- for (var h = 0; h < currentContext.length; h++) {
- var elements;
- if (tagName == '*') {
- elements = getAllChildren(currentContext[h]);
- } else {
- elements = currentContext[h].getElementsByTagName(tagName);
- }
- for (var j = 0; j < elements.length; j++) {
- found[foundCount++] = elements[j];
- }
- }
- currentContext = new Array;
- var currentContextIndex = 0;
- var checkFunction; // This function will be used to filter the elements
- switch (attrOperator) {
- case '=': // Equality
- checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
- break;
- case '~': // Match one of space seperated words
- checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
- break;
- case '|': // Match start with value followed by optional hyphen
- checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
- break;
- case '^': // Match starts with value
- checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
- break;
- case '$': // Match ends with value - fails with "Warning" in Opera 7
- checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
- break;
- case '*': // Match ends with value
- checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
- break;
- default :
- // Just test for existence of attribute
- checkFunction = function(e) { return e.getAttribute(attrName); };
- }
- currentContext = new Array;
- var currentContextIndex = 0;
- for (var k = 0; k < found.length; k++) {
- if (checkFunction(found[k])) {
- currentContext[currentContextIndex++] = found[k];
- }
- }
- // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);
- continue; // Skip to next token
- }
-
- if (!currentContext[0]){
- return;
- }
-
- // If we get here, token is JUST an element (not a class or ID selector)
- tagName = token;
- var found = new Array;
- var foundCount = 0;
- for (var h = 0; h < currentContext.length; h++) {
- var elements = currentContext[h].getElementsByTagName(tagName);
- for (var j = 0; j < elements.length; j++) {
- found[foundCount++] = elements[j];
- }
- }
- currentContext = found;
- }
- return currentContext;
-}
-
-/* That revolting regular expression explained
-/^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
- \---/ \---/\-------------/ \-------/
- | | | |
- | | | The value
- | | ~,|,^,$,* or =
- | Attribute
- Tag
-*/
+
+ More information:
+
+ http://ripcord.co.nz/behaviour/
+
+*/
+
+var Behaviour = {
+ list : new Array,
+
+ register : function(sheet){
+ Behaviour.list.push(sheet);
+ },
+
+ start : function(){
+ Behaviour.addLoadEvent(function(){
+ Behaviour.apply();
+ });
+ },
+
+ apply : function(){
+ for (h=0;sheet=Behaviour.list[h];h++){
+ for (selector in sheet){
+ list = document.getElementsBySelector(selector);
+
+ if (!list){
+ continue;
+ }
+
+ for (i=0;element=list[i];i++){
+ sheet[selector](element);
+ }
+ }
+ }
+ },
+
+ addLoadEvent : function(func){
+ var oldonload = window.onload;
+
+ if (typeof window.onload != 'function') {
+ window.onload = func;
+ } else {
+ window.onload = function() {
+ oldonload();
+ func();
+ }
+ }
+ }
+}
+
+Behaviour.start();
+
+/*
+ The following code is Copyright (C) Simon Willison 2004.
+
+ document.getElementsBySelector(selector)
+ - returns an array of element objects from the current document
+ matching the CSS selector. Selectors can contain element names,
+ class names and ids and can be nested. For example:
+
+ elements = document.getElementsBySelect('div#main p a.external')
+
+ Will return an array of all 'a' elements with 'external' in their
+ class attribute that are contained inside 'p' elements that are
+ contained inside the 'div' element which has id="main"
+
+ New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
+ See http://www.w3.org/TR/css3-selectors/#attribute-selectors
+
+ Version 0.4 - Simon Willison, March 25th 2003
+ -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows
+ -- Opera 7 fails
+*/
+
+function getAllChildren(e) {
+ // Returns all children of element. Workaround required for IE5/Windows. Ugh.
+ return e.all ? e.all : e.getElementsByTagName('*');
+}
+
+document.getElementsBySelector = function(selector) {
+ // Attempt to fail gracefully in lesser browsers
+ if (!document.getElementsByTagName) {
+ return new Array();
+ }
+ // Split selector in to tokens
+ var tokens = selector.split(' ');
+ var currentContext = new Array(document);
+ for (var i = 0; i < tokens.length; i++) {
+ token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;
+ if (token.indexOf('#') > -1) {
+ // Token is an ID selector
+ var bits = token.split('#');
+ var tagName = bits[0];
+ var id = bits[1];
+ var element = document.getElementById(id);
+ if (tagName && element.nodeName.toLowerCase() != tagName) {
+ // tag with that ID not found, return false
+ return new Array();
+ }
+ // Set currentContext to contain just this element
+ currentContext = new Array(element);
+ continue; // Skip to next token
+ }
+ if (token.indexOf('.') > -1) {
+ // Token contains a class selector
+ var bits = token.split('.');
+ var tagName = bits[0];
+ var className = bits[1];
+ if (!tagName) {
+ tagName = '*';
+ }
+ // Get elements matching tag, filter them for class selector
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements;
+ if (tagName == '*') {
+ elements = getAllChildren(currentContext[h]);
+ } else {
+ elements = currentContext[h].getElementsByTagName(tagName);
+ }
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ for (var k = 0; k < found.length; k++) {
+ if (found[k].className && found[k].className.match(new RegExp('\\b'+className+'\\b'))) {
+ currentContext[currentContextIndex++] = found[k];
+ }
+ }
+ continue; // Skip to next token
+ }
+ // Code to deal with attribute selectors
+ if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
+ var tagName = RegExp.$1;
+ var attrName = RegExp.$2;
+ var attrOperator = RegExp.$3;
+ var attrValue = RegExp.$4;
+ if (!tagName) {
+ tagName = '*';
+ }
+ // Grab all of the tagName elements within current context
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements;
+ if (tagName == '*') {
+ elements = getAllChildren(currentContext[h]);
+ } else {
+ elements = currentContext[h].getElementsByTagName(tagName);
+ }
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ var checkFunction; // This function will be used to filter the elements
+ switch (attrOperator) {
+ case '=': // Equality
+ checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
+ break;
+ case '~': // Match one of space seperated words
+ checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
+ break;
+ case '|': // Match start with value followed by optional hyphen
+ checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
+ break;
+ case '^': // Match starts with value
+ checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
+ break;
+ case '$': // Match ends with value - fails with "Warning" in Opera 7
+ checkFunction = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
+ break;
+ case '*': // Match ends with value
+ checkFunction = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
+ break;
+ default :
+ // Just test for existence of attribute
+ checkFunction = function(e) { return e.getAttribute(attrName); };
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ for (var k = 0; k < found.length; k++) {
+ if (checkFunction(found[k])) {
+ currentContext[currentContextIndex++] = found[k];
+ }
+ }
+ // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);
+ continue; // Skip to next token
+ }
+
+ if (!currentContext[0]){
+ return;
+ }
+
+ // If we get here, token is JUST an element (not a class or ID selector)
+ tagName = token;
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements = currentContext[h].getElementsByTagName(tagName);
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = found;
+ }
+ return currentContext;
+}
+
+/* That revolting regular expression explained
+/^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
+ \---/ \---/\-------------/ \-------/
+ | | | |
+ | | | The value
+ | | ~,|,^,$,* or =
+ | Attribute
+ Tag
+*/
diff --git a/web/src/main/webapp/js/datasourcetest.js b/web/src/main/webapp/js/datasourcetest.js
index 7b5fb58e38..f9f5442c07 100644
--- a/web/src/main/webapp/js/datasourcetest.js
+++ b/web/src/main/webapp/js/datasourcetest.js
@@ -1,338 +1,338 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
- Java Script functions for datasourcetest.jsp
-
- Author: Andy Shapoval, Vlad Ilyushchenko
-*/
-
-var connectUrl = '';
-var recordsetUrl = '';
-var queryHistoryUrl = '';
-var sqlOutputDivId = 'outputHolder';
-var formId = 'sqlForm';
-var ajaxActivityId = 'ajaxActivity';
-var metaDataH3Id = 'metaDataH3';
-var resultsH3Id = "resultsH3";
-var historyContainerDivId = "queryHistoryContainer";
-var historyOutputDivId = 'queryHistoryHolder';
-var historyVisible = false;
-var historyWrapped = true;
-var historyHeight = 150;
-var optionsDivId = 'optionsDL';
-var optionsVisible = false;
-var ajaxActivityTimer;
-
-function setupAjaxActions(aConnectUrl, aRecordsetUrl, aQueryHistoryUrl) {
- connectUrl = aConnectUrl;
- recordsetUrl = aRecordsetUrl;
- queryHistoryUrl = aQueryHistoryUrl;
-
- var rules = {
- 'li#connect': function(element) {
- element.onclick = function() {
- testConnction();
- $('sql').focus();
- return false;
- }
- },
- 'li#executeSql': function(element) {
- element.onclick = function() {
- executeSql();
- $('sql').focus();
- return false;
- }
- },
- 'li#showHistory': function(element) {
- element.onclick = function() {
- showQueryHistory();
- $('sql').focus();
- return false;
- }
- },
- 'li#hideHistory': function(element) {
- element.onclick = function() {
- hideQueryHistory();
- $('sql').focus();
- return false;
- }
- },
- 'li#showOptions': function(element) {
- element.onclick = function() {
- showOptions();
- $('sql').focus();
- return false;
- }
- },
- 'li#hideOptions': function(element) {
- element.onclick = function() {
- hideOptions();
- $('sql').focus();
- return false;
- }
- },
- 'li#wrap': function(element) {
- element.onclick = function() {
- wrapQueryHistory();
- $('sql').focus();
- return false;
- }
- },
- 'li#nowrap': function(element) {
- element.onclick = function() {
- nowrapQueryHistory();
- $('sql').focus();
- return false;
- }
- }
- }
-
- Behaviour.register(rules);
-}
-
-function testConnction() {
- hideQueryHistory();
- Element.show(ajaxActivityId);
- Element.hide(resultsH3Id);
- Element.show(metaDataH3Id);
- $('rowsAffected').innerHTML = "";
- $('pagebanner').innerHTML = "";
- $('pagelinks').innerHTML = "";
- var params = Form.serialize(formId);
- new Ajax.Updater(sqlOutputDivId, connectUrl, {
- method: 'post',
- postBody: params,
- onComplete: function(req, obj) {
- if (ajaxActivityTimer) clearTimeout(ajaxActivityTimer);
- ajaxActivityTimer = setTimeout('Element.hide("' + ajaxActivityId + '")', 250);
- $('sqlResultsWrapper').show();
- }
- });
-}
-
-function executeSql() {
- hideQueryHistory();
- Element.show(ajaxActivityId);
- Element.hide(metaDataH3Id);
- Element.show(resultsH3Id);
- var params = Form.serialize(formId);
- new Ajax.Updater(sqlOutputDivId, recordsetUrl, {
- method: 'post',
- postBody: params,
- onComplete: function() {
- setupPaginationLinks();
- if ($('rs_empty') || $('rs_error')) {
- $('left_scroller').hide();
- $('right_scroller').hide();
- $('separator').hide();
- } else {
- $('left_scroller').show();
- $('right_scroller').show();
- $('separator').show();
- }
- $('sqlResultsWrapper').show();
- }
- });
-}
-
-function setupPaginationLinks(req, obj) {
- if ($('rs_rowsAffected') && $('rs_pagebanner') && $('rs_pagelinks')) {
- $('rowsAffected').innerHTML = $('rs_rowsAffected').innerHTML;
- $('pagebanner').innerHTML = $('rs_pagebanner').innerHTML;
- $('pagelinks').innerHTML = $('rs_pagelinks').innerHTML;
- } else {
- $('rowsAffected').innerHTML = "";
- $('pagebanner').innerHTML = "";
- $('pagelinks').innerHTML = "";
- }
-
- var links = $$('#pagelinks a');
-
- links.each(function(lnk) {
- lnk.onclick = function() {
- Element.show(ajaxActivityId);
- Element.show(resultsH3Id);
- var p = Form.serialize(formId);
- new Ajax.Updater(sqlOutputDivId, lnk.href, {
- method: 'post',
- postBody: p,
- onComplete: setupPaginationLinks
- });
- return false;
- }
- });
-
- if (ajaxActivityTimer) clearTimeout(ajaxActivityTimer);
- ajaxActivityTimer = setTimeout('Element.hide("' + ajaxActivityId + '")', 250);
-}
-
-/*
- event handlers to display a query history list
-*/
-
-function showQueryHistory() {
- new Ajax.Updater(historyOutputDivId, queryHistoryUrl, {
- method: 'post',
- onComplete: function(req, obj) {
- Element.hide('showHistory');
- Element.show('hideHistory');
- Element.setStyle(historyOutputDivId, {
- height: historyHeight + 'px'
- });
- Effect.Appear(historyContainerDivId, {
- duration:0.20
- });
-
- if (historyWrapped) {
- wrapQueryHistory();
- } else {
- nowrapQueryHistory();
- }
-
- historyVisible = true;
- }
- });
-}
-
-function getQueryHistoryItem(lnk) {
- new Ajax.Request(lnk.href, {
- method: 'get',
- onComplete: function(lnkReq) {
- $('sql').value = lnkReq.responseText;
- }
- });
-
-hideQueryHistory();
-$('sql').focus();
-}
-
-function hideQueryHistory() {
- Element.hide('hideHistory');
- Element.show('showHistory');
- Effect.Fade(historyContainerDivId, {
- duration:0.20
- });
- historyVisible = false;
-}
-
-function wrapQueryHistory() {
- Element.setStyle(historyOutputDivId, {
- "whiteSpace": "normal"
- });
- Element.hide('wrap');
- Element.show('nowrap');
- historyWrapped = true;
-}
-
-function nowrapQueryHistory() {
- Element.setStyle(historyOutputDivId, {
- "whiteSpace": "nowrap"
- });
- Element.hide('nowrap');
- Element.show('wrap');
- historyWrapped = false;
-}
-
-/*
- event handlers to display an option entry form
-*/
-
-function showOptions() {
- Element.hide('showOptions');
- Element.show('hideOptions');
- Effect.Appear(optionsDivId, {
- duration:0.20
- });
- optionsVisible = true;
-}
-
-function hideOptions() {
- Element.hide('hideOptions');
- Element.show('showOptions');
- Effect.Fade(optionsDivId, {
- duration:0.20
- });
- optionsVisible = false;
-}
-
-/*
- event handlers to provide keyboard shortcuts for major form actions
-*/
-
-function setupShortcuts() {
- var rules = {
- 'body': function(element) {
- element.onkeydown = function() {
- var sUserAgent = navigator.userAgent;
- var isIE = sUserAgent.indexOf('compatible') > -1 && sUserAgent.indexOf('MSIE') > -1
- var e;
-
- if (isIE) {
- e = window.event;
- } else {
- e = arguments[0];
- }
-
- if (e.keyCode == 13 && e.ctrlKey && ! e.altKey && ! e.shiftKey) {
- executeSql();
- $('sql').focus();
- } else if (e.keyCode == 40 && e.ctrlKey && ! e.altKey && ! e.shiftKey) {
- if (historyVisible) {
- hideQueryHistory();
- } else {
- showQueryHistory();
- }
- $('sql').focus();
- } else if (e.keyCode == 38 && e.ctrlKey && ! e.altKey && ! e.shiftKey) {
- if (optionsVisible) {
- hideOptions();
- $('sql').focus();
- } else {
- showOptions();
- $('sql').focus();
- }
- }
- }
- }
- };
-
- Behaviour.register(rules);
-}
-
-/*
- event handlers for sql textarea and query history div resizing
-*/
-
-function resizeTextArea(drag) {
- var deltaY = drag.currentDelta()[1];
- var h = (Element.getDimensions('sql').height + deltaY);
- h = Math.max(h, 100);
- Element.setStyle('sql', {
- height: h + 'px'
- });
-}
-
-function resizeQueryHistory(drag) {
- var deltaY = drag.currentDelta()[1];
- var h = (Element.getDimensions(historyOutputDivId).height + deltaY);
- h = Math.max(h, 20);
- historyHeight = h;
- Element.setStyle(historyOutputDivId, {
- height: h + 'px'
- });
-}
-
-function revertDragHandle(handle) {
- handle.style.top = 0;
- handle.style.position = 'relative';
- $('sql').focus();
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+/*
+ Java Script functions for datasourcetest.jsp
+
+ Author: Andy Shapoval, Vlad Ilyushchenko
+*/
+
+var connectUrl = '';
+var recordsetUrl = '';
+var queryHistoryUrl = '';
+var sqlOutputDivId = 'outputHolder';
+var formId = 'sqlForm';
+var ajaxActivityId = 'ajaxActivity';
+var metaDataH3Id = 'metaDataH3';
+var resultsH3Id = "resultsH3";
+var historyContainerDivId = "queryHistoryContainer";
+var historyOutputDivId = 'queryHistoryHolder';
+var historyVisible = false;
+var historyWrapped = true;
+var historyHeight = 150;
+var optionsDivId = 'optionsDL';
+var optionsVisible = false;
+var ajaxActivityTimer;
+
+function setupAjaxActions(aConnectUrl, aRecordsetUrl, aQueryHistoryUrl) {
+ connectUrl = aConnectUrl;
+ recordsetUrl = aRecordsetUrl;
+ queryHistoryUrl = aQueryHistoryUrl;
+
+ var rules = {
+ 'li#connect': function(element) {
+ element.onclick = function() {
+ testConnction();
+ $('sql').focus();
+ return false;
+ }
+ },
+ 'li#executeSql': function(element) {
+ element.onclick = function() {
+ executeSql();
+ $('sql').focus();
+ return false;
+ }
+ },
+ 'li#showHistory': function(element) {
+ element.onclick = function() {
+ showQueryHistory();
+ $('sql').focus();
+ return false;
+ }
+ },
+ 'li#hideHistory': function(element) {
+ element.onclick = function() {
+ hideQueryHistory();
+ $('sql').focus();
+ return false;
+ }
+ },
+ 'li#showOptions': function(element) {
+ element.onclick = function() {
+ showOptions();
+ $('sql').focus();
+ return false;
+ }
+ },
+ 'li#hideOptions': function(element) {
+ element.onclick = function() {
+ hideOptions();
+ $('sql').focus();
+ return false;
+ }
+ },
+ 'li#wrap': function(element) {
+ element.onclick = function() {
+ wrapQueryHistory();
+ $('sql').focus();
+ return false;
+ }
+ },
+ 'li#nowrap': function(element) {
+ element.onclick = function() {
+ nowrapQueryHistory();
+ $('sql').focus();
+ return false;
+ }
+ }
+ }
+
+ Behaviour.register(rules);
+}
+
+function testConnction() {
+ hideQueryHistory();
+ Element.show(ajaxActivityId);
+ Element.hide(resultsH3Id);
+ Element.show(metaDataH3Id);
+ $('rowsAffected').innerHTML = "";
+ $('pagebanner').innerHTML = "";
+ $('pagelinks').innerHTML = "";
+ var params = Form.serialize(formId);
+ new Ajax.Updater(sqlOutputDivId, connectUrl, {
+ method: 'post',
+ postBody: params,
+ onComplete: function(req, obj) {
+ if (ajaxActivityTimer) clearTimeout(ajaxActivityTimer);
+ ajaxActivityTimer = setTimeout('Element.hide("' + ajaxActivityId + '")', 250);
+ $('sqlResultsWrapper').show();
+ }
+ });
+}
+
+function executeSql() {
+ hideQueryHistory();
+ Element.show(ajaxActivityId);
+ Element.hide(metaDataH3Id);
+ Element.show(resultsH3Id);
+ var params = Form.serialize(formId);
+ new Ajax.Updater(sqlOutputDivId, recordsetUrl, {
+ method: 'post',
+ postBody: params,
+ onComplete: function() {
+ setupPaginationLinks();
+ if ($('rs_empty') || $('rs_error')) {
+ $('left_scroller').hide();
+ $('right_scroller').hide();
+ $('separator').hide();
+ } else {
+ $('left_scroller').show();
+ $('right_scroller').show();
+ $('separator').show();
+ }
+ $('sqlResultsWrapper').show();
+ }
+ });
+}
+
+function setupPaginationLinks(req, obj) {
+ if ($('rs_rowsAffected') && $('rs_pagebanner') && $('rs_pagelinks')) {
+ $('rowsAffected').innerHTML = $('rs_rowsAffected').innerHTML;
+ $('pagebanner').innerHTML = $('rs_pagebanner').innerHTML;
+ $('pagelinks').innerHTML = $('rs_pagelinks').innerHTML;
+ } else {
+ $('rowsAffected').innerHTML = "";
+ $('pagebanner').innerHTML = "";
+ $('pagelinks').innerHTML = "";
+ }
+
+ var links = $$('#pagelinks a');
+
+ links.each(function(lnk) {
+ lnk.onclick = function() {
+ Element.show(ajaxActivityId);
+ Element.show(resultsH3Id);
+ var p = Form.serialize(formId);
+ new Ajax.Updater(sqlOutputDivId, lnk.href, {
+ method: 'post',
+ postBody: p,
+ onComplete: setupPaginationLinks
+ });
+ return false;
+ }
+ });
+
+ if (ajaxActivityTimer) clearTimeout(ajaxActivityTimer);
+ ajaxActivityTimer = setTimeout('Element.hide("' + ajaxActivityId + '")', 250);
+}
+
+/*
+ event handlers to display a query history list
+*/
+
+function showQueryHistory() {
+ new Ajax.Updater(historyOutputDivId, queryHistoryUrl, {
+ method: 'post',
+ onComplete: function(req, obj) {
+ Element.hide('showHistory');
+ Element.show('hideHistory');
+ Element.setStyle(historyOutputDivId, {
+ height: historyHeight + 'px'
+ });
+ Effect.Appear(historyContainerDivId, {
+ duration:0.20
+ });
+
+ if (historyWrapped) {
+ wrapQueryHistory();
+ } else {
+ nowrapQueryHistory();
+ }
+
+ historyVisible = true;
+ }
+ });
+}
+
+function getQueryHistoryItem(lnk) {
+ new Ajax.Request(lnk.href, {
+ method: 'get',
+ onComplete: function(lnkReq) {
+ $('sql').value = lnkReq.responseText;
+ }
+ });
+
+hideQueryHistory();
+$('sql').focus();
+}
+
+function hideQueryHistory() {
+ Element.hide('hideHistory');
+ Element.show('showHistory');
+ Effect.Fade(historyContainerDivId, {
+ duration:0.20
+ });
+ historyVisible = false;
+}
+
+function wrapQueryHistory() {
+ Element.setStyle(historyOutputDivId, {
+ "whiteSpace": "normal"
+ });
+ Element.hide('wrap');
+ Element.show('nowrap');
+ historyWrapped = true;
+}
+
+function nowrapQueryHistory() {
+ Element.setStyle(historyOutputDivId, {
+ "whiteSpace": "nowrap"
+ });
+ Element.hide('nowrap');
+ Element.show('wrap');
+ historyWrapped = false;
+}
+
+/*
+ event handlers to display an option entry form
+*/
+
+function showOptions() {
+ Element.hide('showOptions');
+ Element.show('hideOptions');
+ Effect.Appear(optionsDivId, {
+ duration:0.20
+ });
+ optionsVisible = true;
+}
+
+function hideOptions() {
+ Element.hide('hideOptions');
+ Element.show('showOptions');
+ Effect.Fade(optionsDivId, {
+ duration:0.20
+ });
+ optionsVisible = false;
+}
+
+/*
+ event handlers to provide keyboard shortcuts for major form actions
+*/
+
+function setupShortcuts() {
+ var rules = {
+ 'body': function(element) {
+ element.onkeydown = function() {
+ var sUserAgent = navigator.userAgent;
+ var isIE = sUserAgent.indexOf('compatible') > -1 && sUserAgent.indexOf('MSIE') > -1
+ var e;
+
+ if (isIE) {
+ e = window.event;
+ } else {
+ e = arguments[0];
+ }
+
+ if (e.keyCode == 13 && e.ctrlKey && ! e.altKey && ! e.shiftKey) {
+ executeSql();
+ $('sql').focus();
+ } else if (e.keyCode == 40 && e.ctrlKey && ! e.altKey && ! e.shiftKey) {
+ if (historyVisible) {
+ hideQueryHistory();
+ } else {
+ showQueryHistory();
+ }
+ $('sql').focus();
+ } else if (e.keyCode == 38 && e.ctrlKey && ! e.altKey && ! e.shiftKey) {
+ if (optionsVisible) {
+ hideOptions();
+ $('sql').focus();
+ } else {
+ showOptions();
+ $('sql').focus();
+ }
+ }
+ }
+ }
+ };
+
+ Behaviour.register(rules);
+}
+
+/*
+ event handlers for sql textarea and query history div resizing
+*/
+
+function resizeTextArea(drag) {
+ var deltaY = drag.currentDelta()[1];
+ var h = (Element.getDimensions('sql').height + deltaY);
+ h = Math.max(h, 100);
+ Element.setStyle('sql', {
+ height: h + 'px'
+ });
+}
+
+function resizeQueryHistory(drag) {
+ var deltaY = drag.currentDelta()[1];
+ var h = (Element.getDimensions(historyOutputDivId).height + deltaY);
+ h = Math.max(h, 20);
+ historyHeight = h;
+ Element.setStyle(historyOutputDivId, {
+ height: h + 'px'
+ });
+}
+
+function revertDragHandle(handle) {
+ handle.style.top = 0;
+ handle.style.position = 'relative';
+ $('sql').focus();
+}
diff --git a/web/src/main/webapp/js/func.js b/web/src/main/webapp/js/func.js
index cb5ad7f5dd..9536dfb2af 100644
--- a/web/src/main/webapp/js/func.js
+++ b/web/src/main/webapp/js/func.js
@@ -1,199 +1,199 @@
-/*
- * Licensed under the GPL License. You may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-function inverse($f) {
- for ($i = 0; $i < $f.elements.length; $i++) {
- if ($f.elements[$i].type == "checkbox") {
- $f.elements[$i].checked = !$f.elements[$i].checked;
- }
- }
- return false;
-}
-
-function checkAll($f) {
- for ($i = 0; $i < $f.elements.length; $i++) {
- if ($f.elements[$i].type == "checkbox") {
- $f.elements[$i].checked = true;
- }
- }
- return false;
-}
-
-/**
- * Requires prototype.js (http://prototype.conio.net/)
- */
-Ajax.ImgUpdater = Class.create();
-Ajax.ImgUpdater.prototype = {
- initialize: function(imgID, timeout, newSrc) {
- this.img = document.getElementById(imgID);
- if (newSrc) {
- this.src = newSrc;
- } else {
- this.src = this.img.src;
- }
- this.timeout = timeout;
- this.start();
- },
-
- start: function() {
- var now = new Date();
- this.img.src = this.src + '&t=' + now.getTime();
- this.timer = setTimeout(this.start.bind(this), this.timeout * 1000);
- },
-
- stop: function() {
- if (this.timer) clearTimeout(this.timer);
- }
-}
-
-function togglePanel(container, remember_url) {
- if (Element.getStyle(container, "display") == 'none') {
- if (remember_url) {
- new Ajax.Request(remember_url, {
- method:'get',
- asynchronous:true,
- parameters: 'state=on'
- });
- }
- if (document.getElementById('invisible_' + container)) {
- Element.hide('invisible_' + container);
- }
- if (document.getElementById('visible_' + container)) {
- Element.show('visible_' + container);
- }
-
- Effect.Grow(container);
- } else {
- if (remember_url) {
- new Ajax.Request(remember_url, {
- method:'get',
- asynchronous:true,
- parameters: 'state=off'
- });
- }
- if (document.getElementById('visible_' + container)) {
- Element.hide('visible_' + container);
- }
- if (document.getElementById('invisible_' + container)) {
- Element.show('invisible_' + container);
- }
- Effect.Shrink(container);
- }
- return false;
-}
-
-function scaleImage(v, minX, maxX, minY, maxY) {
- var images = document.getElementsByClassName('scale-image');
- var w = (maxX - minX) * v + minX;
- var h = (maxY - minY) * v + minY;
- for (i = 0; i < images.length; i++) {
- $(images[i]).setStyle({
- "width": w + 'px',
- "height": h + 'px'
- });
- }
-}
-
-function toggleAndReloadPanel(container, url) {
- if (Element.getStyle(container, "display") == 'none') {
- new Ajax.Updater(container, url);
- Effect.BlindDown(container);
- } else {
- Effect.Shrink(container);
- }
-}
-
-function getWindowHeight() {
- var myHeight = 0;
- if (typeof( window.innerHeight ) == 'number') {
- //Non-IE
- myHeight = window.innerHeight;
- } else if (document.documentElement && document.documentElement.clientHeight) {
- //IE 6+ in 'standards compliant mode'
- myHeight = document.documentElement.clientHeight;
- } else if (document.body && document.body.clientHeight) {
- //IE 4 compatible
- myHeight = document.body.clientHeight;
- }
- return myHeight;
-}
-
-function getWindowWidth() {
- var myWidth = 0;
- if (typeof( window.innerWidth ) == 'number') {
- //Non-IE
- myWidth = window.innerWidth;
- } else if (document.documentElement && document.documentElement.clientWidth) {
- //IE 6+ in 'standards compliant mode'
- myWidth = document.documentElement.clientWidth;
- } else if (document.body && document.body.clientWidth) {
- //IE 4 compatible
- myWidth = document.body.clientWidth;
- }
- return myWidth;
-}
-
-var helpTimerID;
-
-function setupHelpToggle(url) {
- rules = {
- 'li#abbreviations': function(element) {
- element.onclick = function() {
- help_container = 'help';
- if (Element.getStyle(help_container, "display") == 'none') {
- new Ajax.Updater(help_container, url);
- }
- Effect.toggle(help_container, 'appear');
- if (helpTimerID) clearTimeout(helpTimerID)
- helpTimerID = setTimeout('Effect.Fade("' + help_container + '")', 15000);
- return false;
- }
- }
- }
- Behaviour.register(rules);
-}
-
-function addAjaxTooltip(activator, tooltip, url) {
- Tooltip.closeText = null;
- Tooltip.autoHideTimeout = null;
- Tooltip.showMethod = function(e) {
- Effect.Appear(e, {
- to: 0.9
- });
- }
-
- Tooltip.add(activator, tooltip);
- tt_container = $$('#' + tooltip + ' .tt_content')[0];
- Event.observe(activator, 'click', function(e) {
-
- t_title = $('tt_title');
-
- if (t_title) t_title.hide();
-
- tt_container.style.width = '300px';
-
- tt_container.innerHTML = '
';
- new Ajax.Updater(tt_container, url, {
- method: 'get',
- onComplete: function() {
- tt_container.style.width = null;
- the_title = $('tooltip_title');
- t_title = $('tt_title');
-
- if (the_title && t_title) {
- the_title.hide();
- t_title.innerHTML = the_title.innerHTML;
- t_title.show();
- }
- }
- });
- });
-}
+/*
+ * Licensed under the GPL License. You may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+function inverse($f) {
+ for ($i = 0; $i < $f.elements.length; $i++) {
+ if ($f.elements[$i].type == "checkbox") {
+ $f.elements[$i].checked = !$f.elements[$i].checked;
+ }
+ }
+ return false;
+}
+
+function checkAll($f) {
+ for ($i = 0; $i < $f.elements.length; $i++) {
+ if ($f.elements[$i].type == "checkbox") {
+ $f.elements[$i].checked = true;
+ }
+ }
+ return false;
+}
+
+/**
+ * Requires prototype.js (http://prototype.conio.net/)
+ */
+Ajax.ImgUpdater = Class.create();
+Ajax.ImgUpdater.prototype = {
+ initialize: function(imgID, timeout, newSrc) {
+ this.img = document.getElementById(imgID);
+ if (newSrc) {
+ this.src = newSrc;
+ } else {
+ this.src = this.img.src;
+ }
+ this.timeout = timeout;
+ this.start();
+ },
+
+ start: function() {
+ var now = new Date();
+ this.img.src = this.src + '&t=' + now.getTime();
+ this.timer = setTimeout(this.start.bind(this), this.timeout * 1000);
+ },
+
+ stop: function() {
+ if (this.timer) clearTimeout(this.timer);
+ }
+}
+
+function togglePanel(container, remember_url) {
+ if (Element.getStyle(container, "display") == 'none') {
+ if (remember_url) {
+ new Ajax.Request(remember_url, {
+ method:'get',
+ asynchronous:true,
+ parameters: 'state=on'
+ });
+ }
+ if (document.getElementById('invisible_' + container)) {
+ Element.hide('invisible_' + container);
+ }
+ if (document.getElementById('visible_' + container)) {
+ Element.show('visible_' + container);
+ }
+
+ Effect.Grow(container);
+ } else {
+ if (remember_url) {
+ new Ajax.Request(remember_url, {
+ method:'get',
+ asynchronous:true,
+ parameters: 'state=off'
+ });
+ }
+ if (document.getElementById('visible_' + container)) {
+ Element.hide('visible_' + container);
+ }
+ if (document.getElementById('invisible_' + container)) {
+ Element.show('invisible_' + container);
+ }
+ Effect.Shrink(container);
+ }
+ return false;
+}
+
+function scaleImage(v, minX, maxX, minY, maxY) {
+ var images = document.getElementsByClassName('scale-image');
+ var w = (maxX - minX) * v + minX;
+ var h = (maxY - minY) * v + minY;
+ for (i = 0; i < images.length; i++) {
+ $(images[i]).setStyle({
+ "width": w + 'px',
+ "height": h + 'px'
+ });
+ }
+}
+
+function toggleAndReloadPanel(container, url) {
+ if (Element.getStyle(container, "display") == 'none') {
+ new Ajax.Updater(container, url);
+ Effect.BlindDown(container);
+ } else {
+ Effect.Shrink(container);
+ }
+}
+
+function getWindowHeight() {
+ var myHeight = 0;
+ if (typeof( window.innerHeight ) == 'number') {
+ //Non-IE
+ myHeight = window.innerHeight;
+ } else if (document.documentElement && document.documentElement.clientHeight) {
+ //IE 6+ in 'standards compliant mode'
+ myHeight = document.documentElement.clientHeight;
+ } else if (document.body && document.body.clientHeight) {
+ //IE 4 compatible
+ myHeight = document.body.clientHeight;
+ }
+ return myHeight;
+}
+
+function getWindowWidth() {
+ var myWidth = 0;
+ if (typeof( window.innerWidth ) == 'number') {
+ //Non-IE
+ myWidth = window.innerWidth;
+ } else if (document.documentElement && document.documentElement.clientWidth) {
+ //IE 6+ in 'standards compliant mode'
+ myWidth = document.documentElement.clientWidth;
+ } else if (document.body && document.body.clientWidth) {
+ //IE 4 compatible
+ myWidth = document.body.clientWidth;
+ }
+ return myWidth;
+}
+
+var helpTimerID;
+
+function setupHelpToggle(url) {
+ rules = {
+ 'li#abbreviations': function(element) {
+ element.onclick = function() {
+ help_container = 'help';
+ if (Element.getStyle(help_container, "display") == 'none') {
+ new Ajax.Updater(help_container, url);
+ }
+ Effect.toggle(help_container, 'appear');
+ if (helpTimerID) clearTimeout(helpTimerID)
+ helpTimerID = setTimeout('Effect.Fade("' + help_container + '")', 15000);
+ return false;
+ }
+ }
+ }
+ Behaviour.register(rules);
+}
+
+function addAjaxTooltip(activator, tooltip, url) {
+ Tooltip.closeText = null;
+ Tooltip.autoHideTimeout = null;
+ Tooltip.showMethod = function(e) {
+ Effect.Appear(e, {
+ to: 0.9
+ });
+ }
+
+ Tooltip.add(activator, tooltip);
+ tt_container = $$('#' + tooltip + ' .tt_content')[0];
+ Event.observe(activator, 'click', function(e) {
+
+ t_title = $('tt_title');
+
+ if (t_title) t_title.hide();
+
+ tt_container.style.width = '300px';
+
+ tt_container.innerHTML = '
';
+ new Ajax.Updater(tt_container, url, {
+ method: 'get',
+ onComplete: function() {
+ tt_container.style.width = null;
+ the_title = $('tooltip_title');
+ t_title = $('tt_title');
+
+ if (the_title && t_title) {
+ the_title.hide();
+ t_title.innerHTML = the_title.innerHTML;
+ t_title.show();
+ }
+ }
+ });
+ });
+}