
- EJB 教程
- EJB - 主頁
- EJB - 概覽
- EJB - 設定環境
- EJB - 建立應用程式
- EJB - 無狀態 Bean
- EJB - 有狀態 Bean
- EJB - 永續性
- EJB - 訊息驅動Bean
- EJB - 註解
- EJB - 回撥
- EJB - 定時器服務
- EJB - 依賴注入
- EJB - 攔截器
- EJB - 可嵌入物件
- EJB - Blob/Clob
- EJB - 事務
- EJB - 安全
- EJB - JNDI 繫結
- EJB - 實體關係
- EJB - 訪問資料庫
- EJB - 查詢語言
- EJB - 異常處理
- EJB - 網頁服務
- EJB - 封裝應用程式
- EJB 有用資源
- EJB - 快速指南
- EJB - 有用資源
- EJB - 討論
EJB - 網頁服務
EJB 3.0 提供一個選項,將會話 EJB 公開為網頁服務。使用 @WebService 註解標記一個類作為網頁服務端點,使用 @WebMethod 公開方法作為客戶端的網頁方法。
@Stateless @WebService(serviceName="LibraryService") public class LibraryPersistentBean implements LibraryPersistentBeanRemote { ... @WebMethod(operationName="getBooks") public List<Book> getBooks() { return entityManager.createQuery("From Books").getResultList(); } ... }
示例應用程式
讓我們建立一個 EJB 測試應用程式,以測試 EJB 3.0 中的 Blob/Clob 支援。
步驟 | 說明 |
---|---|
1 | 在包 com.tutorialspoint.entity 下建立一個 EjbComponent 名稱的專案,如 EJB 中所解釋的 - 建立應用程式章節。請使用 EJB 中建立的專案 - 永續性章節,以瞭解 EJB 概念中的 Clob/Blob 物件。 |
2 | 使用 EJB - 永續性章節作為參考,在包 com.tutorialspoint.stateless 下建立 LibraryPersistentBean.java。保持其他檔案不變。 |
3 | 清理並構建應用程式,確保業務邏輯按要求工作。 |
4 | 最後,以 jar 檔案的形式在 JBoss 應用程式伺服器上部署該應用程式。如果 JBoss 應用程式伺服器尚未啟動,它將自動啟動。 |
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 <Book> 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 作為網頁服務
在 NetBeans IDE 中,選擇“檔案 > 新建專案 >”。在類別“Java”下選擇專案型別,在“Java 應用程式”下選擇專案型別。單擊“下一步 >”按鈕。輸入專案名稱和位置。單擊“完成 >”按鈕。我們選擇了 EJBWebServiceClient 作為名稱。
在專案資源管理器視窗中右鍵單擊專案名稱。選擇“新建 > WebService 客戶端”。

在“編譯”選項卡中,使用“新增專案”按鈕新增之前在 WSDL 和客戶端位置下建立的 EJB 元件專案的 LibraryPersistentBean。

單擊完成按鈕。驗證專案資源管理器中的以下結構。

建立 EJBWebServiceClient.java
package ejbwebserviceclient; public class EJBWebServiceClient { public static void main(String[] args) { } }
選擇網頁服務 getBooks 網頁方法(如下圖所示),並將其拖放到 EJBWebServiceClient 的程式碼視窗中。

您將看到類似於以下內容的輸出。

更新 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 <com.tutorialspoint.stateless.Book> getBooks() { com.tutorialspoint.stateless.LibraryService service = new com.tutorialspoint.stateless.LibraryService(); com.tutorialspoint.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)