質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

2156閲覧

【Spring】セッションの設定した値取得結の結果がローカル環境(組み込みTomcat)とAWS環境(Apache+Tomcat)で違う

ami613

総合スコア20

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/05/13 09:02

前提・実現したいこと

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環境で実行した場合、挙動が違います。

■ 手順(共通)

  1. http://****/session_setへアクセス(sessionを設定)
  2. http://****/session_getへアクセス(sessionを取得)し、コンソールを確認

■ ローカル環境のコンソール

session = value

■ AWS環境のコンソール

session = null

このように、同じコード、同じ手順で実行をしているのですが、AWS環境ではsessionで設定した値が取得できず... orz

試したこと

HttpSession@Autowired するのではなく、下記のようにメソッドの引数に入れて試すも、同じ結果でした。

private String sessionGet(HttpSession session) {

後書き

以上になります。
こういった環境間の差異の調査を、うまくできるようになりたいと思っております。
お手数ですが、ご助言いただけると大変幸甚に存じます。
何卒よろしくお願い致します<(_ _)>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決ではありませんが、アプリケーション側のバグではなく、ミドルウェア側の問題であると判断しました。
本質問文はかなり的外れなため、別枠で質問をし直します。

投稿2020/05/15 07:23

ami613

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問