4

私はJavaEEに慣れようとしています。各「コンポーネント」の目的(より適切な言葉がないため)が何であるか、およびそれらがWebアプリケーション(クライアント側JavaScript)と適切に対話する方法について少し混乱しています。

これを理解するために、私は単純なWebアプリケーションを構築しています。次のようなものを構築するために各コンポーネントを使用するための好ましい方法は何ですか。

  1. ユーザーが「ログイン」ページにアクセスします
  2. ユーザーがデータを入力し、[送信]をクリックします。次に、AJAXを使用してユーザーにログインするためのリクエストを送信します。
  3. 次に、サーバー側はユーザー入力を検証し、ユーザーを「ログイン」します(ユーザープロファイルなどを返します)。

リクエストを送信するとき、サーブレット(EJBを使用)に送信しますか、それともWSDLを介してセッションBeanに送信しますか?どちらの方法を使用しても、そのユーザーの「状態」を維持するにはどうすればよいですか?Session Beansでは、@Statefulでアノテーションを付けるのと同じくらい簡単だと思います。

また、クライアント側から送信されるリクエストはSOAP形式である必要があると思います。より軽量なもの(JSONなど)を使用するのはどのくらい簡単ですか?軽量なものを使用したいのですが、SOAPによって開発がより速く/より簡単になる場合は必要ありません。

4

3 に答える 3

3

Java Enterprise Editionのチュートリアルでは、取り上げたトピックのほとんどすべてを扱っています。さまざまな種類の Bean タイプの目的、Web サービスの実装方法、認証の実装方法など。

特に Java Enterprise Edition (Java EE) にまったく慣れていない場合は、時間をかけてサンプル アプリケーションをビルドすることを強くお勧めします。Java EE を構成するテクノロジと標準は幅広く奥深いため、最初は何に注目すればよいかを理解するのが難しい場合があるため、中心となる概念を十分に理解することが重要です。

心に留めておくべきことの 1 つは、Java EE は確かにベスト プラクティスをサポートし、パフォーマンスと拡張性に優れた安全なエンタープライズ アプリケーションの設計と開発を可能にしようとする一方で、エンタープライズ アプリケーションが 1 つの特定のプロトコル、データ形式、およびプロトコルに従うことを規定または制限しないことです。エンタープライズ アプリケーションの設計パターン。一部のプロトコルとフォーマットは、コア フレームワークの実装によってそのままでより適切にサポートされ、一部の選択肢はベンダーに依存しますが、仕様に固定されている特定のテクノロジの選択肢はほとんどありません。

特定の質問のいくつかに答えるために、Java EE は SOAP を強力にサポートしていますが、Web サービスを優先したり、SOAP プロトコルを制限したりしません。JAXB と JAX-RS を使用すると、XML または JSON、またはその両方を受け入れて返す RESTful Web サービスを簡単に開発できます。SOAP、REST、またはその他のプロトコルを使用する必要があるかどうかを判断するのはあなた次第です。

また、JAX-RS などのフレームワークを使用するか、サーブレットを明示的に開発して HTTP 要求と応答を処理するかを選択できます。多くの場合、JAX-RS には必要なものがすべて含まれています。つまり、コンテンツやパラメーターのマーシャリングとアンマーシャリングに煩わ​​されることなく、いくつかのアノテーションを使用して Web サービスをプレーンな古い Java メソッドとして実装できます。

同様に、JAXB の場合、WSDL を使用するかどうかはユーザー次第です。WSDL 定義があると便利ですが、なくても問題ありません。

多くの場合、通常は Java Persistence Architecture フレームワーク (JPA) を使用して状態を維持し、ステートレス セッション Bean を介してそのようなデータにアクセスして操作します。Java EE を初めて使用する開発者は、ステートフル セッション Bean を使用して、永続ストレージでより適切に管理される状態を維持したくなることがよくあります。このチュートリアルでは、さまざまな種類の Bean とその目的について説明します。

于 2011-06-25T22:40:23.483 に答える
1

通常、Web サービス (WSDL、SOAP など) は、アプリケーション間の通信に使用されます。

単一の Web アプリ内では、通常、AJAX を使用するかどうかに関係なく単純な GET/POST 要求を作成し、完全な HTML ページ、HTML のフラグメント (AJAX)、または XML または JSON データ (AJAX) を受け取ります。通常、ブラウザはサーブレットと通信しますが、サーブレットを直接使用することはほとんどありません。

通常の方法は、サーブレットの上でフレームワークを使用することです。フレームワークは、アクションベースのフレームワーク (Stripes、Spring MVC、Struts など) またはコンポーネントベースのフレームワーク (JSF、Wicket、Tapestry など) の 2 つの大きなカテゴリに分けることができます。

n 層アプリケーションでは、上記のすべてのテクノロジにプレゼンテーション層のみが含まれていると想定されています。このプレゼンテーション レイヤーは、実際のビジネス ロジックが発生するビジネス レイヤーと対話します。そこでは、データベースやメッセージング システムなどへのアクセスにトランザクションが使用されます。このビジネス レイヤーでは、EJB が使用されます。

于 2011-06-25T22:40:27.320 に答える
0

次のように基本的なアーキテクチャを作成できます。

EJB Jar と Web アプリケーション WAR のような 2 つの異なるプロジェクトに EAR を作成します。

EJB を参照するロジックを持つデリゲート クラスを呼び出すサーブレットを作成するには、リモート呼び出しとして呼び出すか、デリゲーション クラスで @EJB アノテーションを使用します。

 ServletClass {   
     do/post(){
     DelegateClass d = new DelegateClass();
     d.callMethod(withParam);
   }
  }


    DelegateClass   {
       @EJB
       EJBlocalinterface  ejbintance;
       void callMethod(DefinPrarm){
          ejbinstance.callEJBMethod();
       }
    }



    @Statelss
    EJBbeanClass implements EJBlocalinterface{
        void callEJBmethod(someParam){
        }
    }
于 2013-04-15T10:42:09.313 に答える