WebService:设置服务器提供SOAP1.2的服务
1,访问通过cxf发布的服务
(1)与之前一样,同样可以通过在本地通过wsdl文件和命令行生成Java文件来访问服务。
但是我们既然使用了cxf发布,就要通过cxf的工具生成访问。可以通过cxf目录的bin目录下的wsdl2java.bat文件访问服务。
例如:要在d:/a下生成Java类,与之前不同的是,cxf默认生成的Java文件,而wsimport默认生成的是class文件。
没有提示,在d:/a下生成了cn文件目录。
(2)将生成的cn目录拷贝到工程中。
(3)建立一个测试类,TestMain.java
(4)编写TestMain.java
public class TestMain {
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorldService().getHelloWorldPort();
helloWorld.sayHello();
}
}
运行,访问成功,打印hello cxf!!!
2,另一种调用方式:通过JaxWsProxyFactoryBean类调用,不过我们一般不使用这种方式,因为这种方式要求两边都是cxf,但两边经常不一样,不方便。
这种方式要先在服务器抽取一个接口。
(1)开发服务端:
@WebService
public class HelloWorld implements IHelloWorld {
@Override
public String sayHello() {
System.out.println("hello cxf!!!");
return "11111";
}
public static void main(String[] args) throws InterruptedException {
/**
* 这里为什么使用set方式设置呢,因为cxf要与spring整合,spring的设值注入都是通过set 方法注入的。
*/
//cxf发布形式
JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
//设置地址
factoryBean.setAddress("http://192.168.0.104:8989/hello");
//设置具体类
factoryBean.setServiceBean(new HelloWorld());
//设置接口。
factoryBean.setServiceClass(IHelloWorld.class);
//启动
factoryBean.create();
}
}
注意:需要为factorybean设置接口factoryBean.setServiceClass(IHelloWorld.class);
并实现接口,public class HelloWorld implements IHelloWorld。
(2)抽取的接口
@WebService
public interface IHelloWorld {
public abstract String sayHello();
}
(3)开发客户端
public class Client {
public static void main(String[] args) {
JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();
bean.setAddress("http://192.168.0.104:8989/hello?wsdl");
bean.setServiceClass(IHelloWorld.class);
IHelloWorld world = (IHelloWorld) bean.create();
String s = world.sayHello();
System.out.println(s);
}
}
(4)先启动服务端,在启动客户端测试。
3,通过cxf框架使用soap1.2协议。
在接口中,加上注释,在发布服务即可。
@WebService
//绑定为soap1.2,使用soap1.2协议
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public interface IHelloWorld {
public abstract String sayHello();
}
在生成的wsdl文档中有如图显示。
注意:soap1.2不可以在web service explorer中测试,MyEclipse只支持1.1,soap1.2无法显示。
Soap1.2的wsdl不可以通过wsimport生成Java文件,能生成一部分,但是不完整,没有主文件类。
4,一开始手机归属地查询的案例中,通过网上的wsdl生成Java代码的时候,产生warning的原因:通过jdk的wsimport命令生成Java文件报告warning:
因为jdk只支持soap1.1,其他都不支持,而这个wsdl中有4中协议版本,soap1.1、soap1.2、Get、Post。它会忽略出soap1.1以外的其他三种。
5,使用网站上的中英文翻译服务的时候,wsimport生成Java文件是全部无法生成,怎么办呢?
将页面另存为a.wsdl。在本地打开下载的文件。
修改error的错误,第19行报错。说有一个引用找不到,s:schema找不到,到19行删掉他即可。这个标记是微软写的,是个假引用,没什么作用,删掉即可。
在105行,报error。删掉即可。
修改完根据这个a.wsdl文件生成Java代码。
就OK了。
6,使用cxf的wsdl2java.bat工具可以生成soap1.2规范的wsdl的Java文件。
7,使用soap1.2的工程无法使用webservice explorer实现请求响应信息拦截,可以通过cxf自带的拦截器拦截信息。
在启动服务之前添加拦截请求和响应的拦截器即可。
这时soap1.2下的访问情况,这时将服务端的soap1.2的注解去掉,变成soap1.1的,在通过客户端访问,也可以访问,说明客户端可以自动根据服务端判定是soap1.1还是soap1.2。
WebService:设置服务器提供SOAP1.2的服务的更多相关文章
- 双节点(nginx+keepalived)为两台apache服务器提供负载均衡
说明:本实验为双节点nginx为两台apache服务器提供负载均衡,本文不是做lvs,所以realserver不是配置在keepalived.conf而是在nginx的配置文件中upstream.此架 ...
- 单节点nginx为两台apache服务器提供负载均衡
需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 [root@host101 ~]# vim /etc/hosts 19 ...
- 如何使用windows云服务器搭建IIs、windows服务
如何使用windows云服务器搭建IIs.windows服务,以下针对腾讯云服务器进行说明 1.购买云服务器之后,第1步需要设置的是,找到重装系统.重置密码等处. 2.设置安全组,设置完安全组之后才能 ...
- PHPWAMP自启异常,服务器重启后Apache等服务不会自动重启的原因分析
在使用“PHPWAMP自动任务”时,不少学生遇到如下问题: “phpwamp绿色集成环境重启动电脑(服务器)后,不会自动启动网站服务” (如果是其他环境或是自己搭建时遇到此问题,也是可以用此法解决) ...
- 打包成apk,生成apk文件,上传到网站服务器提供链接下载
Android开发把项目打包成apk: 做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android ...
- CentOS 5设置服务器hostname、DNS和IP
CentOS 5如何设置服务器主机名.DNS?设置主机名hostname编辑/etc/hostname文件写入:116.23.14.25 centostest.com其中116.23.14.25 表示 ...
- windows下安装redis以及redis扩展,设置redis为windows自启服务
windows下安装reids windows下redis下载地址:https://github.com/MSOpenTech/redis/releases. 启动redis服务:在redis目录下启 ...
- 为PHP设置服务器(Apache/Nginx)环境变量
为PHP设置服务器(Apache/Nginx)环境变量 设置环境变量常见的地方为区分开发环境/生产环境,或者定义一些数据库的帐号密码 设置Apache环境变量 指令 设置当前环境变量为DEV SetE ...
- HTTPS笔记:使用 SSLEngine 为 aioserver 服务器提供 SSL 访问支持
现在 HTTPS 的普及率是越来越高,闲来无事,花了二三天时间,为五年前写的 aioserver 服务器提供了 SSL 访问支持. 查看网上资料,为了提高服务器的高并发,建议使用:SSLEngine ...
随机推荐
- IOS Remote Notification
1. 本地证书合成 rm *.pem echo "export cert..." openssl pkcs12 -clcerts -nokeys -out push_cert.pe ...
- 字符串反转实现(C++)
字符串反转 C++实现,不使用系统函数: // ReverseString.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include ...
- 配置SSH免密码验证
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5183803. ...
- 让图片在DIV中垂直居中
window.onload=function(){ var img = document.getElementById("imgdiv"); var div = document. ...
- Python教程:连接数据库,对数据进行增删改查操作
各位志同道合的同仁可以点击上方关注↑↑↑↑↑↑ 本教程致力于程序员快速掌握Python语言编程. 本文章内容是基于上次课程Python教程:操作数据库,MySql的安装详解 和python基础知识之上 ...
- PHP关闭Notice错误提示
原文出处 本文章介绍在php中关闭notice错误的一些做法,但是不得不说的是在关掉错误提示时,那么程序代码中大量的notice级别错误是否会造成PHP性能下降 PHP Notice: Undefin ...
- javascript实现继承的6种方式
/*1.原型链继承*/ function SuperType() { this.property = true; } SuperType.prototype.getSuperValue = funct ...
- JS 頁面實時更新時間
function startTime() { var today = new Date(); //定义日期对象 var yyyy = today.getFullYear(); //通过日期对象的get ...
- html-----006
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Linq 构造复杂Json 多表group by
一个主表A(a1,a2),子表B(a1,b1,b2) ,想得到的结果是 [{a1,a2,Info [{b1,b2},{b1,b2},...}]] var list= from a in A join ...