问题:使用Openshift部署.war for PHP / Java bridge时收到“无法连接”错误
下面我描述我为了解决这个错误所采取的每一步,提前谢谢。
完整错误:(IP隐藏)
“致命错误:Uncaught无法连接到JEE服务器WXYZ:8080。请启动它。或者定义('JAVA_HOSTS',9267); define('JAVA_SERVLET',false);在包含'Java.inc'之前再试一次。错误消息:第989行/home/stevenw1/public_html/softwareProject/real/inc/Java.inc中的连接被拒绝(111)“
玩家:“Java_Bridge.war”=我将用于调用方法的java .war文件
“W.X.Y.Z”=已部署.war文件的IP地址不变
“GUIProfile”= @WebServlet("/GUIProfile")
为public class GUIProfile extends HttpServlet
的Java类
“tomcattest.php”=调用GUIProfile的静态方法'validate'的测试文件
部署的Java_Bridge.war和tomcattest.php在我的本地tomcat上运行正常,还没有在Openshift上运行。
塞纳里奥:
0.遵循Openshift 2012 java tomcat application的命令行步骤
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墨盒
remote:将SIGTERM发送给jboss:386662 ...
remote:由于缺少pom.xml而跳过Maven构建
remote:准备构建以进行部署
remote:部署ID为bd83d6eb
remote:激活部署
remote:+'['Java_Bridge.war']'
遥控器:启动jbossews盒
remote:找到W.X.Y.Z:8080监听端口//(非实际IP)
remote:Git Post-Receive结果:成功
remote:激活状态:成功
远程:部署已完成,状态为:成功
ssh://thisisnottheactualuser@tomcat6-notthenamehereeither.rhcloud.com
4.考虑.war已部署我运行了一个tomcattest.php,它使用php / java桥接器Java.inc来从扩展httpservlet的java类GUIProfile调用java方法'validate'。
//当然使用上面相同的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 = W.X.Y.Z
7. env | grep "PORT"
OPENSHIFT_JBOSSEWS_HTTP_PORT = 8080
OPENSHIFT_JBOSSEWS_JPDA_PORT = 8787
8.将tomcattest.php中的端口更改为8787,当然没有改变。
9.从顶部重新启动,这次保持./src/& amp; pom.xml,相同的'部署已完成状态:成功',同样的错误使用tomcattest.php和新的监听IP ...
10.试图解决'openshift youtube vid 2012'看起来过时的问题。一步一步跟随:
onced ssh'ed,没有“tomcat”dir,我使用cd $OPENSHIFT_DATA_DIR
代替访问数据目录
wget tomcat,将端口更改为&gt; 15000,sh startup.sh && tail -f ../logs/*
结果中值得注意的错误包括:
严重:无法初始化连接器[连接器[AJP / 1.3-15009]] org.apache.catalina.LifecycleException:无法初始化组件 [连接器[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:Permission 否认:15009
11.重新启动第6步,这次将IP保留原样,只将localhost更改为tomcat-stevenwernercs.rhcloud.com,结果与原始IP相同
12.网上用完了选项,然后我提出了这个问题......
13.然后我编辑了很多...
14.耐心等待:)
这就是我所做的一切,我不确定为什么php没有找到Java。
我看了以前的问题并没有找到任何帮助。
对任何事情开放,谢谢
答案 0 :(得分:0)
不允许非scable应用程序中的Gears在任何非http / ws端口上进行通信。因此,如果你的php java桥试图在15009(从我上面看到的)上与tomcat实例进行通信,那将无法正常工作。您只能在80/443/8000/8443上发出请求。你能验证一下java桥的端口是什么吗?
答案 1 :(得分:0)
替代解决方案:https://bitnami.com/cloud
我使用Bitnami与亚马逊AWS合作,提供1年的免费服务,易于遵循的文档,以及丰富和最新的文档,花了不到一个小时。
免责声明:在端口8080上使用ssh隧道我在tomhost上配置了tomcat,并将托管的.php移动到了 同样的微服务器也托管了tomcat。 (我放弃了尝试分别托管php和tomcat。) 我之前在我大学的tomcat服务器上分别托管了tomcat。但那是我完全可以访问的节点。
我仍然想尝试Openshifts免费解决方案,虽然我看到的当前资源和方法似乎不再有效。不幸的是,这些解决方法不够直观,而且目前还在我的脑海中。谢谢。