移除clazz缓存

This commit is contained in:
xueli.xue 2016-05-20 21:05:25 +08:00
parent 6717d8d590
commit 66adbd687f
1 changed files with 13 additions and 36 deletions

View File

@ -101,48 +101,25 @@ public class GlueFactory implements ApplicationContextAware {
} }
// ----------------------------- load instance ----------------------------- // ----------------------------- load instance -----------------------------
// load class,
public static String generateClassCacheKey(String job_group, String job_name){
return job_group.concat("_").concat(job_name).concat("_class");
}
public Class<?> loadClass(String job_group, String job_name) throws Exception{
if (job_group==null || job_group.trim().length()==0 || job_name==null || job_name.trim().length()==0) {
return null;
}
String cacheClassKey = generateClassCacheKey(job_group, job_name);
Object cacheClass = LocalCache.getInstance().get(cacheClassKey);
if (cacheClass != null) {
return (Class<?>) cacheClass;
}
String codeSource = glueLoader.load(job_group, job_name);
if (codeSource!=null && codeSource.trim().length()>0) {
Class<?> clazz = groovyClassLoader.parseClass(codeSource);
if (clazz!=null) {
LocalCache.getInstance().set(cacheClassKey, clazz, cacheTimeout);
logger.info(">>>>>>>>>>>> xxl-glue, fresh class, cacheClassKey:{}", cacheClassKey);
return clazz;
}
}
return null;
}
// load new instance, prototype // load new instance, prototype
public IJobHandler loadNewInstance(String job_group, String job_name) throws Exception{ public IJobHandler loadNewInstance(String job_group, String job_name) throws Exception{
if (job_group==null || job_group.trim().length()==0 || job_name==null || job_name.trim().length()==0) { if (job_group==null || job_group.trim().length()==0 || job_name==null || job_name.trim().length()==0) {
return null; return null;
} }
Class<?> clazz = loadClass(job_group, job_name); String codeSource = glueLoader.load(job_group, job_name);
if (codeSource!=null && codeSource.trim().length()>0) {
Class<?> clazz = groovyClassLoader.parseClass(codeSource);
if (clazz != null) { if (clazz != null) {
Object instance = clazz.newInstance(); Object instance = clazz.newInstance();
if (instance!=null) { if (instance!=null) {
if (!(instance instanceof IJobHandler)) { if (instance instanceof IJobHandler) {
this.injectService(instance);
return (IJobHandler) instance;
} else {
throw new IllegalArgumentException(">>>>>>>>>>> xxl-glue, loadNewInstance error, " throw new IllegalArgumentException(">>>>>>>>>>> xxl-glue, loadNewInstance error, "
+ "cannot convert from instance["+ instance.getClass() +"] to IJobHandler"); + "cannot convert from instance["+ instance.getClass() +"] to IJobHandler");
} }
}
this.injectService(instance);
return (IJobHandler) instance;
} }
} }
throw new IllegalArgumentException(">>>>>>>>>>> xxl-glue, loadNewInstance error, instance is null"); throw new IllegalArgumentException(">>>>>>>>>>> xxl-glue, loadNewInstance error, instance is null");