【问题标题】:Getting request and creating HTTP response using Tomcat使用 Tomcat 获取请求并创建 HTTP 响应
【发布时间】:2011-04-13 23:42:24
【问题描述】:

我目前正在尝试为我的应用程序使用嵌入式 Tomcat,并尝试对其进行设置以获取 http 请求的 URL。

一些背景:

我在这里使用与第一个答案相同的代码:Howto embed Tomcat 6?

我所做的唯一更改是:

private String   catalinaHome = "/home/xyz/tomcat"; // This dir is created and has full access permissions

另外,我在看:http://tomcat.apache.org/tomcat-5.5-doc/catalina/docs/api/org/apache/catalina/startup/Embedded.html

我找不到 server.xml 和 tomcat-users.xml,所以我创建了一个 tomcat-users.xml,因为我遇到了一个异常:内存数据库文件 /home/xyz/tomcat/conf/tomcat- users.xml 无法读取。

tomcat-users.xml:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>

代码使用container.setRealm(new MemoryRealm()); 从这里看来:http://tomcat.apache.org/tomcat-4.1-doc/catalina/funcspecs/fs-memory-realm.html 我应该有一个 server.xml 文件,并且默认情况下应该已经创建了一个。

1] 我需要创建一个 server.xml,其中的默认值应该是什么? 我从这里放了一个默认文件:http://www.akadia.com/download/soug/tomcat/html/tomcat_server_xml.html,但只是想知道什么是正确的做法?

2]当我访问http://localhost:8089/mywebapp/index.html 时,我得到的只是请求的资源()不可用,尽管我在代码中的“webappDir”处有一个 index.html 页面

3] 我对嵌入式 tomcat 唯一需要的是拦截,以便在我的代码中获取传递给 tomcat 的 URL。然后我可以解析 URL [做我的事情],然后创建一个 http 有效负载并发回一个 http 响应。

我会很感激任何指针,尤其是对于 3]?

谢谢!

【问题讨论】:

    标签: apache tomcat webserver apache-commons-logging


    【解决方案1】:

    好的,对于你的第一个问题,你不需要 server.xml。如果您检查初始帖子的代码,他们正在那里设置参数。这就是 server.xml 将封装的内容。实际上,Tomcat 将解析 server.xml 以获取您在 java 文件中定义的属性,您可以在其中实例化 catalina 调用以启动。但由于它是嵌入的,因此您需要在类上设置所有这些参数。

    对于第二个问题,请检查您的日志目录并查看正在解析的内容。在您的服务启动后发生了一些事情,因为一旦您调用该端口,它应该已经重定向您。无论哪种方式,只需尝试http://localhost:8089 并查看您从tomcat 得到的回报。它应该给你某种来自服务器本身的响应。 如果你像这样“http://localhost:8089/mywebapp/index.html”这样做,你正在尝试访问创建的上下文,并且可能没有正确配置,但这只是现在的猜测。

    先试试这个,然后告诉我你会得到什么。我们可以从这一点开始进行故障排除,看看我是否能在这方面提供更多帮助。

    【讨论】:

    • 谢谢,这解释了 1] 问题。 localhost:8089 只是给出一个空白页。我假设这可能是因为没有静态文件所以结果是空白的。另外,如果您想聊天,我已经建立了一个新的聊天室,以便我们可以实时讨论任何问题:chat.stackoverflow.com/rooms/709/tomcat。再次感谢。
    • 我需要你先批准我的回答。我还是 stackoverflow 的新手,所以我还没有足够的声誉来聊天。批准会让我大吃一惊。
    • 我批准了这个答案,因为它回答了问题的第 1 部分]
    • 一块 C.... 由于某些奇怪的原因不允许我进入。无论如何,在我弄清楚聊天室发生了什么的同时,tomcat文件夹的目录结构是什么。目录结构应该引导您到文件的正确位置,以便将您的 index.html 放在其中
    • 好的,不能让它工作。我会一直在这里发帖帮助你。也许我们可以弄清楚发生了什么。我在想 webapps 根不是 tomcat 的根上下文,或者在你的类上没有很好地定义。与此同时,我将在那里开始故障排除。因为如果网页返回空是因为在这种情况下没有 index.html 文件可以参考。编辑:: 私人字符串 catalinaHome = "/home/xyz/tomcat";那是您嵌入的根tomcat安装。尝试在 tomcat 中放置索引并返回 localhost:8089
    【解决方案2】:

    快速提问,你安装的是windows还是linux? 如果是 linux,配置文件通常位于 /etc/tomcat6。 (至少在 ubuntu 上它们是)。回复您已安装的版本。我也许可以帮助你。 我想我也应该在这里详细说明一下。 Tomcat 也是 linux 中的服务,所以在 ubuntu 中你必须启动 tomcat 才能访问它。

    $: sudo service tomcat6 start
    

    然后它会在你的本地主机的 8080 端口(通常如果没有更改)上启动 tomcat。因此,您键入 localhost:8080 以访问该网站以配置 tomcat,从而为您提供 It works 提示。 如果您有更多问题,请告诉我,我会尽我所能回复

    【讨论】:

    • 感谢 Truesky 的回复。我正在使用 RedHat Linux。
    • 您使用的是什么版本的 RHL?
    • 感谢 Truesky 回复我的帖子。我想确保我强调我正在使用嵌入式 Tomcat 而不是实际安装 Tomcat,当我运行代码时我能够启动服务。从我在帖子中指出的代码来看,我正在使用端口 8089。如果您能回答我的问题 1] 和 2],我将不胜感激。多于 。再次感谢您的关注..
    • 我正在使用 Red Hat Enterprise Linux 客户端版本 5.4 (Tikanga)
    • 不是问题,我只是想了解您正在使用的系统的背景,因为在这个意义上可能有几种不同的方式来做事。我正在对嵌入式 tomcat 进行快速阅读,以尽可能地回答您的问题,以尝试指导您尝试做什么。在我这样做的时候给我几分钟。
    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多