You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2009/08/19 10:02:00 UTC
svn commit: r805692 - in /geronimo/server/branches/2.2/plugins:
console/console-base-portlets/src/main/java/org/apache/geronimo/console/logmanager/
tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/
tomcat/tomcat6/ tomcat/tomcat6/src/mai...
Author: xuhaihong
Date: Wed Aug 19 08:01:59 2009
New Revision: 805692
URL: http://svn.apache.org/viewvc?rev=805692&view=rev
Log:
GERONIMO-4803 ClassCastExeption after disabling access log valve for web container
Modified:
geronimo/server/branches/2.2/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java
geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatLogManagerImpl.java
geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatServerGBean.java
geronimo/server/branches/2.2/plugins/tomcat/tomcat6/pom.xml
geronimo/server/branches/2.2/plugins/tomcat/tomcat6/src/main/plan/plan.xml
Modified: geronimo/server/branches/2.2/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java?rev=805692&r1=805691&r2=805692&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java (original)
+++ geronimo/server/branches/2.2/plugins/console/console-base-portlets/src/main/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java Wed Aug 19 08:01:59 2009
@@ -116,7 +116,11 @@
// Temporarily disable container and log parameters.
// We don't current enable this in the portlet anyway and at the moment it is just unnecessary data traveling back and forth.
// renderRequest.setAttribute("webContainers", products);
- final String[] logNames = chosenLog.getLogNames();
+ String[] logNames = chosenLog.getLogNames();
+ if (logNames.length == 0) {
+ searchView.include(renderRequest, renderRespose);
+ return;
+ }
// renderRequest.setAttribute("webLogs", logNames);
String logToSearch = null;
// String logToSearch = renderRequest.getParameter("selectedLog");
Modified: geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatLogManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatLogManagerImpl.java?rev=805692&r1=805691&r2=805692&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatLogManagerImpl.java (original)
+++ geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatLogManagerImpl.java Wed Aug 19 08:01:59 2009
@@ -16,36 +16,41 @@
*/
package org.apache.geronimo.tomcat;
-import org.apache.geronimo.gbean.GBeanInfo;
-import org.apache.geronimo.gbean.GBeanInfoBuilder;
-import org.apache.geronimo.system.serverinfo.ServerInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.catalina.valves.AccessLogValve;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.text.SimpleDateFormat;
import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.catalina.Container;
+import org.apache.catalina.Pipeline;
+import org.apache.catalina.Server;
+import org.apache.catalina.Service;
+import org.apache.catalina.Valve;
+import org.apache.catalina.valves.AccessLogValve;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.system.serverinfo.ServerInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Tomcat implementation of the WebAccessLog management interface.
*
* @version $Rev$ $Date$
*/
-public class TomcatLogManagerImpl implements TomcatLogManager {
+public class TomcatLogManagerImpl implements TomcatLogManager, GBeanLifecycle {
+
private static final Logger log = LoggerFactory.getLogger(TomcatLogManagerImpl.class);
// Pattern that matches the date in the logfile name
@@ -72,12 +77,13 @@
private final static int GROUP_RESPONSE_LENGTH = 8;
private final static String ACCESS_LOG_DATE_FORMAT = "dd/MMM/yyyy:HH:mm:ss ZZZZ";
private final static String LOG_FILE_NAME_FORMAT = "yyyy-MM-dd";
- private final Collection<ValveGBean> logGbeans;
+ private List<AccessLogValve> accessLogValves;
private final ServerInfo serverInfo;
+ private TomcatServerGBean tomcatServer;
- public TomcatLogManagerImpl(ServerInfo serverInfo, Collection<ValveGBean> logGbeans) {
+ public TomcatLogManagerImpl(ServerInfo serverInfo, TomcatServerGBean tomcatServer) {
this.serverInfo = serverInfo;
- this.logGbeans = logGbeans;
+ this.tomcatServer = tomcatServer;
}
/**
@@ -89,12 +95,8 @@
*/
public String[] getLogNames() {
List<String> logNames = new ArrayList<String>();
- for (Iterator<ValveGBean> it = logGbeans.iterator(); it.hasNext();) {
- ValveGBean logGBean = (ValveGBean) it.next();
- AccessLogValve logFile = (AccessLogValve) logGBean.getInternalObject();
- if(logFile != null) {
- logNames.add( "var/catalina/logs/"+logFile.getPrefix()+LOG_FILE_NAME_FORMAT+logFile.getSuffix());
- }
+ for (AccessLogValve accessLogValve : accessLogValves) {
+ logNames.add("var/catalina/logs/" + accessLogValve.getPrefix() + LOG_FILE_NAME_FORMAT + accessLogValve.getSuffix());
}
return (String[]) logNames.toArray(new String[logNames.size()]);
}
@@ -270,12 +272,11 @@
public static final GBeanInfo GBEAN_INFO;
static {
- GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Tomcat Log Manager", TomcatLogManagerImpl.class);
- infoFactory.addReference("LogGBeans", ValveGBean.class);
- infoFactory.addReference("ServerInfo", ServerInfo.class, "GBean");
+ GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic("Tomcat Log Manager", TomcatLogManagerImpl.class);
+ infoFactory.addReference("ServerInfo", ServerInfo.class, "GBean");
+ infoFactory.addReference("Server", TomcatServerGBean.class);
infoFactory.addInterface(TomcatLogManager.class);
-
- infoFactory.setConstructor(new String[]{"ServerInfo","LogGBeans"});
+ infoFactory.setConstructor(new String[] { "ServerInfo", "Server" });
GBEAN_INFO = infoFactory.getBeanInfo();
}
@@ -304,6 +305,45 @@
return pattern.matcher(fileName).matches();
}
}
+
+ public void doFail() {
+ }
+
+ public void doStart() throws Exception {
+ //Find all the access log valves and add them to the list
+ //Valve could be added on Engine/Host/Context
+ Server server = tomcatServer.getServer();
+ accessLogValves = new LinkedList<AccessLogValve>();
+ for(Service service : server.findServices()) {
+ Container container = service.getContainer();
+ searchAccessLogValves(container);
+ }
+ }
+
+ private void searchAccessLogValves(Container container) {
+ Pipeline pipeline = container.getPipeline();
+ if (pipeline == null) {
+ return;
+ }
+ Valve[] valves = pipeline.getValves();
+ if (valves == null || valves.length == 0) {
+ return;
+ }
+ for (Valve valve : valves) {
+ if (valve instanceof AccessLogValve) {
+ accessLogValves.add((AccessLogValve) valve);
+ }
+ }
+ Container[] subContainers = container.findChildren();
+ if (subContainers != null && subContainers.length > 0) {
+ for (Container subContainer : subContainers) {
+ searchAccessLogValves(subContainer);
+ }
+ }
+ }
+
+ public void doStop() throws Exception {
+ }
/*
public static void main(String[] args) {
Modified: geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatServerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatServerGBean.java?rev=805692&r1=805691&r2=805692&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatServerGBean.java (original)
+++ geronimo/server/branches/2.2/plugins/tomcat/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatServerGBean.java Wed Aug 19 08:01:59 2009
@@ -161,4 +161,8 @@
}
return service;
}
+
+ public Server getServer() {
+ return server;
+ }
}
Modified: geronimo/server/branches/2.2/plugins/tomcat/tomcat6/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/tomcat/tomcat6/pom.xml?rev=805692&r1=805691&r2=805692&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/tomcat/tomcat6/pom.xml (original)
+++ geronimo/server/branches/2.2/plugins/tomcat/tomcat6/pom.xml Wed Aug 19 08:01:59 2009
@@ -121,15 +121,6 @@
<plugin-artifact>
<copy-file relative-to="server" dest-dir="var/catalina">tomcat-base/</copy-file>
<config-xml-content>
- <gbean name="AccessLogValve">
- <attribute name="containerName">${ServerHostname}</attribute>
- </gbean>
- <!-- To disable accesslogging uncomment the following lines
- <gbean name="TomcatEngine">
- <reference name="TomcatValveChain" />
- </gbean>
- <gbean name="AccessLogValve" load="false"></gbean>
- -->
<!--
<gbean name="TomcatWebConnector">
<attribute name="host">${ServerHostname}</attribute>
Modified: geronimo/server/branches/2.2/plugins/tomcat/tomcat6/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/tomcat/tomcat6/src/main/plan/plan.xml?rev=805692&r1=805691&r2=805692&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/tomcat/tomcat6/src/main/plan/plan.xml (original)
+++ geronimo/server/branches/2.2/plugins/tomcat/tomcat6/src/main/plan/plan.xml Wed Aug 19 08:01:59 2009
@@ -78,20 +78,10 @@
<reference name="ServerInfo">
<name>ServerInfo</name>
</reference>
- <references name="LogGBeans">
- <pattern>
- <name>AccessLogValve</name>
- </pattern>
- </references>
- </gbean>
-
- <gbean name="AccessLogValve" class="org.apache.geronimo.tomcat.ValveGBean">
<reference name="Server">
<name>TomcatServer</name>
</reference>
- <attribute name="seq">0</attribute>
- <attribute name="containerName">${PlanServerHostname}</attribute>
- </gbean>
+ </gbean>
<!--
<gbean name="AprLifecycleListener" class="org.apache.geronimo.tomcat.LifecycleListenerGBean">