Application加锁cacheSources
This commit is contained in:
@@ -1076,7 +1076,9 @@ public final class Application {
|
|||||||
//------------------------------------ 注册 java.net.http.HttpClient ------------------------------------
|
//------------------------------------ 注册 java.net.http.HttpClient ------------------------------------
|
||||||
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
||||||
try {
|
try {
|
||||||
if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) return null;
|
if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
java.net.http.HttpClient.Builder builder = java.net.http.HttpClient.newBuilder();
|
java.net.http.HttpClient.Builder builder = java.net.http.HttpClient.newBuilder();
|
||||||
if (resourceName.endsWith(".1.1")) {
|
if (resourceName.endsWith(".1.1")) {
|
||||||
builder.version(HttpClient.Version.HTTP_1_1);
|
builder.version(HttpClient.Version.HTTP_1_1);
|
||||||
@@ -1096,7 +1098,9 @@ public final class Application {
|
|||||||
//------------------------------------ 注册 HttpSimpleClient ------------------------------------
|
//------------------------------------ 注册 HttpSimpleClient ------------------------------------
|
||||||
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
||||||
try {
|
try {
|
||||||
if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) return null;
|
if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
HttpSimpleClient httpClient = HttpSimpleClient.create(clientAsyncGroup);
|
HttpSimpleClient httpClient = HttpSimpleClient.create(clientAsyncGroup);
|
||||||
field.set(srcObj, httpClient);
|
field.set(srcObj, httpClient);
|
||||||
rf.inject(resourceName, httpClient, null); // 给其可能包含@Resource的字段赋值;
|
rf.inject(resourceName, httpClient, null); // 给其可能包含@Resource的字段赋值;
|
||||||
@@ -1139,7 +1143,9 @@ public final class Application {
|
|||||||
//------------------------------------ 注册 HttpMessageClient ------------------------------------
|
//------------------------------------ 注册 HttpMessageClient ------------------------------------
|
||||||
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
||||||
try {
|
try {
|
||||||
if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) return null;
|
if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (clusterAgent == null) {
|
if (clusterAgent == null) {
|
||||||
HttpMessageClient messageClient = new HttpMessageLocalClient(application, resourceName);
|
HttpMessageClient messageClient = new HttpMessageLocalClient(application, resourceName);
|
||||||
field.set(srcObj, messageClient);
|
field.set(srcObj, messageClient);
|
||||||
@@ -1185,65 +1191,69 @@ public final class Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CacheSource loadCacheSource(final String sourceName, boolean autoMemory) {
|
CacheSource loadCacheSource(final String sourceName, boolean autoMemory) {
|
||||||
long st = System.currentTimeMillis();
|
synchronized (cacheSources) {
|
||||||
CacheSource old = resourceFactory.find(sourceName, CacheSource.class);
|
long st = System.currentTimeMillis();
|
||||||
if (old != null) return old;
|
CacheSource old = resourceFactory.find(sourceName, CacheSource.class);
|
||||||
final AnyValue sourceConf = findSourceConfig(sourceName, "cachesource");
|
if (old != null) return old;
|
||||||
if (sourceConf == null) {
|
final AnyValue sourceConf = findSourceConfig(sourceName, "cachesource");
|
||||||
if (!autoMemory) return null;
|
if (sourceConf == null) {
|
||||||
CacheSource source = new CacheMemorySource(sourceName);
|
if (!autoMemory) return null;
|
||||||
cacheSources.add(source);
|
CacheSource source = new CacheMemorySource(sourceName);
|
||||||
resourceFactory.register(sourceName, CacheSource.class, source);
|
cacheSources.add(source);
|
||||||
if (!compileMode && source instanceof Service) ((Service) source).init(sourceConf);
|
resourceFactory.register(sourceName, CacheSource.class, source);
|
||||||
logger.info("Load CacheSource resourceName = " + sourceName + ", source = " + source + " in " + (System.currentTimeMillis() - st) + " ms");
|
if (!compileMode && source instanceof Service) ((Service) source).init(sourceConf);
|
||||||
return source;
|
logger.info("Load CacheSource resourceName = " + sourceName + ", source = " + source + " in " + (System.currentTimeMillis() - st) + " ms");
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
CacheSource source = AbstractCacheSource.createCacheSource(serverClassLoader, resourceFactory, sourceConf, sourceName, compileMode);
|
||||||
|
cacheSources.add(source);
|
||||||
|
resourceFactory.register(sourceName, CacheSource.class, source);
|
||||||
|
logger.info("Load CacheSource resourceName = " + sourceName + ", source = " + source + " in " + (System.currentTimeMillis() - st) + " ms");
|
||||||
|
return source;
|
||||||
|
} catch (RuntimeException ex) {
|
||||||
|
throw ex;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.log(Level.SEVERE, "load application CaheSource error: " + sourceConf, e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
CacheSource source = AbstractCacheSource.createCacheSource(serverClassLoader, resourceFactory, sourceConf, sourceName, compileMode);
|
|
||||||
cacheSources.add(source);
|
|
||||||
resourceFactory.register(sourceName, source);
|
|
||||||
logger.info("Load CacheSource resourceName = " + sourceName + ", source = " + source + " in " + (System.currentTimeMillis() - st) + " ms");
|
|
||||||
return source;
|
|
||||||
} catch (RuntimeException ex) {
|
|
||||||
throw ex;
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.log(Level.SEVERE, "load application CaheSource error: " + sourceConf, e);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DataSource loadDataSource(final String sourceName, boolean autoMemory) {
|
DataSource loadDataSource(final String sourceName, boolean autoMemory) {
|
||||||
DataSource old = resourceFactory.find(sourceName, DataSource.class);
|
synchronized (dataSources) {
|
||||||
if (old != null) return old;
|
DataSource old = resourceFactory.find(sourceName, DataSource.class);
|
||||||
final AnyValue sourceConf = findSourceConfig(sourceName, "datasource");
|
if (old != null) return old;
|
||||||
if (sourceConf == null) {
|
final AnyValue sourceConf = findSourceConfig(sourceName, "datasource");
|
||||||
if (!autoMemory) return null;
|
if (sourceConf == null) {
|
||||||
DataSource source = new DataMemorySource(sourceName);
|
if (!autoMemory) return null;
|
||||||
if (!compileMode && source instanceof Service) {
|
DataSource source = new DataMemorySource(sourceName);
|
||||||
resourceFactory.inject(sourceName, source);
|
if (!compileMode && source instanceof Service) {
|
||||||
((Service) source).init(sourceConf);
|
resourceFactory.inject(sourceName, source);
|
||||||
|
((Service) source).init(sourceConf);
|
||||||
|
}
|
||||||
|
dataSources.add(source);
|
||||||
|
resourceFactory.register(sourceName, DataSource.class, source);
|
||||||
|
logger.info("Load DataSource resourceName = " + sourceName + ", source = " + source);
|
||||||
|
return source;
|
||||||
}
|
}
|
||||||
dataSources.add(source);
|
try {
|
||||||
resourceFactory.register(sourceName, DataSource.class, source);
|
DataSource source = AbstractDataSource.createDataSource(serverClassLoader, resourceFactory, sourceConf, sourceName, compileMode);
|
||||||
logger.info("Load DataSource resourceName = " + sourceName + ", source = " + source);
|
dataSources.add(source);
|
||||||
return source;
|
if (source instanceof DataMemorySource && DataMemorySource.isSearchType(sourceConf)) {
|
||||||
}
|
resourceFactory.register(sourceName, SearchSource.class, source);
|
||||||
try {
|
} else {
|
||||||
DataSource source = AbstractDataSource.createDataSource(serverClassLoader, resourceFactory, sourceConf, sourceName, compileMode);
|
resourceFactory.register(sourceName, DataSource.class, source);
|
||||||
dataSources.add(source);
|
}
|
||||||
if (source instanceof DataMemorySource && DataMemorySource.isSearchType(sourceConf)) {
|
logger.info("Load DataSource resourceName = " + sourceName + ", source = " + source);
|
||||||
resourceFactory.register(sourceName, SearchSource.class, source);
|
return source;
|
||||||
} else {
|
} catch (RuntimeException ex) {
|
||||||
resourceFactory.register(sourceName, source);
|
throw ex;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.log(Level.SEVERE, "load application DataSource error: " + sourceConf, e);
|
||||||
}
|
}
|
||||||
logger.info("Load DataSource resourceName = " + sourceName + ", source = " + source);
|
return null;
|
||||||
return source;
|
|
||||||
} catch (RuntimeException ex) {
|
|
||||||
throw ex;
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.log(Level.SEVERE, "load application DataSource error: " + sourceConf, e);
|
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initResources() throws Exception {
|
private void initResources() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user