Android 与 EC2 与 RDS 之间的通信

Communication between Android and EC2 with RDS

我在 AWS 上有一个配置了 Apache tomcat 8 和 java 的 EC2 实例。 按照此处的一些教程,我可以在 eclipse 中创建一个 .war 我的 Web 服务,并将其放入我的 EC2 实例中 tomcat 的 webapps 文件夹中。 我可以使用特定端口和 .war 文件名从 EC2 的 IP 地址访问此服务。 例如:

IPADDRESS:8080/MyApplication.

似乎一切正常,我可以打开服务并查看 wsdl 文件。我的 Web 服务(在 .war 文件中)配置为与亚马逊的 RDS 实例建立连接。 连接本身没问题,我在本地主机上测试了与来自 Android 的 RDS 的直接连接。 但是,当我尝试连接我放在 EC2 中的服务时(从那里
与我的 RDS 的连接已创建)来自 Android,没有数据 returns,我得到一个空指针。 我用来从Android连接EC2的link是EC2的PublicIP和端口(8080),后面是wsdl文件的具体路径。 例如:

http://99.999.999.99:8080/MyApplication/services/SomeServiceName?wsdl

我正在使用 KSOAP 库在 Android 端使用 Web 服务,并且我 不知道我没有从 EC2 实例获取数据的原因。

Web 服务中的所有方法和 Android 中的消费都工作正常,我在本地主机上测试了所有方法。

问题是当我尝试更改通信线路时:

 *Android ->  My PC (localhost) -> RDS instance (My DB)*

收件人:

 *Android ->  EC2 instance -> RDS instance (My DB)*

同样,我在 EC2 中部署了我的 Web 服务。

入站规则:

http://i.stack.imgur.com/RUdyl.png

出站规则:

http://i.stack.imgur.com/W4gLc.png

我终于解决了问题

我做了以下事情: 我连接到我的 ECB2 实例并打开 tomcat 8 日志,所以我看到错误是 ClassNotFoundException,与 Postgres(我的引擎数据库)有关。

我打开我的 web 服务 eclipse 项目并看到这个(愚蠢的)错误:

.jar postgres 驱动程序在那个 lib 文件夹中:

而不是那个文件夹:

所以,基本上,当我在 EC2 实例中部署我的 Web 服务时,postgres 驱动程序没有一起运行。

感谢您的帮助,希望对其他人有所帮助。