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
45 public class PortalClassLoaderServlet
46 extends HttpServlet implements PortalInitable {
47
48 public void portalInit() {
49 ClassLoader contextClassLoader =
50 Thread.currentThread().getContextClassLoader();
51
52 ClassLoader portalClassLoader = PortalClassLoaderUtil.getClassLoader();
53
54 try {
55 Thread.currentThread().setContextClassLoader(portalClassLoader);
56
57 String servletClass = _config.getInitParameter("servlet-class");
58
59 _servlet = (HttpServlet)portalClassLoader.loadClass(
60 servletClass).newInstance();
61
62 _servlet.init(_config);
63 }
64 catch (Exception e) {
65 _log.error(e, e);
66 }
67 finally {
68 Thread.currentThread().setContextClassLoader(contextClassLoader);
69 }
70 }
71
72 public void init(ServletConfig config) throws ServletException {
73 _config = config;
74
75 PortalInitableUtil.init(this);
76 }
77
78 public void service(HttpServletRequest req, HttpServletResponse res)
79 throws IOException, ServletException {
80
81 ClassLoader contextClassLoader =
82 Thread.currentThread().getContextClassLoader();
83
84 try {
85 Thread.currentThread().setContextClassLoader(
86 PortalClassLoaderUtil.getClassLoader());
87
88 _servlet.service(req, res);
89 }
90 finally {
91 Thread.currentThread().setContextClassLoader(contextClassLoader);
92 }
93 }
94
95 public void destroy() {
96 ClassLoader contextClassLoader =
97 Thread.currentThread().getContextClassLoader();
98
99 try {
100 Thread.currentThread().setContextClassLoader(
101 PortalClassLoaderUtil.getClassLoader());
102
103 _servlet.destroy();
104 }
105 finally {
106 Thread.currentThread().setContextClassLoader(contextClassLoader);
107 }
108 }
109
110 private static Log _log =
111 LogFactoryUtil.getLog(PortalClassLoaderServlet.class);
112
113 private HttpServlet _servlet;
114 private ServletConfig _config;
115
116 }