使用 java 开发 Apache 模块

ror*_*oro 5 apache apache-modules

我看到很多关于如何使用 perl、C 构建 Apache 模块的示例,但没有文档描述如何使用 java 构建 Apache 模块。

是否可以使用 Java 构建 Apache 模块?

Art*_*mGr 3

这很少被实践,因为 Apache 经常产生多个进程(参见preforked),并且在每个进程中运行 Java 虚拟机会使 RAM 需求膨胀到很高的程度。

可以将 Apache 配置为仅使用单个进程(线程)。在这种模式下,这种安排更有意义。但像这样的 Apache 安装却很少。

不管怎样,运行 Java Apache 模块与在任何其他 C 代码中使用 Java 没有太大区别。您围绕 Apache 函数编写一个基于 JNI 的包装器,以便使它们可用于 Java 代码,您再次在 JNI 的帮助下生成 Java 虚拟机。JNI 是你的朋友。有很多关于它的文档,很多书籍。基本上,您需要知道如何用 C 语言编写自己的 Apache 模块,并且需要了解 JNI,瞧,您可以用 Java 构建 Apache 模块。

如果您正在寻找一个库来为您执行 JNI 提升,那么这不是 Stackoverflow 上的主题。由于上述原因,大多数库开发人员无论如何都不会去那里。以下是一项此类工作的摘录:“ mod_gcj 的最初计划是将 libgcj 运行时直接嵌入到 Apache 进程中,就像 mod_perl 所做的那样。不幸的是,使用线程的 Java 和使用分叉的 Apache 的传统处理模型之间存在一些冲突在 Unix 上。因此,mod_gcj 在一个独立的进程中运行,该进程是从 Apache 分叉出来的,并托管其多线程 libgcj 运行时。 ” - http://mod-gcj.sourceforge.net/about.html