Author: rmannibucau
Date: Sun Nov 11 22:01:52 2012
New Revision: 1408127
URL: http://svn.apache.org/viewvc?rev=1408127&view=rev
Log:
OPENEJB-1931 managing pathinfo
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java?rev=1408127&r1=1408126&r2=1408127&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
Sun Nov 11 22:01:52 2012
@@ -30,6 +30,8 @@ import org.apache.openejb.core.CoreConta
import org.apache.openejb.core.WebContext;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
import javax.naming.Binding;
import javax.naming.Context;
@@ -52,6 +54,8 @@ import java.util.Map;
import java.util.Set;
public class LightweightWebAppBuilder implements WebAppBuilder {
+ private static final Logger LOGGER =
Logger.getInstance(LogCategory.OPENEJB, LightweightWebAppBuilder.class);
+
private static final Method addServletMethod;
private static final Method removeServletMethod;
@@ -106,7 +110,7 @@ public class LightweightWebAppBuilder im
addServletMethod.invoke(null, info.servletClass,
webContext, mapping);
deployedServlet.mappings.add(mapping);
} catch (Exception e) {
- // no-op
+ LOGGER.warning(e.getMessage(), e);
}
}
}
@@ -124,7 +128,7 @@ public class LightweightWebAppBuilder im
addServletMethod.invoke(null, classname,
webContext, mapping);
deployedServlet.mappings.add(mapping);
} catch (Exception e) {
- // no-op
+ LOGGER.warning(e.getMessage(), e);
}
}
}
Modified:
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java?rev=1408127&r1=1408126&r2=1408127&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
(original)
+++
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
Sun Nov 11 22:01:52 2012
@@ -951,6 +951,10 @@ public class HttpRequestImpl implements
attributes.remove(s);
}
+ public void setPath(final String path) {
+ this.path = path;
+ }
+
public String requestRawPath() {
try {
return new URI(getRequestURI()).getRawPath();
Modified:
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java?rev=1408127&r1=1408126&r2=1408127&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java
(original)
+++
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/ServletListener.java
Sun Nov 11 22:01:52 2012
@@ -20,13 +20,22 @@ import javax.servlet.Servlet;
public class ServletListener implements HttpListener {
private final Servlet delegate;
+ private final String context;
- public ServletListener(final Servlet instance) {
+ public ServletListener(final Servlet instance, final String contextRoot) {
delegate = instance;
+ context = contextRoot;
}
@Override
public void onMessage(final HttpRequest request, final HttpResponse
response) throws Exception {
+ if (request instanceof HttpRequestImpl) {
+ final HttpRequestImpl req = (HttpRequestImpl) request;
+ final String rawPath = req.requestRawPath();
+ if (context != null) {
+ req.setPath(rawPath.substring(1 + context.length(),
rawPath.length())); // 1 because of the first /
+ }
+ }
delegate.service(request, response);
}
Modified:
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java?rev=1408127&r1=1408126&r2=1408127&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java
(original)
+++
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/util/HttpUtil.java
Sun Nov 11 22:01:52 2012
@@ -62,10 +62,12 @@ public final class HttpUtil {
final ServletListener listener;
try {
- listener = new ServletListener((Servlet)
wc.newInstance(wc.getClassLoader().loadClass(classname)));
+ listener = new ServletListener((Servlet)
wc.newInstance(wc.getClassLoader().loadClass(classname)), wc.getContextRoot());
+ listener.getDelegate().init(null);
} catch (Exception e) {
throw new OpenEJBRuntimeException(e);
}
+
registry.addHttpListener(listener, pattern(wc.getContextRoot(),
mapping));
return true;
}
@@ -76,7 +78,9 @@ public final class HttpUtil {
return;
}
- wc.destroy(((ServletListener)
registry.removeHttpListener(pattern(wc.getContextRoot(),
mapping))).getDelegate());
+ final Servlet servlet = ((ServletListener)
registry.removeHttpListener(pattern(wc.getContextRoot(),
mapping))).getDelegate();
+ servlet.destroy();
+ wc.destroy(servlet);
}
private static String pattern(final String contextRoot, final String
mapping) {