サーブレットでビジネスロジックを実行しているポートレットを作成しました。しかし、jspページでliferayログインユーザーの詳細を取得しています。したがって、サーブレットをヒットするときにユーザーの詳細を渡す必要があります。これは私のJSPコードです。
<%
String fullname= user.getFullName();
out.println("Full name is: "+fullname+ "...");
long id = themeDisplay.getLayout().getGroupId();
out.println("Site ID is: "+id+ "...");
long userId = themeDisplay.getUserId();
out.println("User ID is: "+userId+ "...");
%>
サーブレットで上記の詳細にアクセスする必要があります。どうやってやるの?各ログインユーザーはいくつかの異なる資格情報を持っているため、すべての値が更新され、サーブレットでアクセスする必要があります。イベントを実行せずにこれらの値にアクセスするための最良の方法は何ですか。別のWebサービスからサーブレットにアクセスしています。Get ORPostメソッドでアクセスする必要があります。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
//I need to access those login user information here..
}
これを行うのは非常に困難です(「ほとんど不可能」のように「非常に難しい」):サーブレットを使用している場合、実際のユーザーを識別するポータルのコードはすべて実行されません。
実際、ポートレットのHttpServletRequestを見ると、これはポータルに向けられ、適切に構築されたコンテキスト(ログインしたユーザーなど)を使用して、後でポートレットに転送されます。
サーブレットを見ると、これはサーブレットに向けられます。サーブレットは通常、まったく異なるアプリケーションコンテキストに存在します。したがって、サーブレットの仕様により、ポータル環境から完全に分離されます。
この制限を緩和するために見つけたものはすべて、ややハックになります。Cookieを使用したり、パラメータをリクエストしたりする人もいます。しかし、それらはすべて多かれ少なかれ問題を引き起こしています。特に、サーブレットにアクセスするWebサービスについて話すときは、Cookieを使用することはできません。
十分に保守可能な実装のために、アーキテクチャを変更することをお勧めします。残念ながら、アーキテクチャを何に変更するかを推奨するのに十分なコンテキストを提供していません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加