前提・実現したいこと
SpringBootによるWebアプリケーション開発を学習中の者です。
同じコードで実行しているのに、
- ローカル環境だと、Sessionに設定した値が取得できる
- AWS(EC2)環境だと、Sessionに設定した値が
null
になる
という現象が起きており、原因を調査しております。
ただ行き詰ってきており、
何かお気づきの点や、調査方法など、
解決の糸口になりそうなご助言をいただけますと大変助かります...! <(_ _)>
開発言語・FWなど
- 言語:Java11
- FW:SpringBoot2.2.6
- テンプレートエンジン:Thymeleaf
ローカル環境
- OS:Windows10
- 動作環境:Eclipseを使用しており、組み込みTomcatで実行
AWS(EC2)環境
-
OS:Amazon Linux2
-
Webサーバー:Apache 2.4.41
-
APサーバー:Tomcat 9.0.34
-
補足①:ApacheとTomcatはajpで連携しています。
-
補足②:Springのアプリケーションは、ローカル環境のEclipseでwarファイルを生成し、Tomcatのwebappsディレクトリに配備しています。
該当のソースコード
java
1@RestController 2public class SessionTestController { 3 4 @Autowired 5 HttpSession session; 6 7 // Sessionを設定 8 @RequestMapping(value = "/session_set") 9 private String sessionSet() { 10 session.setAttribute("key","value"); 11 return "sessionSet"; 12 } 13 14 // Sessionを取得 15 @RequestMapping(value = "/session_get") 16 private String sessionGet() { 17 System.out.println("session = " + session.getAttribute("key")); 18 return "sessionGet"; 19 } 20 21} 22
発生している問題
下記の手順を、ローカル環境とAWS環境で実行した場合、挙動が違います。
■ 手順(共通)
http://****/session_set
へアクセス(sessionを設定)http://****/session_get
へアクセス(sessionを取得)し、コンソールを確認
■ ローカル環境のコンソール
session = value
■ AWS環境のコンソール
session = null
このように、同じコード、同じ手順で実行をしているのですが、AWS環境ではsessionで設定した値が取得できず... orz
試したこと
HttpSession
を @Autowired
するのではなく、下記のようにメソッドの引数に入れて試すも、同じ結果でした。
private String sessionGet(HttpSession session) {
後書き
以上になります。
こういった環境間の差異の調査を、うまくできるようになりたいと思っております。
お手数ですが、ご助言いただけると大変幸甚に存じます。
何卒よろしくお願い致します<(_ _)>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。