我无法连接到部署到AWS Elastic Beanstalk的java应用程序的端点。该应用程序处理大量POST请求,旨在为移动应用程序提供服务,因此服务器本身没有任何静态文件。我使用的是Spark Java框架,当我在Localhost上测试时,它会正确地找到端点,但在AWS Elastic Beanstalk上就不会了。
我可以将分解的war部署到EB (运行Tomcat Web服务器)上,但是我发送的所有请求都会返回一个404错误: Resource not Found。Spark java运行在嵌入式Jetty服务器上,所以为了在Tomcat上运行,我按照他们的文档(http://sparkjava.com/documentation#other-web-server)中的建议做了:我已经实现了SparkApplication接口,将所有端点从main()移动到init(),并将建议的代码添加到web.xml文件中。
上传的.war包含带有web.xml、lib (带有gradle库)和类(带有我的编译输出)的META-INF。同样,没有静态文件。
更多详细信息:
我使用Elastic Beanstalk IntelliJ (旗舰版)插件进行部署,此时我测试了这与直接在EB仪表板上部署.war没有什么不同。我已在安全设置中打开所有端口和连接,以丢弃任何连接问题。我认为这只是servlet没有映射urls的问题。有什么建议吗?
发布于 2017-10-13 06:02:19
在本地机器上运行它,确保你的连接是正确的。我最近做了这件事- Spark Java on Beanstalk,但我认为我将其部署为jar。Beanstalk只支持直接的java jar (前面加上了nginx)。我认为当我作为jar部署时,我确实需要做一些事情来指定Spark Java默认使用的监听端口4567。
我也曾在Tomcat中将Spark Java作为war运行,但我不认为是在AWS上--我相信在这种情况下,我是作为jar部署的。
发布于 2017-10-16 23:26:09
解决了!我在主类中编写了更改端口的代码。虽然这是在本地环境中运行所必需的,但它与自动分配端口的AWS冲突。
https://stackoverflow.com/questions/46718987
复制相似问题