特性介绍
# 概述
金蝶 Apusic 应用服务器V10.0.10嵌入式版是一款同时支持JavaEE企业级标准与 React 响应编程标准的嵌入式应用服务器,集成Spring Boot3.0框架使用,支持全新Servlet和JSP规范。
本文档是金蝶Apusic应用服务器V10.0.10嵌入式版的特性介绍。
# 新特性总结
包含以下新特性:
- 支持Spring Framework 6.0
- 最低JDK17
- 支持新版Actuator
- 支持使用 GraalVM 生成本机映像,取代实验性的Spring Native 项目
- 改进监控功能Micrometer和Micrometer Tracing
- 依赖从Java EE迁移到Jakarta EE API
- Graal 22.3和Native Build Tools Plugin 0.9.17以上版本
- 添加对弃用配置属性的警告信息,提醒需要替换为最新配置属性,为未来版本升级做好准备
# JakartaEE规范
与金蝶Apusic应用服务器V10嵌入式版相比,金蝶 Apusic 应用服务器V10.0.10嵌入式版支持全新JakartaEE规范;由于依赖更新,V10与V10.0.10不能直接更新。规范版本如下:
| 金蝶Apusic应用服务器V10.0.10嵌入式版 | 金蝶Apusic应用服务器V10嵌入式版 | |
| Servlet | 6.0 | 4.0 |
| JSP | 3.1 | 2.3 |
| EL | 5.0 | 3.0 |
| Websocket | 2.1 | 1.1 |
# 规范介绍
# Servlet6.0
# 新功能、增强功能或新增功能
- 澄清URI路径的解码和规范化。
- 更新Cookie类、相关类和规范以删除对FC 2109的引用并用RFC 6265替换它们。
- 澄清getRealPath(String)的行为。
- 为Cookie提供通用属性支持,包括会话Cookie,以支持SameSite属性等其他属性。
- 根据java模块系统和Jakarta EE 10建议,添加module-info.java以支持在模块化环境中使用Servlet API。
- 删除Servlet容器应包含X-Powered-Byheader的建议。
- 更正有效排序列表。
- 澄清getRemoteAddress()的行为。
- 澄清setCharacterEncoding(null)和类似调用的行为。
- 添加新方法以获得当前请求和/或关联连接的唯一标识符。
- 放宽“包装请求和响应”中规定的要求,并允许容器包装请求和应答,以满足实现RequestDispatcher功能的要求。
- 取消对程序添加的侦听器调用某些ServletContextgetter方法的限制。
- 向JspPropertyGroupDescriptor添加一个新方法getErrorOnELNotFound(),以与Jakarta Pages 3.1规范中的更改保持一致。
- 澄清Javadoc的ServletRequest.isAsyncStarted(),使其与规范文本对齐。
- 当Servlet InputStream.isReady()或Servlet OutputStream.isReady()返回false时,更新Javadoc以澄清调度含义。
# 删除、弃用或向后不兼容的更改
- 不推荐doHead方法中的包装响应处理,支持HEAD方法行为的容器实现
- 删除Servlet 5.0及更早版本中不推荐使用的API类和方法。这包括删除SingleThreadModel和HttpSessionContext接口、HttpUtils类以及各种不推荐使用的方法。
# 参考文档
参考文档 https://jakarta.ee/specifications/servlet/6.0/
# JSP3.1
# 新功能、增强功能或新增功能
- 添加一个选项以在EL表达式包含未知标识符时引发PropertyNotFoundException
- 澄清与自定义操作相关的脚本变量上下文中“范围”的含义
- 澄清JSP中的EL环境有一组默认导入,与脚本环境的默认导入一致。重构ScopedAttributeELResolver以删除对导入和未解析变量的特殊处理
# 删除、弃用或向后不兼容的更改
- 弃用重写ELResolver.getFeatureDescriptors()的方法,因为自EL 5.0起,该方法已被弃用
- 弃用isThreadSafe页面指令属性,因为相关的Servlet API接口SingleThreadModel已从Servlet 6.0规范中删除
- 弃用jsp:plugin操作和相关操作,因为任何主要的borowser都不再支持相关的HTML元素
# 参考文档
参考文档 https://jakarta.ee/specifications/pages/3.1/
# EL5.0
# 新功能、增强功能或新增功能
- BeanELResolver已经更新,以便在查找属性getter、属性setter和方法时考虑默认方法实现。
- 添加了对强制LambdaExpression实例到函数接口方法调用的支持。
- 增加了对强制数组的支持。
- 添加MethodReference类是为了提供对MethodExpression解析到的方法的详细信息的访问,包括该方法上存在的任何注释。
- 泛型现在在整个API中使用。
- 将表达式与基于参数类型的方法进行匹配时的预期行为已得到澄清。
- EL规范现在明确指出,除了java.lang.*之外,依赖于EL规范的规范还可以定义默认导入到EL环境中的其他包。
- 运行时不再需要java.desktop模块。
- 数组支持一个新属性length。
# 删除、弃用或向后不兼容的更改
- 已删除不推荐使用的、拼写错误的方法MethodExpression.isParmetersProvided()。
- ELResolver方法getFeatureDescriptors()已被弃用,计划删除EL6.0。这是为了从EL API中删除对java.desktop模块的依赖。
- 返回null的默认实现已添加到ELResolver方法getFeatureDescriptors()中,因为它已被弃用,因此自定义ELResolver实现不需要实现该方法。
- 如果ELResolver或已解析的属性是只读的,则明确说明ELResolver.getType()必须返回null。这将更改StaticFieldELResolver的记录行为。
- getFeatureDescriptions()方法已从ELResolver接口中删除。
- 所有对Java SecurityManager和相关API的引用都已删除。
# 参考文档
参考文档 https://jakarta.ee/specifications/expression-language/5.0/
# Websocket2.1
# 新功能、增强功能或新增功能
- 明确一旦容器为消息标识了MessageHandler,MessageHandler将用于整个消息,而不考虑为会话配置的MessageHandler的任何后续更改。
- 为默认平台配置程序添加getter。
- 为客户端TLS配置提供API。
- 取消了在Jakarta web容器环境中,端点只能在web应用程序部署期间注册的限制。还添加了一个新方法ServerContainer.upgradeHttpToWebSocket(),该方法允许web应用程序以编程方式将请求分派到WebSocket端点。
- 澄清Session.getRequestURI()的预期行为,应返回完整的URI。
- 澄清对用户属性的预期处理。
- 澄清零值或负值会禁用会话空闲超时,并改进Javadoc中针对其他超时使用的语言。
- 从jakarta.websocket-api jar中删除了jakarta.websocket.*类的副本,并将该副本替换为对jakarta-websocket-client-api jar的依赖项。
- 添加了JPMS模块描述符,将客户端模块名称定义为jakarta.websocket.client,将服务器模块名称定义为由客户端模块决定的jakarta-websocket。
# 删除、弃用或向后不兼容的更改
无
# 参考文档
参考文档 https://jakarta.ee/specifications/websocket/2.1/
编辑页面 (opens new window)