EJB | 您所在的位置:网站首页 › ejb容器 › EJB |
标签:des style blog http java color 开发EJB容器模型的WEB服务WEB服务 Web服务也是一种分布式技术,它与EJB最大的不同是,Web服务属于行业规范,可以跨平台及语言。而EJB属于Java平台的规范,尽管理论上可以跨平台,但实现起来比较复杂,所以其应用范围局限在了Java平台。它们两者的偏重点不一样,Web服务偏重的是这个系统对外提供什么功能,而EJB偏重的是如何使用一个个组件组装这些功能。就好比一个硬盘,它对外提供的是存储服务,这是Web服务的关注点,对于怎样组装这个硬盘,怎样构造这些小零件,Web服务并不关心,但这些却是EJB所关注的。 JavaEE为web service提供了两种不同的编程模型:EJB容器模型及Web容器模型,这里使用JAX-WS2.x规范(Java API for XML-based Web Services)介绍Web Service的开发。
步骤: 1.新建一个Web Service项目,新建JavaProject:WebService,导入EJBjar文件。 2.建立一个无状态会话Bean,发布到WebService。 新建接口OrderService在cn.hqu.service下,定义三个方法: public interface OrderService { public abstract StringgetUseName(String name); public abstract OrdergetOrder(String orderId); public abstract ListgetOrders(); }
新建JavaBean:类Order在cn.hqu.bean下,有字段orderId、name。和getter、setter。
新建类OrderServiceBean实现接口OrderService在cn.hqu.service.impl: package cn.hqu.service.impl; import java.util.ArrayList; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.jws.WebService; import cn.hqu.bean.Order; import cn.hqu.service.OrderService; @Stateless @Remote(OrderService.class) public class OrderServiceBean implements OrderService { @Override public String getUseName(String name) { return name; } @Override public Order getOrder(String orderId) { Order order = new Order(); order.setOrderId(orderId); order.setName("苏志达"); return order; } @Override public List getOrders() { List persons = new ArrayList(); Order order1 = new Order(); order1.setOrderId("1"); order1.setName("小苏1"); Order order2 = new Order(); order1.setOrderId("2"); order1.setName("小苏2"); persons.add(order1); persons.add(order2); return persons; } } 在类上加@WebService,把这里面的所以方法变成WebService方法。也可以标注需要暴露的方法,在方法上面加@WebMethod,其他没标注的就是不暴露为WebService方法的。
打包发布,使用Ant,拷贝一份ant,修改配置name为项目名。
执行deploy,将WebService发布到Jboss中。查看控制台发布成功。
进入Jboss的后台管理可以查看我们发布的WebService服务 http://localhost:8080/jbossws/ 点击View a list ofdeployed services。
可以点击http://127.0.0.1:8080/WebService/OrderServiceBean?wsdl查看WebService的描述语言,可以通过WebService注解@Webservice的属性进行修改。 @WebService(targetNamespace="http://ws.hqu.cn",name="OrderService", serviceName="OrderServiceBean") 发布deploy。 Web服务开发完成,接下来开发Web服务的客户端。 开发步骤如下: 1. 在应用的类路径下放入JAX-WS的jar文件拷贝到lib下(下载路径:https://jax-ws.dev.java.net) 。 2. 利用Web Service客户端生成工具生成辅助类。 3. 第三步:借助辅助类调用WebService。
创建一个客户端应用,新建Javaproject:WSClient,导入EJBJar。新建lib文件夹。 我们使用wsimport工具的Ant任务类生成辅助类
新建Ant配置文件:在项目根目录下新建build.xml
执行Ant生成客户端调用的辅助代码 刷新客户端项目,可以看到生成的代码。
通过这些代码去调用Web服务, 新建一个单元测试调用Web服务: public classWSTEst { @Test public void getUserName(){ OrderServiceBeanservice = newOrderServiceBean(); OrderServiceorderService = service.getOrderServicePort(); System.out.println(orderService.getUseName("小明")); } } 控制台输出小明 证明方法是调用成功的。
报错:javax.xml.ws.WebServiceException: No Content-type in the header! 原因及解决办法: 把JBoss4.2内的JBOSS_HOME/client目录下的一下文件复制到JBoss5.1内的JBOSS_HOME/lib/endorsed目录下,重启服务就可以了。 jboss-jaxrpc.jar jboss-jaxws.jar jboss-jaxws-ext.jar jboss-saaj.jar package juint.test; import java.util.List; import org.junit.Test; import cn.hqu.ws.client.Order; import cn.hqu.ws.client.OrderService; import cn.hqu.ws.client.OrderServiceBean; public class WSTEst { @Test public void getUserName(){ OrderServiceBean service = new OrderServiceBean(); OrderService orderService = service.getOrderServicePort(); System.out.println(orderService.getUseName("小明")); } @Test public void getOrder(){ OrderServiceBean service = new OrderServiceBean(); OrderService orderService = service.getOrderServicePort(); Order order =orderService.getOrder("111"); System.out.println(order.getOrderId()+","+order.getName()); } @Test public void getOrders(){ OrderServiceBean service = new OrderServiceBean(); OrderService orderService = service.getOrderServicePort(); List orders =orderService.getOrders(); for (Order order : orders) { System.out.println(order.getOrderId()+","+order.getName()); } } }
开发web服务的时候,返回list的时候,应该采用泛型的形式来定义,EJB容器内部才能对它进行解释,并把它翻译生成对应的xml里面的类型s (http://127.0.0.1:8080/WebService/OrderServiceBean?wsdl)。 代码:http://pan.baidu.com/s/1i39S4sP EJB_开发EJB容器模型的WEB服务,布布扣,bubuko.com EJB_开发EJB容器模型的WEB服务 标签:des style blog http java color 原文地址:http://blog.csdn.net/jerome_s/article/details/37380481 |
CopyRight 2018-2019 实验室设备网 版权所有 |