开发手册 欢迎您!
软件开发者资料库

EJB - Web服务

EJB Web服务 - 从简单和简单的步骤学习EJB 3.0和3.1(Enterprise Java Bean)框架,从基本概念到高级概念,包括概述,环境设置,应用服务器,容器,企业Bean,注释,会话,无状态会话,有状态会话,消息驱动,实体Bean,持久性,远程接口,查找,生命周期,接口,拦截器,可嵌入对象,Blob / Clobs,事务,安全性,JNDI绑定,实体关系,访问数据库,回调,定时服务,Web服务,部署描述符,创建应用程序,访问数据库,查询语言,依赖注入,异常处理,打包应用程序。

EJB 3.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应用程序来测试EJB 3.0中的blob/clob支持.

Step描述
1

在EJB-Create Application章节中解释,在com.it1352.entity包下创建一个名为EjbComponent的项目.请使用在EJB  -  Persistence章节中创建的项目本章来理解EJB概念中的clob/blob对象.

2

在com.it1352.stateless包下创建LibraryPersistentBean.java.使用EJB  -  Persistence章节作为参考.保持其余文件不变.

3

清理并构建应用程序以确保业务逻辑按照要求运行.

4

最后,在JBoss Application Server上以jar文件的形式部署应用程序.如果JBoss应用服务器尚未启动,它将自动启动.

LibraryPersistentBean.java

package com.it1352.stateless; import com.it1352.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.IT屋.stateless.LibraryPersistentBean ejbName: LibraryPersistentBean10:51:37,287 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:LibraryPersistentBean/remote - EJB3.x Default Remote Business InterfaceLibraryPersistentBean/remote-com.IT屋.stateless.LibraryPersistentBeanRemote - EJB3.x Remote Business Interface10:51:37,349 INFO  [EJBContainer] STARTED EJB: com.tuturialspoint.messagebean.LibraryMessageBean ejbName: BookMessageHandler10:51:37,443 INFO  [DefaultEndpointRegistry] register: jboss.ws:context=EjbComponent,endpoint=LibraryPersistentBean10:51:38,191 INFO  [WSDLFilePublisher] WSDL published to: file:/D:/Jboss-5.0.1/server/default/data/wsdl/EjbComponent.jar/LibraryService3853081455302946642.wsdl

创建C. lient作为Web服务访问EJB

在NetBeans IDE中,选择,文件>新项目> .在类别下选择项目类型, Java ,项目类型为 Java应用程序.点击下一步> 按钮.输入项目名称和位置.点击完成> 按钮.我们选择了名称作为EJBWebServiceClient.

在Project explorer窗口中右键单击项目名称.选择新建> WebService客户端.

WSDL Client

添加EJB组件使用编译选项卡中的添加项目按钮在WSDL和客户端位置下创建的项目的LibraryPersistentBean.

Web服务Bean

单击"完成"按钮.验证项目资源管理器中的以下结构.

Web服务Bean

创建EJBWebServiceClient.java

package ejbwebserviceclient;public class EJBWebServiceClient {   public static void main(String[] args) {      } }

选择Web Service getBooks web方法,如下图所示,并将其拖到EJBWebServiceClient的代码窗口.

Web服务方法拖动

您将看到类似于下图所示的输出.

拖动Web服务方法

更新EJBWebServiceClient代码以使用此方法.

package ejbwebserviceclient;public class EJBWebServiceClient {   public static void main(String[] args) {      for(com.it1352.stateless.Book book:getBooks()) {         System.out.println(book.getName());      }          }   private static java.util.List    getBooks() {      com.it1352.stateless.LibraryService service =          new com.it1352.stateless.LibraryService();      com.it1352.stateless.LibraryPersistentBean port =          service.getLibraryPersistentBeanPort();      return port.getBooks();   }      }

运行客户端

右键单击Project中的项目名称资源管理器窗口.选择运行. Netbeans将构建客户端并运行它.验证以下输出.

ant -f D:\\SVN\\EJBWebServiceClient runinit:Deleting: D:\SVN\EJBWebServiceClient\build\built-jar.propertiesdeps-jar:Updating property file: D:\SVN\EJBWebServiceClient\build\built-jar.propertieswsimport-init:wsimport-client-LibraryPersistentBean:files are up to dateclassLoader = java.net.URLClassLoader@4ce46cSharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@182cdacwsimport-client-generate:Compiling 1 source file to D:\SVN\EJBWebServiceClient\build\classescompile:run:learn javaLearn Springlearn JSFLearn HTMLLearn JBossLearn EJBLearn HibernateLearn IBatisTimes Nowlearn html5Learn imagesLearn TestingForbestest1BUILD SUCCESSFUL (total time: 1 second)