2011-06-25 7 views
4

私はJavaEEに慣れようとしています。セッションビーンとサーブレット、そしてそれらがWebアプリケーション(クライアント側のJavaScript)と適切にやりとりする方法について、私はちょっと混乱しています。Webアプリケーション用にEJBとサーブレットを使用する好ましい方法は何ですか?

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

  1. ユーザーは、データとクリックが提出ページ
  2. ユーザ入力「にログインし、」訪問。私はAJAXにユーザーにログインするよう要求します。サーバ側は、次に(等、ユーザプロファイルを返す)でユーザのユーザ入力と、「ログ」を検証

要求を送信する場合、私は(EJBを使用して)サーブレットに送信しません、またはWSDLを通じてセッションBeanにいずれの方法でも、そのユーザーの「状態」を維持するにはどうすればよいですか? Session Beansでは、@Statefulで簡単に注釈を付けることができます。

また、クライアント側から送信された要求はSOAP形式でなければならないと仮定します。より軽量なもの(JSONなど)を使用するのは簡単ですか?私は軽量なものを使うことを好みますが、SOAPが開発をより速く/容易にするなら、それは必要ではありません。

+3

あなたが本当に尋ねたいことが本当にわからないようですね。私はjava eeチュートリアルを読むことを提案します:http://download.oracle.com/javaee/6/tutorial/doc/初心者にはかなり良いですし、それを読んだら、すべての "コンポーネント"に精通し、サンプルアプリケーションを構築する方法 – peshkira

+0

(セッションBeanはEJB内の子Beanです)リクエストはセッションBeanと直接対話しません(モデル)。「EJB」を探索したい場合はサーブレット(コントローラ)を介して話すことができます。典型的なJEEアプリサーブレットではどのようにブラウザからリクエストを受け取ることができ、EJBを使用する場合は使用できます。これは、JSPとサーブレットを介してデータベースへのクエリを実行し、サーブレット経由でブラウザに返すことができる1つの選択肢です。このような用途のために、WSDLとSOAPはまったく関係ありません。 –

答えて

4

Java Enterprise Edition tutorialあなたが持っている話題のほとんどすべて。さまざまな種類のBeanタイプの目的は何ですか、Webサービスを実装する方法、認証などを実装する方法

サンプルアプリケーションのビルドには、特に完全に新しいJava Enterprise Edition(Java EE)に移行します。 Java EEを構成するテクノロジーと標準の幅広さと深さのために、最初に重点を置くべきものを知るのは難しいかもしれないので、コアの概念をよく理解することが重要です。

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

Java EEは、SOAPに関する優れたサポートを備えていますが、WebサービスをSOAPプロトコルに優先したり制限したりすることはありません。 JAXBとJAX-RSでは、XMLまたはJSON、あるいはその両方を受け入れて返すRESTfulなWebサービスを開発するのと同じくらい簡単です。 SOAP、REST、または別のプロトコルを使用する必要があるかどうかは、お客様自身が決定します。

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

同様に、JAXBでは、WSDLを使用するかどうかはあなた次第です。 WSDL定義があれば素晴らしいですが、そうでなければ問題はありません。

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

1

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

通常、AJAXを使用するかどうかを問わず、単純なGET/POST要求を行い、HTML(AJAX)の完全なHTMLページ、またはXMLまたはJSONデータ(AJAX)のいずれかを受け取ります。ブラウザは通常サーブレットと通信しますが、サーブレットを直接使用することはまれです。

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

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

0

次のように基本的なアーキテクチャを作成することができます:あなたはEJBをrefferするためのロジックを持っているいくつかの委譲クラスを呼び出すサーブレットを作成することができます

をinstread EJBジャーのような二つの異なるプロジェクトをEARを作成

をし、WebアプリケーションのWAR Delegationクラスで@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){ 
     } 
    } 
関連する問題