2017-10-12 13 views
0

AWS Elastic BeanstalkにデプロイされたJavaアプリケーションのエンドポイントへの接続に問題があります。アプリケーションは多数のPOST要求を処理し、モバイルアプリケーションを提供することを意図しているため、サーバー自体には静的ファイルがありません。私はSpark Javaフレームワークを使用しました。これはLocalhostでテストしたときにエンドポイントを正しく検出しますが、AWS Elastic Beanstalkではテストしませんでした。AWS Elastic BeanstalkへのSpark-Java(Gradle、Maven)アプリケーションのデプロイ

私はExploded warをEB(Tomcat Webサーバーを実行している)にデプロイできますが、送信したすべてのリクエストは404 Error:Resource not Foundを返します。私はSparkApplicationインターフェースを実装し、main()からinit()にすべてのエンドポイントを移動し、提案されたコードを追加しました。 web.xmlファイルに追加します。

アップロードされた.warには、web.xml、lib(グラデーションライブラリを含む)、およびクラス(コンパイルされた出力付き)を含むMETA-INFが含まれています。再び、静的ファイルはありません。

詳細:

私が展開するElastic BeanstalkであるIntelliJ(アルティメット)プラグインを使用して、この時点で私は、これはEBのダッシュボードに直接の.warを展開と違いはありませんことをテストしました。私はセキュリティ設定ですべてのポートと接続を開いて、接続の問題を破棄しました。私はこれがURLをマッピングしていないサーブレットの問題だと思っています。助言がありますか?

答えて

0

ローカルボックスでの戦闘として実行し、配線が正しいことを確認します。私は最近これをBeanstalkでSpark Javaでやったことがありますが、私はそれをjarファイルとしてデプロイしたと思います。 BeanstalkはまっすぐなJavaのjarファイルをサポートしています(nginxを使ってください)。私はjarファイルとしてデプロイしたとき、Spark Javaがデフォルトで使用する4567のリスニングポートを指定する必要がありました。

私はTomcatでも戦争としてSpark Javaを実行しましたが、私はAWSで考えると思いません - 私は瓶として展開したと思います。

+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はポートを自動的に割り当てます。

関連する問題