Application加锁cacheSources
This commit is contained in:
@@ -1076,7 +1076,9 @@ public final class Application {
|
||||
//------------------------------------ 注册 java.net.http.HttpClient ------------------------------------
|
||||
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
||||
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();
|
||||
if (resourceName.endsWith(".1.1")) {
|
||||
builder.version(HttpClient.Version.HTTP_1_1);
|
||||
@@ -1096,7 +1098,9 @@ public final class Application {
|
||||
//------------------------------------ 注册 HttpSimpleClient ------------------------------------
|
||||
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
||||
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);
|
||||
field.set(srcObj, httpClient);
|
||||
rf.inject(resourceName, httpClient, null); // 给其可能包含@Resource的字段赋值;
|
||||
@@ -1139,7 +1143,9 @@ public final class Application {
|
||||
//------------------------------------ 注册 HttpMessageClient ------------------------------------
|
||||
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
|
||||
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) {
|
||||
HttpMessageClient messageClient = new HttpMessageLocalClient(application, resourceName);
|
||||
field.set(srcObj, messageClient);
|
||||
@@ -1185,6 +1191,7 @@ public final class Application {
|
||||
}
|
||||
|
||||
CacheSource loadCacheSource(final String sourceName, boolean autoMemory) {
|
||||
synchronized (cacheSources) {
|
||||
long st = System.currentTimeMillis();
|
||||
CacheSource old = resourceFactory.find(sourceName, CacheSource.class);
|
||||
if (old != null) return old;
|
||||
@@ -1201,7 +1208,7 @@ public final class Application {
|
||||
try {
|
||||
CacheSource source = AbstractCacheSource.createCacheSource(serverClassLoader, resourceFactory, sourceConf, sourceName, compileMode);
|
||||
cacheSources.add(source);
|
||||
resourceFactory.register(sourceName, 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) {
|
||||
@@ -1211,8 +1218,10 @@ public final class Application {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
DataSource loadDataSource(final String sourceName, boolean autoMemory) {
|
||||
synchronized (dataSources) {
|
||||
DataSource old = resourceFactory.find(sourceName, DataSource.class);
|
||||
if (old != null) return old;
|
||||
final AnyValue sourceConf = findSourceConfig(sourceName, "datasource");
|
||||
@@ -1234,7 +1243,7 @@ public final class Application {
|
||||
if (source instanceof DataMemorySource && DataMemorySource.isSearchType(sourceConf)) {
|
||||
resourceFactory.register(sourceName, SearchSource.class, source);
|
||||
} else {
|
||||
resourceFactory.register(sourceName, source);
|
||||
resourceFactory.register(sourceName, DataSource.class, source);
|
||||
}
|
||||
logger.info("Load DataSource resourceName = " + sourceName + ", source = " + source);
|
||||
return source;
|
||||
@@ -1245,6 +1254,7 @@ public final class Application {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void initResources() throws Exception {
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user