java - 无法处理全局、每个主机或特定于上下文的 context.xml 文件,因此无法启动 [/AMWeb] 上下文
问题描述
伙计们,当我在 Spring Boot 中使用 JNDI 时,我在 Tomcat 中遇到了以下问题。请帮我解决以下错误。
java.lang.IllegalStateException: Error starting child
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:720)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:978)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1849)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:773)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1576)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:344)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
Caused by: org.apache.catalina.LifecycleException: Failed to process either the global, per-host or context-specific context.xml file therefore the [/AMWeb] Context cannot be started.
at org.apache.catalina.startup.FailedContext.startInternal(FailedContext.java:200)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
... 37 more
我的 application.properties
spring.datasource.jndi-name=java:comp/env/jdbc/users
我在 webapp/META-INF/context.xml 中的项目 Context XML for jndi
<?xml version="1.0" encoding="UTF-8"?>
<context>
<ResourceLink auth="Container" name="jdbc/users" type="javax.sql.DataSource" />
</context>
我的应用程序主类
@SpringBootApplication
public class AgentManagerWeb extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(AgentManagerWeb.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(AgentManagerWeb.class);
}
}
你能猜出这些问题吗?如果您有想法,请给我建议。
解决方案
您对 <context> 使用了小写 c 而不是 <Context>。
推荐阅读
- python - 使用 pandas 在数据框系列中插入空值
- laravel - Laravel 5.7 使用空关系连接查询
- matlab - 如何使用 powershell 处理 Matlab 生成的 .dat 文件
- c# - 如何获取当前使用的网络适配器
- asp.net - 当我在 WCF 服务中运行简单方法时,“/”应用程序中的服务器错误
- vue.js - 没有 Webpack 的 Vuejs 的简约构建设置
- javascript - CSS/JS:使用 vanilla JS 向下和向上滑动过渡
- php - 覆盖 woocommerce 主题没有效果
- sql - 表中的日期列
- git - 我是否必须将 gh-pages 合并到 master 才能发布带有 dist 文件夹的存储库?