Слияние кода завершено, страница обновится автоматически
Api Document Url : /doc.html
名称(artifactId) | 说明 |
---|---|
acp-spring-boot-starter | 依赖acp-core-packet ,基于spring boot 封装,支持 http/tcp/udp/websocket 等协议服务端配置、定时任务,同时兼容servlet和reactive |
acp-spring-boot-starter-ftp | 依赖acp-spring-boot-starter ,扩展支持ftp服务端 |
acp-spring-cloud-starter | 依赖acp-spring-boot-starter ,整合对接nacos 、kafka 、sentinel 等组件 |
acp-spring-cloud-starter-resource-server | 依赖acp-spring-cloud-starter ,扩展spring-boot-starter-oauth2-resource-server 封装资源服务 |
依赖对应模块
io.gitee.zhangbinhub.acp.boot.log.LogAdapter
进行日志记录io.gitee.zhangbinhub.acp.test.application.task.Task1
,继承
io.gitee.zhangbinhub.acp.boot.base.BaseSpringBootScheduledTask
类,并在 yml 配置文件中增加对应执行规则io.gitee.zhangbinhub.acp.boot.init.AcpInitialization
接口io.gitee.zhangbinhub.acp.boot.listener.AcpListener
接口io.gitee.zhangbinhub.acp.test.application.test
包中有 tcp、udp 服务端开发demo,并在
application-dev.xml 中增加相应配置io.gitee.zhangbinhub.acp.boot.socket.base.TcpServerHandle
;自定义粘包拆包解码器Bean,继承io.netty.handler.codec.ByteToMessageDecoder
io.gitee.zhangbinhub.acp.boot.socket.base.UdpServerHandle
io.gitee.zhangbinhub.acp.core.ftp.user.UserFactory
@SpringBootApplication
class TestReactiveApplication
fun main(args: Array<String>) {
SpringApplication(TestReactiveApplication::class.java).apply {
this.webApplicationType = WebApplicationType.REACTIVE
this.run(*args)
}
}
io.gitee.zhangbinhub.acp.boot.websocket.servlet.AcpWebSocketServerServlet
;参考TestWebSocketServerServlet
io.gitee.zhangbinhub.acp.boot.websocket.reactive.AcpWebSocketServerReactive
;参考TestWebSocketServerReactive
io.gitee.zhangbinhub.acp.boot.websocket.servlet.AcpWebSocketClient
;参考TestClient
io.gitee.zhangbinhub.acp.boot.websocket.reactive.AcpWebSocketClient
;参考TestClient
io.gitee.zhangbinhub.acp.boot.exceptions.AcpWebExceptionHandler
identify
,用于判断指定的异常是否需要进行处理handle
,将异常信息进行转换getOrder
,设置异常处理类的调用顺序springdoc:
api-docs:
enabled: true
acp:
schedule:
cron:
task1: 0 0/1 * * * ?
key-value 形式(可配置多个),其中 task1 为任务的 beanName;0 0/1 * * * ? 为定时执行规则cron表达式。
acp:
tcp-server:
listeners:
- name: testSocket #监听服务名称
enabled: true #是否启用,默认false
keepAlive: false #是否为长连接,默认false;TCP服务有效
readerIdleTime: 10000 #读等待时间单位毫秒,默认10000;TCP服务有效
writerIdleTime: 0 #写等待时间单位毫秒,默认0;TCP服务有效
idleTime: 0 #连接进入空闲状态的等待时间单位毫秒,默认0;TCP服务有效
messageDecoder: "" #粘包拆包解码器类全限定名称,默认不设置;TCP服务有效
threadNumber: 100 #接收报文处理的最大线程数,为0或不设置则使用系统默认线程数;TCP服务有效
hex: false #接收报文是否是十六进制机器码,默认false
port: 9999 #监听端口号
handleBean: testTcpHandle #报文接收处理 Bean 的 Name
responsible: true #报文是否需要进行原路响应,默认true
charset: gbk #服务使用字符集,为空或不设置则系统默认字符集
acp:
udp-server:
listeners:
- name: testSocket #监听服务名称
enabled: true #是否启用,默认false
hex: false #接收报文是否是十六进制机器码,默认false
port: 9999 #监听端口号
handleBean: testUdpHandle #报文接收处理 Bean 的 Name
responsible: true #报文是否需要进行原路响应,默认true
charset: gbk
acp:
ftp-server:
listeners:
- name: "测试ftp服务器" #服务名车鞥
enabled: true #可空,是否启用,默认false
port: 221 #服务端口号
pwd-encrypt-mode: MD5 #可空,用户密码加密方式(支持MD5、SHA1、SHA256),默认MD5
login-failure-delay: 30 #可空,默认30
max-login-failures: 20 #可空,默认20
max-logins: 10 #可空,默认10
max-anonymous-logins: 20 #可空,默认20
max-threads: 10 #可空,默认10
default-home-directory: "abs:D:\\个人\\测试ftp" #默认根路径
anonymous-login-enabled: false #可空,是否允许匿名用户登录,默认false
anonymous-write-permission: false #可空,是否允许匿名用户写操作,默认false
user-factory-class: testUserFactory #用户工厂 Bean 的 Name
模块 | 配置项 | 数据类型 | 默认值 | 说明 |
---|---|---|---|---|
schedule | acp.schedule.cron | Map<String,String> | empty | 支持7位(秒,分,时,日期ofM,月,星期ofW,年) |
acp.schedule.auto-restart | Boolean | true | 是否进行动态热重启 | |
tcp-server | acp.tcp-server.listeners | List<SocketListenerConfiguration> | empty | Socket TCP 监听列表 |
udp-server | acp.tcp-server.listeners | List<SocketListenerConfiguration> | empty | Socket UDP 监听列表 |
SocketListenerConfiguration; prefix:acp.tcp-server.listeners or acp.tcp-server.listeners | name | String | Default Socket Listener | 名称 |
threadNumber | Integer | 0 | 线程数 | |
enabled | Boolean | false | 是否启用 | |
keepAlive | Boolean | false | 是否长连接 | |
idletime | Long | 10000 | 空闲等待时间(单位毫秒) | |
port | Integer | 0 | 监听端口 | |
hex | Boolean | false | 是否16进制报文 | |
messageDecoder | String | 消息解码器Bean名称 | ||
handleBean | String | 消息处理Bean名称 | ||
responsible | Boolean | true | 是否需要响应 | |
charset | String | utf-8 | 字符编码 | |
ftp-server | acp.ftp-server.listeners | List<FtpListener> | empty | Ftp服务监听配置列表 |
FtpListener; prefix:acp.ftp-server.listeners | name | String | 服务名 | |
enabled | Boolean | false | 是否启用,默认false | |
port | Integer | 0 | 服务端口号 | |
anonymousLoginEnabled | Boolean | false | 可空,是否允许匿名用户登录,默认false | |
pwdEncryptMode | String | MD5 | 用户密码加密方式(支持MD5、SHA1、SHA256),默认MD5 | |
loginFailureDelay | Integer | 30 | ||
maxLoginFailures | Integer | 20 | ||
maxLogins | Integer | 10 | ||
maxAnonymousLogins | Integer | 20 | ||
maxThreads | Integer | 10 | ||
defaultHomeDirectory | String | 默认根路径 | ||
anonymousWritePermission | Boolean | false | 可空,是否允许匿名用户写操作,默认false | |
userFactoryBean | String | 用户工厂Bean名称 |
命令 | 描述 |
---|---|
./server.sh | 查看可用参数 |
./server.sh status | 查看系统运行状态 |
./server.sh start | 启动应用 |
./server.sh stop | 停止应用 |
./server.sh restart | 重启应用 |
demo 位于 example/spring-cloud
io.gitee.zhangbinhub.acp.boot.log.LogAdapter
进行日志记录url | 描述 |
---|---|
/oauth/authorize | 申请授权,basic认证保护 |
/oauth/token | 获取token的服务,url中没有client_id和client_secret的,走basic认证保护 |
/oauth/check_token | 资源服务器用来校验token,basic认证保护 |
/oauth/confirm_access | 授权确认,basic认证保护 |
/oauth/error | 认证失败,无认证保护 |
a. 配置两个 appender(一个输出到本地文件,一个输出到logstash;单独配置的目的是为了将不同类型的日志写入不同名称的文件并在elasticsearch中创建不同的索引)
b. 之后再配置一个 logger (name属性为某个日志类型),包含之前配置的两个 appender
c. 强烈建议 logback-spring.xml 中配置的本地日志文件路径需与 yml 中的 logging.file.path 一致,方便统一管理
acp:
cloud:
log-server:
enabled: true #是否开启日志服务
acp:
cloud:
log-server:
client:
enabled: true #是否启用日志服务
log-type: ALL #当前服务的日志类型,默认ALL,也自定义;自定义的类型需要在日志服务中参照ALL配置appender和logger
acp:
cloud:
resource-server:
permit-all-path:
- /customer
security-path:
- /customer2
cloud:acp-spring-cloud-starter-resource-server
中强制开启了Http Basic
认证,保护/actuator
接口
acp.cloud.resource-server.client-id
和acp.cloud.resource-server.client-secret
配置项user.name
和user.password
上送给注册中心,以便监控系统能够正常访问/actuator
(例如Spring Boot Admin
)cloud:acp-spring-cloud-starter-resource-server
依赖改为cloud:acp-spring-cloud-starter
AcpCloudResourceServerApplication
改为AcpCloudAtomApplication
acp.cloud.loadbalancer.nacos.enabled=true
开启SBA负载均衡器acp.cloud.transmit-header.prefix
Authorization
和指定前缀的header传递RestClient
调用时传递header
参考HelloWorldController.java
WebClient
调用时传递header
参考HelloWorldController.java
WebAsyncManagerIntegrationFilter (1/22)
SecurityContextHolderFilter (2/22)
AuthorizationServerContextFilter (3/22)
HeaderWriterFilter (4/22)
CorsFilter (5/22)
LogoutFilter (6/22)
OAuth2AuthorizationServerMetadataEndpointFilter (7/22)
OAuth2AuthorizationEndpointFilter (8/22)
OAuth2DeviceVerificationEndpointFilter (9/22)
NimbusJwkSetEndpointFilter (10/22)
OAuth2ClientAuthenticationFilter (11/22)
BearerTokenAuthenticationFilter (12/22)
BasicAuthenticationFilter (13/22)
RequestCacheAwareFilter (14/22)
SecurityContextHolderAwareRequestFilter (15/22)
AnonymousAuthenticationFilter (16/22)
ExceptionTranslationFilter (17/22)
AuthorizationFilter (18/22)
OAuth2TokenEndpointFilter (19/22)
OAuth2TokenIntrospectionEndpointFilter (20/22)
OAuth2TokenRevocationEndpointFilter (21/22)
OAuth2DeviceAuthorizationEndpointFilter (22/22)
模块 | 配置项 | 数据类型 | 默认值 | 说明 |
---|---|---|---|---|
log server | acp.cloud.log-server.groupId | String | acp_cloud_log_server_group_id | 消费日志消息的组id,多个日志服务使用相同的组id,能够保证日志消息不被重复消费,默认:"acp_cloud_log_server_group_id" |
acp.cloud.log-server.enabled | Boolean | false | 当前服务是否是日志服务,默认:false | |
acp.cloud.log-server.destination | String | acp_cloud_log_server_message_topic | 日志消息的topic名称(队列名称),默认:"acp_cloud_log_server_message_topic" | |
acp.cloud.log-server.client.enabled | Boolean | enabled | 是否启用日志服务客户端,默认:false | |
acp.cloud.log-server.client.logType | String | ALL | 日志类型,默认:"ALL" | |
resource server | acp.cloud.resource-server.client-id | String | acp_cloud_resource_server_client_id | 资源服务认证使用的clientId |
acp.cloud.resource-server.client-secret | String | acp_cloud_resource_server_client_secret | 资源服务认证使用的clientSecret | |
acp.cloud.resource-server.permit-all-path | List<String> | empty | 不进行权限校验的 url path | |
acp.cloud.resource-server.security-path | List<String> | empty | 进行权限保护的 url path | |
loadbalancer | acp.cloud.loadbalancer.enabled | Boolean | true | 启用自定义负载均衡器 |
transmit header | acp.cloud.transmit-header.prefix | String | Acp-Header- | 进行传递时,匹配的header key前缀 |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )