• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

为什么war包在Windows的tomcat正常运行,在linux服务器报errorpage错误?

最近项目完成后打包成war发布到服务器遇到访问应用404问题,用的是tomcat8.5,错误信息如下:o.s.b.w.servlet.support.ErrorPageFilter  : Cannot forward to error page for request [/login] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false项目是springboot+security+mybatis,ide 用的idea,打包方式用的是build菜单中的Build Artifactis

security配置
protected void configure(HttpSecurity http) throws Exception {    http.authorizeRequests()                //处理preflight请求                //.requestMatchers(CorsUtils::isPreFlightRequest).permitAll()                .antMatchers("/user/login").permitAll()                .antMatchers("/login").permitAll()                .antMatchers("/login/error").permitAll()                .anyRequest().authenticated()                .and()                //设置登录页            .formLogin()                //设置登录成功页                .loginPage("/login")                .successHandler(securityLoginSuccessHandler)                .failureHandler(securityLoginFailureHandler)                .and()            .logout()                .logoutUrl("/logout")                .logoutSuccessHandler(securityLogoutSuccessHandler)                .deleteCookies("JSESSIONID")                .and()            .sessionManagement()                //session超时处理                .invalidSessionUrl("/login/invalid")                .maximumSessions(1)                //老用户被踢出后操作                .expiredSessionStrategy(new SecurityExpiredSessionStrategy());    http.csrf().disable()            .exceptionHandling().accessDeniedHandler(securityAccessDeniedHandler);}loginpage的“/login”配置如下:
@RequestMapping("/login")public String  showLogin() throws IOException {    System.out.println("调用loginController的登录方法");    return "index.html#/login";}遇到这个问题时,参考https://blog.csdn.net/weixin_41622183/article/details/84652437
这篇博客在启动类加入配置:
public class KpApplication extends SpringBootServletInitializer {    public static void main(String[] args) {        SpringApplication.run(KpApplication.class, args);    }    @Bean    public ErrorPageFilter errorPageFilter() {        return new ErrorPageFilter();    }    @Bean    public FilterRegistrationBean disableSpringBootErrorFilter(ErrorPageFilter filter) {        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();        filterRegistrationBean.setFilter(filter);        filterRegistrationBean.setEnabled(false);        return filterRegistrationBean;    }}重新打包发布到linux服务器,新的错误信息为: o.s.b.d.LoggingFailureAnalysisReporter   :


***************************
APPLICATION FAILED TO START
***************************


Description:


The bean 'errorPageFilter', defined in org.springframework.boot.web.servlet.support.ErrorPageFilterConfiguration, could not be registered. A bean with that name has already been defined in com.kpzdh.kp.KpApplication and overriding is disabled.


Action:


Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
然后参考:https://blog.csdn.net/weixin_42633131/article/details/84782516 这篇博客,在yml配置中加入配置:
spring:  jmx:    default-domain: demo  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8    username: root    password: root  main:    allow-bean-definition-overriding: true    如上配置之后,两个错误信息都没有出现了,但是还是404,查看日志,"/login"路径的"调用loginController的登录方法"已经输出了,但是浏览器控制台中,/login路径还是404,请问该如何解决呢?这个问题已经困扰很久了,希望大家能帮帮我,万分感谢!

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

您好,请问您解决这个问题了么?我被这个问题困了好几天了?

使用道具 举报

发新帖

发布任务需求已有1031166位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!