2015-06-23 53 views
0

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

IPADDRESS:8080/MyApplication. 

,一切似乎做工精细,我可以打开服务和看到的WSDL文件。我的Web服务(在.war文件中)被配置为与来自亚马逊的RDS实例建立连接。 连接本身没问题,我在本地主机上测试了与Android的RDS的直接连接。 但是,当我尝试连接使用安装在EC2中的服务(从
与我的RDS建立连接)时,没有数据返回,我得到一个空指针。 我用来与Android连接EC2的链接是EC2的公有IP和端口(8080),后面跟着wsdl文件的特定路径。 例如:

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

我使用KSOAP库消耗在Android端的Web服务,我 没有的,我没有得到来自EC2实例数据的原因想法。

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

  • 我用我的web服务的所有方法SOAP UI,并且所有的工作

  • 对于测试包含我的数据库的RDS实例中测试,我在本地主机与Tomcat的8运行Web服务和通讯Android - >我的电脑(本地主机) - > 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

+0

你可以在远程计算机上使用公共IP测试你的webservice吗?或者在ec2实例中使用localhost?你可以使用soap ui来测试你的web服务吗? - 您是否在ec2实例中配置安全组?也许端口8080不能从任何地方访问,试图给我们一点点的信息 –

+0

感谢您的答复,我做了一个edite,看看。 – Luiz

+0

是另一个名字,是的,是一样的。我没有看到单个“p”,我会编辑,谢谢。 – Luiz

回答

0

我终于解决了这个问题。

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

我打开我的web服务的Eclipse项目,看到这个(笨)错误:

具备.jar Postgres的司机在lib文件夹:

取而代之的是文件夹:

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

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