[Red5commits] [2268] Tonights war updates
pgregoire
luke at codegent.com
Thu Aug 30 23:20:09 PDT 2007
Tonights war updates
Timestamp: 08/31/07 01:10:54 EST (less than one hour ago)
Change: 2268
Author: pgregoire
Files (see diff or trac for details):
java/server/trunk/conf/log4j.properties
java/server/trunk/conf/war/log4j.properties
java/server/trunk/conf/war/web.xml
java/server/trunk/src/org/red5/server/ContextLoader.java
java/server/trunk/src/org/red5/server/net/servlet/AMFGatewayServlet.java
java/server/trunk/src/org/red5/server/war/RootContextLoaderServlet.java
Trac: http://mirror1.cvsdude.com/trac/osflash/red5/changeset/2268
Index: /java/server/trunk/conf/war/log4j.properties
===================================================================
--- /java/server/trunk/conf/war/log4j.properties (revision 2264)
+++ /java/server/trunk/conf/war/log4j.properties (revision 2268)
@@ -8,5 +8,5 @@
log4j.logger.org.red5.server.net.proxy=INFO
log4j.logger.org.red5.server.net.remoting=WARN
-log4j.logger.org.red5.server.net.rtmp=DEBUG
+log4j.logger.org.red5.server.net.rtmp=WARN
log4j.logger.org.red5.server.net.rtmp.BaseRTMPHandler=OFF
log4j.logger.org.red5.server.net.rtmp.RTMPMinaIoHandler=OFF
@@ -32,5 +32,5 @@
log4j.logger.org.springframework.beans.factory.xml=WARN
log4j.logger.org.springframework.context.support=WARN
-log4j.logger.org.springframework.web.context=INFO
+log4j.logger.org.springframework.web.context=DEBUG
log4j.logger.org.springframework.web.context.support=WARN
#log4j.logger.org.springframework.ui.context.support=WARN
Index: /java/server/trunk/conf/war/web.xml
===================================================================
--- /java/server/trunk/conf/war/web.xml (revision 2262)
+++ /java/server/trunk/conf/war/web.xml (revision 2268)
@@ -54,4 +54,5 @@
<servlet-name>gateway</servlet-name>
<servlet-class>org.red5.server.net.servlet.AMFGatewayServlet</servlet-class>
+ <!-- load-on-startup>1</load-on-startup -->
</servlet>
@@ -59,4 +60,5 @@
<servlet-name>rtmpt</servlet-name>
<servlet-class>org.red5.server.net.rtmpt.RTMPTServlet</servlet-class>
+ <!-- load-on-startup>2</load-on-startup -->
</servlet>
Index: /java/server/trunk/conf/log4j.properties
===================================================================
--- /java/server/trunk/conf/log4j.properties (revision 2135)
+++ /java/server/trunk/conf/log4j.properties (revision 2268)
@@ -11,16 +11,18 @@
log4j.logger.org.red5.server.net.proxy=INFO
log4j.logger.org.red5.server.net.remoting=WARN
-log4j.logger.org.red5.server.net.rtmp=WARN
-log4j.logger.org.red5.server.net.rtmp.codec=INFO
+log4j.logger.org.red5.server.net.rtmp=DEBUG
+log4j.logger.org.red5.server.net.rtmp.BaseRTMPHandler=OFF
+log4j.logger.org.red5.server.net.rtmp.RTMPMinaIoHandler=OFF
+#log4j.logger.org.red5.server.net.rtmp.codec=INFO
log4j.logger.org.red5.server.net.rtmp.status=INFO
-log4j.logger.org.red5.server.net.rtmp.RTMPMinaTransport=INFO
+#log4j.logger.org.red5.server.net.rtmp.RTMPMinaTransport=INFO
log4j.logger.org.red5.server.net.rtmpt=WARN
-log4j.logger.org.red5.server.net.servlet=WARN
+log4j.logger.org.red5.server.net.servlet=DEBUG
log4j.logger.org.red5.server.net.servlet.RTMPTServlet=WARN
log4j.logger.org.red5.server.persistence=WARN
log4j.logger.org.red5.server.pooling.ThreadObjectFactory=WARN
-log4j.logger.org.red5.server.service=WARN
+log4j.logger.org.red5.server.service=INFO
log4j.logger.org.red5.server.so=WARN
-log4j.logger.org.red5.server.stream=WARN
+log4j.logger.org.red5.server.stream=INFO
log4j.logger.org.red5.server.stream.consumer=WARN
log4j.logger.org.red5.server.script=WARN
Index: /java/server/trunk/src/org/red5/server/net/servlet/AMFGatewayServlet.java
===================================================================
--- /java/server/trunk/src/org/red5/server/net/servlet/AMFGatewayServlet.java (revision 2264)
+++ /java/server/trunk/src/org/red5/server/net/servlet/AMFGatewayServlet.java (revision 2268)
@@ -86,12 +86,4 @@
webAppCtx = WebApplicationContextUtils
.getWebApplicationContext(getServletContext());
- try {
- log.debug("Gateway: ctx path: "
- + webAppCtx.getServletContext().getContextPath()
- + " srv ctx path: " + getServletContext().getContextPath());
- } catch (Throwable e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
if (webAppCtx != null) {
webContext = (IContext) webAppCtx.getBean("web.context");
Index: /java/server/trunk/src/org/red5/server/war/RootContextLoaderServlet.java
===================================================================
--- /java/server/trunk/src/org/red5/server/war/RootContextLoaderServlet.java (revision 2266)
+++ /java/server/trunk/src/org/red5/server/war/RootContextLoaderServlet.java (revision 2268)
@@ -44,11 +44,16 @@
import org.red5.server.jmx.JMXAgent;
import org.red5.server.service.ServiceInvoker;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.access.BeanFactoryLocator;
+import org.springframework.beans.factory.access.BeanFactoryReference;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.access.ContextBeanFactoryReference;
+import org.springframework.context.access.ContextSingletonBeanFactoryLocator;
import org.springframework.web.context.ConfigurableWebApplicationContext;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.context.support.XmlWebApplicationContext;
@@ -89,6 +94,4 @@
private GlobalScope global;
- private ContextLoader loader;
-
private Server server;
@@ -119,23 +122,10 @@
try {
- String[] configArray = servletContext.getInitParameter(
- ContextLoader.CONFIG_LOCATION_PARAM).split("[,\\s]");
- logger.debug("Config location files: " + configArray.length);
// instance the context loader
- loader = createContextLoader();
+ ContextLoader loader = createContextLoader();
applicationContext = (ConfigurableWebApplicationContext) loader
.initWebApplicationContext(servletContext);
- applicationContext.setConfigLocations(configArray);
logger.debug("Root context path: "
+ applicationContext.getServletContext().getContextPath());
- // applicationContext.setServletContext(servletContext);
- applicationContext.refresh();
- // set web application context as an attribute of the servlet
- // context so that it may be located via Springs
- // WebApplicationContextUtils
- servletContext
- .setAttribute(
- WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
- applicationContext);
ConfigurableBeanFactory factory = applicationContext
@@ -148,4 +138,15 @@
parentFactory = (DefaultListableBeanFactory) factory
.getParentBeanFactory();
+
+ // create a wrapper around our primary context
+ BeanFactoryReference beanfactoryRef = new ContextBeanFactoryReference(
+ applicationContext);
+
+ // set it in the root servlet context
+ servletContext.setAttribute("bean.factory.ref", beanfactoryRef);
+
+ // set a remoting codec factory for AMF use
+ servletContext.setAttribute("remoting.codec.factory", parentFactory
+ .getBean("remotingCodecFactory"));
// for (String beanName :
@@ -232,4 +233,6 @@
+ ctx.getContextPath());
+ ContextLoader loader = new ContextLoader();
+
ConfigurableWebApplicationContext appCtx = (ConfigurableWebApplicationContext) loader
.initWebApplicationContext(ctx);
@@ -239,5 +242,5 @@
ctx.setAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
- applicationContext);
+ appCtx);
ConfigurableBeanFactory appFactory = appCtx.getBeanFactory();
@@ -263,10 +266,29 @@
public static void registerSubContext(WebSettings settings,
ServletContext ctx) {
+ logger
+ .warn("You have hit a bug! Contexts loaded after ROOT are not currently supported, as a work-around name your context with a letter prior to 'R'.");
logger.info("Registering subcontext for servlet context: "
+ ctx.getContextPath());
- ServletContext rootServletContext = ctx.getContext("/ROOT");
- ConfigurableWebApplicationContext rootApplicationContext = (ConfigurableWebApplicationContext) WebApplicationContextUtils
- .getWebApplicationContext(rootServletContext);
+ ApplicationContext rootApplicationContext = null;
+ BeanFactoryReference parentContextRef = null;
+ String parentContextKey = ctx
+ .getInitParameter(ContextLoader.LOCATOR_FACTORY_KEY_PARAM);
+
+ if (parentContextKey != null) {
+ BeanFactoryLocator locator = ContextSingletonBeanFactoryLocator
+ .getInstance();
+ if (logger.isDebugEnabled()) {
+ logger
+ .debug("Getting parent context definition: using parent context key of '"
+ + parentContextKey
+ + "' with BeanFactoryLocator");
+ }
+ parentContextRef = locator.useBeanFactory(parentContextKey);
+ rootApplicationContext = (ApplicationContext) parentContextRef
+ .getFactory();
+ }
+
+ // ServletContext rootServletContext = ctx.getContext("/ROOT");
ConfigurableWebApplicationContext appCtx = new XmlWebApplicationContext();
@@ -275,13 +297,13 @@
appCtx.setConfigLocations(settings.getConfigs());
appCtx.refresh();
+
ctx.setAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
- rootApplicationContext);
-
- ConfigurableBeanFactory factory = rootApplicationContext
- .getBeanFactory();
+ appCtx);
+
+ BeanFactory factory = rootApplicationContext;
// get the main factory
- DefaultListableBeanFactory rootParentFactory = (DefaultListableBeanFactory) factory
+ DefaultListableBeanFactory rootParentFactory = (DefaultListableBeanFactory) rootApplicationContext
.getParentBeanFactory();
@@ -307,5 +329,5 @@
+ (rootGlobalStrategy == null));
- ConfigurableBeanFactory appFactory = appCtx.getBeanFactory();
+ BeanFactory appFactory = appCtx.getBeanFactory();
logger.debug("About to grab Webcontext bean for "
@@ -338,4 +360,5 @@
// during shutdown
try {
+ ServletContext ctx = sce.getServletContext();
// prepare spring for shutdown
Introspector.flushCaches();
@@ -352,5 +375,5 @@
JMXAgent.shutdown();
// shutdown spring
- Object attr = servletContext
+ Object attr = ctx
.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
if (attr != null) {
@@ -362,16 +385,18 @@
// logger.debug("Registered scope: " + scope);
// }
- for (String singleton : factory.getSingletonNames()) {
- logger.debug("Registered singleton: " + singleton);
- factory.destroyScopedBean(singleton);
+ try {
+ for (String singleton : factory.getSingletonNames()) {
+ logger.debug("Registered singleton: " + singleton);
+ factory.destroyScopedBean(singleton);
+ }
+ } catch (RuntimeException e) {
}
factory.destroySingletons();
- servletContext
+ ctx
.removeAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
applicationContext.close();
}
- instance.getContextLoader().closeWebApplicationContext(
- servletContext);
+ instance.getContextLoader().closeWebApplicationContext(ctx);
} catch (Throwable e) {
e.printStackTrace();
Index: /java/server/trunk/src/org/red5/server/ContextLoader.java
===================================================================
--- /java/server/trunk/src/org/red5/server/ContextLoader.java (revision 2264)
+++ /java/server/trunk/src/org/red5/server/ContextLoader.java (revision 2268)
@@ -140,5 +140,5 @@
*/
protected void loadContext(String name, String config) {
- log.info("Load context - name: " + name + " config: " + config);
+ log.debug("Load context - name: " + name + " config: " + config);
ApplicationContext context = new FileSystemXmlApplicationContext(
new String[] { config }, parentContext);
Note:
Diffs are chopped if more than 25k.
This is to get past the limit on the mailing list.
More information about the Red5commits
mailing list