【问题标题】:How can I run a Java app on Apache 2.2 without Tomcat?如何在没有 Tomcat 的情况下在 Apache 2.2 上运行 Java 应用程序?
【发布时间】:2013-06-06 18:10:04
【问题描述】:

我正在使用不使用 JSP 或 servlet 的 Java 构建 Web 服务,并且希望在我的 Apache HTTP 服务器上运行它,而无需安装和配置 Tomcat。这可能(很容易)吗,我该怎么做?

我一直在搜索这方面的信息,唯一遇到的是 mod_jk Tomcat 连接器,它仍然需要安装 Tomcat。我错过了什么吗?

【问题讨论】:

  • 我发现你不太可能在没有 servlet 的情况下用 Java 构建 web-anything,所以答案几乎肯定是否定的。如果您能解释一下您是如何不使用 servlet 的,那么您可能会有答案。
  • apache 用于a) 提供静态内容(图像、声音等)和b) 负载平衡,因为它比Tomcat 快。但这是与提供 java 生成内容的 Tomcat 协调完成的。
  • 是的,如果您想重新发明轮子并做 Tomcat 已经做的事情,您可以。 这是否可能(容易)比安装和配置Tomcat更容易,不。

标签: java apache tomcat


【解决方案1】:

当然有可能。你可以用 mod_cgi 来做。

一个非常简单的例子是这样的:

public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello Java CGI world!");
    }
}

然后是执行 Java 类的脚本文件(HelloWorld.shtml - 不要忘记执行权限)

#!/bin/bash
echo "Content-type: text/html"
echo ""

/usr/bin/java HelloWorld

在 Apache conf 中,只需定义您的脚本目录,如下所示:

ScriptAlias /cgi-bin/ /Users/hectorsuarez/Proyectos/test/cgi-bin/
<Directory "/Users/hectorsuarez/Proyectos/test/cgi-bin">
    SetHandler cgi-script
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

就是这样!这是一个非常简单和微不足道的例子。

这会变得复杂,因为您可能需要模板引擎和更好的方法来管理传入的 CGI 调用。但是,是的,这是可能的。

【讨论】:

  • 在 Perl 中避免这样做是 servlet(和 servlet 容器)首先被发明的原因(“首先”,我指的是 1990 年代)。这不会扩展。
【解决方案2】:

首先,Servlets 是用于 Web 开发的 Java 的基础。所以,无论你在做什么 Web 开发,比如 Web 服务,你都需要一个 Servlet 容器,比如 Tomcat。

所以你的问题的答案是“你不能只在 Apache HTTP Server 上运行它”,因为它不是一个 Servlet 容器。

【讨论】:

    【解决方案3】:

    尚不完全清楚您想要做什么,但我猜您想运行一个独立的 Java 应用程序,该应用程序可以处理 HTTP 请求并通过 Apache 公开它。如果是这种情况,您可以通过使用 mod_proxy 配置 Apache 来实现。 This 可能是一个很好的例子来说明如何做到这一点。

    【讨论】:

      【解决方案4】:

      不,Tomcat、jetty、jboss 或 Glassfish 几乎是强制性的

      【讨论】:

        猜你喜欢
        • 2014-10-26
        • 1970-01-01
        • 2012-11-13
        • 2019-01-15
        • 2020-10-19
        • 1970-01-01
        • 1970-01-01
        • 2013-05-31
        • 2016-01-29
        相关资源
        最近更新 更多