問題タブ [sessioncontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1571 参照

session - SessionContext.getCallerPrincipal.getName() は「ANONYMOUS」を返します

私の Java EE アプリケーションでは、次の安らかなクラスを宣言します。

任意のクライアントを介して現在ログインしているユーザーのユーザー名を取得することを目指しています。

ユーザー名「myuser」でログインした後、新しいタブで次の URL を Web ブラウザーに貼り付けました。

表示された応答は期待どおりでした:「myuser」。

ここで、次のように Ajax リクエストを実行して、別の ExtJS アプリケーション (認証を必要としない) 内からそのユーザー名を取得しようとしました。

同じセッション中に「myuser」としてログインしているにもかかわらず、アラートの結果は「ANONYMOUS」でした。

では、2 番目のケースで呼び出し元のプリンシパルが変更されるのはなぜですか?また、その解決策はありますか?

0 投票する
1 に答える
4152 参照

java - サーブレットから呼び出される Session-Bean では、SessionContext は常に null です。

私の仕事は、サーブレットを使用してある種の Web サービス アダプターを作成し、それがアダプター EJB (SOAP Web サービス) を呼び出し、それが既存のサービス メソッド (EJB も) を呼び出すことです。既存のアーキテクチャは EJB 2.0 に基づいており、今のところ変更できません。外部の顧客は、Web サービス クラスではなく、サーブレットに直接アクセスすることになっています。これは、HTTPRequest 内の情報を使用して前処理を行う必要があるためです (証明書と HTTP ヘッダーからのユーザー ID の取得とマッピング)。そのため、サーブレットは doPost() メソッドに反応し、SOAP XML データの解析やマーシャリングなどの前処理を実行してから、アダプター EJB (ステートレス セッション Bean)、より正確には Web サービス メソッドを呼び出します。 EJB。これは、EJB が既存のセッション resp を必要とするまではうまく機能します。トランザクションのロールバックが処理される次の場合のように、SessionContext:

私のセットアップでは、SessionContext は常に null です。アプリケーション全体がすでに非常に複雑であるため、関連するものを除外しないことを願って、サーブレットと 1 つの EJB のみを使用して単純化したセットアップを投稿しようとしました。システム: WebSphere Application Server 8.5

サーブレット:

EJB (Rational Application Developer 9.0 で生成):

SoapUI ツール ( http://www.soapui.org ) を使用してセットアップをテストしています。繰り返しますが、単純な Ping() サービスでは適切な結果が得られますが、セッション関連のものが必要になるとすぐに失敗します。

もちろん、私はいくつかの調査を行いましたが、特に興味深いのは次のリンクでした: JBOSSSessionContext を取得する方法。 in-ejb-3.html

EJB ライフサイクルについて: docs.oracle.com/cd/E13224_01/wlw/docs100/guide/ejb/session/conSessionBeanLifeCycle.html J2EE チュートリアル: docs.oracle.com/javaee/6/tutorial/doc/gipss.html# gipsx (申し訳ありませんが、2 つ以上のリンクを投稿することはできません...)

しかし、コードでコメントされているように、java:comp/env/ejb/sessionContext にアクセスできません。まあ... java:comp/env/ejb でさえありません。EJB が実際にアクセスできるものを確認し、次の出力を取得するダーティ ヘルパー メソッドを作成しました。

私も注釈を使用しようとしました:

または、トランザクション タイプを別の方法で設定します。

何も助けませんでした。SessionContext が自動的に作成される必要があることを理解しました。しかし、そうでない場合、新しいオプションを作成する必要があるオプションはどれですか? さらなる質問: サーブレットは、私がアクセスできるセッション (request.getSession() ) も「作成」しますが、これは別のものです (HTTPSession)。このセッション オブジェクトをセッション Bean に共有または「変換」することはできないのでしょうか?

0 投票する
0 に答える
337 参照

ejb - Arquillian Glassfish 埋め込み - NameNotFoundException

arquillian を使用してアプリケーションの統合テストを作成しようとしていますが、現在 @Resource SessionContext の使用に関して問題があります。

これが私の設定です:

私の pom.xml arquillian 依存関係:

arquillian.xml

glassfish-resources.xml

テスト永続性.xml

InboundFileImportTest.java

InboundReprocessBOImpl.java

これが私が得ているエラーです:

誰か助けてくれませんか??

ありがとう