Web服务也是一种分布式技术,他与EJB最大的不同是Web服务属于行业规范,可以跨平台及语言,而EJB属于java平台的规范,尽管理论上可以跨平台,但是实现起来很复杂,javaEE为web service提供了两种不同的编程模型,EJB容器模型和Web容器模型,下面是以JAX-WS2.x规范介绍web service的开发
1.首先编写服务器端代码,新建一个java工程,并将JBoss的client目录下的所有jar包引入到工程
实体类Order如下
package com.lamp.bean;
import java.io.Serializable;
public class Order implements Serializable{
private static final long serialVersionUID = 9138560163090982706L;
private String orderId;
private String name;
public Order(){}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
接口类OrderService
package com.lamp.service;
import java.util.List;
import com.lamp.bean.Order;
public interface OrderService {
public Order getOrder(String orderId);
public List<Order> getOrders();
public String getUsername(String name);
}
实现类
package com.lamp.service.impl;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebService;
import com.lamp.bean.Order;
import com.lamp.service.OrderService;
@WebService(targetNamespace="http://ws.lamp.com",
name="OrderService",
serviceName="OrderServiceBean")
@Stateless
@Remote(OrderService.class)
public class OrderServiceBean implements OrderService {
public Order getOrder(String orderId) {
Order order = new Order();
order.setOrderId(orderId);
order.setName("张三");
return order;
}
public List<Order> getOrders() {
List<Order> orders = new ArrayList<Order>();
Order order = new Order();
order.setOrderId("01");
order.setName("李四");
Order order2 = new Order();
order2.setOrderId("02");
order2.setName("王五");
orders.add(order);
orders.add(order2);
return orders;
}
public String getUsername(String name) {
return name;
}
}
用工程打包成jar部署到JBoss的部署目录下
接着我们开发一个客户端,新建一个java工程,并在其根目录下新建一个lib文件夹,将JAX-WS的jar文件拷贝到lib文件夹,同时也将其引入到项目的构建路径中
在项目的根目录下新建一个build.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project name="WSClient" default="wsclientgen" basedir=".">
<property name="src.dir" value="${basedir}/src"></property>
<path id="build.classpath" description="设置类路径">
<fileset dir="${basedir}/lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="wsclientgen" description="生成webservice客户端辅助代码">
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" classpathref="build.classpath"/>
<wsimport wsdl="http://127.0.0.1:8080/WebService/OrderServiceBean?wsdl" sourcedestdir="${src.dir}" package="com.lamp.ws.client" keep="true"
verbose="true" destdir="${basedir}/bin"/>
</target>
</project>
通过运行ant,我们得到了客户端类
编写一个测试类来测试
package junit.test;
import java.util.List;
import org.junit.BeforeClass;
import org.junit.Test;
import com.lamp.ws.client.Order;
import com.lamp.ws.client.OrderService;
import com.lamp.ws.client.OrderServiceBean;
public class WSTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test
public void getUsername(){
OrderServiceBean service = new OrderServiceBean();
OrderService orderService = service.getOrderServicePort();
System.out.println(orderService.getUsername("张三"));
}
@Test
public void getOrders(){
OrderServiceBean service = new OrderServiceBean();
OrderService orderService = service.getOrderServicePort();
List<Order> orders = orderService.getOrders();
for(Order order:orders){
System.out.println(order.getName());
}
}
}
运行测试,我们能在控制台看到我们所需的结果
分享到:
相关推荐
NULL 博文链接:https://1028826685.iteye.com/blog/1503446
NULL 博文链接:https://8366.iteye.com/blog/440338
NULL 博文链接:https://lc2586.iteye.com/blog/720918
2, EJB容器可以为我们提供中间件服务; 3, EJB客户端:(常见的) 1) 独立的java程序 2)web程序 3)其他的EJB, 4)其他通过Web Service 调用的客户端; 4, EJB容器可以为我们提供的服务: 1) 事务:够用 2)安全:不够...
第二种是要部署在单独的Web容器Tomcat中,在独立的Tomcat中调用JBoss服务器中jsfejb3-ejb所提供的服务。此时还需要在web端的类路径中(也就是在jsfejb3-war项目的lib文件夹中)添加以下几个Jar包(这些包都在JBoss...
本资源为PPT,配套视频为: 01_下载安装与运行jboss ... 12_开发EJB容器模型的WEB服务 附录01_EJB3基本概念及发展前景 附录02_EJB3.0推荐教程 附录03_EJB3的运行环境 如果需要配套视频,请给本人私信。
通过分析数据模型,和实际操作 PetStore 我们大概对它的数据模型有所了解。现在开始 分析系统 EJB 层的设计模式。首先什么是模式?看 Gof 的《设计模式》的定义,就是对被 用来在特定场景下解决一般设计问题的类和...
2, EJB容器可以为我们提供中间件服务; 3, EJB客户端:(常见的) 1) 独立的java程序 2)web程序 3)其他的EJB, 4)其他通过Web Service 调用的客户端; 4, EJB容器可以为我们提供的服务: 1) 事务:够用 2)安全:不够...
中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...
EJB3 最激动人心的是POJO 编程模型,我想对开发人员的影响将是非常大的,因为他降低了开发人员编写EJB 的 要求。EJB3 的bean 类将更像常规的Java bean。不要求像过去那样实现特殊的回调界面或者扩展EJB 类。...
第17章和第18章介绍如何采用EJB和Web服务来实现Struts框架的模型。第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试...
业务服务层可以通过以下选项实施:简单的 Java 系列、EJB2.1/3.0、Web 服务、TopLink 和 Oracle ADF 业务组件。 Oracle ADF 框架的主要特点包括: * 简化 J2EE 开发,减少实施设计模式和应用基础架构所需的代码 *...
第17章和第18章介绍如何采用EJB和Web服务来实现Struts框架的模型。第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试...
第17章和第18章介绍如何采用EJB和Web服务来实现Struts框架的模型。第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试...
EJB3 最激动人心的是POJO 编程模型,我想对开发人员的影响将是非常大的,因为他降低了开发人员编写EJB 的 要求。EJB3 的bean类将更像常规的Java bean。不要求像过去那样实现特殊的回调界面或者扩展EJB类。所以它 将使...
第17章和第18章介绍如何采用EJB和Web服务来实现Struts框架的模型。第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试...
第17章和第18章介绍如何采用EJB和Web服务来实现Struts框架的模型。第19章到第21章介绍了如何采用第三方软件,如Apache Common Logging API、Log4J、ANT和StrutsTestCase,来控制Struts应用的输出日志、管理以及测试...