0

问题:使用 Openshift 为 PHP/Java 桥部署 .war 时收到“无法连接”错误

下面我描述了我为解决此错误而采取的每个步骤,在此先感谢。

完全错误:(IP隐藏)
“致命错误:未捕获无法连接到JEE服务器WXYZ:8080。请启动它。或定义('JAVA_HOSTS',9267);定义('JAVA_SERVLET',false);在包括'Java .inc' 并重试。错误消息:在第 989 行的 /home/stevenw1/public_html/softwareProject/real/inc/Java.inc 中抛出连接被拒绝 (111)

玩家: “Java_Bridge.war”=我的 java .war 文件,php 将使用它来调用来自
                 “WXYZ”的方法=已部署的 .war 文件的不变 IP 地址
                 “GUIProfile”=带有“tomcattest.php”的 Java 类@WebServlet("/GUIProfile")=public class GUIProfile extends HttpServlet
                 测试文件调用 GUIProfile 的静态方法“验证”

部署的 Java_Bridge.war 和 tomcattest.php 在我的本地 tomcat 上运行良好,只是在 Openshift 上还没有。

Senario:
0. 遵循Openshift 2012 java tomcat 应用程序
的命令行步骤 1. 使用 Openshift 的 rhc 我使用“ rhc app create -a tomcat6 -t jbossews-1.0”创建了我的第一个应用程序
2. cd ~/tomcat6/; git rm -rf ./src/ pom.xml
3. cp ~/Java_Bridge.war ./webapps/; git add ./webapps/Java_Bridge.war; git commit -m "first try"; git push
//值得注意的输出包括:
          远程:停止 jbossews 墨盒
          远程:向 jboss 发送 SIGTERM: 386662 ...
          远程:由于缺少 pom.xml
          远程而跳过 Maven 构建:为部署远程准备构建
          :部署 id 为 bd83d6eb
          远程:激活部署
          远程:+'['Java_Bridge.war']'
          远程:启动 jbossews 墨盒
          远程:找到WXYZ:8080监听端口//(不是实际IP)
          远程:Git Post-Receive 结果:成功
          远程:激活状态:成功
          远程:部署完成状态:成功
          到ssh://thisisnottheactualuser@tomcat6-notthenamehereeither.rhcloud .com

4. 考虑部署 .war 我运行了一个 tomcattest.php,它调用 java 方法“验证”,来自扩展 httpservlet 的 java 类 GUIProfile,使用 php/java 桥 Java.inc
//当然使用相同的 IP从上面...

cat tomcattest.php;

<?php

    define("JAVA_HOSTS", "W.X.Y.Z:8080");
    define("JAVA_SERVLET", "/Java_Bridge/GUIProfile");
    require_once("Java.inc");

    $valiationOutput = java_context()->getServlet()->validate("hello");

    echo $valiationOutput;

?>

编辑:后来也在所有情况下都尝试过:完全相同的结果

cat alternatetest.php
<?php

    define("JAVA_HOSTS", "W.X.Y.Z:8080");
    require_once("Java.inc");

    echo java("java.lang.System")->getProperties();

?>

调用 tomcattest.php 的输出是您在顶部看到的“致命错误”。

仔细检查:
5. ssh thisisnottheactualuser@tomcat6-notthenamehereeither.rhcloud.com
6. env | grep "IP"
          OPENSHIFT_JBOSSEWS_IP=WXYZ
7. env | grep "PORT"
          OPENSHIFT_JBOSSEWS_HTTP_PORT=8080
          OPENSHIFT_JBOSSEWS_JPDA_PORT=8787

8. 将tomcattest.php中的端口更改为8787,当然没有改变。
9. 从顶部重新启动,这次保持 ./src/ 和 pom.xml,同样的“部署完成,状态为:成功”,使用带有新监听 IP 的 tomcattest.php 时出现同样的错误...
10. 尝试了来自openshift youtube的解决方案vid 2012 ' 看起来已经过时了。循序渐进:
          曾经ssh'ed,没有“tomcat”目录,我用wget tomcatcd $OPENSHIFT_DATA_DIR访问数据目录
          ,将端口更改为> 15000,sh startup.sh && tail -f ../logs/*
          结果中的显着错误包括:

严重:无法初始化连接器 [Connector[AJP/1.3-15009]] org.apache.catalina.LifecycleException:无法初始化组件 [Connector[AJP/1.3-15009]] 严重:无法初始化连接器 [Connector[AJP/1.3] -15009]] org.apache.catalina.LifecycleException:无法初始化组件 [Connector[AJP/1.3-15009]] 严重:无法初始化与 ProtocolHandler ["ajp-bio-15009"] java.net.BindException 关联的端点:权限被拒绝:15009 严重:无法初始化与 ProtocolHandler [“ajp-bio-15009”] java.net.BindException 关联的端点:权限被拒绝:15009


11. 重新开始第 6 步,这次保留 IP,只将 localhost 更改为 tomcat-stevenwernercs.rhcloud.com,结果相同,但使用原始 IP
12. 在线选项不足,然后我提出了这个问题...
13.然后我编辑了很多...
14. 耐心等待 :)

这就是我所做的一切,我不确定为什么 php 找不到 Java。
我看了以前的问题没有发现任何帮助。
对任何事情都开放,谢谢

4

2 回答 2

0

替代解决方案:https ://bitnami.com/cloud

我使用 Bitnami 和 Amazon AWS 让它工作,它提供 1 年的免费服务,文档易于理解,而且内容丰富且最新,只用了不到一个小时。

免责声明:对端口 8080 使用 ssh 隧道我将 tomcat 配置为好像在 localhost 上一样,并将托管的 .php 移动到也托管 tomcat 的同一微服务器上。(我放弃了尝试分别托管 php 和 tomcat。)我之前在我大学的 tomcat 服务器上单独托管过 tomcat。但那是我可以完全访问的节点。

我仍然想尝试 Openshifts 免费解决方案,尽管我看到的当前资源和方法似乎不再有效。不幸的是,这些变通方法不够直观,目前已经超出了我的想象。谢谢你。

于 2014-03-11T08:39:02.233 回答
0

非扩展应用程序中的 Gear 不允许在任何非 http/ws 端口上进行通信。因此,如果您的 php java 网桥试图与 15009 上的 tomcat 实例通信(从我上面看到的),那将无法正常工作。您只能在 80/443/8000/8443 上提出请求。你能验证java桥在哪个端口上工作吗?

于 2014-03-10T14:37:24.117 回答