Ejb 简明教程
EJB - Web Services
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();
}
...
}
Example Application
让我们创建一个测试 EJB 应用程序来测试 EJB 3.0 中的 blob/clob 支持。
Step |
Description |
1 |
在 EJB - Create Application 章节中所解释的 com.tutorialspoint.entity 包中,使用名称 EjbComponent 创建一个项目。请使用在 EJB - Persistence 章节中创建的项目,以便本章了解 EJB 概念中的 clob/blob 对象。 |
2 |
在 com.tutorialspoint.stateless 包下创建 LibraryPersistentBean.java。使用 EJB - Persistence 章节作为参考。保持其余的文件不变。 |
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 Application Server Log Output
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
Create Client to Access EJB as Web Service
在 NetBeans IDE 中,选择 ,File > New Project > 。在Category下选择工程类型, Java ,工程类型作为 Java Application 。单击 Next > 按钮。输入工程名称和位置。单击 Finish > 按钮。我们已经选择 EJBWebServiceClient 这个名称。
在工程资源管理器窗口中右键单击工程名称。选择 New > WebService Client 。
使用 compile 选项卡中的 Add Project 按钮,在 WSDL 和客户端位置下添加先前创建的 EJB 组件项目的 LibraryPersistentBean。
单击“Finish”按钮。验证工程资源管理器中的以下结构。
Create EJBWebServiceClient.java
package ejbwebserviceclient;
public class EJBWebServiceClient {
public static void main(String[] args) {
}
}
选择 Web Service 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();
}
}
Run the Client
在工程资源管理器窗口中右键单击工程名称。选择 Run 。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)