|
@@ -101,48 +101,25 @@ public class GlueFactory implements ApplicationContextAware {
|
101
|
101
|
}
|
102
|
102
|
|
103
|
103
|
// ----------------------------- load instance -----------------------------
|
104
|
|
-
|
105
|
|
- // load class,
|
106
|
|
- public static String generateClassCacheKey(String job_group, String job_name){
|
107
|
|
- return job_group.concat("_").concat(job_name).concat("_class");
|
108
|
|
- }
|
109
|
|
- public Class<?> loadClass(String job_group, String job_name) throws Exception{
|
|
104
|
+ // load new instance, prototype
|
|
105
|
+ public IJobHandler loadNewInstance(String job_group, String job_name) throws Exception{
|
110
|
106
|
if (job_group==null || job_group.trim().length()==0 || job_name==null || job_name.trim().length()==0) {
|
111
|
107
|
return null;
|
112
|
108
|
}
|
113
|
|
- String cacheClassKey = generateClassCacheKey(job_group, job_name);
|
114
|
|
- Object cacheClass = LocalCache.getInstance().get(cacheClassKey);
|
115
|
|
- if (cacheClass != null) {
|
116
|
|
- return (Class<?>) cacheClass;
|
117
|
|
- }
|
118
|
109
|
String codeSource = glueLoader.load(job_group, job_name);
|
119
|
110
|
if (codeSource!=null && codeSource.trim().length()>0) {
|
120
|
111
|
Class<?> clazz = groovyClassLoader.parseClass(codeSource);
|
121
|
|
- if (clazz!=null) {
|
122
|
|
- LocalCache.getInstance().set(cacheClassKey, clazz, cacheTimeout);
|
123
|
|
- logger.info(">>>>>>>>>>>> xxl-glue, fresh class, cacheClassKey:{}", cacheClassKey);
|
124
|
|
- return clazz;
|
125
|
|
- }
|
126
|
|
- }
|
127
|
|
- return null;
|
128
|
|
- }
|
129
|
|
-
|
130
|
|
- // load new instance, prototype
|
131
|
|
- public IJobHandler loadNewInstance(String job_group, String job_name) throws Exception{
|
132
|
|
- if (job_group==null || job_group.trim().length()==0 || job_name==null || job_name.trim().length()==0) {
|
133
|
|
- return null;
|
134
|
|
- }
|
135
|
|
- Class<?> clazz = loadClass(job_group, job_name);
|
136
|
|
- if (clazz!=null) {
|
137
|
|
- Object instance = clazz.newInstance();
|
138
|
|
- if (instance!=null) {
|
139
|
|
- if (!(instance instanceof IJobHandler)) {
|
140
|
|
- throw new IllegalArgumentException(">>>>>>>>>>> xxl-glue, loadNewInstance error, "
|
141
|
|
- + "cannot convert from instance["+ instance.getClass() +"] to IJobHandler");
|
|
112
|
+ if (clazz != null) {
|
|
113
|
+ Object instance = clazz.newInstance();
|
|
114
|
+ if (instance!=null) {
|
|
115
|
+ if (instance instanceof IJobHandler) {
|
|
116
|
+ this.injectService(instance);
|
|
117
|
+ return (IJobHandler) instance;
|
|
118
|
+ } else {
|
|
119
|
+ throw new IllegalArgumentException(">>>>>>>>>>> xxl-glue, loadNewInstance error, "
|
|
120
|
+ + "cannot convert from instance["+ instance.getClass() +"] to IJobHandler");
|
|
121
|
+ }
|
142
|
122
|
}
|
143
|
|
-
|
144
|
|
- this.injectService(instance);
|
145
|
|
- return (IJobHandler) instance;
|
146
|
123
|
}
|
147
|
124
|
}
|
148
|
125
|
throw new IllegalArgumentException(">>>>>>>>>>> xxl-glue, loadNewInstance error, instance is null");
|