use of com.alipay.sofa.isle.deployment.DeploymentDescriptor in project sofa-boot by alipay.
the class ModelCreatingStage method getAllDeployments.
protected void getAllDeployments(ApplicationRuntimeModel application) throws IOException, DeploymentException {
Enumeration<URL> urls = appClassLoader.getResources(SofaBootConstants.SOFA_MODULE_FILE);
if (urls == null || !urls.hasMoreElements()) {
return;
}
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
UrlResource urlResource = new UrlResource(url);
Properties props = new Properties();
props.load(urlResource.getInputStream());
DeploymentDescriptorConfiguration deploymentDescriptorConfiguration = new DeploymentDescriptorConfiguration(Collections.singletonList(SofaBootConstants.MODULE_NAME), Collections.singletonList(SofaBootConstants.REQUIRE_MODULE));
DeploymentDescriptor dd = DeploymentBuilder.build(url, props, deploymentDescriptorConfiguration, appClassLoader);
if (application.isModuleDeployment(dd)) {
if (sofaModuleProfileChecker.acceptModule(dd)) {
validateDuplicateModule(application.addDeployment(dd), dd);
} else {
application.addInactiveDeployment(dd);
}
}
}
}
use of com.alipay.sofa.isle.deployment.DeploymentDescriptor in project sofa-boot by alipay.
the class ModuleLogOutputStage method logInfoBeanCost.
private void logInfoBeanCost(StringBuilder stringBuilder, List<DeploymentDescriptor> deploys) {
long totalTime = 0;
long realStart = 0;
long realEnd = 0;
stringBuilder.append("\n").append("Spring bean load time cost list").append("(").append(deploys.size()).append(") >>>>>>>");
StringBuilder sb = new StringBuilder();
int size = deploys.size();
for (int i = 0; i < size; ++i) {
String prefix = (i == size - 1) ? SYMBOLIC2 : SYMBOLIC1;
String indexPrefix = (i == size - 1) ? EMPTY_INDEX_PREFIX : INDENT_PREFIX;
DeploymentDescriptor dd = deploys.get(i);
BeanFactory beanFactory = ((ConfigurableApplicationContext) dd.getApplicationContext()).getBeanFactory();
if (realStart == 0 || dd.getStartTime() < realStart) {
realStart = dd.getStartTime();
}
if (realEnd == 0 || (dd.getStartTime() + dd.getElapsedTime()) > realEnd) {
realEnd = dd.getStartTime() + dd.getElapsedTime();
}
totalTime += dd.getElapsedTime();
if (beanFactory instanceof BeanLoadCostBeanFactory) {
sb.append(prefix).append("[Module] ").append(dd.getName()).append(" [").append(dd.getElapsedTime()).append(" ms]\n");
sb.append(((BeanLoadCostBeanFactory) beanFactory).outputBeanStats(indexPrefix));
}
}
stringBuilder.append(" [totalTime = ").append(totalTime).append(" ms, realTime = ").append(realEnd - realStart).append(" ms]\n").append(sb);
}
use of com.alipay.sofa.isle.deployment.DeploymentDescriptor in project sofa-boot by alipay.
the class ModuleLogOutputStage method logInstalledModules.
private void logInstalledModules(StringBuilder stringBuilder, List<DeploymentDescriptor> deploys) {
long totalTime = 0;
long realStart = 0;
long realEnd = 0;
stringBuilder.append("\n").append("Spring context initialize success module list").append("(").append(deploys.size()).append(") >>>>>>>");
StringBuilder sb = new StringBuilder();
for (Iterator<DeploymentDescriptor> i = deploys.iterator(); i.hasNext(); ) {
DeploymentDescriptor dd = i.next();
String outTreeSymbol = SYMBOLIC1;
String innerTreeSymbol1 = SYMBOLIC3;
String innerTreeSymbol2 = SYMBOLIC4;
if (!i.hasNext()) {
outTreeSymbol = SYMBOLIC2;
innerTreeSymbol1 = SYMBOLIC5;
innerTreeSymbol2 = SYMBOLIC6;
}
sb.append(outTreeSymbol).append(dd.getName()).append(" [").append(dd.getElapsedTime()).append(" ms]\n");
totalTime += dd.getElapsedTime();
for (Iterator<String> j = dd.getInstalledSpringXml().iterator(); j.hasNext(); ) {
String xmlPath = j.next();
String innerTreeSymbol = innerTreeSymbol1;
if (!j.hasNext()) {
innerTreeSymbol = innerTreeSymbol2;
}
sb.append(innerTreeSymbol).append(xmlPath).append("\n");
}
if (realStart == 0 || dd.getStartTime() < realStart) {
realStart = dd.getStartTime();
}
if (realEnd == 0 || (dd.getStartTime() + dd.getElapsedTime()) > realEnd) {
realEnd = dd.getStartTime() + dd.getElapsedTime();
}
}
stringBuilder.append(" [totalTime = ").append(totalTime).append(" ms, realTime = ").append(realEnd - realStart).append(" ms]\n").append(sb);
}
use of com.alipay.sofa.isle.deployment.DeploymentDescriptor in project sofa-boot by alipay.
the class ModuleLogOutputStage method logFailedModules.
private void logFailedModules(StringBuilder stringBuilder, List<DeploymentDescriptor> deploys) {
stringBuilder.append("\n").append("Spring context initialize failed module list").append("(").append(deploys.size()).append(") >>>>>>>\n");
for (Iterator<DeploymentDescriptor> i = deploys.iterator(); i.hasNext(); ) {
DeploymentDescriptor dd = i.next();
String treeSymbol = SYMBOLIC1;
if (!i.hasNext()) {
treeSymbol = SYMBOLIC2;
}
stringBuilder.append(treeSymbol).append(dd.getName()).append("\n");
}
}
use of com.alipay.sofa.isle.deployment.DeploymentDescriptor in project sofa-boot by alipay.
the class SpringContextInstallStage method refreshSpringContextParallel.
private void refreshSpringContextParallel(List<DeploymentDescriptor> rootDeployments, int totalSize, final ApplicationRuntimeModel application, final ThreadPoolExecutor executor) {
if (rootDeployments == null || rootDeployments.size() == 0) {
return;
}
final CountDownLatch latch = new CountDownLatch(totalSize);
List<Future> futures = new CopyOnWriteArrayList<>();
for (final DeploymentDescriptor deployment : rootDeployments) {
refreshSpringContextParallel(deployment, application, executor, latch, futures);
}
try {
latch.await();
} catch (InterruptedException e) {
throw new RuntimeException(ErrorCode.convert("01-11004"), e);
}
for (Future future : futures) {
try {
future.get();
} catch (Throwable e) {
throw new RuntimeException(ErrorCode.convert("01-11005"), e);
}
}
}
Aggregations