webService :生成wsdl文件
添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.4.RELEASE</version></parent><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxws</artifactId><version>3.1.12</version></dependency></dependencies><build><plugins><!-- 由于maven默认使用的jdk与工程配置的jdk版本不一致,导致无法编译通过,通过该插件指定jdk版本 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><!-- maven-surefire-plugin 是maven里执行测试用例的插件,不显示配置就会用默认配置。这个插件的 surefire:test 命令会默认绑定maven执行的 test 阶段 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><!-- 跳过测试单元 true:跳过测试,false不跳过(默认)--><skip>true</skip></configuration></plugin></plugins></build>
</project>
服务端接口:
package com.example.demo.netbar.service;import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;@WebService(name = "NetbarService", //@WebService:将该接口发布成WebService服务器
targetNamespace = "http://service.netbar.demo.example.com") //命名空间为包名得倒叙
public interface NetbarService {@WebMethodString sayHello(@WebParam(name = "userName") String name);
}
服务端实现类:
package com.example.demo.netbar.service;import org.springframework.stereotype.Component;import javax.jws.WebService;@WebService(serviceName = "NetbarService"//服务名,targetNamespace = "http://service.netbar.demo.example.com"//报名倒叙,并且和接口定义保持一致,endpointInterface = "com.example.demo.netbar.service.NetbarService")//包名
@Component
public class NetbarServicesImpl implements NetbarService{@Overridepublic String sayHello(String name) {return "hello" + name;}
}
cxf配置:
package com.example.demo.netbar.service;import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.xml.ws.Endpoint;@Configuration
public class cxfConfig {@Autowiredprivate Bus bus;@Autowiredprivate NetbarService netbarServices;@Beanpublic Endpoint endpoint() {EndpointImpl endpoint = new EndpointImpl(bus,netbarServices);endpoint.publish("/NetbarService");//接口发布在 /NetbarServices 目录下return endpoint;}}
发布之后,wsdl路径为:
http://localhost:8080/services/NetbarService?wsdl
wsdl信息:
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://service.netbar.demo.example.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="NetbarService" targetNamespace="http://service.netbar.demo.example.com">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://service.netbar.demo.example.com" elementFormDefault="unqualified" targetNamespace="http://service.netbar.demo.example.com" version="1.0">
<xs:element name="sayHello" type="tns:sayHello"/>
<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
<xs:complexType name="sayHello">
<xs:sequence>
<xs:element minOccurs="0" name="userName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayHelloResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="sayHelloResponse">
<wsdl:part element="tns:sayHelloResponse" name="parameters"> </wsdl:part>
</wsdl:message>
<wsdl:message name="sayHello">
<wsdl:part element="tns:sayHello" name="parameters"> </wsdl:part>
</wsdl:message>
<wsdl:portType name="NetbarService">
<wsdl:operation name="sayHello">
<wsdl:input message="tns:sayHello" name="sayHello"> </wsdl:input>
<wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse"> </wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="NetbarServiceSoapBinding" type="tns:NetbarService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="sayHello">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="sayHello">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sayHelloResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="NetbarService">
<wsdl:port binding="tns:NetbarServiceSoapBinding" name="NetbarServicesImplPort">
<soap:address location="http://localhost:8080/services/NetbarService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
基于cxf的客户端调用webService接口:
/*** 方式1.代理类工厂的方式,需要拿到对方的接口*/@Testpublic void cl1() {try {// 接口地址String address = "http://localhost:8080/services/NetbarService?wsdl";// 代理工厂JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();// 设置代理地址jaxWsProxyFactoryBean.setAddress(address);// 设置接口类型jaxWsProxyFactoryBean.setServiceClass(NetbarService.class);// 创建一个代理接口实现NetbarService cs = (NetbarService) jaxWsProxyFactoryBean.create();// 数据准备String userName = "Leftso";// 调用代理接口的方法调用并返回结果String result = cs.sayHello(userName);System.out.println("返回结果:" + result);} catch (Exception e) {e.printStackTrace();}}/*** 动态调用方式*/@Testpublic void cl2() {// 创建动态客户端JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient("http://localhost:8080/services/NetbarService?wsdl");Object[] objects = new Object[0];try {// invoke("方法名",参数1,参数2,参数3....);objects = client.invoke("sayHello", "Leftso");System.out.println("返回数据:" + objects[0]);} catch (java.lang.Exception e) {e.printStackTrace();}}
遇到的问题:
1.启动服务时报错:
Cannot determine embedded database driver class for database type NONE
原因及解决办法:
webService :生成wsdl文件相关推荐
- php 生成wsdl工具,php中使用zendstudio 12为soapserver生成wsdl文件
使用soap有两种方式:wsdl模式和non-wsdl模式, 采用non-wsdl模式,不必生成wsdl文件,比较方便直接,服务器端代码如下: class service { public funct ...
- WebService 之 WSDL文件 讲解
http://blog.csdn.net/simbi/article/details/6254146 恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用 ...
- [转]WebService 之 WSDL文件 讲解
原文地址:http://blog.csdn.net/tropica/archive/2008/11/02/3203892.aspx 恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时 ...
- php生成wsdl文件,利用nusoap生成wsdl文件
第一步,首先下载 nusoap.php 下载地址 http://sourceforge.net/projects/nusoap/files/nusoap/ server.php 文件 // Cre ...
- 使用SoapUI生成wsdl文件客户端(二)
1.复制生成的文件到你的工程目录中,并创建一个测试类 2.测试类代码如下: import java.net.URL;public class TestClient {public static voi ...
- cmd 生成wsdl文件_.wsdl文件生成.cs文件
1.打开VS文件命令行工具(一般在安装文件的Common7\Tools\Shortcuts下面例如[E:\VS2013安装程序\Common7\Tools\Shortcuts\VS2013 x64 本 ...
- webservice中wsdl文件说明
wsdl文件结构分析 WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点, ...
- net 将WebService生成dll文件
通过dll来引用webservice的方法 1.打开浏览器,然后写输入http://192.168.0.2/RentService.asmx?wsdl 2.然后选择浏览器->文件->另存为 ...
- cmd 生成wsdl文件_Spring Boot SOAP系列之WSDL是什么“Lese”
相关历史文章(阅读本文之前,您可能需要先看下之前的系列 ) WebService SOAP概述 - 第275篇 WSDL是什么"Lese" - 第276篇 Spring boot ...
最新文章
- linux进程间通信-XSI IPC
- 马云牛啊 从骑自行车到坐迈巴赫只用20年
- 浅析移动端网站建设前都需要考虑哪些因素?
- python编程从入门到实践课后题答案-《Python编程:从入门到实践》课后习题及答案—第11章...
- hadoop的hdfs文件操作实现上传文件到hdfs
- HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)
- java文件放桌面怎么运行不了,不可能使用Java桌面在网络上启动文件吗?
- 《C语言及程序设计》实践参考——当年第几天(数组方案)
- 图的顺序存储(邻接矩阵存储)【摘录自严长生老师的网站】
- date format 精辟讲解
- 食品安全事件曝光严重,SPC软件的应用刻不容缓
- 示波器wvf导入matlab,运动控制系统实验
- 【Android-File】Android文件的读写
- 曙光服务器I620-G10安装windows server 2012 教程,附raid卡驱动
- github 发布静态页面
- c语言程序设计第一次月考考试重点,为什么说初三第一次月考很重要
- Chrome (Google) 浏览器的快捷键大全
- 实体店运营:能提高顾客留存率的店铺陈列方式
- adb 前摄像头 调用_android: 调用摄像头拍照
- UnityVR--小程序7--坦克对战
热门文章
- OrCAD中常用元件在库中存放的位置(最近更新2012-7-30)
- python的语言特点软测工程师经历的各个阶段_测试开发相关JD
- Spring Boot 部署打包成 jar 和 war 有什么不同?
- 2016,上路了 就不难
- Oracle系列之八:SQL查询
- 8.5 代酷睿的 13 英寸旗舰 — Yoga S730 长测
- QClub广州站-3月1号下午活动开始报名啦
- python 3.8.2(32-bit)安装教程_Python 3.8.2详细图文安装教程(附安装包)
- 计算机关机打不开,电脑强行关机打不开怎么办
- ULN2003型达林顿管