【问题标题】:How to change routes for Tomcat ROOT, manager, host-manager directories (menus)如何更改 Tomcat ROOT、管理器、主机管理器目录(菜单)的路由
【发布时间】:2019-08-06 08:03:13
【问题描述】:

我已将 Tomcat 的 ROOT 应用程序更改为 /panel 目录,因为我为部署的应用程序使用了“/”目录。 如何配置 Tomcat 以访问其他路由中的主菜单(ROOT 应用程序)和管理器(管理器、主机管理器),因为当前我在尝试导航 /manager 时遇到错误

我正在访问http://localhost:8080/panel/ 上的主页面板

<Context path="/panel" docBase="ROOT"></Context>

点击“管理应用”将我路由到http://localhost:8080/manager/html 并给出错误

HTTP 状态 404 - 未找到

类型状态报告

找不到消息

描述 源服务器没有找到当前的表示 对于目标资源或不愿意透露存在的资源

我尝试添加

<Context path="/manager" docBase="manager"></Context>

但这给了我错误

HTTP 状态 500 – 内部服务器错误

键入异常报告

消息错误实例化 servlet 类 [org.apache.catalina.manager.HTMLManagerServlet]

描述 服务器遇到了一个意外情况 阻止它完成请求。

例外

javax.servlet.ServletException:实例化 servlet 类时出错 [org.apache.catalina.manager.HTMLManagerServlet] org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:607) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748)

根本原因

java.lang.SecurityException: 访问类 [class org.apache.catalina.manager.HTMLManagerServlet] 是被禁止的。它是一个 受限类(实现 ContainerServlet 接口)。一个网络 应用程序必须配置为特权才能加载它 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:607) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748)

注意根本原因的完整堆栈跟踪在服务器中可用 日志

.

【问题讨论】:

  • 从头开始使用新的 tomcat 时,只需将文件夹 webApps/ROOT 重命名为 'webApps/panel'。无需使用 &lt;Context/&gt; 元素覆盖 server.xml 中的上下文配置。我对tomcat安装还做了什么?由于缺乏细节,无法重现。
  • 请仔细查看webapps\manager\META-INF\context.xml,了解如何正确配置管理器上下文。这可以帮助您防止java.lang.SecurityException
  • 将 ROOT 文件夹重命名为面板效果很好。

标签: tomcat tomcat9


【解决方案1】:

一个选项; 在你的server.xml:

<Context path="/manager" privileged="true"/>

【讨论】:

    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    相关资源
    最近更新 更多