问题描述
按照此处给出的教程:https://www.codejava.net/servers/tomcat/how-to-embed-tomcat-server-into-java-web-applications,我尝试在单独的嵌入式 tomcat 配置项目中部署 Spring war 文件。这是我的 java 配置和我的 build.gradle 配置:
嵌入式 Tomcat 的 Java 配置:
public static void main(String[] args) throws LifecycleException {
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir("temp");
tomcat.setPort(9000);
String contextpath = "";
String docBase = new File("spring.war").getAbsolutePath();
tomcat.getHost().setAppBase(".");
tomcat.addWebapp(contextpath,docBase);
tomcat.start();
tomcat.getServer().await();
}
Gradle 构建文件:
plugins {
id 'java'
id 'application'
}
group 'org.example'
version '1.0-SNAPSHOT'
mainClassName = 'TomcatDriver'
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.apache.tomcat.embed',name: 'tomcat-embed-core',version: '9.0.37-dev'
compile group: 'org.apache.tomcat.embed',name: 'tomcat-embed-jasper',version: '9.0.37'
compile group: 'org.apache.tomcat',name: 'tomcat-juli',name: 'tomcat-annotations-api',version: '9.0.37'
}
当我从 Intellij Idea(社区)运行时,该应用程序似乎确实进行了一些初始化,但在浏览器上访问指定地址时出现错误:
无法访问此站点 本地主机拒绝连接。 尝试: 检查连接 检查代理和防火墙 ERR_CONNECTION_REFUSED
这是我在使用 Intellij Idea(社区)运行应用程序时得到的日志:
17:13:32: Executing task 'TomcatDriver.main()'...
> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes
> Task :TomcatDriver.main()
Jan 20,2021 5:13:34 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Tomcat]
Jan 20,2021 5:13:34 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.37]
Jan 20,2021 5:13:34 PM org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
INFO: No global web.xml found
Jan 20,2021 5:13:37 PM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (nop) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Jan 20,2021 5:13:37 PM org.apache.catalina.core.ApplicationContext log
INFO: 1 Spring WebApplicationInitializers detected on classpath
Jan 20,2021 5:13:37 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Jan 20,2021 5:13:38 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitinformation
INFO: HHH000204: Processing PersistenceUnitInfo [
name: default
...]
Jan 20,2021 5:13:39 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.3.7.Final}
Jan 20,2021 5:13:39 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Jan 20,2021 5:13:39 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
Jan 20,2021 5:13:40 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MysqLDialect
Jan 20,2021 5:13:42 PM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 6.1.7.Final
谁能建议我在配置中做错了什么?相同的配置适用于带有版本 8 https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-core/8.0.48 的嵌入式 tomcat 的非 Spring 项目。
嵌入式 Tomcat 8 jar 似乎无法运行 Spring 项目。我在这里读到 Spring boot WAR deployment failed to start in Tomcat Spring war 文件可能需要 Tomcat 9 才能部署。这就是我尝试使用 tomcat 9 jars 的原因。
更新
我认为这篇文章解决了我遇到的问题:Code works with Embedded Apache Tomcat 8 but not with 9. What's changed?
提前致谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)