fix: 修复项目初始化问题

This commit is contained in:
suxiang
2024-09-18 18:32:52 +08:00
parent 5b2ccbe5c3
commit 132e4cf053
2 changed files with 29 additions and 5 deletions
@@ -8,12 +8,16 @@ import io.netty.handler.ssl.SslContextBuilder;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.db.DBInitialize;
import org.dromara.neutrinoproxy.server.dal.DomainMapper;
import org.dromara.neutrinoproxy.server.dal.entity.DomainNameDO;
import org.dromara.neutrinoproxy.server.util.ProxyUtil;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.event.AppLoadEndEvent;
import org.noear.solon.core.event.EventListener;
import org.noear.solon.core.runtime.NativeDetector;
import javax.net.ssl.KeyManagerFactory;
import java.io.ByteArrayInputStream;
@@ -35,17 +39,30 @@ public class SslContextManager implements EventListener<AppLoadEndEvent> {
@Db
private DomainMapper domainMapper;
@Inject
private DBInitialize dbInitialize;
// 初始化时加载所有域名的 SSL 上下文
@Override
public void onEvent(AppLoadEndEvent appLoadEndEvent) throws Throwable {
@Init
public void init() throws Throwable {
// aot 阶段,不初始化
if (NativeDetector.isAotRuntime()) {
return;
}
try {
initializeSslContexts();
} catch (Exception e) {
log.error("initialize SSL handler failed", e);
e.printStackTrace();
throw e;
}
}
@Override
public void onEvent(AppLoadEndEvent appLoadEndEvent) throws Throwable {
}
// 维护域名到 SslContext 的映射
private final ConcurrentHashMap<String, SslContext> domainSslContexts = new ConcurrentHashMap<>();
@@ -15,7 +15,10 @@ import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
import org.dromara.neutrinoproxy.server.base.rest.SystemContextHolder;
import org.dromara.neutrinoproxy.server.constant.*;
import org.dromara.neutrinoproxy.server.controller.req.proxy.*;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainCreateReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainListReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainUpdateEnableStatusReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.DomainUpdateReq;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainListRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainUpdateDefaultStatusRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.DomainUpdateEnableStatusRes;
@@ -34,6 +37,7 @@ import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.handle.UploadedFile;
import org.noear.solon.core.runtime.NativeDetector;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -61,7 +65,6 @@ public class DomainService {
@Inject
private SslContextManager sslContextManager;
public PageInfo<DomainListRes> page(PageQuery pageQuery, DomainListReq req) {
Page<DomainNameDO> page = domainMapper.selectPage(new Page<>(pageQuery.getCurrent(), pageQuery.getSize()), new LambdaQueryWrapper<DomainNameDO>()
.eq(req.getEnable() != null, DomainNameDO::getEnable, req.getEnable())
@@ -254,6 +257,10 @@ public class DomainService {
@Init
public void init() {
// aot 阶段,不初始化
if (NativeDetector.isAotRuntime()) {
return;
}
List<FullDomainNameBO> fullDomainNameBOS = domainMapper.selectFullDomainNameList();
if (CollectionUtil.isEmpty(fullDomainNameBOS)) {
return;