2017-10-12 181 views
0

我無法連接到部署到AWS Elastic Beanstalk的Java應用程序的端點。該應用程序處理多個POST請求,旨在爲移動應用程序提供服務,因此服務器本身沒有任何靜態文件。我使用Spark Java框架,當我在Localhost上測試時發現端點正確,但不在AWS Elastic Beanstalk上。將Spark-Java(Gradle,Maven)應用程序部署到AWS Elastic Beanstalk

我可以將爆炸戰爭部署到EB(運行Tomcat Web服務器),但是我發送的所有請求都返回404錯誤:資源未找到。 Spark Java在嵌入式Jetty服務器上運行,所以要在Tomcat上運行,我按照他們的文檔(http://sparkjava.com/documentation#other-web-server)中的建議完成:我已經實現了SparkApplication接口,將所有端點從main()移動到init(),並添加了建議的代碼到web.xml文件。

上傳的.war包含META-INF和web.xml,lib(帶有gradle庫)和classes(帶有我編譯的輸出)。再次,沒有靜態文件。

更多細節:

我使用彈性豆莖的IntelliJ(終極)插件部署和在這一點上我測試,這是沒有從直接在EB儀表盤部署一個.war不同。我已經打開所有端口和安全設置連接,以放棄任何連接問題。我相信這只是servlet沒有繪製URL的問題。有什麼建議麼?

回答

0

將其作爲本地盒子上的戰爭來運行,以確保您擁有正確的接線。我最近完成了這個工作 - BeanStalk上的Spark Java,但我認爲我將它部署爲一個jar。 Beanstalk只支持直接的java jar(用nginx指向它)。我認爲當我部署爲jar時,我必須做一些事情來指定Spark Java默認使用的4567的監聽端口。

我已經運行Spark Java作爲Tomcat中的一場戰爭,但我不認爲在AWS上 - 我相信在那種情況下,我部署爲jar。

+0

好吧,讓我試試.jar –

+0

這是AWS的一個選項,更適合Spark Java。我已經在Tomcat下運行了Spark作爲一場戰爭 - 但要記住的一點是,作爲戰爭的Tomcat會給出一個上下文,這是您在REST API路徑之前必須添加到URL的戰爭名稱。所以如果你在8090上有blah.war,localhost:8090/blah/myrestpath,不是localhost:8090/myrestpath。 –

+0

謝謝!原來是一個端口問題。 –

0

解決!我在主類中改變端口的代碼。雖然這是在本地環境中運行所必需的,但它與自動分配端口的AWS衝突。

相關問題