我看到很多关于如何使用perl,C构建Apache模块的示例,但是没有文档来描述如何使用java构建Apache模块。
是否可以使用Java构建Apache模块?
答案 0 :(得分:2)
这很少被实践,因为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上使用forking。因此,mod_gcj在一个独立的进程中运行,该进程从Apache派生并托管其多线程libgcj运行时。“ - http://mod-gcj.sourceforge.net/about.html