001
014
015 package com.liferay.portal.util;
016
017 import com.liferay.portal.bean.BeanLocatorImpl;
018 import com.liferay.portal.configuration.ConfigurationFactoryImpl;
019 import com.liferay.portal.dao.db.DBManagerImpl;
020 import com.liferay.portal.dao.jdbc.DataSourceFactoryImpl;
021 import com.liferay.portal.kernel.bean.BeanLocator;
022 import com.liferay.portal.kernel.bean.PortalBeanLocatorUtil;
023 import com.liferay.portal.kernel.configuration.ConfigurationFactoryUtil;
024 import com.liferay.portal.kernel.dao.db.DBManagerUtil;
025 import com.liferay.portal.kernel.dao.jdbc.DataSourceFactoryUtil;
026 import com.liferay.portal.kernel.log.LogFactoryUtil;
027 import com.liferay.portal.kernel.log.SanitizerLogWrapper;
028 import com.liferay.portal.kernel.upgrade.dao.orm.UpgradeOptimizedConnectionProviderRegistryUtil;
029 import com.liferay.portal.kernel.util.ClassLoaderUtil;
030 import com.liferay.portal.kernel.util.GetterUtil;
031 import com.liferay.portal.kernel.util.ListUtil;
032 import com.liferay.portal.kernel.util.LocaleUtil;
033 import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
034 import com.liferay.portal.kernel.util.StringPool;
035 import com.liferay.portal.kernel.util.SystemProperties;
036 import com.liferay.portal.kernel.util.TimeZoneUtil;
037 import com.liferay.portal.log.Log4jLogFactoryImpl;
038 import com.liferay.portal.module.framework.ModuleFrameworkUtilAdapter;
039 import com.liferay.portal.security.lang.DoPrivilegedUtil;
040 import com.liferay.portal.security.lang.SecurityManagerUtil;
041 import com.liferay.portal.spring.context.ArrayApplicationContext;
042 import com.liferay.portal.upgrade.dao.orm.UpgradeOptimizedConnectionProviderRegistryImpl;
043 import com.liferay.util.log4j.Log4JUtil;
044
045 import com.sun.syndication.io.XmlReader;
046
047 import java.util.List;
048
049 import org.apache.commons.lang.time.StopWatch;
050
051 import org.springframework.context.ApplicationContext;
052 import org.springframework.context.support.ClassPathXmlApplicationContext;
053
054
057 public class InitUtil {
058
059 public static synchronized void init() {
060 if (_initialized) {
061 return;
062 }
063
064 StopWatch stopWatch = new StopWatch();
065
066 stopWatch.start();
067
068
069
070
071 String userLanguage = SystemProperties.get("user.language");
072 String userCountry = SystemProperties.get("user.country");
073 String userVariant = SystemProperties.get("user.variant");
074
075 LocaleUtil.setDefault(userLanguage, userCountry, userVariant);
076
077
078
079
080 String userTimeZone = SystemProperties.get("user.timezone");
081
082 TimeZoneUtil.setDefault(userTimeZone);
083
084
085
086 try {
087 PortalClassLoaderUtil.setClassLoader(
088 ClassLoaderUtil.getContextClassLoader());
089 }
090 catch (Exception e) {
091 e.printStackTrace();
092 }
093
094
095
096 com.liferay.portal.kernel.util.PropsUtil.setProps(new PropsImpl());
097
098
099
100 if (GetterUtil.getBoolean(
101 SystemProperties.get("log4j.configure.on.startup"), true)) {
102
103 ClassLoader classLoader = InitUtil.class.getClassLoader();
104
105 Log4JUtil.configureLog4J(classLoader);
106 }
107
108
109
110 try {
111 LogFactoryUtil.setLogFactory(new Log4jLogFactoryImpl());
112 }
113 catch (Exception e) {
114 e.printStackTrace();
115 }
116
117
118
119 SanitizerLogWrapper.init();
120
121
122
123 SecurityManagerUtil.init();
124
125 if (SecurityManagerUtil.ENABLED) {
126 com.liferay.portal.kernel.util.PropsUtil.setProps(
127 DoPrivilegedUtil.wrap(
128 com.liferay.portal.kernel.util.PropsUtil.getProps()));
129
130 LogFactoryUtil.setLogFactory(
131 DoPrivilegedUtil.wrap(LogFactoryUtil.getLogFactory()));
132 }
133
134
135
136 ConfigurationFactoryUtil.setConfigurationFactory(
137 DoPrivilegedUtil.wrap(new ConfigurationFactoryImpl()));
138
139
140
141 DataSourceFactoryUtil.setDataSourceFactory(
142 DoPrivilegedUtil.wrap(new DataSourceFactoryImpl()));
143
144
145
146 DBManagerUtil.setDBManager(DoPrivilegedUtil.wrap(new DBManagerImpl()));
147
148
149
150 UpgradeOptimizedConnectionProviderRegistryUtil.
151 setUpgradeOptimizedConnectionProviderRegistry(
152 new UpgradeOptimizedConnectionProviderRegistryImpl());
153
154
155
156 XmlReader.setDefaultEncoding(StringPool.UTF8);
157
158 if (_PRINT_TIME) {
159 System.out.println(
160 "InitAction takes " + stopWatch.getTime() + " ms");
161 }
162
163 _initialized = true;
164 }
165
166 public synchronized static void initWithSpring(
167 boolean initModuleFramework, boolean registerContext) {
168
169 List<String> configLocations = ListUtil.fromArray(
170 PropsUtil.getArray(
171 com.liferay.portal.kernel.util.PropsKeys.SPRING_CONFIGS));
172
173 initWithSpring(configLocations, initModuleFramework, registerContext);
174 }
175
176 public synchronized static void initWithSpring(
177 List<String> configLocations, boolean initModuleFramework,
178 boolean registerContext) {
179
180 if (_initialized) {
181 return;
182 }
183
184 init();
185
186 try {
187 if (initModuleFramework) {
188 PropsValues.LIFERAY_WEB_PORTAL_CONTEXT_TEMPDIR =
189 System.getProperty(SystemProperties.TMP_DIR);
190
191 ModuleFrameworkUtilAdapter.initFramework();
192 }
193
194 ApplicationContext infrastructureApplicationContext =
195 new ArrayApplicationContext(
196 PropsValues.SPRING_INFRASTRUCTURE_CONFIGS);
197
198 if (initModuleFramework) {
199 ModuleFrameworkUtilAdapter.registerContext(
200 infrastructureApplicationContext);
201
202 ModuleFrameworkUtilAdapter.startFramework();
203 }
204
205 ApplicationContext appApplicationContext =
206 new ClassPathXmlApplicationContext(
207 configLocations.toArray(new String[configLocations.size()]),
208 infrastructureApplicationContext);
209
210 BeanLocator beanLocator = new BeanLocatorImpl(
211 ClassLoaderUtil.getPortalClassLoader(), appApplicationContext);
212
213 PortalBeanLocatorUtil.setBeanLocator(beanLocator);
214
215 if (initModuleFramework) {
216 ModuleFrameworkUtilAdapter.startRuntime();
217 }
218
219 _appApplicationContext = appApplicationContext;
220
221 if (initModuleFramework && registerContext) {
222 registerContext();
223 }
224 }
225 catch (Exception e) {
226 throw new RuntimeException(e);
227 }
228
229 _initialized = true;
230 }
231
232 public static boolean isInitialized() {
233 return _initialized;
234 }
235
236 public static void registerContext() {
237 if (_appApplicationContext != null) {
238 ModuleFrameworkUtilAdapter.registerContext(_appApplicationContext);
239 }
240 }
241
242 public synchronized static void stopModuleFramework() {
243 try {
244 ModuleFrameworkUtilAdapter.stopFramework(0);
245 }
246 catch (Exception e) {
247 throw new RuntimeException(e);
248 }
249 }
250
251 public synchronized static void stopRuntime() {
252 try {
253 ModuleFrameworkUtilAdapter.stopRuntime();
254 }
255 catch (Exception e) {
256 throw new RuntimeException(e);
257 }
258 }
259
260 private static final boolean _PRINT_TIME = false;
261
262 private static ApplicationContext _appApplicationContext;
263 private static boolean _initialized;
264
265 }