【问题标题】:how to fix multiple deployment of a web application in a server如何修复服务器中 Web 应用程序的多个部署
【发布时间】:2019-11-04 13:18:24
【问题描述】:

我的网络应用程序(Spring boot 5+、hbernate 5.4、JPA、Maven、JSP)。在 localhost 机器上(tomcat 9.0.17 & mysql v5.7.26)网站运行良好,可以在 register.jsp 页面注册新用户。

当我在远程服务器 (Tomcat 9) 上部署 war 文件时,网站运行良好,但当我使用表单注册新用户时,出现以下异常(尽管网站的其他页面一直正常显示) :

   java.lang.IllegalStateException: Illegal access: this web 
   application instance has been stopped already. Could not load []. 
   The following stack trace is thrown for debugging purposes as 
   well as to attempt to terminate the thread which caused the 
   illegal access.
////.....
   2019-06-20 12:43:47,237 [Catalina-utility-1] INFO  
   org.apache.catalina.startup.HostConfig- Deploying web application 
   archive [/home/proz/tomcat/webapps/proz.net/ROOT.war]
  2019-06-20 12:43:59,099 [Catalina-utility-1] INFO  
  org.apache.catalina.core.ContainerBase.[Catalina].[proz.net].[/]- 
  2 Spring WebApplicationInitializers detected on classpath
  2019-06-20 12:44:02,052 [Catalina-utility-1] INFO  
  org.apache.catalina.core.ContainerBase.[Catalina].[proz.net].[/]- 
  Initializing Spring embedded WebApplicationContext
   2019-06-20 12:44:07,558 [Catalina-utility-1] INFO  
    org.apache.catalina.startup.HostConfig- Deployment of web 
   application archive [/home/proz/tomcat/webapps/proz.net/ROOT.war] 
   has finished in [20,321] ms
  2019-06-20 12:44:22,702 [ajp-nio-127.0.0.1-9549-exec-57] INFO  
 org.apache.catalina.core.ContainerBase.[Catalina].[proz.net].[/]- 
  Initializing Spring DispatcherServlet 'dispatcherServlet'

在堆栈跟踪中,我注意到我的应用程序有 2 次部署,这显然是我获得非法访问权限的原因。

1- From dispatcher servlet ..I believe this SpringBootServletInitializer 
2- From WebApplicationContext ...?

第二个网络初始化器从何而来?!!为什么这个异常没有出现在本地机器上?

【问题讨论】:

    标签: spring-boot threadpool tomcat9


    【解决方案1】:

    在我的案例中出现异常的原因是我在 application.properties 文件中添加了一些与 Tomcat 的远程服务器安装冲突的配置:

      # Load on startup priority of the dispatcher servlet. 
      spring.mvc.servlet.load-on-startup=-1 
      # Path of the dispatcher servlet.
      spring.mvc.servlet.path=/
      # Path pattern used for static resources.
      spring.mvc.static-path-pattern=/**
    

    在我评论了 3 行(第 2、4 和 6 行)...并重新部署了 war 文件后...问题解决了。

    我不知道为什么在本地主机上使用 Tomcat 时没有任何冲突。

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 2012-09-10
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      • 2010-12-12
      • 2020-09-17
      • 2019-03-10
      相关资源
      最近更新 更多