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