雷林鵬分享:EJB web服務

  EJB3.0暴露會話EJB作爲Web服務提供選項。@WebService註釋是用來標記一類作爲一個Web服務端點,並使用@WebMethod是用來作爲客戶端的Web方法的公開方法。

  @Stateless

  @WebService(serviceName="LibraryService")

  public class LibraryPersistentBean implements LibraryPersistentBeanRemote {

  ...

  @WebMethod(operationName="getBooks")

  public List getBooks() {

  return entityManager.createQuery("From Books").getResultList();

  }

  ...

  }

  示例應用程序

  讓我們創建一個測試EJB在EJB3.0應用程序來測試BLOB/CLOB支持。

  StepDescription

  1Create a project with a name EjbComponent under a package com.tutorialspoint.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.

  2Create LibraryPersistentBean.java under package com.tutorialspoint.stateless. Use EJB - Persistence chapter as reference. Keep rest of the files unchanged.

  3Clean and Build the application to make sure business logic is working as per the requirements.

  4Finally, 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.tutorialspoint.stateless;

  import com.tutorialspoint.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 getBooks() {

  return entityManager.createQuery("From Book").getResultList();

  }

  }

  JBoss應用服務器的日誌輸出

  10:51:37,271 INFO [EJBContainer] STARTED EJB: com.tutorialspoint.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.tutorialspoint.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

  創建客戶端訪問EJB作爲Web服務

  在NetBeansIDE中,選擇File>NewProject>類別下選擇項目類型,Java項目類型爲Java應用。點擊Next>按鈕。輸入項目的名稱和位置。單擊“Next>“按鈕。我們選擇名爲EJBWebServiceClient。

  右鍵點擊項目名稱在項目exporer窗口中。選擇 New > WebService Client .

EJB web服務

  添加EJB組件項目的LibraryPersistentBean早下創建WSDL和客戶端位置使用在"編譯"選項卡中添加項目“按鈕。

EJB web服務

  單擊“完成”按鈕。在項目資源管理器驗證以下結構。

EJB web服務

  Create EJBWebServiceClient.java

  package ejbwebserviceclient;

  public class EJBWebServiceClient {

  public static void main(String[] args) {

  }

  }

  如下圖所示,選擇Web服務getBooks Web方法,將其拖動到代碼窗口EJBWebServiceClient。

EJB web服務

  更新EJBWebServiceClient的代碼使用此方法。

  package ejbwebserviceclient;

  public class EJBWebServiceClient {

  public static void main(String[] args) {

  for(com.tutorialspoint.stateless.Book book:getBooks()){

  System.out.println(book.getName());

  }

  }

  private static java.util.List

   getBooks() {

  com.tutorialspoint.stateless.LibraryService service =

  new com.tutorialspoint.stateless.LibraryService();

  com.tutorialspoint.stateless.LibraryPersistentBean port =

  service.getLibraryPersistentBeanPort();

  return port.getBooks();

  }

  }

  運行客戶端

  右鍵點擊項目名稱,項目資源管理器窗口。選擇“Run”。 NetBeans將生成客戶端並運行它。驗證下面的輸出。

  ant -f D:\SVN\EJBWebServiceClient run

  init:

  Deleting: D:SVNEJBWebServiceClientuilduilt-jar.properties

  deps-jar:

  Updating property file: D:SVNEJBWebServiceClientuilduilt-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:SVNEJBWebServiceClientuildclasses

  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)

  (編輯:雷林鵬 來源:網絡|侵刪)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章