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

Posted

技术标签:

【中文标题】如何在没有 Tomcat 的情况下在 Apache 2.2 上运行 Java 应用程序?【英文标题】:How can I run a Java app on Apache 2.2 without Tomcat? 【发布时间】: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更容易,不。 【参考方案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 几乎是强制性的

【讨论】:

以上是关于如何在没有 Tomcat 的情况下在 Apache 2.2 上运行 Java 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有添加的情况下在 Heroku 中启用堆栈跟踪

如何在没有中间目录的情况下在图库中编写视频?

如何在没有静态文本的情况下在 XCTest 中快速测试 Webview 是不是加载

如何在没有 IdlingResource 的情况下在 Espresso 中等待异步任务

如何在没有用户交互的情况下在后台接收 iOS 通知

如何在没有 iFrame 的情况下在另一个页面内显示外部网站? [关闭]