使用 java 开发 Apache 模块

Developing Apache Module using java

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

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

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

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

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

中构建 Apache 模块

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