Apache、FCGI 和 Java 设置

Apache、FCGI 和 Java 设置

我有一个 Java 程序,我正尝试通过 Apache 2.4.7 Web 服务器在本地访问它。起初,我使用 mod_proxy_fcgi 将其设置为反向代理,这样我就必须使用配置 (1) 启动 Web 服务器,每次在请求网页之前从命令行手动启动 Java 程序 (2),然后使用查询字符串导航到正确的链接 (3)。这在我的测试中有效,并将从 Java 程序返回 JSON。

//(1) The configuration for the proxy that works
<IfModule proxy_fcgi_module> 
    ProxyPass /doTheThings/ fcgi://localhost:4000/
</IfModule>
<Proxy fcgi://localhost:4000/>
    ProxySet retry=0
</Proxy>

//(2) Command I entered into command line
java -DFCGI_PORT=4000 matdbquery/MatDbQuery  each time

//(3) The URL I would use
localhost/doTheThings/?noUpdate=false&whichData=layoutData 


现在,我希望能够做到这一点,这样我就不必每次都手动启动 Java 程序。Apache 使用 mod_proxy_fcgi 时会结束我的 Java 进程,因此它将不再接受新请求,这听起来就像 mod_proxy_fcgi 应该工作的方式,所以我决定开始使用 mod_fcgid。Java 程序已经在使用来自 fastcgi.com 的 FCGI 包,因此没有在那里进行任何更改。我现在不知道需要在 Apache 配置文件中输入什么。这只会变得更加困难,因为我无法调试问题,因为我不知道 java.exe 可能给出什么错误,也不知道 Apache 实际上正在运行什么命令,即使使用 LogLevel 调试也是如此。

(1) FCGI_PORT 在使用 mod_fcgid 进行此设置时起什么作用?
(2) 调用 java.exe 时,名称中永远不会包含 .class。我不知道如何控制 Apache 传递给 FcgidWrapper 的实际文件名,使用哪个指令(<Files>、<Directory>、<Location>)来说明哪些文件需要 AddHandler 和 FcgidWrapper,或者我如何在不使用文件扩展名 .class 的情况下声明 AddHandler

//Sample of a configuration that I tried so you can see my mindset?
<Files ~ "\.class$">
    Options ExecCGI
    AddHandler fcgid-script .class
    FcgidWrapper "\"C:/Program Files/Java/jre7/bin/java.exe\" -DFCGI_PORT=4000" virtual
</Files>

如果我觉得我完全不了解 FastCGI 或 Apache 的工作过程,最好能给出一个解释。

相关内容