Web Service 之JAX-WS 与CXF实现

  Web Service的实现方式有很多种,本篇介绍的是基于JAX-WS(纯Java)实现的,然后借由CXF工具生成Javabean。

  

  第一步:创建一个Java工程,编写CalService接口,此接口就是提供Web服务的接口。

 1 package com.fx.inf;
 2
 3 import javax.jws.WebMethod;
 4 import javax.jws.WebService;
 5
 6 //标记服务端点接口(SEI)
 7 @WebService
 8 public interface CalService {
 9
10     //应用于服务器服务端点接口(SEI)上的方法-求和的方法
11     @WebMethod
12     public double add(double i , double j );
13
14     //应用于服务器服务端点接口(SEI)上的方法-求差的方法
15     @WebMethod
16     public double sub(double i , double j );
17
18     //应用于服务器服务端点接口(SEI)上的方法-求积的方法
19     @WebMethod
20     public double mul(double i , double j );
21
22     //应用于服务器服务端点接口(SEI)上的方法-求商的方法
23     @WebMethod
24     public double div(double i , double j );
25
26 }

  第二步:编写接口的实现类CalServiceImpl。

 1 package com.fx.inf.impl;
 2
 3 import javax.jws.WebMethod;
 4 import javax.jws.WebService;
 5
 6 import com.fx.inf.CalService;
 7
 8 //endpointInterface表示该类必须实现此接口的所有方法,serviceName表示web service的服务名称
 9 @WebService(endpointInterface="com.fx.inf.CalService",serviceName="CalService")
10 public class CalServiceImpl implements CalService {
11
12     @Override
13     @WebMethod
14     public double add(double i, double j) {
15         // TODO Auto-generated method stub
16         return i + j;
17     }
18
19     @Override
20     @WebMethod
21     public double sub(double i, double j) {
22         // TODO Auto-generated method stub
23         return i - j;
24     }
25
26     @Override
27     @WebMethod
28     public double mul(double i, double j) {
29         // TODO Auto-generated method stub
30         return i * j;
31     }
32
33     @Override
34     @WebMethod
35     public double div(double i, double j) {
36         // TODO Auto-generated method stub
37         if (j != 0 ) {
38             return i / j;
39         }else{
40             return 0;
41         }
42     }
43
44 }

  第三步:编写测试方法,发布该服务。

 1 package com.fx.test;
 2
 3 import javax.xml.ws.Endpoint;
 4
 5 import com.fx.inf.CalService;
 6 import com.fx.inf.impl.CalServiceImpl;
 7
 8 public class CalServiceTest {
 9
10     public static void main(String[] args) {
11         System.out.println("--->Web Service Start");
12
13         CalService cal = new CalServiceImpl();
14         String address = "http://localhost:8888/cal";
15         //发布此服务
16         Endpoint.publish(address, cal);
17     }
18
19 }

  运行该Test,发布成功:

  

  第四步:打开一个浏览器,输入http://localhost:8888/cal?wsdl,得到一些信息,这便是wsdl文件:

  

  借用CXF工具(CXF的bin目录下有一些指令,可以将wsdl文件自动转换为Javabean文件),将wsdl编译为Javabean文件:    

  

  第五步:将得到的文件拷贝到一个新的Java项目下:

  

  编写测试类:

 1 package com.fx.test;
 2
 3 import com.fx.inf.CalService;
 4
 5 public class CalTest {
 6
 7     public static void main(String[] args) {
 8
 9         com.fx.inf.impl.CalService cal = new com.fx.inf.impl.CalService();
10
11         CalService calSer = cal.getCalServiceImplPort();
12
13         System.out.println("--->add:" + calSer.add(1, 2));
14         System.out.println("--->sub:" + calSer.sub(1, 2));
15         System.out.println("--->mul:" + calSer.mul(1, 2));
16         System.out.println("--->div:" + calSer.div(1, 2));
17
18     }
19
20 }

  运行,得到结果:

  

  ps:这边一定要注意,之前发布服务的那个java项目不要停掉,否则这边会报错:

  

时间: 2024-09-29 19:23:56

Web Service 之JAX-WS 与CXF实现的相关文章

Web Service(二):cxf 实现

1. cxf简介 Web Services 的一种实现方式. Apache CXF = Celtix + XFire,后更名为 Apache CXF ,简称为 CXF. CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding .DataBinding.Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实

使用CXF开发Web Service服务

1.使用CXF开发Web Service服务端 1.1 开发一个Web Service业务接口,该接口要用@WebService修饰 (1)创建一个Java项目MyServer (2)在MyServer项目中创建一个接口HelloWorld package com.xju.ws; import javax.jws.WebService; @WebService public interface HelloWorld { String sayHello(String name); } 1.2 开发

CXF Web Service

一.下载apache-cxf-3.1.4.zip. 二.编写服务端 1.新建工程,导入apache-cxf-3.1.4.zip下的jar包. 2.编写一个Web Service用来传输参数的类. package com.ws.services.entity; import javax.xml.bind.annotation.XmlRootElement; /** * 该类为Web Service中的参数.返回值类型,故需要使用JAXB注解告诉CXF如何在XML和Java Object之间处理,

Web Service学习-CXF与Spring整合为JavaEE应用发布WebService(三)

CXF与Spring整合,分两个方面给大家介绍: 1,在传统ssh项目基础上添加Web Service 赋值CXF的jar包 在web.xml配置文件中导入CXF的核心控制器:CXFServlet 在Spring配置文件中导入CXF提供Schema,xml配置文件 在Spring配置文件中使用jaxws:endpoint元素来暴露Web Service 如果要添加拦截器,在jaxws:endpoint元素里添加 inInterceptors,outInterceptors子元素 2,远程调用We

翻译-使用Spring调用SOAP Web Service

原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP的web service的整个过程. 指南内容 你将构建一个客户端,使用SOAP用来从远端的基于WSDL的web service获取天气数据.请访问http://wiki.cdyne.com/index.php/CDYNE_Weather进一步获取该天气服务的信息. 该服务根据邮编返回天气预测.你可

Web Service学习之六:CXF解决无法处理的数据类型

CXF不能够处理像Map复杂的数据类型,需要单独转换处理. 总体思路:创建一个转换器和一个对应的可以处理的数据结构类型,将不能处理的类型转换成可以处理的类型: 步骤: 一.创建一个可以处理的类型 举例:要转换Map<String,User> package ws; import java.util.List; public class StringUser { public static class Entry { private String key; private User value;

Web Service笔记(五):CXF开发RESTful风格的Web Service

前言: 1.Web Service笔记(五):利用CXF结合Spring开发web service 2.XML学习笔记(三):Jaxb负责xml与javaBean映射 3.jax-rs详解 4.可以使用浏览器的工具调试:如 Firefox 的RESTClient 和chrome的REST Console. 一.配置Spring的配置文件 1.需要引入新的 jar 包. 2.配置 applicationContext-server.xml 文件.使用 jaxrs:server ,记得引入jaxrs

Web Service (四) 手动发布Web Service接口-CXF与Spring集成

当我们发布完Web Service接口之后有两种方式可以调用Web service服务,一种是通过动态客户端方式,另一种是引用服务端的接口,引用服务端接口的方式对于客户端同服务器端耦合比较大,而使用WSDL的方式客户端不知道服务端的存在就可以调用服务器的方法. 下面是项目的结构图: 1.Web Service发布项目 2.编写服务端接口类以及实现类,如下,同上一篇自动发布接口,多了一个注解@WebService package com.test.webservice; import javax.

Web Service学习-CXF开发Web Service实例demo(一)

Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样调用问题.比如.有一个C语言写的程序.它想去调用java语言写的某个方法. 集中解决:1,远程调用 2.跨平台调用 3,跨语言调用 实际应用: 1.同一个公司的新,旧系统的整合.Linux上的java应用,去调用windows平台的C应用 2,不同公司的业务整合.业务整合就带来不同公司的系统整合.不

Apache CXF实现Web Service(4)——Tomcat容器和Spring实现JAX-RS(RESTful) web service

准备 我们仍然使用 Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 中的代码作为基础,并引入spring来进行RESTful web service的配置和管理. 项目目录结构如下图 首先我们要在web.xml中加入通过Spring的ContextLoaderListener加载的Spring运行时环境以及CXF的Spring配置文件 web.xml <?xml version="