Ejb-web-services

提供:Dev Guides
移動先:案内検索

EJB-Webサービス

EJB 3.0は、セッションEJBをWebサービスとして公開するオプションを提供します。 @WebService注釈は、クラスをWebサービスのエンドポイントとしてマークするために使用され、@ WebMethodは、メソッドをWebメソッドとしてクライアントに公開するために使用されます。

@Stateless
@WebService(serviceName="LibraryService")
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {

   ...
   @WebMethod(operationName="getBooks")
   public List<Book> getBooks()  {
      return entityManager.createQuery("From Books").getResultList();
   }
   ...
}

応用例

EJB 3.0でblob/clobサポートをテストするテストEJBアプリケーションを作成しましょう。

Step Description
1 Create a project with a name EjbComponent under a package com.finddevguides.entity as explained in the EJB - Create Application chapter. Please use the project created in EJB - Persistence chapter as such for this chapter to understand clob/blob objects in EJB concepts.
2 Create LibraryPersistentBean.java under package com.finddevguides.stateless. Use EJB - Persistence chapter as reference. Keep rest of the files unchanged.
3 Clean and Build the application to make sure business logic is working as per the requirements.
4 Finally, deploy the application in the form of jar file on JBoss Application Server. JBoss Application server will get started automatically if it is not started yet.

LibraryPersistentBean.java

package com.finddevguides.stateless;

import com.finddevguides.entity.Book;
import java.util.List;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
@WebService(serviceName="LibraryService")
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {

   public LibraryPersistentBean() {
   }

   @PersistenceContext(unitName="EjbComponentPU")
   private EntityManager entityManager;

   public void addBook(Book book) {
      entityManager.persist(book);
   }

   @WebMethod(operationName="getBooks")
   public List <Book> getBooks() {
      return entityManager.createQuery("From Book").getResultList();
   }
}

JBoss Application Serverのログ出力

10:51:37,271 INFO  [EJBContainer] STARTED EJB: com.finddevguides.stateless.LibraryPersistentBean ejbName: LibraryPersistentBean
10:51:37,287 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:

    LibraryPersistentBean/remote - EJB3.x Default Remote Business Interface
    LibraryPersistentBean/remote-com.finddevguides.stateless.LibraryPersistentBeanRemote - EJB3.x Remote Business Interface

10:51:37,349 INFO  [EJBContainer] STARTED EJB: com.tuturialspoint.messagebean.LibraryMessageBean ejbName: BookMessageHandler
10:51:37,443 INFO  [DefaultEndpointRegistry] register: jboss.ws:context=EjbComponent,endpoint=LibraryPersistentBean
10:51:38,191 INFO  [WSDLFilePublisher] WSDL published to: file:/D:/Jboss-5.0.1/server/default/data/wsdl/EjbComponent.jar/
LibraryService3853081455302946642.wsdl

WebサービスとしてEJBにアクセスするクライアントを作成する

NetBeans IDEで、「、ファイル」>「新規プロジェクト」> *を選択します。カテゴリ「 *Java 」の下のプロジェクトタイプを選択し、プロジェクトタイプとして「* Javaアプリケーション*」を選択します。 Next> ボタンをクリックします。プロジェクト名と場所を入力します。 *完了> *ボタンをクリックします。 EJBWebServiceClientとして名前を選択しました。

[プロジェクトエクスプローラ]ウィンドウでプロジェクト名を右クリックします。 *新規> WebServiceクライアント*を選択します。

WSDLクライアント

[コンパイル]タブの[プロジェクトの追加]ボタンを使用して、WSDLおよびクライアントの場所の下で作成したEJBコンポーネントプロジェクトのLibraryPersistentBeanを追加します。

WebサービスBean

[完了]ボタンをクリックします。 プロジェクトエクスプローラーで次の構造を確認します。

WebサービスBean

EJBWebServiceClient.javaを作成します

package ejbwebserviceclient;

public class EJBWebServiceClient {
   public static void main(String[] args) {
   }
}

次の図に示すように、WebサービスのgetBooks Webメソッドを選択し、EJBWebServiceClientのコードウィンドウにドラッグします。

Webサービスメソッドのドラッグ

次のような出力が表示されます。

ドラッグされたWebサービスメソッド

このメソッドを使用するには、EJBWebServiceClientコードを更新します。

package ejbwebserviceclient;

public class EJBWebServiceClient {

   public static void main(String[] args) {
      for(com.finddevguides.stateless.Book book:getBooks()) {
         System.out.println(book.getName());
      }
   }

   private static java.util.List
   <com.finddevguides.stateless.Book> getBooks() {
      com.finddevguides.stateless.LibraryService service =
         new com.finddevguides.stateless.LibraryService();
      com.finddevguides.stateless.LibraryPersistentBean port =
         service.getLibraryPersistentBeanPort();
      return port.getBooks();
   }
}

クライアントを実行する

[プロジェクトエクスプローラ]ウィンドウでプロジェクト名を右クリックします。 [実行]を選択します。 Netbeansはクライアントをビルドして実行します。 次の出力を確認します。

ant -f D:\\SVN\\EJBWebServiceClient run
init:
Deleting: D:\SVN\EJBWebServiceClient\build\built-jar.properties
deps-jar:
Updating property file: D:\SVN\EJBWebServiceClient\build\built-jar.properties
wsimport-init:
wsimport-client-LibraryPersistentBean:
files are up to date
classLoader = java.net.URLClassLoader@4ce46c
SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@182cdac
wsimport-client-generate:
Compiling 1 source file to D:\SVN\EJBWebServiceClient\build\classes
compile:
run:
learn java
Learn Spring
learn JSF
Learn HTML
Learn JBoss
Learn EJB
Learn Hibernate
Learn IBatis
Times Now
learn html5
Learn images
Learn Testing
Forbes
test1
BUILD SUCCESSFUL (total time: 1 second)