【发布时间】:2016-08-06 07:08:09
【问题描述】:
我在 AWS 上有一个配置了 Apache tomcat 8 和 java 的 EC2 实例。 按照这里的一些教程,我可以在 eclipse 中创建我的 Web 服务的一个 .war 并将其放在我的 EC2 实例中 tomcat 的 webapps 文件夹中。 我可以使用特定端口和 .war 文件名从 EC2 的 IP 地址访问此服务。 例如:
IPADDRESS:8080/MyApplication.
似乎一切正常,我可以打开服务并查看 wsdl 文件。我的 Web 服务(在 .war 文件中)配置为与来自亚马逊的 RDS 实例建立连接。
连接本身没问题,我在 localhost 中测试了与 Android 的 RDS 的直接连接。
但是,当我尝试连接我放入 EC2 中的服务时(从那里
与我的 RDS 的连接是从 Android 创建的,没有数据返回,我得到一个空指针。
我用来从 Android 与 EC2 建立连接的链接是 EC2 的公共 IP 和端口(8080),然后是 wsdl 文件的特定路径。
例如:
http://99.999.999.99:8080/MyApplication/services/SomeServiceName?wsdl
我正在使用 KSOAP 库在 Android 端使用 Web 服务,我 不知道我没有从 EC2 实例获取数据的原因。
Web服务中的所有方法和Android中的消费都可以正常工作,我在本地主机上测试了所有。
我使用 SOAP UI 测试了我所有的 Web 服务方法,所有方法都可以正常工作
为了测试包含我的数据库的 RDS 实例,我在 localhost 中使用 tomcat 8 和通信运行 Web 服务 Android -> 我的 PC (localhost) -> RDS 实例 (My DB) em> 正在工作。
问题是当我尝试从以下位置更改通信线路时:
*Android -> My PC (localhost) -> RDS instance (My DB)*
到:
*Android -> EC2 instance -> RDS instance (My DB)*
再次,我在 EC2 中部署我的 Web 服务。
- 我为 RDS 和 EC2 使用相同的安全组:
入站规则:
http://i.stack.imgur.com/RUdyl.png
出站规则:
【问题讨论】:
-
你能在远程计算机上使用公共 ip 测试你的 web 服务吗?还是在 ec2 实例中使用 localhost?例如,您可以使用soap ui 测试您的Web 服务吗? - 您是否在 ec2 实例中配置了安全组?可能无法从任何地方访问端口 8080,请尝试给我们更多信息
-
感谢回复,我编辑一下,看看。
-
是另一个名字,是的,是一样的。我没有看到单个“p”,我会编辑,谢谢。
-
1 首先,在您的智能手机中下载一个应用程序来ping ip 地址,2 检查您的智能手机是否看到您的ec2 实例的公共IP 地址,3 如果它看不到IP 地址尝试使用ec2 实例的公共 DNS 而不是公共 IP 地址,4 对您的 ec2 实例而不是您的计算机进行肥皂 ui 测试,5 如果您可以执行您的测试用例,这意味着您的 ec2 实例和您的应用程序工作正常, 和你的android应用程序有关的问题,6让我们知道步骤的结果,以便帮助你
标签: java android amazon-web-services amazon-ec2 amazon-rds