如何使用CXF与WSDL文档深入分析?

使用CXF与WSDL文档深入分析


一:使用CXF 加入jar包

1)加入cxf 相关的jar包即可

2)

二:开发服务器端

1、Web Service编码

1)、@WebService( SEI接口和SEI的实现类)

2)、@WebMethod(SEI接口中的所有方法)

import javax.jws.WebMethod;
import javax.jws.WebService;
/**
 * 开发WebSerivce端
 * SEI:
 * */
@WebService
public interface HelloWebSerivce {
 //客户端调用的方法
 @WebMethod
 public String getString(String name);
}
/**
 * SEI的实现
 * */
@WebService
public class HelloWebSerivceImp implements HelloWebSerivce {
 @Override
 public String getString(String name) {
 System.out.println("Serivce端:getString() "+name);
 return "Hello"+name;
 }
}

2、Web Service发布

1、通过地址Wsdl

import javax.xml.ws.Endpoint;
import com.web.serivce.ws.imp.HelloWebSerivceImp;
/**
 * 发布Web Serivce
 * */
public class SerivceTest {
 public static void main(String[] args) {
 //ady01/Hello是随机编写
 String address="http://localhost:8989/ady01/Hello";
 Endpoint.publish(address, new HelloWebSerivceImp());
 System.out.println("发布成功..");
 }
}

3、在Jetty上运行的

三:使用JDK的wsdl文档分析

<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. --><!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://imp.ws.serivce.web.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://imp.ws.serivce.web.com/" name="HelloWebSerivceImpService">
 <!-- 
 types 定义类型
 schema : 定义了一些标签结构 约束 
 -->
<types>
<xsd:schema>
<xsd:import namespace="http://imp.ws.serivce.web.com/" schemaLocation="http://localhost:8989/ady01/Hello?xsd=1"></xsd:import>
</xsd:schema>
</types>
 <!-- 
 定义消息(请求和响应)
 message: 用来定义消息的结构 soap消息
 part : 指定引用types中定义的标签片断
 -->
<message name="getString">
<part name="parameters" element="tns:getString"></part>
</message>
<message name="getStringResponse">
<part name="parameters" element="tns:getStringResponse"></part>
</message>
 <!-- 
 SEI定义接口
 portType: 用来定义服务器端的SEI
 operation : 用来指定SEI中的处理请求的方法
 input : 指定客户端应用传过来的数据, 会引用上面的定义的<message>
 output : 指定服务器端返回给客户端的数据, 会引用上面的定义的<message>
 -->
<portType name="HelloWebSerivceImp">
<operation name="getString">
<input wsam:Action="http://imp.ws.serivce.web.com/HelloWebSerivceImp/getStringRequest" message="tns:getString"></input>
<output wsam:Action="http://imp.ws.serivce.web.com/HelloWebSerivceImp/getStringResponse" message="tns:getStringResponse"></output>
</operation>
</portType>
<!-- SEI 定义接口的实现类
 binding : 用于定义SEI的实现类
 type属性: 引用上面的<portType>
 <soap:binding style="document"> : 绑定的数据是一个document(xml)
 operation : 用来定义实现的方法
 <soap:operation style="document" /> 传输的是document(xml)
 input: 指定客户端应用传过来的数据
 <soap:body use="literal" /> : 文本数据
 output : 指定服务器端返回给客户端的数据
 <soap:body use="literal" /> : 文本数据
 -->
<binding name="HelloWebSerivceImpPortBinding" type="tns:HelloWebSerivceImp">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding>
<operation name="getString">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
</operation>
</binding>
<!-- 提供实现类(工厂)
 service : 一个webservice的容器
 name属性: 它用一指定客户端容器类
 port : 用来指定一个服务器端处理请求的入口(就SEI的实现)
 binding属性: 引用上面定义的<binding>
 address : 当前webservice的请求地址
 -->
<service name="HelloWebSerivceImpService">
<port name="HelloWebSerivceImpPort" binding="tns:HelloWebSerivceImpPortBinding">
<soap:address location="http://localhost:8989/ady01/Hello"></soap:address>
</port>
</service>
</definitions>

四:SCF自动生成客户端代码

1)、使用wsdl2java文件

2)、将wsdl2java的路径(含bin之前的)加入Path中

3)、将服务端启动的wsdl文件源码复制到本地的wsdl文件中;

4)、在使用的配置好的wsdl2java自动生成代码

注意:对应的路径(本地和网址wsdl路径都可)

5)、刷新工程

6)、使用代码进行提交

注意:需要获取到对应的实现类(wsdl文件中)

import com.web.serivce.ws.HelloWebSerivce;
import com.web.serivce.ws.imp.HelloWebSerivceImpService;
public class CxfClientTest {
 public static void main(String[] args) {
 //工厂对象
 HelloWebSerivceImpService factory = new HelloWebSerivceImpService();
 //通过对象工厂生产动态的实现类
 HelloWebSerivce helloWebSerivceImpPort = factory.getHelloWebSerivceImpPort();
 String string = helloWebSerivceImpPort.getString("我调用的cxf");
 System.out.println(string);
 }
}

7)、可以使用WebSerivce浏览器查询

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

触发修改文章时间【fastadmincms开发记录】|fastadmincms二次开发,触发,修改,文章,时间,fastadmin,ms,开发,记录
触发修改文章时间【fastadmincms开发记录】
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】|fastadmincms二次开发,在tp5中,过滤,输入,的零,宽度,字符,fastadmin,ms,开发,记录
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】
处理tag标签中的0宽空格【fastadmincms开发记录】|fastadmincms二次开发,处理,tag,标签,中的,0宽,空格,fastadmin,ms,开发,记录
处理tag标签中的0宽空格【fastadmincms开发记录】
添加专题时tags标签id出错【fastadmincms开发记录】|fastadmincms二次开发,添加,专题,时tags,标签,id,出错,fastadmin,ms,开发,记录
添加专题时tags标签id出错【fastadmincms开发记录】
20230518----模板 广告【fastadmincms开发记录】|fastadmincms二次开发,20230518,模板,广告,fastadmin,ms,开发,记录
20230518----模板 广告【fastadmincms开发记录】
cms添加视频模型【fastadmincms开发记录】|fastadmincms二次开发,ms,添加,视频,模型,fastadmin,开发,记录
cms添加视频模型【fastadmincms开发记录】
新增单篇收费复制功能【fastadmincms开发记录】|fastadmincms二次开发,新增,单篇,收费,复制,功能,fastadmin,ms,开发,记录
新增单篇收费复制功能【fastadmincms开发记录】
添加开会员折扣功能【fastadmincms开发记录】|fastadmincms二次开发,添加,开会,折扣,功能,fastadmin,ms,开发,记录
添加开会员折扣功能【fastadmincms开发记录】

历史上的今天:05月02日

热门专题

大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
金诺幼儿园(春城路金诺幼儿园)|昆明官渡区幼儿园,幼儿园报名,官渡区幼儿园,春城路幼儿园,幼儿园招生,学前班,昆明幼儿园,金诺幼儿园,环城南路幼儿园,石井路幼儿园
金诺幼儿园(春城路金诺幼儿园)
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发
云南综合高中|云南综合高中
云南综合高中
弥勒综合高中|弥勒综合高中
弥勒综合高中

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部