下面列出了怎么用javax.servlet.SingleThreadModel的API类实例代码及写法,或者点击链接到github查看源代码。
public ManagedServlet(final ServletInfo servletInfo, final ServletContextImpl servletContext) {
this.servletInfo = servletInfo;
this.servletContext = servletContext;
if (SingleThreadModel.class.isAssignableFrom(servletInfo.getServletClass())) {
instanceStrategy = new SingleThreadModelPoolStrategy(servletInfo.getInstanceFactory(), servletInfo, servletContext);
} else {
instanceStrategy = new DefaultInstanceStrategy(servletInfo.getInstanceFactory(), servletInfo, servletContext);
}
setupMultipart(servletContext);
}
public ManagedServlet(final ServletInfo servletInfo, final ServletContextImpl servletContext) {
this.servletInfo = servletInfo;
this.servletContext = servletContext;
if (SingleThreadModel.class.isAssignableFrom(servletInfo.getServletClass())) {
instanceStrategy = new SingleThreadModelPoolStrategy(servletInfo.getInstanceFactory(), servletInfo, servletContext);
} else {
instanceStrategy = new DefaultInstanceStrategy(servletInfo.getInstanceFactory(), servletInfo, servletContext);
}
setupMultipart(servletContext);
}
private void service(Request request, Response response)
throws IOException, ServletException
{
if (httpContext.handleSecurity(request, response)) {
final Thread t = Thread.currentThread();
Stack<String> usedURIStack = threadStacks.get(t);
if (usedURIStack == null) {
usedURIStack = new Stack<String>();
threadStacks.put(t, usedURIStack);
}
String uri =
(String) request.getAttribute("javax.servlet.include.request_uri");
if (uri == null) {
uri = request.getRequestURI();
}
if (usedURIStack.contains(uri)) {
throw new ServletException("Recursive include of \"" + uri + "\"");
}
usedURIStack.push(uri);
try {
if (servlet instanceof SingleThreadModel) {
synchronized (servlet) {
if (config == null) {
// Activator.log.info("Serving: " + uri);
servlet.service(request, response);
// Activator.log.info("Served: " + uri);
} else {
serviceResource(request, response, config);
}
}
} else {
if (config == null) {
// Activator.log.info(Thread.currentThread().getName() + " Serving: " + uri);
servlet.service(request, response);
// Activator.log.info(Thread.currentThread().getName() + " Served: " + uri);
} else {
serviceResource(request, response, config);
}
}
} finally {
usedURIStack.pop();
if (usedURIStack.empty()) {
threadStacks.remove(t);
}
}
}
}