You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot部署Payara后出现UTF-8编码设置警告问题求助

解决Payara+Spring Boot环境下AS-WEB-CORE-00059编码警告问题

问题根源

这个警告是Payara默认的编码处理逻辑和Spring Boot请求流程冲突导致的:Payara试图给请求设置UTF-8编码时,请求参数已经被Spring的组件(比如Security过滤器、请求解析器)提前读取了,导致编码设置失败。

解决办法

1. 关闭Payara自动设置请求编码

找到Payara域的domain.xml配置文件,定位到<web-container>节点,添加如下配置:

<web-container>
  <parameter-encoding default-charset="UTF-8" set-request-character-encoding="false"/>
</web-container>

改完重启Payara,让Payara不再主动干预请求编码,交给Spring处理。

2. 给Spring Boot配置编码过滤器

创建一个Web配置类,显式注入CharacterEncodingFilter,确保它在请求参数读取前生效:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;

@Configuration
public class WebEncodingConfig {
    @Bean
    public CharacterEncodingFilter characterEncodingFilter() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        filter.setForceEncoding(true); // 强制覆盖请求和响应的编码设置
        return filter;
    }
}

3. 调整Spring Security过滤器顺序(如果用了Security)

如果项目引入了Spring Security,它的过滤器链可能会提前读取请求参数。需要把编码过滤器放到Security认证过滤器前面:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

@EnableWebSecurity
public class SecurityConfig {

    @Autowired
    private CharacterEncodingFilter characterEncodingFilter;

    protected void configure(HttpSecurity http) throws Exception {
        // 把编码过滤器放在Security认证过滤器之前
        http.addFilterBefore(characterEncodingFilter, UsernamePasswordAuthenticationFilter.class);
        // 其他Security配置,比如放开接口权限
        http.authorizeHttpRequests(auth -> auth.anyRequest().permitAll());
    }
}

4. 检查Payara HTTP监听器配置

登录Payara管理控制台(默认地址http://localhost:4848),依次进入Configurations -> server-config -> HTTP Service -> HTTP Listeners -> http-listener-2,确认:

  • Request Encoding和Response Encoding设为UTF-8
  • 不要勾选Force Encoding选项

验证

重启Payara和Spring Boot应用,访问Controller接口,查看日志是否再出现AS-WEB-CORE-00059的警告。

内容的提问来源于stack exchange,提问作者barry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:22:38