- 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-Web 服务
- EJB - 打包应用程序
- EJB 有用资源
- EJB - 快速指南
- EJB - 有用的资源
- EJB - 讨论
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 应用程序来测试 EJB 3.0 中的 blob/clob 支持。
步 | 描述 |
---|---|
1 | 按照 EJB - 创建应用程序一章中的说明,在 com.tutorialspoint.entity 包下创建一个名为 EjbComponent 的项目。请使用本章中在 EJB - 持久性一章中创建的项目来理解 EJB 概念中的 clob/blob 对象。 |
2 | 在 com.tutorialspoint.stateless 包下创建 LibraryPersistentBean.java。使用 EJB - 持久性章节作为参考。保持其余文件不变。 |
3 | 清理并构建应用程序,以确保业务逻辑按照要求运行。 |
4 | 最后,将应用程序以jar文件的形式部署在JBoss应用服务器上。如果 JBoss 应用服务器尚未启动,它将自动启动。 |
库PersistentBean.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 作为 Web 服务访问
在 NetBeans IDE 中,选择“文件”>“新建项目”>。在类别“ Java”下选择项目类型, “项目类型”为“Java 应用程序”。单击下一步 >按钮。输入项目名称和位置。单击完成 >按钮。我们选择名称为 EJBWebServiceClient。
右键单击项目资源管理器窗口中的项目名称。选择新建 > Web 服务客户端。
使用编译选项卡中的“添加项目”按钮添加之前在 WSDL 和客户端位置下创建的 EJB 组件项目的 LibraryPersistentBean 。
单击完成按钮。在项目资源管理器中验证以下结构。
创建EJBWebServiceClient.java
package ejbwebserviceclient; public class EJBWebServiceClient { public static void main(String[] args) { } }
选择如下图所示的Web Service getBooks Web方法并将其拖至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)