1
22
23 package com.liferay.portal.spring.context;
24
25 import com.liferay.portal.bean.BeanLocatorImpl;
26 import com.liferay.portal.kernel.bean.BeanLocator;
27 import com.liferay.portal.kernel.bean.PortletBeanLocatorUtil;
28 import com.liferay.portal.kernel.portlet.PortletClassLoaderUtil;
29 import com.liferay.portal.spring.util.SpringUtil;
30
31 import java.lang.reflect.Method;
32
33 import javax.servlet.ServletContext;
34 import javax.servlet.ServletContextEvent;
35
36 import org.apache.commons.logging.Log;
37 import org.apache.commons.logging.LogFactory;
38
39 import org.springframework.context.ApplicationContext;
40 import org.springframework.web.context.ContextLoaderListener;
41 import org.springframework.web.context.support.WebApplicationContextUtils;
42
43
50 public class PortletContextLoaderListener extends ContextLoaderListener {
51
52 public void contextInitialized(ServletContextEvent event) {
53 super.contextInitialized(event);
54
55 ClassLoader classLoader = PortletClassLoaderUtil.getClassLoader();
56
57 ServletContext servletContext = event.getServletContext();
58
59 ApplicationContext applicationContext =
60 WebApplicationContextUtils.getWebApplicationContext(servletContext);
61
62 BeanLocator beanLocator = new BeanLocatorImpl(
63 classLoader, applicationContext);
64
65 PortletBeanLocatorUtil.setBeanLocator(
66 servletContext.getServletContextName(), beanLocator);
67
68 try {
69 Class<?> beanLocatorUtilClass = Class.forName(
70 "com.liferay.util.bean.PortletBeanLocatorUtil", true,
71 classLoader);
72
73 Method setBeanLocatorMethod = beanLocatorUtilClass.getMethod(
74 "setBeanLocator", new Class[] {BeanLocator.class});
75
76 setBeanLocatorMethod.invoke(
77 beanLocatorUtilClass, new Object[] {beanLocator});
78 }
79 catch (Exception e) {
80 _log.error(e, e);
81 }
82
83 SpringUtil.initContext(applicationContext);
84 }
85
86 private static Log _log =
87 LogFactory.getLog(PortletContextLoaderListener.class);
88
89 }