1
14
15 package com.liferay.portal.kernel.servlet;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
20 import com.liferay.portal.kernel.util.PortalInitable;
21 import com.liferay.portal.kernel.util.PortalInitableUtil;
22
23 import java.io.IOException;
24
25 import javax.servlet.ServletConfig;
26 import javax.servlet.ServletException;
27 import javax.servlet.http.HttpServlet;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
30
31
36 public class PortalClassLoaderServlet
37 extends HttpServlet implements PortalInitable {
38
39 public void destroy() {
40 Thread currentThread = Thread.currentThread();
41
42 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
43
44 try {
45 currentThread.setContextClassLoader(
46 PortalClassLoaderUtil.getClassLoader());
47
48 _servlet.destroy();
49 }
50 finally {
51 currentThread.setContextClassLoader(contextClassLoader);
52 }
53 }
54
55 public void init(ServletConfig servletConfig) {
56 _servletConfig = servletConfig;
57
58 PortalInitableUtil.init(this);
59 }
60
61 public void portalInit() {
62 Thread currentThread = Thread.currentThread();
63
64 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
65
66 ClassLoader portalClassLoader = PortalClassLoaderUtil.getClassLoader();
67
68 try {
69 currentThread.setContextClassLoader(portalClassLoader);
70
71 String servletClass = _servletConfig.getInitParameter(
72 "servlet-class");
73
74 _servlet = (HttpServlet)portalClassLoader.loadClass(
75 servletClass).newInstance();
76
77 _servlet.init(_servletConfig);
78 }
79 catch (Exception e) {
80 _log.error(e, e);
81 }
82 finally {
83 currentThread.setContextClassLoader(contextClassLoader);
84 }
85 }
86
87 public void service(
88 HttpServletRequest request, HttpServletResponse response)
89 throws IOException, ServletException {
90
91 Thread currentThread = Thread.currentThread();
92
93 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
94
95 try {
96 currentThread.setContextClassLoader(
97 PortalClassLoaderUtil.getClassLoader());
98
99 _servlet.service(request, response);
100 }
101 finally {
102 currentThread.setContextClassLoader(contextClassLoader);
103 }
104 }
105
106 private static Log _log = LogFactoryUtil.getLog(
107 PortalClassLoaderServlet.class);
108
109 private HttpServlet _servlet;
110 private ServletConfig _servletConfig;
111
112 }