EJB Web服务
EJB 3.0提供了选择公开为一个网络服务会话EJB。@ webservice annotation用来标记一个类作为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应用程序来测试blob或clob EJB 3.0的支持
| 步骤 | 描述 |
|---|---|
| 1 | 用包com.tutorialspoint.entity下一个名字EjbComponent在EJB作为解释的创建项目 - 创建应用程序一章。请使用EJB创建的项目 - 持久章这样本章了解EJB概念CLOB / BLOB对象。 |
| 2 | 包下com.tutorialspoint.stateless创建LibraryPersistentBean.java。使用EJB - 持久章作为参考。保持不变的文件其余部分。 |
| 3 | 清理并生成应用程序,确保业务逻辑正在按要求。 |
| 4 | 最后,部署JBoss应用服务器上的jar文件的形式应用。如果尚未启动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 Web服务
在NetBeans IDE中,选择File > New Project >文件>新建项目>下的类别,Java ,项目类型为Java Application (Java应用程序 )。选择项目类型。单击下一步> button.Enter项目名称和位置。单击Finish>按钮。我们选择的名称EJBWebServiceClient。
右键点击项目Explorer的窗口项目名称。选择New > WebService Client。

添加EJB组件项目LibraryPersistentBean之前使用compile 编译选项卡中Add Project 添加项目按钮,WSDL和客户端位置创建。

单击Finish按钮。验证Project Explorer中的以下结构。

创建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();
}
}
运行客户端
右键点击Project Explorer窗口中的项目名称。选择 run 运行 。 NetBeans将生成客户端并运行它。验证下面的输出。
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)

免费 AI IDE


更多建议: