如何在没有Tomcat的情况下在Apache 2.2上运行Java应用程序?

22

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

我一直在搜索有关此问题的信息,但我找到的唯一一件事是mod_jk Tomcat连接器,它仍然需要安装Tomcat。我错过了什么吗?


1
我觉得你在Java中构建web应用程序而没有使用servlet的可能性非常小,所以答案几乎肯定是否定的。如果你能解释一下你如何不使用servlet,那么也许会有一个适合你的答案。 - Ryan Stewart
Apache 的用途是提供静态内容(图像、声音等)和负载均衡,因为它比 Tomcat 更快。但这是与为 Java 生成的内容提供服务的 Tomcat 协调完成的。 - SJuan76
是的,如果你想要重新发明轮子并做Tomcat已经做过的事情,那么你可以。但比起安装和配置Tomcat来说,这并不是一件更容易的事情。 - Alexandre Lavoie
4个回答

19
当然可以。您可以使用mod_cgi来完成它。
一个非常简单的示例如下:
public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello Java CGI world!");
    }
}

然后需要一个脚本文件(HelloWorld.shtml - 不要忘记赋予执行权限),用于执行Java类

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

/usr/bin/java HelloWorld
在Apache配置文件中,只需定义您的脚本目录,例如这样:

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调用。但是,是可以实现的。


2
避免在Perl中这样做,这也是Servlet(和Servlet容器)首次发明的原因(“首次”指的是上世纪90年代)。这种方法无法扩展。 - michael

6

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

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


4

不是很清楚你想要做什么,但我猜测你想运行一个独立的Java应用程序来处理HTTP请求,并通过Apache公开它。如果是这样,你可以使用mod_proxy配置Apache。这是一个不错的例子(链接)


0

不,Tomcat、jetty、jboss或Glassfish几乎是必需的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接