public class OsgiServletContext extends Object implements javax.servlet.ServletContext
Implementation of ServletContext for the contract described in 140.2.6 "Behavior of the Servlet Context"
from OSGi CMPN R7 Whiteboard Service specification. That's the 1:1 mapping with single
ServletContextHelper (or HttpContext).
When handling single servlet (or generally filters+servlet chain), we have to provide special facade for
ServletContext from Servlet API in the form of OsgiServletContext. And during actual request
processing, we need yet another facade to provide required ServletContext.getClassLoader() behavior.
| Modifier and Type | Field and Description |
|---|---|
static org.slf4j.Logger |
LOG |
| Constructor and Description |
|---|
OsgiServletContext(javax.servlet.ServletContext containerServletContext,
OsgiContextModel osgiContextModel,
ServletContextModel servletContextModel,
javax.servlet.SessionCookieConfig defaultSessionCookieConfig,
ClassLoader loader)
Constructor called when
OsgiContextModel is passed to given
ServerController. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
acceptsServletContextListeners()
Can
ServletContextListener be registered? |
javax.servlet.FilterRegistration.Dynamic |
addFilter(String filterName,
Class<? extends javax.servlet.Filter> filterClass) |
javax.servlet.FilterRegistration.Dynamic |
addFilter(String filterName,
javax.servlet.Filter filter) |
javax.servlet.FilterRegistration.Dynamic |
addFilter(String filterName,
String className) |
javax.servlet.ServletRegistration.Dynamic |
addJspFile(String servletName,
String jspFile) |
void |
addListener(Class<? extends EventListener> listenerClass) |
void |
addListener(String className) |
<T extends EventListener> |
addListener(T t) |
javax.servlet.ServletRegistration.Dynamic |
addServlet(String servletName,
Class<? extends javax.servlet.Servlet> servletClass) |
javax.servlet.ServletRegistration.Dynamic |
addServlet(String servletName,
javax.servlet.Servlet servlet) |
javax.servlet.ServletRegistration.Dynamic |
addServlet(String servletName,
String className) |
void |
addServletContextAttributeListener(javax.servlet.ServletContextAttributeListener eventListener)
Non standard method, so we can handle
ServletContextAttributeListener listeners in special,
per context way. |
void |
allowServletContextListeners()
This method should be called with the associated context starts, so SCIs can register
ServletContextListener listeners |
void |
clearAttributesFromPreviousCycle()
This method removes the attributes set by
SCIs in previous
restart of the context. |
<T extends javax.servlet.Filter> |
createFilter(Class<T> clazz) |
<T extends EventListener> |
createListener(Class<T> clazz) |
<T extends javax.servlet.Servlet> |
createServlet(Class<T> clazz) |
void |
declareRoles(String... roleNames) |
Object |
getAttribute(String name) |
Enumeration<String> |
getAttributeNames() |
Set<String> |
getAttributesToClearBeforeRestart() |
ClassLoader |
getClassLoader() |
javax.servlet.ServletContext |
getContainerServletContext() |
javax.servlet.ServletContext |
getContext(String uripath) |
String |
getContextPath() |
Set<javax.servlet.SessionTrackingMode> |
getDefaultSessionTrackingModes() |
int |
getEffectiveMajorVersion() |
int |
getEffectiveMinorVersion() |
Set<javax.servlet.SessionTrackingMode> |
getEffectiveSessionTrackingModes() |
javax.servlet.FilterRegistration |
getFilterRegistration(String filterName) |
Map<String,? extends javax.servlet.FilterRegistration> |
getFilterRegistrations() |
String |
getInitParameter(String name) |
Enumeration<String> |
getInitParameterNames() |
javax.servlet.descriptor.JspConfigDescriptor |
getJspConfigDescriptor() |
int |
getMajorVersion() |
String |
getMimeType(String file) |
String |
getMimeType(org.ops4j.pax.web.service.WebContainerContext context,
String file) |
int |
getMinorVersion() |
javax.servlet.RequestDispatcher |
getNamedDispatcher(String name) |
OsgiContextModel |
getOsgiContextModel() |
String |
getRealPath(String path) |
String |
getRealPath(org.ops4j.pax.web.service.WebContainerContext context,
String path) |
String |
getRequestCharacterEncoding() |
javax.servlet.RequestDispatcher |
getRequestDispatcher(String path) |
org.ops4j.pax.web.service.WebContainerContext |
getResolvedWebContainerContext() |
URL |
getResource(String path) |
URL |
getResource(org.ops4j.pax.web.service.WebContainerContext context,
String path) |
InputStream |
getResourceAsStream(String path) |
InputStream |
getResourceAsStream(org.ops4j.pax.web.service.WebContainerContext context,
String path) |
Set<String> |
getResourcePaths(String path) |
Set<String> |
getResourcePaths(org.ops4j.pax.web.service.WebContainerContext context,
String path) |
String |
getResponseCharacterEncoding() |
String |
getServerInfo() |
javax.servlet.Servlet |
getServlet(String name) |
ServletContextModel |
getServletContextModel() |
String |
getServletContextName() |
Enumeration<String> |
getServletNames() |
javax.servlet.ServletRegistration |
getServletRegistration(String servletName) |
Map<String,? extends javax.servlet.ServletRegistration> |
getServletRegistrations() |
Enumeration<javax.servlet.Servlet> |
getServlets() |
javax.servlet.SessionCookieConfig |
getSessionCookieConfig() |
int |
getSessionTimeout() |
String |
getVirtualServerName() |
String[] |
getWelcomeFiles() |
boolean |
isWelcomeFilesRedirect() |
void |
log(Exception exception,
String msg) |
void |
log(String msg) |
void |
log(String message,
Throwable throwable) |
void |
noMoreServletContextListeners()
This will mark the
OsgiServletContext as a context that still alows for dynamic registration, but
not if the listener implements ServletContextListener |
void |
register()
A server wrapper that finds this
OsgiServletContext to be highest ranked for given
physical ServletContext should register it as OSGi service for given context path. |
void |
releaseWebContainerContext()
Everywhere the
OsgiServletContext is created, we have to call
BundleContext.ungetService(ServiceReference) on the WebContainerContext
reference when needed. |
void |
removeAttribute(String name) |
void |
removeServletContextAttributeListener(javax.servlet.ServletContextAttributeListener eventListener)
Non standard method, so we can handle
ServletContextAttributeListener listeners in special,
per context way. |
void |
setAttribute(String name,
Object object) |
void |
setContainerServletContext(javax.servlet.ServletContext containerServletContext)
We have to be able to replace server-specific
ServletContext, because we can't freely
replace web elements in Undertow. |
boolean |
setInitParameter(String name,
String value) |
void |
setRequestCharacterEncoding(String encoding) |
void |
setResponseCharacterEncoding(String encoding) |
void |
setSessionTimeout(int sessionTimeout) |
void |
setSessionTrackingModes(Set<javax.servlet.SessionTrackingMode> sessionTrackingModes) |
void |
setWelcomeFiles(String[] welcomeFiles) |
void |
setWelcomeFilesRedirect(boolean redirect) |
String |
toString() |
void |
unregister()
A server wrapper that finds this
OsgiServletContext to no longer be highest ranked for given
physical ServletContext should unregister it from OSGi service registry. |
public OsgiServletContext(javax.servlet.ServletContext containerServletContext,
OsgiContextModel osgiContextModel,
ServletContextModel servletContextModel,
javax.servlet.SessionCookieConfig defaultSessionCookieConfig,
ClassLoader loader)
OsgiContextModel is passed to given
ServerController. We still can't grab an instance of
WebContainerContext in the constructor, because it has to be resolved in the context of particular
web request invocation - target Servlet determines the OsgiContextModel used and the
Bundle associated with the target Servlet is used to resolve actual
WebContainerContext.containerServletContext - osgiContextModel - servletContextModel - loader - public org.ops4j.pax.web.service.WebContainerContext getResolvedWebContainerContext()
public void register()
A server wrapper that finds this OsgiServletContext to be highest ranked for given
physical ServletContext should register it as OSGi service for given context path.
This behavior is defined in "128.3.4 Publishing the Servlet Context" and concerns only WAB contexts, but
I see no problems registering the current OsgiServletContext for given context path for all cases
(including HttpService and Whiteboard).
public void unregister()
OsgiServletContext to no longer be highest ranked for given
physical ServletContext should unregister it from OSGi service registry.public void releaseWebContainerContext()
OsgiServletContext is created, we have to call
BundleContext.ungetService(ServiceReference) on the WebContainerContext
reference when needed.public void clearAttributesFromPreviousCycle()
SCIs in previous
restart of the context.public OsgiContextModel getOsgiContextModel()
public ServletContextModel getServletContextModel()
public void setContainerServletContext(javax.servlet.ServletContext containerServletContext)
ServletContext, because we can't freely
replace web elements in Undertow. In Undertow we have to recreate entire context, thus getting new
ServletContext.
Also Tomcat replaces a context (facade) inside StandardContextcontainerServletContext - public javax.servlet.ServletContext getContainerServletContext()
public String[] getWelcomeFiles()
public void setWelcomeFiles(String[] welcomeFiles)
public boolean isWelcomeFilesRedirect()
public void setWelcomeFilesRedirect(boolean redirect)
public void noMoreServletContextListeners()
OsgiServletContext as a context that still alows for dynamic registration, but
not if the listener implements ServletContextListenerpublic boolean acceptsServletContextListeners()
ServletContextListener be registered?public void allowServletContextListeners()
ServletContextListener listenerspublic javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, String className)
addFilter in interface javax.servlet.ServletContextpublic javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, javax.servlet.Filter filter)
addFilter in interface javax.servlet.ServletContextpublic javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Class<? extends javax.servlet.Filter> filterClass)
addFilter in interface javax.servlet.ServletContextpublic void addListener(String className)
addListener in interface javax.servlet.ServletContextpublic <T extends EventListener> void addListener(T t)
addListener in interface javax.servlet.ServletContextpublic void addListener(Class<? extends EventListener> listenerClass)
addListener in interface javax.servlet.ServletContextpublic javax.servlet.ServletRegistration.Dynamic addServlet(String servletName, String className)
addServlet in interface javax.servlet.ServletContextpublic javax.servlet.ServletRegistration.Dynamic addServlet(String servletName, javax.servlet.Servlet servlet)
addServlet in interface javax.servlet.ServletContextpublic javax.servlet.ServletRegistration.Dynamic addServlet(String servletName, Class<? extends javax.servlet.Servlet> servletClass)
addServlet in interface javax.servlet.ServletContextpublic <T extends javax.servlet.Filter> T createFilter(Class<T> clazz) throws javax.servlet.ServletException
createFilter in interface javax.servlet.ServletContextjavax.servlet.ServletExceptionpublic <T extends EventListener> T createListener(Class<T> clazz) throws javax.servlet.ServletException
createListener in interface javax.servlet.ServletContextjavax.servlet.ServletExceptionpublic <T extends javax.servlet.Servlet> T createServlet(Class<T> clazz) throws javax.servlet.ServletException
createServlet in interface javax.servlet.ServletContextjavax.servlet.ServletExceptionpublic void declareRoles(String... roleNames)
declareRoles in interface javax.servlet.ServletContextpublic boolean setInitParameter(String name, String value)
setInitParameter in interface javax.servlet.ServletContextpublic void setSessionTrackingModes(Set<javax.servlet.SessionTrackingMode> sessionTrackingModes)
setSessionTrackingModes in interface javax.servlet.ServletContextpublic javax.servlet.ServletRegistration.Dynamic addJspFile(String servletName, String jspFile)
addJspFile in interface javax.servlet.ServletContextpublic Object getAttribute(String name)
getAttribute in interface javax.servlet.ServletContextpublic Enumeration<String> getAttributeNames()
getAttributeNames in interface javax.servlet.ServletContextpublic void setAttribute(String name, Object object)
setAttribute in interface javax.servlet.ServletContextpublic void removeAttribute(String name)
removeAttribute in interface javax.servlet.ServletContextpublic void addServletContextAttributeListener(javax.servlet.ServletContextAttributeListener eventListener)
ServletContextAttributeListener listeners in special,
per context way.eventListener - public void removeServletContextAttributeListener(javax.servlet.ServletContextAttributeListener eventListener)
ServletContextAttributeListener listeners in special,
per context way.eventListener - public String getContextPath()
getContextPath in interface javax.servlet.ServletContextpublic javax.servlet.ServletContext getContext(String uripath)
getContext in interface javax.servlet.ServletContextpublic Set<javax.servlet.SessionTrackingMode> getDefaultSessionTrackingModes()
getDefaultSessionTrackingModes in interface javax.servlet.ServletContextpublic int getEffectiveMajorVersion()
getEffectiveMajorVersion in interface javax.servlet.ServletContextpublic int getEffectiveMinorVersion()
getEffectiveMinorVersion in interface javax.servlet.ServletContextpublic Set<javax.servlet.SessionTrackingMode> getEffectiveSessionTrackingModes()
getEffectiveSessionTrackingModes in interface javax.servlet.ServletContextpublic javax.servlet.FilterRegistration getFilterRegistration(String filterName)
getFilterRegistration in interface javax.servlet.ServletContextpublic Map<String,? extends javax.servlet.FilterRegistration> getFilterRegistrations()
getFilterRegistrations in interface javax.servlet.ServletContextpublic int getMajorVersion()
getMajorVersion in interface javax.servlet.ServletContextpublic int getMinorVersion()
getMinorVersion in interface javax.servlet.ServletContextpublic javax.servlet.Servlet getServlet(String name) throws javax.servlet.ServletException
getServlet in interface javax.servlet.ServletContextjavax.servlet.ServletExceptionpublic Enumeration<String> getServletNames()
getServletNames in interface javax.servlet.ServletContextpublic javax.servlet.ServletRegistration getServletRegistration(String servletName)
getServletRegistration in interface javax.servlet.ServletContextpublic Map<String,? extends javax.servlet.ServletRegistration> getServletRegistrations()
getServletRegistrations in interface javax.servlet.ServletContextpublic Enumeration<javax.servlet.Servlet> getServlets()
getServlets in interface javax.servlet.ServletContextpublic String getVirtualServerName()
getVirtualServerName in interface javax.servlet.ServletContextpublic String getServerInfo()
getServerInfo in interface javax.servlet.ServletContextpublic void log(String msg)
log in interface javax.servlet.ServletContextpublic void log(Exception exception, String msg)
log in interface javax.servlet.ServletContextpublic void log(String message, Throwable throwable)
log in interface javax.servlet.ServletContextpublic javax.servlet.SessionCookieConfig getSessionCookieConfig()
getSessionCookieConfig in interface javax.servlet.ServletContextpublic javax.servlet.descriptor.JspConfigDescriptor getJspConfigDescriptor()
getJspConfigDescriptor in interface javax.servlet.ServletContextpublic int getSessionTimeout()
getSessionTimeout in interface javax.servlet.ServletContextpublic void setSessionTimeout(int sessionTimeout)
setSessionTimeout in interface javax.servlet.ServletContextpublic String getRequestCharacterEncoding()
getRequestCharacterEncoding in interface javax.servlet.ServletContextpublic void setRequestCharacterEncoding(String encoding)
setRequestCharacterEncoding in interface javax.servlet.ServletContextpublic String getResponseCharacterEncoding()
getResponseCharacterEncoding in interface javax.servlet.ServletContextpublic void setResponseCharacterEncoding(String encoding)
setResponseCharacterEncoding in interface javax.servlet.ServletContextpublic String getMimeType(String file)
getMimeType in interface javax.servlet.ServletContextpublic String getMimeType(org.ops4j.pax.web.service.WebContainerContext context, String file)
public String getRealPath(String path)
getRealPath in interface javax.servlet.ServletContextpublic String getRealPath(org.ops4j.pax.web.service.WebContainerContext context, String path)
public URL getResource(String path) throws MalformedURLException
getResource in interface javax.servlet.ServletContextMalformedURLExceptionpublic URL getResource(org.ops4j.pax.web.service.WebContainerContext context, String path) throws MalformedURLException
MalformedURLExceptionpublic InputStream getResourceAsStream(String path)
getResourceAsStream in interface javax.servlet.ServletContextpublic InputStream getResourceAsStream(org.ops4j.pax.web.service.WebContainerContext context, String path)
public Set<String> getResourcePaths(String path)
getResourcePaths in interface javax.servlet.ServletContextpublic Set<String> getResourcePaths(org.ops4j.pax.web.service.WebContainerContext context, String path)
public String getInitParameter(String name)
getInitParameter in interface javax.servlet.ServletContextpublic Enumeration<String> getInitParameterNames()
getInitParameterNames in interface javax.servlet.ServletContextpublic javax.servlet.RequestDispatcher getRequestDispatcher(String path)
getRequestDispatcher in interface javax.servlet.ServletContextpublic javax.servlet.RequestDispatcher getNamedDispatcher(String name)
getNamedDispatcher in interface javax.servlet.ServletContextpublic String getServletContextName()
getServletContextName in interface javax.servlet.ServletContextpublic ClassLoader getClassLoader()
getClassLoader in interface javax.servlet.ServletContextCopyright © 2006–2024 OPS4J - Open Participation Software for Java. All rights reserved.