// Path: src/main/java/com/monkeyk/sos/web/WebUtils.java
// public abstract class WebUtils {
// 
// 
//     public static final String UTF_8 = "UTF-8";
// 
// 
//     /**
//      * Sync by pom.xml   <version></version>
//      */
//     public static final String VERSION = "2.0.1";
// 
// 
//     private static ThreadLocal<String> ipThreadLocal = new ThreadLocal<>();
// 
// 
//     public static void setIp(String ip) {
//         ipThreadLocal.set(ip);
//     }
// 
//     public static String getIp() {
//         return ipThreadLocal.get();
//     }
// 
//     //private
//     private WebUtils() {
//     }
// 
// 
//     /**
//      * Retrieve client ip address
//      *
//      * @param request HttpServletRequest
//      * @return IP
//      */
//     public static String retrieveClientIp(HttpServletRequest request) {
//         String ip = request.getHeader("x-forwarded-for");
//         if (isUnAvailableIp(ip)) {
//             ip = request.getHeader("Proxy-Client-IP");
//         }
//         if (isUnAvailableIp(ip)) {
//             ip = request.getHeader("WL-Proxy-Client-IP");
//         }
//         if (isUnAvailableIp(ip)) {
//             ip = request.getRemoteAddr();
//         }
//         return ip;
//     }
// 
//     private static boolean isUnAvailableIp(String ip) {
//         return StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip);
//     }
// 
// }


import com.monkeyk.sos.web.WebUtils;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
package com.monkeyk.sos;



/**
 * 2017-12-05
 *
 * @author Shengzhao Li
 */
public class SpringOauthServerServletInitializer extends SpringBootServletInitializer {


    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);
        //主版本号
// Path: src/main/java/com/monkeyk/sos/web/WebUtils.java
// public abstract class WebUtils {
// 
// 
//     public static final String UTF_8 = "UTF-8";
// 
// 
//     /**
//      * Sync by pom.xml   <version></version>
//      */
//     public static final String VERSION = "2.0.1";
// 
// 
//     private static ThreadLocal<String> ipThreadLocal = new ThreadLocal<>();
// 
// 
//     public static void setIp(String ip) {
//         ipThreadLocal.set(ip);
//     }
// 
//     public static String getIp() {
//         return ipThreadLocal.get();
//     }
// 
//     //private
//     private WebUtils() {
//     }
// 
// 
//     /**
//      * Retrieve client ip address
//      *
//      * @param request HttpServletRequest
//      * @return IP
//      */
//     public static String retrieveClientIp(HttpServletRequest request) {
//         String ip = request.getHeader("x-forwarded-for");
//         if (isUnAvailableIp(ip)) {
//             ip = request.getHeader("Proxy-Client-IP");
//         }
//         if (isUnAvailableIp(ip)) {
//             ip = request.getHeader("WL-Proxy-Client-IP");
//         }
//         if (isUnAvailableIp(ip)) {
//             ip = request.getRemoteAddr();
//         }
//         return ip;
//     }
// 
//     private static boolean isUnAvailableIp(String ip) {
//         return StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip);
//     }
// 
// }


// Path: src/main/java/com/monkeyk/sos/SpringOauthServerServletInitializer.java
import com.monkeyk.sos.web.WebUtils;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;

package com.monkeyk.sos;



/**
 * 2017-12-05
 *
 * @author Shengzhao Li
 */
public class SpringOauthServerServletInitializer extends SpringBootServletInitializer {


    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);
        //主版本号
        servletContext.setAttribute("mainVersion", WebUtils.VERSION);