Flemington@ 2023-09-17 21:50 采纳率: 0%
浏览 8

win系统下Tomcat虚拟主机在Catalina目录无法生成

本人菜菜大学牲一枚,发的问题描述有些笼统和逻辑性可能有些欠缺,困扰了好久好久,有人看的话,我第一时间补充细节和具体经过,再次求帮助

使用eclipse学习Javaweb Tomcat在创建虚拟主机一步无法在Tomcat的\conf\Catalina下面生成server.xml里面配置的新主机的文件夹,具体过程如图

img

在E盘的工作空间有一个myweb动态项目,webapp目录下是示例代码文件,已经安装的Tomcat版本为9.0,当启动Tomcat服务时候,运行hello.html文件可以正常运行

然后在C:\Tomcat9\mywebapps\myweb目录下面将原E盘workspace里面的myweb复制到了新目录C:\Tomcat9\mywebapps\myweb下面即

img


<Engine defaultHost="localhost" name="Catalina">

            <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html 
                (simple how to) /docs/config/cluster.html (reference documentation) -->
            <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> -->

            <!-- Use the LockOutRealm to prevent attempts to guess user passwords 
                via a brute-force attack -->
            <Realm className="org.apache.catalina.realm.LockOutRealm">
                <!-- This Realm uses the UserDatabase configured in the global JNDI resources 
                    under the key "UserDatabase". Any edits that are performed against this UserDatabase 
                    are immediately available for use by the Realm. -->
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
            </Realm>

            <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

                <!-- SingleSignOn valve, share authentication between web applications 
                    Documentation at: /docs/config/valve.html -->
                <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" 
                    /> -->

                <!-- Access log processes all example. Documentation at: /docs/config/valve.html 
                    Note: The pattern used is equivalent to using pattern="common" -->
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>
                    
                <Valve allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" className="org.apache.catalina.valves.RemoteHostValve"/>

                <Context docBase="WebTest/src/main/webapp" path="/WebTest" reloadable="true" source="org.eclipse.jst.jee.server:Online_course_selection_system"/>
                <Context docBase="myweb" path="/myweb" reloadable="true" source="org.eclipse.jst.jee.server:myweb"/>
            </Host>
            <Host name="www.reco.com" appBase="C:/Tomcat/mywebapps/myweb" unpackWARs="true" autoDeploy="true">
                <Context docBase="C:/Tomcat/mywebapps/myweb" path="/hello" reloadable="true" source="org.eclipse.jst.jee.server:hello"/>
             </Host>
            
        </Engine>

以上为Engine标签内的代码设置

img

这是web.xml文件内容

img

这是hosts文件里面最后一行给虚拟主机加的映射

img

当重启Tomcat服务时候,多出来一个Tomcat目录,但是

img

Catalina目录里面没有新设的
http://www.reco.com/
主机名

img

以上是在浏览器用
http://www.reco.com/
主机名访问mywebapps里面的复制的myweb文件时候,找不到资源

附上Tomcat日志

917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server.服务器版本: Apache Tomcat/9.0.76
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 服务器构建:        Jun 5 2023 07:17:04 UTC
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 服务器版本号:      9.0.76.0
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 操作系统名称:      Windows 10
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS.版本:           10.0
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 架构:              amd64
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Java 环境变量:     E:\eclipse-jee-2023-06-R-win32-x86_64\eclipse\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.7.v20230425-1502\jre
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Java虚拟机版本:    17.0.7+7
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM.供应商:        Eclipse Adoptium
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_BASE:     E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_HOME:     C:\Tomcat9
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       -Dcatalina.base=E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       -Dcatalina.home=C:\Tomcat9
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       -Dwtp.deploy=E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       --add-opens=java.base/java.lang=ALL-UNNAMED
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       --add-opens=java.base/java.io=ALL-UNNAMED
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       --add-opens=java.base/java.util=ALL-UNNAMED
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       -Dfile.encoding=UTF-8
917, 2023 9:26:49 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: 命令行参数:       -XX:+ShowCodeDetailsInExceptionMessages
917, 2023 9:26:49 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: 在java.library.path:[E:\eclipse-jee-2023-06-R-win32-x86_64\eclipse\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.7.v20230425-1502\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;E:/eclipse-jee-2023-06-R-win32-x86_64/eclipse//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.7.v20230425-1502/jre/bin/server;E:/eclipse-jee-2023-06-R-win32-x86_64/eclipse//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.7.v20230425-1502/jre/bin;C:\Program Files\Common Files\Oracle\Java\javapath;D:\vm16pro\bin\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Java\jdk-11\bin;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;D:\python1;D:\Program Files\Java\jdk-19;D:\za\x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0\mingw64\bin;D:\za\mysql-8.0.31-winx64\mysql-8.0.31-winx64\bin;C:\Program Files\dotnet\;C:\Program Files\Bandizip\;D:\za\edgedriver_win64 (1);D:\za\apache-maven-3.9.4-bin (2)\apache-maven-3.9.4\bin;D:\python1\Scripts\;D:\python1\;C:\Users\DELL\AppData\Local\Microsoft\WindowsApps;D:\PyCharm 2021.1.3\bin;;d:\Users\DELL\AppData\Local\Programs\Microsoft VS Code\bin;D:\Program Files\Java\jdk-19\bin;D:\Program Files\Java\jdk-19\jre\bin;;E:\eclipse-jee-2023-06-R-win32-x86_64\eclipse;;.]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能
917, 2023 9:26:50 下午 org.apache.coyote.AbstractProtocol init
信息: 初始化协议处理器 ["http-nio-8080"]
917, 2023 9:26:50 下午 org.apache.catalina.startup.Catalina load
信息: 服务器在[1567]毫秒内初始化
917, 2023 9:26:50 下午 org.apache.catalina.core.StandardService startInternal
信息: 正在启动服务[Catalina]
917, 2023 9:26:50 下午 org.apache.catalina.core.StandardEngine startInternal
信息: 正在启动 Servlet 引擎:[Apache Tomcat/9.0.76]
917, 2023 9:26:51 下午 org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
警告: 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[106]毫秒。
917, 2023 9:26:51 下午 org.apache.catalina.startup.HostConfig deployDescriptor
信息: 正在部署部署描述符[E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\myweb.xml]917, 2023 9:26:51 下午 org.apache.catalina.startup.HostConfig deployDescriptor
警告: 部署描述符[E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\myweb.xml]中值为[/myweb]的路径属性已被忽略
917, 2023 9:26:51 下午 org.apache.catalina.startup.HostConfig deployDescriptor
信息: 部署描述符[E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\myweb.xml]的部署已在[123]ms内完成
917, 2023 9:26:51 下午 org.apache.catalina.startup.HostConfig deployDescriptor
信息: 正在部署部署描述符[E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\WebTest.xml]917, 2023 9:26:51 下午 org.apache.catalina.startup.HostConfig deployDescriptor
警告: 部署描述符[E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\WebTest.xml]中值为[/WebTest]的路径属性已被忽略
917, 2023 9:26:51 下午 org.apache.catalina.startup.HostConfig deployDescriptor
严重: 部署描述符[E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\WebTest.xml]时出错
java.lang.IllegalStateException: 启动子级时出错
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:686)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:662)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:689)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1888)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:582)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1617)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318)
    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:893)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:795)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1328)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1318)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:249)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:923)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
Caused by: org.apache.catalina.LifecycleException: 无法启动组件[org.apache.catalina.webresources.StandardRoot@7e985ce9]
    at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4607)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4740)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
    ... 37 more
Caused by: java.lang.IllegalArgumentException: 指定的主资源集 [E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\WebTest\src\main\webapp] 无效
    at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:749)
    at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:707)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    ... 41 more

917, 2023 9:26:51 下午 org.apache.catalina.startup.HostConfig deployDescriptor
信息: 部署描述符[E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\WebTest.xml]的部署已在[28]ms内完成
917, 2023 9:26:52 下午 org.apache.coyote.AbstractProtocol start
信息: 开始协议处理句柄["http-nio-8080"]
917, 2023 9:26:52 下午 org.apache.catalina.startup.Catalina start
信息: [1454]毫秒后服务器启动


发的问题描述有些笼统和逻辑性可能有些欠缺,困扰了好久好久,有人看的话,我第一时间补充细节和具体经过,再次求帮助

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-18 08:09
    关注

    【以下回答由 GPT 生成】

    你好,

    根据你提供的信息,问题可能出在你尝试在错误位置配置虚拟主机。

    在Tomcat中,虚拟主机的配置应该放在server.xml文件中的<Host>元素中,并且在<Engine>元素内部的<Service>元素下。

    你提到尝试在server.xml中配置新的主机,但无法在Catalina目录下生成相应的文件夹和配置。首先,确保你是以管理员权限运行eclipse和Tomcat服务。

    以下是解决该问题的步骤:

    1. 首先关闭你的Tomcat服务。

    2. 打开你的server.xml文件,应该位于Tomcat的conf目录下。

    3. 然后,找到<Engine>标签,并定位到<Host>标签内部。它应该看起来像这样:

    <Engine defaultHost="localhost" name="Catalina">
        <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
            ...
        </Host>
    </Engine>
    
    1. 在这个<Host>标签内,你可以添加额外的虚拟主机配置。在你的情况下,你想要添加一个新的虚拟主机,名字为myweb,应该按照以下方式进行配置:
    <Host appBase="C:\Tomcat9\mywebapps\myweb" autoDeploy="true" name="myweb" unpackWARs="true">
        ...
    </Host>
    

    请注意,appBase属性应该设置为你的myweb项目的根目录路径。

    1. 保存并关闭server.xml文件。

    2. 启动Tomcat服务。确保在启动之前,你已经将myweb项目复制到了C:\Tomcat9\mywebapps\目录下。

    3. 当Tomcat服务成功启动后,你可以尝试通过访问http://myweb:8080/来访问你的myweb项目。

    希望这些步骤能够解决你的问题。如果你还有任何疑问,请随时再问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月17日

悬赏问题

  • ¥15 如何在sql server里完成筛选
  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了