Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AmazonAWS上运行java应用程序_Java_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

在AmazonAWS上运行java应用程序

在AmazonAWS上运行java应用程序,java,amazon-web-services,amazon-ec2,Java,Amazon Web Services,Amazon Ec2,我制作了一个EC2 VPC RHEL实例,并部署了一个运行嵌入式jetty web服务器的java应用程序。为了简单理解,这个web应用程序提供基本的HTML请求。在我的初始测试中,我创建了一个安全组,允许所有传入和传出流量(所有0.0.0.0/0,::/0) 我本想从公共IP地址浏览网页,但不知怎么的,它不起作用。我还验证了Jetty正在监听0.0.0.0。所以,码头似乎不是问题。我花了半天的时间弄明白了,但它不起作用,也无法找出原因 然后,我制作了一个非常基本的TCP server(),并部

我制作了一个EC2 VPC RHEL实例,并部署了一个运行嵌入式jetty web服务器的java应用程序。为了简单理解,这个web应用程序提供基本的HTML请求。在我的初始测试中,我创建了一个安全组,允许所有传入和传出流量(所有0.0.0.0/0,::/0)

我本想从公共IP地址浏览网页,但不知怎么的,它不起作用。我还验证了Jetty正在监听0.0.0.0。所以,码头似乎不是问题。我花了半天的时间弄明白了,但它不起作用,也无法找出原因

然后,我制作了一个非常基本的TCP server(),并部署在同一个AWS ec2实例上,然后我尝试从我的系统中以TCP客户端的形式从客户端发送请求,但它不起作用

但是,我正在从WinSCP传输文件,并仅使用此公共IP从putty运行命令。这意味着公共IP不是问题

我可以看到putty、WinSCP和我的java客户端的唯一区别是,使用putty,我还提供私钥作为授权过程的一部分(在auth中),但在java或浏览器中,我直接访问它

无法理解问题可能在哪里。从公共IP呼叫(ec2 xx xx xx xxx xxx.xx-west-2.compute.amazonaws.com)到私有IP呼叫的DNS转换是否存在问题,或者这是授权问题

下面是AWS的Netstat跟踪(运行在8080上的Web服务器,我在IP4堆栈上运行jvm,并使用-Djava.net.preferIPv4Stack=true)

[ec2-user@ip-172-31-xx-xxx~]$sudo netstat-plnt

活动Internet连接(仅限服务器) Proto Recv-Q Send-Q本地地址外部地址状态PID/程序名

tcp 0.0.0.0:8080 0.0.0.0:*收听9321/java
tcp 0.0.0.0:22 0.0.0.0:*收听1627/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:*收听1091/master
tcp6 0:::22::*收听1627/sshd
TCP60:1:25::*听1091/master


有什么帮助吗?

很抱歉打扰读者。我做了一切,但问题还是发生了。然后我把客户端程序给了我的一个同事,他在他的家庭网络上,在那里它工作


因此,问题不在AWS中,而是在我的公司网络安全中,它以某种方式阻止了请求。

您是否在安全组上打开了端口8080?我已经提到过“我创建了一个安全组,允许所有传入和传出流量”。公司阻止DNS、HTTP、HTTPS以外的端口是很常见的(如果需要,还可以使用FTP、SSH和SMTP/POP3/IMAP)。这使得在端口8080上测试webapps成为一个挑战。您可以使用SSH本地端口转发(SSH-i user.pem-L 9000:localhost:8080 ec2)-user@ec2-1-2-3-4.compute-1.amazonaws.com)或iptables端口重定向,甚至带有端口转发的ELB(80到8080)允许您连接端口80上的防火墙,随后重定向到端口8080。感谢Jarmod提供的提示。