如何在没有 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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有静态文本的情况下在 XCTest 中快速测试 Webview 是不是加载