package com.iflytek.edu.cloud.oauth2.jetty;
import io.netty.util.internal.SystemPropertyUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.webapp.WebAppContext;
import org.eclipse.jetty.webapp.WebInfConfiguration;
/**
* 只用于测试和生产环境,默认从WEB-INF/lib目录下加载jar,改成从BASE_HOME/lib目录下加载jar
*
* @author libinsong1204@gmail.com
*
*/
public class WebInfConfigurationExt extends WebInfConfiguration {
@Override
protected List<Resource> findJars(WebAppContext context) throws Exception {
List<Resource> jarResources = new ArrayList<Resource>();
List<Resource> webInfLibJars = findWebInfLibJars(context);
if (webInfLibJars != null)
jarResources.addAll(webInfLibJars);
List<Resource> extraClasspathJars = findExtraClasspathJars(context);
if (extraClasspathJars != null)
jarResources.addAll(extraClasspathJars);
return jarResources;
}
@Override
protected List<Resource> findWebInfLibJars(WebAppContext context)
throws Exception {
Resource baseHome = Resource.newResource(SystemPropertyUtil.get("BASE_HOME"));
//Resource baseHome = Resource.newResource("D:/");
if (baseHome == null || !baseHome.exists())
return null;
List<Resource> jarResources = new ArrayList<Resource>();
Resource web_inf_lib = baseHome.addPath("/lib");
if (web_inf_lib.exists() && web_inf_lib.isDirectory()) {
String[] files = web_inf_lib.list();
for (int f = 0; files != null && f < files.length; f++) {
try {
Resource file = web_inf_lib.addPath(files[f]);
String fnlc = file.getName().toLowerCase(Locale.ENGLISH);
int dot = fnlc.lastIndexOf('.');
String extension = (dot < 0 ? null : fnlc.substring(dot));
if (extension != null
&& (extension.equals(".jar") || extension
.equals(".zip"))) {
jarResources.add(file);
}
} catch (Exception ex) {
//LOG.warn(Log.EXCEPTION, ex);
}
}
}
return jarResources;
}
}