我有一个EC2-1
,其上安装了jasperreports服务器,我可以通过http://IP_ADDRESS1:8081/jasperserver轻松访问它。
现在我拍摄了EC2-1
的照片。一旦AMI可用,我就推出了新的EC2-2
。像往常一样,我使用SSH登录EC2
,并能够运行脚本./ctrlscript.sh start
来访问应用程序。但当我尝试登录http://IP_ADDRESS2:8081/jasperserver并运行报告时,我在jasperserver.log中收到以下错误而无法获取报告
300 ERROR WebServiceConnector,pool-4-thread-1:139 - Communication error java.net.ConnectException: Connection timed out
320 ERROR AsyncJasperPrintAccessor,pool-4-thread-1:321 - Error during report execution
任何人都可以对我对**EC2 vs AMI**
的理解给出一些说明。根据我的理解,EC2-1
和EC2-2
必须相同。但在这种情况下,当我仍然可以在EC2-2
中运行报告时,我无法在EC2-1
中运行报告。
如果我在这里遗漏了什么,请指导我。谢谢大家。
答案 0 :(得分:0)
从原始EC2实例的AMI启动的新EC2实例应该包括您在源实例上所做的任何配置更改,这是正确的。
根据您的描述,听起来好像关于新EC2实例的一切都很好:您可以通过SSH连接到它,您可以启动JasperReports Server,然后您就可以登录Web界面了。只有在您尝试运行报表时才会出现问题 - 这是一个重要的细节,因为运行报表会对外部数据源产生外部依赖。
在JasperReports Server Web UI中,找到您的数据源并转到其编辑页面以测试连接。对于大多数数据源,您应该能够在编辑页面的底部找到它。例如,在JDBC UI中:
尝试在新实例上测试来自此页面的Jasper与数据源的连接。
这对我来说就像一个网络错误,特别是在新的EC2 JasperReports实例和报告的数据源之间。此EC2实例外部可能存在一个网络规则,该规则存在于您的原始实例中,但未针对新实例进行更新。例如,如果您有一个安全组允许从原始实例的CIDR到数据源的入站流量,并且没有为新实例的CIDR更新它,您会看到这些排序当JasperReports Server尝试连接到数据源时超时。
如果测试与上述数据源的连接失败,请检查security groups或VPC network ACLs等资源上的外部网络规则,并验证原始EC2实例的所有规则是否已更新为对您的新EC2实例有效。