WebService和CXF框架基础

目录

WebService的简介

使用java调用WebService

测试代码

提供一个简单的服务

使用CXF框架生成标准的WebService服务

配置servlet

cxf的约束文件

配置客户端的cxf.xml


前言

本篇为java操作CXF框架调用WebService

WebService的简介

之前我们都是从数据库获取数据,但是有些数据库我们自己可能是操作不了的

于是别人就把他的数据共享出来,放在一个地方,只要我们调用一个方法,即可获取他的数据

这一系列操作,就构成了WebService

百度里搜WebService服务,找到其中一个网站

随便选择其中一个功能

点击带有wsdl后缀的链接(后面会讲为什么)

把上面xml往下拉,会发现wsdl:service ,箭头所指向的就是服务名,其实也是我们写WebService时的类名

找到wsdl:port ,箭头所指是一个我们WebService里写的接口,这个接口返回了地址对象

而这个地址对象就是实际的功能

点击之后会发现下面2个方法

使用java调用WebService

在命令行窗口输入如下命令,wsimport 这个命令其实是java jdk里面的命令,可以查看帮助文档

-s代表指定生成到哪个位置

-s后面的.(点) 代表的是路径,现在我们在D盘的test目录下, 点 就代表是在这个目录下生成一些东西,当然也可以指定目录

在命令的后面加上 -Xnocompile  可以不编译生成的java文件,也就没有class文件

测试代码

把上面的类复制到工程里(只复制java后缀的)

如果运行提示缺少空指针异常,添加以下cxf依赖即可

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>2.6.1</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>2.6.1</version>
</dependency>

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-core</artifactId>
    <version>2.6.1</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

运行结果

提供一个简单的服务

注意:下面的sayHello方法漏写了一个参数

使用Endpoint提供服务

在浏览器里输入服务的地址,并且后面加上?wsdl即可访问

使用wsimport生成类,然后复制过来,直接调用即可

使用CXF框架生成标准的WebService服务

注意:我们的项目的jdk必须是1.6版本以上的

需要引入jar包(上面讲了)

配置servlet

打开servlet类我们发现需要一个配置文件,且名称固定

可以重新初始化配置文件名

cxf的约束文件

上面一部分是spring的,下面一部分是cxf的约束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
					http://www.springframework.org/schema/beans/spring-beans.xsd
					http://cxf.apache.org/bindings/soap 
					http://cxf.apache.org/schemas/configuration/soap.xsd
					http://cxf.apache.org/jaxws 
					http://cxf.apache.org/schemas/jaxws.xsd
					http://www.springframework.org/schema/context
						http://www.springframework.org/schema/context/spring-context.xsd
						http://www.springframework.org/schema/aop
						http://www.springframework.org/schema/aop/spring-aop.xsd
						http://www.springframework.org/schema/tx 
						http://www.springframework.org/schema/tx/spring-tx.xsd
					">

写一个接口,并且写一个实现类

在接口上加上webservcie的注解

在cxf.xml里配置bean,服务类交给spring创建

并且需要注册服务,id可以随意指定,address随意指定

但是要和访问地址匹配上,项目名后面service 是我们在web.xml里配置servlet的访问路径

这里返回的就是功能bean,上面spring注册过的

然后直接运行程序,相当于开启了服务

使用java jdk的方式来访问

使用CXF框架的命令来访问

需要下载cxf框架,并且进入bin目录

而我们只需要复制这一个功能接口即可

只引入这一个接口的情况下,右箭头会引入一个object文件,需要删掉,不然找不到文件

配置客户端的cxf.xml

之前配置的是服务端的cxf.xml,使用的是jaxws:server

需要注意的是,这后面没有?wsdl

直接获取spring对象,然后转换成对应的接口即可调用对应的方法

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/89054896