當我在本地訪問spring boot應用程式時,它作業得很好并且正確。
當我在Apache Tomcat/7.0.76上部署時,我得到了以下錯誤:
FAIL - Application at context path /attributes could not be started
FAIL - 遇到例外org.apache.catalina.LifecycleException。未能啟動組件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/attributes]]
我按照這里的說明閱讀了許多與我類似的SO問題,但是找不到解決方案。
pom.xml
<?xml version="1.0" encoding="UTF-8"? >
<project xmlns="http://maven. apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"。
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"/span>>
<modelVersion>/span>4.0.0</modelVersion>/span>
<parent>/span>
<groupId>/span>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>/span>2.5.4</version>
<relativePath/> <!--從版本庫中查找父本--> < >
</parent>
<groupId>ch.xxx.app</groupId>
<artifactId>something-linkingservice</artifactId>
<version>0.0.1-SNAPSHOT</version>/span>
<packaging>war</packaging>/span>
<name>/span>xxx-linkingservice</name>/span>
<description>xxx</description>
<properties>/span>
<java.version>1.8</java.version>
</properties>/span>
<dependencies>>
<dependency>>
<groupId>/span>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>/span>
<dependency>>
<groupId>/span>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>/span>
<dependency>>
<groupId>/span>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>/span>
<! -- tag::security[] -->
<dependency>/span>
<groupId>/span>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>/span>
<dependency>>
<groupId>org.springframework.ldap</groupId>/span>
<artifactId>spring-ldap-core</artifactId>
</dependency>/span>
<dependency>>
<groupId>/span>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>/span>
<dependency>>
<groupId>/span>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>/span>
<dependency>>
<groupId>/span>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>/span>
<!-- tag::add for the missing the dependency for HttpSessionIdListener [] -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>/span>3.1.0</version>/span>
</dependency>/span>
</dependencies>
<build>/span>
<plugins>/span>
<plugin>/span>
<groupId>org.springframework.boot</groupId>/span>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>/span>
</plugins>/span>
</build>/span>
</project>
xxxLinkingserviceApplication.app
@SpringBootApplication
public class xxxLinkingserviceApplication extends SpringBootServletInitializer {
/**。
*在以WAR方式運行時使用
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(xxxLinkingserviceApplication.class)。
}
/**。
*作為JAR運行時使用
*/
public static void main(String[] args) {
SpringApplication.run(xxxLinkingserviceApplication.class, args)。
}
}
我使用mvn clean install構建戰爭,并將xxx-linkingservice-0.0.1-SNAPSHOT.war重命名為attribute.war,然后將其部署到Apache Tomcat/7.0.76。Tomcat將其安裝在/attributes下,但未能啟動它。
不知道這是否重要,但我構建.war的機器上的java版本是:
。
openjdk version "1.8.0_275"
OpenJDK運行時環境(AdoptOpenJDK)(build 1.8.0_275-b01)。
OpenJDK 64位服務器虛擬機(AdoptOpenJDK)(build 25.275-b01,混合模式)
同時,tomcat運行時使用。 Java 1.8.0_302-b08 Red Hat, Inc./p>
Update: 我嘗試按照這篇文章創建一個帶有 "vanilla "spring boot應用程式的新戰爭,在tomcat上啟動應用程式時收到了同樣的錯誤。
INFO: 部署網路應用存檔 /vol/data/tomcat/webapps/web-services.war
2021年9月10日 9:25:49 AM org.apache.catalina.startup.TldConfig execute
INFO: 至少有一個JAR被掃描為TLD,但不包含TLD。啟用此記錄器的除錯日志,以獲得被掃描但沒有 TLD 的 JAR 的完整串列。
的完整串列。在掃描程序中跳過不需要的JARs可以改善啟動時間和JSP編譯時間。
Sep 10, 2021 9:25:50 AM org.apache.catalina.core.ContainerBase addChildInternal
嚴重。ContainerBase.addChild: 開始。
org.apache.catalina.LifecycleException。啟動組件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/web-ser
vices]] 。
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1092)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:560)
在 org.apache.catalina.startup.HostConfig.check(HostConfig.java:1779)
at sun.reflect.GeneratedMethodAccessor188.invoke(未知來源)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.util.moder.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1506)
at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:285)
at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:205)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:607)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valts.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valls.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
在 java.lang.Thread.run(Thread.java:748)
原因是:org.springframework.context.ApplicationContextException。無法啟動Web服務器;嵌套的例外是java.lang.NoClassDefFoun
dError: javax/servlet/http/HttpSessionIdListener
在org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java
:163)
在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:577)
在org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:1
45)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:338)
at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:175)
我按照@Joachim Rohde的回答,在我的pom.xml中添加了servlet-api依賴項。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>/span>3.1.0</version>/span>
</dependency>/span>
據我所知,Tomcat 7帶有tomcat-servlet-3.0-api.jar。HttpSessionIdListener類根據這個檔案在3.1版本中出現。
這仍然不能解決我的問題,我仍然得到以下錯誤:
這仍然不能解決我的問題。
Sep 10, 2021 1:12:51 PM org.apache.catalina.startup.HostConfig deployWAR
嚴重。在部署網路應用程式存檔/vol/data/tomcat/webapps/web-services.war時出錯
java.lang.IllegalStateException。ContainerBase.addChild: start: org.apache.catalina.LifecycleException。未能啟動組件[StandardE
ngine[Catalina].StandardHost[localhost].StandardContext[/web-Services]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:903)
uj5u.com熱心網友回復:
在我的案例中,解決方案是pom.xml中的spring-boot-starter-version。這個版本必須是2.3.12.RELEASE(https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/310153.html
標籤:
