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());
}
}
}
运行测试,我们能在控制台看到我们所需的结果
分享到:
相关推荐
- **服务端点接口(SEI)**:定义Web服务接口,可以是EJB的业务接口,这样客户端可以通过Web服务调用EJB的业务逻辑。 4. **源码分析** - **实体bean的源码**:通常包含实体类和映射元数据(如ORM文件或注解),...
在EJB 3.0中,Web服务被集成到了EJB组件中,使得EJB可以直接暴露为Web服务。通过使用JAX-WS(Java API for XML Web Services),开发者可以方便地创建符合SOAP(Simple Object Access Protocol)标准的Web服务。 ##...
在本主题"ejb3 第12讲 --开发EJB容器模型的WEB服务"中,我们将探讨如何利用EJB 3.0版本来创建和整合Web服务。EJB 3.0是一个重要的里程碑,因为它显著简化了EJB的使用,引入了更多的POJO(Plain Old Java Object)...
### 基于MVC设计模式构筑JSP/Servlet+EJB的Web应用 #### 概述 随着互联网的快速发展,Web应用已经从简单的静态内容发布转变为支持动态交互内容的处理,例如在线娱乐、电子商务等。为了满足这些变化,Web应用程序...
**精通SOA:基于服务总线的Struts+EJB+Web Service整合应用开发** 在现代企业级软件开发中,Service-Oriented Architecture(SOA,面向服务架构)是一种广泛采用的设计理念,它强调通过独立、可重用的服务来构建...
这个"Java EJB模型模拟完整代码.rar"压缩包提供了一个学习EJB模型的实例,它包含了一系列实现特定操作的远程接口、本地Home接口以及各个模块的功能代码。 EJB的核心概念主要包括三个主要组件:Entity Beans(实体...
### 使用EJB功能在Web Dynpro Java中的WebService模型 #### 概览 本文档主要介绍了如何在SAP NetWeaver CE 7.11的Web Dynpro for Java应用程序中使用EJB (Enterprise JavaBeans) 功能并通过WebService模型进行数据...
它们通常使用WSDL(Web服务描述语言)来定义服务接口,SOAP(简单对象访问协议)作为传输协议,以及UDDI(统一描述、发现和集成)来查找服务。Web Services允许异构系统间的互操作性,使不同技术栈的应用程序能够...
源代码可能包含了配置文件,比如ejb-jar.xml、web.xml等,用于定义bean的行为和部署细节。理解这些配置文件对于部署和调试EJB应用至关重要。 **学习重点**: 1. EJB组件的角色和生命周期。 2. EJB与JSP之间的协作...
在提供的压缩包文件中,`Webservice开发完整实例lrq.docx`可能是详细的开发步骤文档,`TestWebServiceEjb`可能包含的是EJB Web服务的测试代码,而`TestWebServiceMain`可能是一个主类,用于启动和测试Web服务。...
Web服务是一种通过Web共享数据和功能的交流方式,它可以是通过Web调用的标准接口,如CORBA或EJB。Web服务的应用模式主要包括简单调用和合作处理,前者是Web服务作为Web化构件,由客户端通过SOAP消息调用多个服务进行...
总结来说,Java提供了全面的工具和技术来实现SOA编程模型,包括创建和消费Web服务、管理服务生命周期以及构建分布式系统的整体架构。通过理解和掌握这些知识,开发者能够构建可扩展、灵活且高度集成的企业级应用。
Java Web JSF + Richfaces + EJB + JPA 航空订票系统是一个综合性的应用,涵盖了多种Java技术,用于构建高效的、可扩展的、易于维护的Web应用程序。在这个系统中,每项技术都有其特定的角色和功能,共同协作以实现...
部署EJB应用通常涉及到创建EJB模块、Web模块(包含JSP和JavaBean),然后将它们打包成WAR或EAR文件,最后在应用服务器(如JBoss、WebLogic或GlassFish)上部署。运行时,服务器负责管理和调度EJB实例,确保其正确...
EJB架构基于组件模型,其中每个角色都有明确职责,确保组件间解耦合,易于维护和升级。EJB容器作为核心组件,负责管理EJB的生命周期,提供透明的事务管理、持久化、并发控制和安全服务,使得开发者可以专注于业务...
EJB的体系结构是基于对象组件模型的,其上层是分布式应用程序,下层则依赖API技术来处理事务服务。EJB技术简化了Java企业应用的开发、配置和执行过程。开发者编写好代码后,组件会被组合到特定文件中,每个文件包含...