I recall seeing a question from a user about accessing servlet parameters from their Red5 application, so I have created a small demo which shows how to not only access sevlet parameters from Red5 apps but the other way around as well.
Retrieve a servlet context parameter from inside a Red5 application (AppContext -> Servlet)
1. Grab a reference to the application context
ApplicationContext appCtx = getContext().getApplicationContext();
2. Get the servlet context
ServletContext ctx = ((XmlWebApplicationContext) appCtx).getServletContext();
3. Get the context parameter
String param = ctx.getInitParameter("myparam");
Retrieve an application context parameter from a inside a servlet (Servlet -> AppContext)
1. Get the servlet context
ServletContext ctx = getServletContext();
2. Grab a reference to the application context
ApplicationContext appCtx = ctx.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
3. Get the bean holding the parameter
MyBean bean = appCtx.getBean("mybean");
String param = bean.getParameter("myparam");
Sample project files: parameterdemo.zip
Instructions:
Unzip the demo and create a new directory named parameterdemo in your red5/webapps directory, then restart your server.
Open your browser and go here: http://localhost/parameterdemo/myservlet?paramName=myparam
You should see “Hello World”
To test the Red5 application you will need to create a Flex or Flash application that connects to: rtmp://localhost/parameterdemo
Then simply call “getParameter” passing a parameter name you want the value of. The name must match a context param in the web.xml file.
Tags: context, param, property, servlet, spring, webapp
I just spent many hours trying to get the Admin (demo) application working properly; it was quite painful. Trying to get JNDI and Spring to cooperate in an Embedded Tomcat instance is not what I call fun, but I have it working alright for now. There still seem to be some underlying classloader issues in the server, because I cannot self-contain the web applications. No matter how I configure the server or application, there are always jars that must be in the shared lib directory; if anyone has any experience with this I would love to hear it. So without further rambling, here are the steps to take to get it working:
1. Obtain the admin war or use my archive
2. Unzip the archive into the webapps directory (red5/webapps/admin)
3. Move the following jars to your shared lib directory (red5/lib)
4. Restart Red5
5. Go to http://localhost:5080/admin/register.html to add new users
I hope this helps those of you new to red5, since I know it can be difficult to get things going at times.
Here is my test version zipped for your convenience: admin_10012008.zip (1.02Mb)
Tags: admin, context, datasource, derby, Java, jndi, resource, simplejndi, tomcat, webapp
I have given up waiting for someone to claim the bounty or produce a fix for the web context logger issue. After much trouble tracking everything down, I have finally “fixed” the logging for web contexts, that is for those of you using the bootstrap method of server start up. The fixed revision is 3068 and its a little rough; meaning I still need to do bit of refactoring. I just wanted to let you all know.
Here is what you have to put in your web.xml for each web application to get an individual logger context:
[listener]
[listener-class]org.red5.logging.ContextLoggingListener[/listener-class]
[/listener]
Tags: context, log, logger, Red5, web.xml