常见问题
如何修改登录状态过期时间?
目前默认的配置非活跃情况下两小时登录状态过期,如不能满足需求可按照自己的需求再调整相应的配置 y9-digitalbase-webapp/y9-module-sso/risenet-y9boot-webapp-sso-server/src/main/resources/application.yml
(也可能是 y9-digitalbase-webapp/y9-module-sso/risenet-y9boot-webapp-sso-server-jpa/src/main/resources/application.yml
,根据自己使用的版本调整即可):
cas:
authn:
oauth:
refreshToken:
timeToKillInSeconds: P14D # refreshToken 有效时长
accessToken:
timeToKillInSeconds: PT2H # accessToken 不活跃时(即没有使用 accessToken 的动作)的有效时长
maxTimeToLiveInSeconds: PT8H # accessToken 在活跃时(即有使用 accessToken 的动作)的最长有效时长
ticket:
tgt:
primary:
maxTimeToLiveInSeconds: 28800 # tgt 在活跃时(即有使用 tgt 的动作)的最长有效时长
timeToKillInSeconds: 7200 # tgt 不活跃时(即没有使用 tgt 的动作)的有效时长
注意: 由于 accessToken 和 refreshToken 的颁发都依赖于 tgt,所以他们的最短时间取决于 tgt 的有效时间
如何打 docker 镜像?
数字底座使用 Google 容器构建工具 Jib 构建 docker 镜像,它可以不依赖于 docker 守护进程即可进行多平台的分层构建 docker 镜像,更多详细信息可查看 jib 开源网站
- 首先,在根
pom.xml
中,声明了jib-maven-plugin
插件并进行了一些配置,可根据自己的需求查看官方文档进行调整
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
<configuration>
<skip>false</skip>
<from>
<!-- 基础镜像 -->
<image>docker-internal.youshengyun.com/tomcat:9.0-jre11-temurin</image>
<platforms>
<platform>
<architecture>amd64</architecture>
<os>linux</os>
</platform>
<platform>
<architecture>arm64</architecture>
<os>linux</os>
</platform>
</platforms>
</from>
<container>
<appRoot>/usr/local/tomcat/webapps/${project.build.finalName}</appRoot>
</container>
<to>
<!-- 构建的镜像名 -->
<image>docker-registry-internal.youshengyun.com/${project.artifactId}</image>
<tags>
<tag>${project.version}</tag>
<tag>v9.6.x</tag>
<tag>${project.version}-${buildDate}</tag>
</tags>
</to>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
在上面配置中,docker 仓库为私有仓库,您需要调整为自己的仓库地址,仓库可能需要相应的认证授权
- 然后,在构建镜像的模块中使用该插件即可,例如在
y9-digitalbase-webapp/y9-module-platform/risenet-y9boot-webapp-platform/pom.xml
中:
<profiles>
<profile>
<id>build-docker-image</id>
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
使用 maven 进行构建时使 build-docker-image
这个 profile 生效即可应用这个插件构建 docker 镜像,命令行示例:
$ mvn clean install -P build-docker-image
是否可以使用内嵌 servlet 容器部署?
可以,在数字底座中已添加了内嵌 tomcat 依赖,并使用 spring-boot-maven-plugin
来生成可执行 war,对应的可执行 war 构建完成后即可使用 java -jar
运行
例如 risenet-y9boot-webapp-platform
模块构建完成后会在 target
目录下生成 platform.war
,通过命令 java -jar platform.war
即可运行该模块
如何使用 SpringCloud 的服务注册与发现?
已有的模块中都加入了 risenet-y9boot-common-nacos
这个依赖,该依赖中引入了用于服务注册与发现的 spring-cloud-starter-alibaba-nacos-discovery
当然,我们得先部署 Nacos,可以参考官方文档部署手册进行部署。
修改模块配置文件 application.yml
,以下为示例,需根据实际情况修改
spring:
cloud:
nacos:
server-addr: nacos:8848
username: nacos
password: ${NACOS_PASSWORD:111111}
discovery:
enabled: true # 启用服务注册与发现的功能
group: DEFAULT_GROUP
namespace: test
由于各个模块中实现的 FeignClient 的配置类似如下:
@FeignClient(contextId = "AccessLogApiClient", name = "${y9.service.log.name:log}",
url = "${y9.service.log.directUrl:}", path = "/${y9.service.log.name:log}/services/rest/v1/accessLog")
public interface AccessLogApiClient extends AccessLogApi {
}
由上可知道当 FeignClient 中 url 配置不为空时,它会使用对应的配置直接调用接口(这个在开发阶段较为便利,少了中间件 Nacos 的安装),如果为空则尝试服务发现的功能, 所以对于要使用服务发现的模块,则可以将对应的配置项置空,参考如下:
y9:
service:
log:
directUrl:
经过以上配置,我们应该已经可以使用服务注册与发现的功能了
如何使用 SpringCloud 的远程配置?
已有的模块中都加入了 risenet-y9boot-common-nacos
这个依赖,该依赖中引入了用于远程配置的 spring-cloud-starter-alibaba-nacos-config
。
当然,我们得先部署 Nacos,可以参考官方文档部署手册进行部署。
修改模块配置文件 application.yml
,以下为示例,需根据实际情况修改
spring:
cloud:
nacos:
server-addr: nacos:8848
username: nacos
password: ${NACOS_PASSWORD:111111}
config:
enabled: true # 启用远程配置的功能
group: DEFAULT_GROUP
namespace: test
config:
import:
- optional:nacos:platform.yml
经过以上配置,我们应该已经可以使用远程配置的功能了。 在项目 bootstrap 阶段,项目会从 Nacos test
命名空间 DEFAULT_GROUP
组中拉取 platform.yml
配置文件(当然,我们对应的配置文件要存在,Nacos 安装完成后我们可以登录后台创建),并将其加载到 Spring 环境中。 根据 Spring 配置的优先级,我们可以拿到 Nacos 远程配置中的配置信息。
数字底座启动报错
报错 1
Caused by: java.lang.NullPointerException: null
at net.risesoft.log.aop.RiseLogAdvice.<init>(RiseLogAdvice.java:48)
这个大概率是配置文件 application.yml
的问题,可以尝试修改 y9.internalIp
这一段,加入你网络所在的网段然后重启应用
y9:
internalIp: 192.168.x.x,10.0.x.x,172.20.x.x