WebLogic部署Spring Boot2.0.0加载自定义Message资源遇JspTagException
排查WebLogic下Spring Boot MessageSource找不到消息的问题
这种Tomcat正常但WebLogic出问题的情况,大概率是类加载机制或者资源路径解析的差异导致的——毕竟WebLogic的类加载模型和Tomcat有不少区别。咱们一步步来拆解问题:
1. 先修正资源路径的大小写细节
你配置里写的是classPath:,但标准的classpath前缀应该是小写的p:classpath:。虽然Java本身对大小写不敏感,但WebLogic的资源解析器可能对这个更严格,先把配置里的classPath:改成classpath:试试:
@Configuration public class ResouceBundleConfig { @Bean public MessageSource messageSource (){ ReloadableResourceBundleMessageSource messageSourceResourceBundle=new ReloadableResourceBundleMessageSource(); // 修正classPath为classpath messageSourceResourceBundle.setBasenames("classpath:inheritanceMessage","classpath:publicMessage"); messageSourceResourceBundle.setDefaultEncoding("UTF-8"); return messageSourceResourceBundle; } }
同时把application.yml里的配置也同步修正:
spring: messages: basename: classpath:inheritanceMessage,classpath:publicMessage
2. 确认资源文件的打包位置
WebWar包部署时,.properties资源文件必须放在WEB-INF/classes目录下。你可以手动解压War包检查:
- 看看
inheritanceMessage.properties、inheritanceMessage_en_US.properties这些文件是不是在WEB-INF/classes目录里 - 如果你的资源文件放在
src/main/resources下,Maven/Gradle打包时应该会自动复制到这里,但WebLogic对War结构要求更严格,确保没有被遗漏
3. 解决Spring Boot Bean加载优先级冲突
WebLogic环境中,Spring Boot的自动配置可能和你自定义的MessageSource Bean产生冲突。你可以试试两种方案:
- 给自定义的
MessageSourceBean加上@Primary注解,确保它被优先加载:
@Bean @Primary public MessageSource messageSource (){ // ... 原有代码逻辑 }
- 或者直接禁用Spring Boot自动配置的MessageSource,在启动类上添加排除配置:
@SpringBootApplication(exclude = {MessageSourceAutoConfiguration.class})
4. 验证资源文件的命名与编码
- 确保英文locale文件的命名完全正确:比如
inheritanceMessage_en_US.properties,别出现拼写错误(少下划线、大小写错误等) - 检查
.properties文件的编码确实是UTF-8。虽然Spring Boot默认支持UTF-8,但WebLogic的老版本可能存在兼容问题,你可以尝试用native2ascii工具转成ASCII编码后再测试
5. 手动调试资源加载状态
你可以在代码里加一段调试逻辑,确认WebLogic能不能读取到目标资源:
@Autowired private ResourceLoader resourceLoader; // 在任意可执行的方法中添加测试代码 public void testResourceLoad() { Resource resource = resourceLoader.getResource("classpath:inheritanceMessage_en_US.properties"); System.out.println("资源是否存在:" + resource.exists()); }
如果输出false,说明WebLogic确实找不到该资源,那就要回到资源打包路径的问题上重新排查。
内容的提问来源于stack exchange,提问作者user9826539
相关产品推荐
相关产品推荐

