Skip to content

Releases: opensolon/solon

Solon v3.9.3

13 Feb 03:54

Choose a tag to compare

  • 优化 solon-logging-log4j2 默认配置改为 java 动态构建(更灵活)
  • 调整 solon Gateway mainDef 直接输出 404 状态,改为的抛 404 状态异常
  • 修复 quartz-solon-cloud-plugin quartz.Scheduler 定制无效的问题
  • 修复 minio7-solon-cloud-plugin bucketDef 无效的问题
  • 修复 minio-solon-cloud-plugin bucketDef 无效的问题

Solon v3.8.5

13 Feb 03:20

Choose a tag to compare

  • 添加 nacos-solon-cloud-plugin ak/sk 配置支持
  • 添加 nacos2-solon-cloud-plugin ak/sk 配置支持
  • 添加 nacos3-solon-cloud-plugin ak/sk 配置支持
  • 优化 solon-logging-log4j2 默认配置改为 java 动态构建(更灵活)
  • 修复 quartz-solon-cloud-plugin quartz.Scheduler 定制无效的问题
  • 修复 minio7-solon-cloud-plugin bucketDef 无效的问题
  • 修复 minio-solon-cloud-plugin bucketDef 无效的问题
  • sanck4 升为 4.0.31

Solon v3.7.5

13 Feb 03:19

Choose a tag to compare

  • 添加 nacos-solon-cloud-plugin ak/sk 配置支持
  • 添加 nacos2-solon-cloud-plugin ak/sk 配置支持
  • 添加 nacos3-solon-cloud-plugin ak/sk 配置支持
  • 优化 solon-logging-log4j2 默认配置改为 java 动态构建(更灵活)
  • 修复 quartz-solon-cloud-plugin quartz.Scheduler 定制无效的问题
  • 修复 minio7-solon-cloud-plugin bucketDef 无效的问题
  • 修复 minio-solon-cloud-plugin bucketDef 无效的问题
  • sanck4 升为 4.0.31

Solon v3.9.1

06 Feb 05:51

Choose a tag to compare

  • 新增 solon-shell 插件(试用)
  • 添加 solon-data-sqlutils SqlUtils.getDataSource 方法
  • 添加 solon-data-rx-sqlutils RxSqlUtils.getConnectionFactory 方法
  • 优化 solon-doc-openapi3 兼容性
  • 调整 solon-net-httputils 响应式改为 Flux 接口(提供背压支持)
  • sanck4 升为 4.0.31

Solon v3.9.0

26 Jan 01:22

Choose a tag to compare

  • 新增 solon-security-sm 插件
  • 新增 solon-ai-search-bocha 插件
  • 添加 solon-serialization EntityStringSerializer, EntityBytesSerializer 注入支持
  • 修复 solon.serialization.json.enumAsName: false 部分序列化框架不生效的问题
  • sanck4 升为 4.0.30

Solon v3.8.3

14 Jan 04:51

Choose a tag to compare

  • 插件 solon-flow 第七次预览
  • 新增 solon-ai-agent 插件
  • 新增 solon-ai-dialect-gemini 插件
  • 新增 nami-coder-gson 插件
  • 新增 solon-docs-openapi3 插件
  • 新增 solon-openapi3-knife4j 插件
  • 新增 solon-net-httputils-java11 插件
  • 添加 solon Context.currentWith(...) 方法替代 ContextHolder(后者标为弃用)
  • 添加 solon-data UntransactionDataSource (非事务数据源)
  • 添加 solon-server newVirtualThreadFactory 名字前缀支持
  • 添加 solon-web-vertx VxWebContext:getVertx() 方法
  • 添加 nami NamiAttach(更适合 java25 未来的发展) 替代 NamiAttachment(后者标为弃用)
  • 优化 solon ScopeLocal 定义
  • 优化 solon-data TranManager 完成 ScopeLocal 改造
  • 优化 solon-net-httputils 添加虚拟线程支持
  • 优化 solon-java25 的 ScopeLocal 适配
  • 修复 solon-data UnpooledDataSource driverClassName 配置失效的问题
  • kafka 升为 3.9.1
  • snack4 升为 4.0.28
  • wood 升为 1.4.4
  • redisx 升为 1.8.4
  • luffy 升为 1.11.4
  • liquor 升为 1.6.7
  • smarthttp 升为 2.5.18

Solon v3.8.0

23 Dec 16:11

Choose a tag to compare

  • 插件 solon-flow 第六次预览
  • 新增 solon-flow-workflow 插件(替代 FlowStatefulService)
  • 新增 solon-java25 仓库(提供 ScopedValue 适配)
  • 添加 solon ScopeLocal 接口(用于 ThreadLocal 到 ScopedValue 兼容)
  • 添加 solon Solon.start(Class, MultiMap) 方法
  • 添加 solon ThreadsUtil:newVirtualThreadFactory 方法
  • 添加 solon ContextHolder:currentWith 方法,替代 currentSet(标为弃用)
  • 添加 solon Controller:remoting 属性(可替代 @remoting 注解)
  • 添加 solon 非依赖关系的 bean 异步初始化(@Init(async=true)
  • 添加 solon Stringable 接口
  • 添加 solon 'env.use' 配置支持(相对 'env',它与 'env.on' 协作时不会冲突)
  • 添加 solon 'server.session.cookieHttpOnly' 配置支持(默认为 true)
  • 添加 solon Context.cookieSet(...,httpOnly) 方法
  • 添加 solon-test HttpTester protocol 参数支持(方便 https 或 http 切换测试)
  • 添加 solon-serialization JsonPropsUtil2.dateAsFormat 添加 java.sql.Timestamp 类型支持
  • 添加 solon-config-yaml 依赖 solon-config-snack4 避免单个引入时忘掉
  • 添加 solon-net-httputils HttpSslSupplierAny(方便无限制的 ssl 使用,但不建议)
  • 添加 solon-web-rx RxEntity 类(方便对接 mcp-sdk)
  • 添加 solon-server 会话状态的 cookie httpOnly 配置(默认为 false)
  • 添加 solon-server-tomcat ssl 适配支持
  • 添加 solon-security-validation ValidatorFailureHandlerI18n 支持验证注解的国际化处理
    添加 solon-expression SnelParser 类,为 TemplateParser 和 EvaluateParser 提供出入口和占位符配置
  • 添加 solon-flow FlowContext:lastNode() 方法(最后一个运行的节点)
  • 添加 solon-flow FlowContext:lastNodeId() 方法(最后一个运行的节点Id)
  • 添加 solon-flow Node.getMetaAs, Link.getMetaAs 方法
  • 添加 solon-flow NodeSpec:linkRemove 方法(增强修改能力)
  • 添加 solon-flow Graph:create(id,title,consumer) 方法
  • 添加 solon-flow Graph:copy(graph,consumer) 方法(方便复制后修改)
  • 添加 solon-flow GraphSpec:getNode(id) 方法
  • 添加 solon-flow GraphSpec:addLoop(id) 方法替代 addLooping(后者标为弃用)
  • 添加 solon-flow FlowEngine:eval(Graph, ..) 系列方法
  • 添加 solon-ai FunctionPrompt:handleAsync(用于 mcp-server 异步支持)
  • 添加 solon-ai FunctionResource:handleAsync(用于 mcp-server 异步支持)
  • 添加 solon-ai FunctionTool:handleAsync(用于 mcp-server 异步支持)
  • 添加 solon-ai-core ChatMessage:toNdjson,fromNdjson 方法(替代 ChatSession:toNdjson, loadNdjson),新方法机制上更自由
  • 添加 solon-ai-core ToolSchemaUtil.jsonSchema Publisher 泛型支持
  • 添加 solon-ai-mcp mcp-java-sdk v0.17 适配(支持 2025-06-18 版本协议)
  • 添加 solon-ai-mcp mcp-server 异步支持
  • 添加 solon-ai-mcp mcp-server streamable_stateless 支持
  • 添加 solon-ai-mcp Tool,Resource,Prompt 对 org.reactivestreams.Publisher 异步返回支持
  • 添加 solon-ai-mcp McpServerHost 服务宿主接口,用于隔离有状态与无状态服务
  • 添加 solon-ai-mcp McpChannel.STREAMABLE_STATELESS (服务端)无状态会话
  • 添加 solon-ai-mcp McpClientProvider:customize 方法(用于扩展 roots, sampling 等)
  • 添加 solon-ai-mcp mcpServer McpAsyncServerExchange 注入支持(用于扩展 roots, sampling 等)
  • 优化 solon api-version 版本匹配
  • 优化 solon SnelUtil snel 表达式缺参数时异常提示(避免配错名字)
  • 优化 solon ParamWrap:getName 改用 ParamSpec.getAlias。加 '@param(name=xxx)' 注解可生效
  • 优化 solon-cache CacheService 适配没有 _cacheKeyHead 配置时,则不加前缀
  • 优化 solon-net-httputils SslContextBuilder
  • 优化 solon-expression EvaluateParser 支持定义占位符(可支持 {xxx} 表达式)
  • 优化 solon-expression TemplateParser 支持定义占位符(可支持 {xxx} 表达式)
  • 优化 solon-expression LRUCache 性能(提高缓存性能)
  • 优化 solon-ai-dialect-openai claude 兼容性
  • 优化 solon-ai-mcp mcp StreamableHttp 模式下 服务端正常返回时 客户端异常日志打印的情况* 优化 solon-flow eval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务)
  • 优化 solon-flow FlowEngine:eval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务)
  • 调整 nami NamiAttachment 切换为 ScopeLocal 接口实现
  • 调整 solon ContextHolder 切换为 ScopeLocal 接口实现
  • 调整 solon RunHolder:parallelExecutor 改为 newFixedThreadPool
  • 调整 solon-data TranExecutorDefault 切换为 ScopeLocal 接口实现
  • 调整 local-solon-cloud-plugin 的 config 和 i18n 服务,如果没有 group 配置,则文件不带 group 前缀(之前默认给了 DEFAULT_GROUP 组名,显得复杂)
  • 调整 rocketmq-solon-clouud-plugin 的适配,事件属性不再加 '!' (并兼容旧格式)
  • 调整 aliyun-ons-solon-clouud-plugin 的适配,事件属性不再加 '!' (并兼容旧格式)
  • 调整 rocketmq5-solon-clouud-plugin 的适配,事件属性不再加 '!' (并兼容旧格式)。添加 sql92 过滤支持
  • 调整 solon-flow 移除 Activity 节点预览属性 "$imode" 和 "$omode"
  • 调整 solon-flow Activity 节点流出改为自由模式(可以多线流出:无条件直接流出,有条件检测后流出)
  • 调整 solon-flow Node.getMeta 方法返回改为 Object 类型(并新增 getMetaAs)
  • 调整 solon-flow Evaluation:runTest 改为 runCondition
  • 调整 solon-flow FlowContext:incrAdd,incrGet 标为弃用(上下文数据为型只能由输入侧决定)
  • 调整 solon-flow Condition 更名为 ConditionDesc
  • 调整 solon-flow Task 更名为 ConditionDesc
  • 调整 solon-flow XxxDecl 命名风格改为 XxxSpec
  • 调整 solon-flow GraphDecl.parseByXxx 命名风格改为 GraphSpec.fromXxx
  • 调整 solon-flow Graph.parseByXxx 命名风格改为 Graph.fromXxx
  • 调整 solon-ai-mcp getResourceTemplates、getResources 不再共享注册
  • 调整 solon-ai-mcp McpServerManager 内部接口更名为 McpPrimitivesRegistry (MCP 原语注册器)
  • 调整 solon-ai-mcp McpClientProvider 默认不启用心跳机制(随着 mcp-sdk 的成熟,server 都有心跳机制了)
  • 修复 solon IndexFiles 路径表达式的兼容问题(添加转换 *->@:->!
  • 修复 solon ParamWrap:getName 加 '@param(name=xxx)' 注解时没有生效的问题(v3.7.0 出现)。对 solon-cache 会有影响
  • 修复 solon-web-vertx VxWebContext._requestBody 如果为 null 文件上传时会出错的问题
  • 修复 solon-docs-openapi2 返回类型中泛型失效的问题(v3.7.0 出现)
  • snack4 升为 4.0.20
  • jackson 升为 2.19.2
  • liquor 升为 1.6.6
  • asm 升为 9.9

solon 仓库补充说明

新特性:

public class Demo {
   static ScopeLocal<String> LOCAL = ScopeLocal.newInstance();

   public void test(){
       LOCAL.with("test", ()->{
           System.out.println(LOCAL.get());
       });
   }
}

solon-ai 仓库补充说明

新特性展示:1.MCP 无状态会话(STREAMABLE_STATELESS)和 2.CompletableFuture 异步MCP工具

@McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/mcp1")
public class McpServerTool {
    @ToolMapping(description = "查询天气预报", returnDirect = true)
    public CompletableFuture<String> getWeather(@Param(description = "城市位置") String location) {
        return CompletableFuture.completedFuture("晴,14度");
    }
}

传输方式对应表:(服务端与客户端,须使用对应的传输方式才可通讯)

服务端 客户端 备注
STDIO STDIO
SSE SSE
STREAMABLE STREAMABLE
STREAMABLE_STATELESS STREAMABLE 对 server 集群很友好
  • STREAMABLE_STATELESS 集群,不需要 ip_hash,但“原语”变化后无法通知 client

solon-flow 仓库补充说明

重要变化:

  • 取消“有状态”、“无状态”概念。
  • solon-flow 回归通用流程引擎(分离“有状态”的概念)。
  • 新增 solon-flow-workflow 为工作流性质的封装(未来可能会有 dataflow 等)。

兼容变化对照表:

旧名称 新名称 说明
GraphDecl GraphSpec 图定义
GraphDecl.parseByXxx GraphSpec.fromXxx 图定义加载
Graph.parseByXxx Graph.fromXxx 图加载
LinkDecl LinkSpec 连接定义
NodeDecl NodeSpec 节点定义
Condition ConditionDesc 条件描述
Task TaskDesc 任务描述(避免与 workflow 的概念冲突)
FlowStatefulService WorkflowService 工作流服务
StatefulTask Task 任务
Operation TaskAction 任动工作
TaskType TaskState 任务状态

FlowStatefulService 到 WorkflowService 的接口变化对照表:

旧名称 新名称 说明
postOperation(..) postTask(..) 提交任务
postOperationIfWaiting(..) postTaskIfWaiting(..) 提交任务
evel(..) / 执行
stepForward(..) / 单步前进
stepBack(..) / 单步后退
/ getState(..) 获取状态

新特性预览:Graph 硬编码方式(及修改能力增强)

//硬编码
Graph graph = Graph.create("demo1", "示例", spec -> {
    spec.addStart("start").title("开始").linkAdd("01");
    spec.addActivity("n1").task("@AaMetaProcessCom").linkAdd("end");
    spec.addEnd("end").title("结束");
});

//修改
Graph graphNew = Graph.copy(graph, spec -> {
    spec.getNode("n1").linkRemove("end").linkAdd("n2"); //移掉 n1 连接;改为 n2 连接
    spec.addActivity("n2").linkAdd("end");
});

新特性预览:FlowContext:lastNodeId (计算的中断与恢复)。参考:https://solon.noear.org/article/1246

flowEngine.eval(graph, context.lastNodeId(), context);
//...(从上一个节点开始执行)
flowEngine.eval(graph, context.lastNodeId(), context);

新特性预览:WorkflowService(替代 FlowStatefulService)

WorkflowService workflow = WorkflowService.of(engine, WorkflowDriver.builder()
        .stateController(new ActorStateController()) 
        .stateRepository(new InMemoryStateRepository()) 
        .build());


//1. 取出任务
Task task = workflow.getTask(graph, context);

//2. 提交任务
workflow.postTask(task.getNode(), TaskAction.FORWARD, context);

Solon v3.7.4

23 Dec 16:09

Choose a tag to compare

  • 优化 solon ParamWrap:getName 改用 ParamSpec.getAlias。加 '@param(name=xxx)' 注解可生效
  • 优化 solon-cache CacheService 适配没有 _cacheKeyHead 配置时,则不加前缀
  • 优化 solon SnelUtil snel 表达式缺参数时异常提示(避免配错名字)
  • 修复 solon IndexFiles 路径表达式的兼容问题(添加转换 *->@:->!
  • 修复 solon ParamWrap:getName 加 '@param(name=xxx)' 注解时没有生效的问题(v3.7.0 出现)。对 solon-cache 会有影响
  • 修复 solon-web-vertx VxWebContext._requestBody 如果为 null 文件上传时会出错的问题
  • 修复 solon-docs-openapi2 返回类型中泛型失效的问题(v3.7.0 出现)
  • snack4 升为 4.0.20
  • liquor 升为 1.6.6
  • jackson 升为 2.19.2
  • asm 升为 9.9

Solon v3.6.7

23 Dec 16:07

Choose a tag to compare

  • 优化 solon-cache CacheService 适配没有 _cacheKeyHead 配置时,则不加前缀
  • 优化 solon SnelUtil snel 表达式缺参数时异常提示(避免配错名字)
  • 修复 solon-web-vertx VxWebContext._requestBody 如果为 null 文件上传时会出错的问题
  • snack4 升为 4.0.20
  • liquor 升为 1.6.6
  • jackson 升为 2.19.2
  • asm 升为 9.9

Solon v3.5.10

23 Dec 16:05

Choose a tag to compare

  • 优化 solon-cache CacheService 适配没有 _cacheKeyHead 配置时,则不加前缀
  • 修复 solon-web-vertx VxWebContext._requestBody 如果为 null 文件上传时会出错的问题
  • liquor 升为 1.6.6
  • jackson 升为 2.19.2
  • asm 升为 9.9