Author: rmannibucau
Date: Sat Nov 10 00:49:28 2012
New Revision: 1407707
URL: http://svn.apache.org/viewvc?rev=1407707&view=rev
Log:
TOMEE-565 tomee serverinfo
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1407707&r1=1407706&r2=1407707&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
Sat Nov 10 00:49:28 2012
@@ -21,22 +21,30 @@ import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.core.StandardServer;
+import org.apache.catalina.util.ServerInfo;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.ProvisioningUtil;
import org.apache.openejb.loader.SystemInstance;
import org.apache.tomee.loader.TomcatHelper;
import java.io.IOException;
+import java.lang.reflect.Field;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
+// this listener is the real tomee one (the OpenEJBListener is more tomcat
oriented)
+// so it even changes the server info
public class ServerListener implements LifecycleListener {
private static final Logger LOGGER =
Logger.getLogger(ServerListener.class.getName());
static private boolean listenerInstalled;
public void lifecycleEvent(LifecycleEvent event) {
+ if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType()) &&
StandardServer.class.isInstance(event.getSource())) {
+ installServerInfo();
+ }
+
// only install once
if (listenerInstalled ||
!Lifecycle.AFTER_INIT_EVENT.equals(event.getType())) return;
if (!(event.getSource() instanceof StandardServer)) return;
@@ -118,4 +126,25 @@ public class ServerListener implements L
// e.printStackTrace(System.err);
}
}
+
+ private void installServerInfo() {
+ // force static init
+ final String value = ServerInfo.getServerInfo();
+
+ Field field = null;
+ boolean acc = true;
+ try {
+ field = ServerInfo.class.getDeclaredField("serverInfo");
+ acc = field.isAccessible();
+ final int slash = value.indexOf('/');
+ field.setAccessible(true);
+ field.set(null, value.substring(0, slash) + " (TomEE)" +
value.substring(slash));
+ } catch (Exception e) {
+ // no-op
+ } finally {
+ if (field != null) {
+ field.setAccessible(acc);
+ }
+ }
+ }
}