Android和EC2与RDS之间的通信

时间:2015-06-23 19:51:50

标签: java android amazon-web-services amazon-ec2 amazon-rds

我在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的服务时(从那里开始) 从Android创建与我的RDS的连接,没有数据返回,我得到一个空指针。 我用来与Android的EC2建立连接的链接是EC2的公共IP和端口(8080),后跟wsdl文件的特定路径。 例如:

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

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

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

  • 我使用SOAP UI测试了所有的Web服务方法,所有这些方法都在工作

  • 为了测试包含我的数据库的RDS实例,我使用tomcat 8和通信 Android - >运行localhost中的Web服务。我的电脑(localhost) - > RDS实例(我的数据库)正在运行。

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

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

TO:

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

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

  • 我对RDS和EC2使用相同的安全组:

入站规则:

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

出站规则:

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

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题。

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

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

.jar postgres驱动程序位于该lib文件夹中:

而不是该文件夹:

所以,基本上,当我在EC2实例中部署我的Web服务时,postgres驱动程序不会一起使用。

感谢您的帮助,我希望能帮助其他人。