EJB 3.0提供了選擇公開(kāi)為一個(gè)網(wǎng)絡(luò)服務(wù)會(huì)話EJB。@ webservice annotation用來(lái)標(biāo)記一個(gè)類(lèi)作為web服務(wù)端點(diǎn)和@WebMethod用于公開(kāi)為web客戶端方法。
@Stateless @WebService(serviceName="LibraryService") public class LibraryPersistentBean implements LibraryPersistentBeanRemote { ... @WebMethod(operationName="getBooks") public List getBooks() { return entityManager.createQuery("From Books").getResultList(); } ... }
讓我們創(chuàng)建一個(gè)測(cè)試EJB應(yīng)用程序來(lái)測(cè)試blob或clob EJB 3.0的支持
步驟 | 描述 |
---|---|
1 | 用包c(diǎn)om.tutorialspoint.entity下一個(gè)名字EjbComponent在EJB作為解釋的創(chuàng)建項(xiàng)目 - 創(chuàng)建應(yīng)用程序一章。請(qǐng)使用EJB創(chuàng)建的項(xiàng)目 - 持久章這樣本章了解EJB概念CLOB / BLOB對(duì)象。 |
2 | 包下com.tutorialspoint.stateless創(chuàng)建LibraryPersistentBean.java。使用EJB - 持久章作為參考。保持不變的文件其余部分。 |
3 | 清理并生成應(yīng)用程序,確保業(yè)務(wù)邏輯正在按要求。 |
4 | 最后,部署JBoss應(yīng)用服務(wù)器上的jar文件的形式應(yīng)用。如果尚未啟動(dòng)JBoss應(yīng)用服務(wù)器將自動(dòng)被啟動(dòng)。 |
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應(yīng)用服務(wù)器日志輸出
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
在NetBeans IDE中,選擇File > New Project >文件>新建項(xiàng)目>下的類(lèi)別,Java ,項(xiàng)目類(lèi)型為Java Application (Java應(yīng)用程序 )。選擇項(xiàng)目類(lèi)型。單擊下一步> button.Enter項(xiàng)目名稱和位置。單擊Finish>按鈕。我們選擇的名稱EJBWebServiceClient。
右鍵點(diǎn)擊項(xiàng)目Explorer的窗口項(xiàng)目名稱。選擇New > WebService Client。
添加EJB組件項(xiàng)目LibraryPersistentBean之前使用compile 編譯選項(xiàng)卡中Add Project 添加項(xiàng)目按鈕,WSDL和客戶端位置創(chuàng)建。
單擊Finish按鈕。驗(yàn)證Project Explorer中的以下結(jié)構(gòu)。
創(chuàng)建EJBWebServiceClient.java
package ejbwebserviceclient; public class EJBWebServiceClient { public static void main(String[] args) { } }
選擇Web Service getBooks web方法,如下圖,將其拖動(dòng)到代碼EJBWebServiceClient的窗口。
你會(huì)看到類(lèi)似如下圖所示的輸出。
更新EJBWebServiceClient代碼來(lái)使用此方法。
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(); } }
右鍵點(diǎn)擊Project Explorer窗口中的項(xiàng)目名稱。選擇 run 運(yùn)行 。 NetBeans將生成客戶端并運(yùn)行它。驗(yàn)證下面的輸出。
ant -f D:SVNEJBWebServiceClient 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)
更多建議: