【问题标题】:List servlets in a java webapp (running in tomcat)列出 java webapp 中的 servlet(在 tomcat 中运行)
【发布时间】:2015-08-01 20:03:19
【问题描述】:

我正在尝试重新打包一个相对较大的 java webapp,我没有编码并且项目配置丢失。 我设置了第一个包装,并将其部署在 tomcat 中。现在要理解它,我想获取启动成功或失败的 servlet 列表,以及相应的访问 url。

  • 有没有办法获得该列表(可能来自一些启动日志)?

一些细节:webapp使用gwt(我不掌握),我在ubuntu上使用tomcat7。如果可行的话,我并不反对使用另一个 servlet 容器的解决方案。

【问题讨论】:

  • 你能给我们更多关于你的网络应用程序文件和目录的树文件夹的描述吗,你有 web.xml 吗?
  • 好吧,我不能共享 web.xml 内容,但它是一个非常标准的内容:一个指向 gwt 生成的 html 文件的欢迎文件、几个上下文参数和许多 servlet 和相应的 servlet 映射。我不确定的是那些工作(一些我不知道的 gwt 的东西),如果没有其他的。
  • 至于项目结构,我尝试用maven和gwt插件打包webapp,使用默认结构(据我了解)
  • 然后您可能需要了解一些 google web toolkit web app 结构的基础知识
  • 我不明白这个问题。我相信 GWT 与它完全无关,GWT 与 servlet 没有任何关系。您在 web.xml 中找到的 url 模式是您的“访问 url”。但是 servlet 没有启动,所以我不知道你还想检查什么。也许是在你的应用程序中找到尚未在 web.xml 中映射到 url 模式的 servlet 类?

标签: java tomcat servlets gwt


【解决方案1】:

我会写一个简单的JSP or ServletContextListener 来从servlet 上下文中读取所有ServletRegistratioins 并显示它们。

所以你的 JSP/ServletContextListener 会从

读取数据
servletContext.getServletRegistrations();

然后显示出来。

编辑

@WebServlet(urlPatterns = "/mappings")
public class TestServlet extends HttpServlet {

    private static final long serialVersionUID = -7256602549310759826L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        PrintWriter writer = resp.getWriter();

        Map<String, ? extends ServletRegistration> registrations = req
                .getServletContext().getServletRegistrations();

        for (String key : registrations.keySet()) {
            ServletRegistration registration = registrations.get(key);
            writer.write("Name: " + registration.getName());
            writer.write("<br>Mappings:");
            for (String mapping : registration.getMappings()) {
                writer.write(mapping);
            }
        }

        // of course you can write that to log or console also depending on your
        // requirement.
    }

}

【讨论】:

  • 我对jsp不熟悉。您能否提供有关ServletContextListener 方法的更多详细信息?我可以做这样一个servlet,但是如何输出结果呢?
  • 注册的 servlet 是否都是应由 servlet 上下文加载的所有 servlet,与声明方式和加载失败无关?
【解决方案2】:

您可以通过双击Tomcat并查看Modules选项卡来查看Tomcat中启动的模块和路径。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2015-06-21
  • 2015-03-12
  • 2014-06-27
  • 1970-01-01
  • 2014-01-21
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多