InitializeContext.java 8.1 KB
Newer Older
MaxKey单点登录官方's avatar
init  
MaxKey单点登录官方 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
package org.maxkey.web;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.maxkey.cache.CacheFactory;
import org.maxkey.util.PathUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
19 20
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
MaxKey单点登录官方's avatar
init  
MaxKey单点登录官方 已提交
21 22 23 24
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.web.context.support.WebApplicationContextUtils;

/**
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
25
 * InitApplicationContext .
MaxKey单点登录官方's avatar
init  
MaxKey单点登录官方 已提交
26 27 28
 * @author Crystal.Sea
 *
 */
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
29 30
public class InitializeContext extends HttpServlet {
    private static final Logger _logger = LoggerFactory.getLogger(InitializeContext.class);
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
31 32
    private static final long serialVersionUID = -797399138268601444L;
    ApplicationContext applicationContext;
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
33
    
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

    @Override
    public String getServletInfo() {
        return super.getServletInfo();
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);

        // List Environment Variables
        listEnvVars();

        listProperties();

        // List DatabaseMetaData Variables
        listDataBaseVariables();

        // load caches
        loadCaches();

        // Show License
        showLicense();
    }

    /**
    * InitApplicationContext.
MaxKey单点登录官方's avatar
init  
MaxKey单点登录官方 已提交
61
    */
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
62
    public InitializeContext() {
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
63 64
        this.applicationContext = 
                WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
65 66
    }

MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
67
    public InitializeContext(ConfigurableApplicationContext applicationContext) {
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
68 69 70
        this.applicationContext = applicationContext;
    }

MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
71 72 73
    /**
     * loadCaches.
     */
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
74
    public void loadCaches() {
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
75
        _logger.info("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
76 77 78 79
        _logger.info("Load Caches ");

        try {
            if (applicationContext.containsBean("cacheFactory")) {
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
80 81
                CacheFactory cacheFactory = 
                        applicationContext.getBean("cacheFactory", CacheFactory.class);
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
82 83 84 85 86
                cacheFactory.start();
            }
        } catch (BeansException e) {
            e.printStackTrace();
        }
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
87
        _logger.info("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
88 89 90

    }

MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
91 92 93
    /**
     * listDataBaseVariables.
     */
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
94 95 96
    public void listDataBaseVariables() {
        if (applicationContext.containsBean("dataSource")) {
            try {
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
97
                _logger.debug("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
98
                _logger.debug("List DatabaseMetaData Variables ");
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
99 100
                Connection connection = 
                        ((javax.sql.DataSource) applicationContext.getBean("dataSource"))
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
101 102 103
                        .getConnection();

                java.sql.DatabaseMetaData databaseMetaData = connection.getMetaData();
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116 117
                _logger.debug("DatabaseProductName   :   " 
                        + databaseMetaData.getDatabaseProductName());
                _logger.debug("DatabaseProductVersion:   " 
                        + databaseMetaData.getDatabaseProductVersion());
                _logger.debug("DatabaseMajorVersion  :   " 
                        + databaseMetaData.getDatabaseMajorVersion());
                _logger.debug("DatabaseMinorVersion  :   " 
                        + databaseMetaData.getDatabaseMinorVersion());
                _logger.debug("supportsTransactions  :   " 
                        + databaseMetaData.supportsTransactions());
                _logger.debug("DefaultTransaction    :   " 
                        + databaseMetaData.getDefaultTransactionIsolation());
                _logger.debug("MaxConnections        :   " 
                        + databaseMetaData.getMaxConnections());
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
118
                _logger.debug("");
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
119 120 121 122 123 124 125 126
                _logger.debug("JDBCMajorVersion      :   " 
                        + databaseMetaData.getJDBCMajorVersion());
                _logger.debug("JDBCMinorVersion      :   " 
                        + databaseMetaData.getJDBCMinorVersion());
                _logger.debug("DriverName            :   " 
                        + databaseMetaData.getDriverName());
                _logger.debug("DriverVersion         :   " 
                        + databaseMetaData.getDriverVersion());
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
127
                _logger.debug("");
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
128 129 130 131 132
                _logger.debug("DBMS  URL             :   " 
                        + databaseMetaData.getURL());
                _logger.debug("UserName              :   " 
                        + databaseMetaData.getUserName());
                _logger.debug("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
133 134 135 136 137 138
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
139 140 141
    /**
     * propertySourcesPlaceholderConfigurer.
     */
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
142 143
    public void listProperties() {
        if (applicationContext.containsBean("propertySourcesPlaceholderConfigurer")) {
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
144 145 146 147
            _logger.trace("-----------------------------------------------------------");
            _logger.trace("List Properties Variables ");
            PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = 
                    ((PropertySourcesPlaceholderConfigurer) applicationContext
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
148
                    .getBean("propertySourcesPlaceholderConfigurer"));
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
149
            WebContext.properties = (Properties) propertySourcesPlaceholderConfigurer
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
150 151 152
                    .getAppliedPropertySources()
                    .get(PropertySourcesPlaceholderConfigurer.LOCAL_PROPERTIES_PROPERTY_SOURCE_NAME)
                    .getSource();
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
153
            Set<Object> keyValue = WebContext.properties.keySet();
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
154 155 156 157 158 159 160 161 162
            SortedSet<String> keyValueSet = new TreeSet<String>();
            // sort key
            for (Iterator<Object> it = keyValue.iterator(); it.hasNext();) {
                String key = (String) it.next();
                keyValueSet.add(key);
            }
            // out
            for (Iterator<String> it = keyValueSet.iterator(); it.hasNext();) {
                String key = (String) it.next();
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
163
                _logger.trace(key + "   =   " + WebContext.properties.get(key));
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
164
            }
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
165
            _logger.trace("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
166 167 168
        }
    }

MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
169 170 171
    /**
     * listEnvVars.
     */
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
172
    public void listEnvVars() {
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
173
        _logger.debug("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
174 175 176 177 178 179 180 181 182 183
        _logger.debug("List Environment Variables ");
        Map<String, String> map = System.getenv();
        SortedSet<String> keyValueSet = new TreeSet<String>();
        for (Iterator<String> itr = map.keySet().iterator(); itr.hasNext();) {
            String key = itr.next();
            keyValueSet.add(key);
        }
        // out
        for (Iterator<String> it = keyValueSet.iterator(); it.hasNext();) {
            String key = (String) it.next();
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
184
            _logger.trace(key + "   =   " + map.get(key));
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
185 186
        }
        _logger.debug("APP_HOME" + "   =   " + PathUtils.getInstance().getAppPath());
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
187
        _logger.debug("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
188 189
    }

MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
190 191 192
    /**
     * showLicense.
     */
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
193
    public void showLicense() {
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
194
        _logger.info("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
195
        _logger.info("+                                MaxKey ");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
196
        _logger.info("+                      Single   Sign   On ( SSO ) ");
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
197
        _logger.info("+                           Version "
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
198
                    + WebContext.properties.getProperty("application.formatted-version"));
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
199
        _logger.info("+");
200
        _logger.info("+                      https://www.maxkey.top/");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
201
        _logger.info("+                      email:shimingxy@163.com");
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
202
        _logger.info("+                      Licensed under Apache License 2.0");
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
203
        _logger.info("-----------------------------------------------------------");
MaxKey单点登录官方's avatar
v1.3 RC  
MaxKey单点登录官方 已提交
204
    }
MaxKey单点登录官方's avatar
init  
MaxKey单点登录官方 已提交
205 206

}