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 ...
随机推荐
- JAAS LOGIN IN WEBLOGIC SERVER--reference
The Java Authentication and Authorization Service (JAAS) is a standard extension to the security in ...
- SVN/GIT源代码泄露
造成SVN源代码漏洞的主要原因是管理员操作不规范.在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息.但一些网站管理员在发布代码时,不愿意使用‘导出’功能 ...
- SDWebImage 原理及使用
这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. SDWebImage 加载图片的流程 入口 setImageWi ...
- ubuntu中安装samba 分类: linux 学习笔记 ubuntu 2015-07-07 16:14 46人阅读 评论(0) 收藏
为了方便的和Windows之间进行交互,samba必不可少. 当然,他的安装使用也很简单: 安装: sudo apt-get install samba sudo apt-get install sm ...
- HDU-1009(简单贪心)
FatMouse' Trade Problem Description FatMouse prepared M pounds of cat food, ready to trade with the ...
- Android- Context理解
学习了安卓以后还是不理解Context的用法:Api文档链接http://wear.techbrood.com/reference/android/content/Context.html 一个非常好 ...
- js基础知识之_流程控制语句
javascript 流程控制 流程控制:就是程序代码执行顺序 流程控制:通过规定的语句让程序代码有条件的按照一定的方式执行 顺序结构 按照书写顺序来执行,是程序中最基本的流程结构 选择结构(分支结构 ...
- jquery 单引号和双引号的区别及使用注意
在js中单引号和双引号都是一样的,平时使用的时候尽量用单引号,只有碰到嵌套的时候才会同时用两种引号,感兴趣的朋友可以了解下: 可以执行的语法:$("ul li a").filter ...
- GET请求和POST请求
A:有哪些get请求呢? a.在浏览器地址栏直接输入一个请求地址 b.点击超链接 c.表单默认的提交方式method="GET/get" B:get请求方式的特点 a.会将请求参数 ...
- BigDecimal类型的详情
一.简介 1.概述 BigDecimal由任意精度的整数非标度值和32位的整数标度(scale)组成.如果为零或正数,则标度是小数点后的位数.如果为负数,则将该数的非标度值乘以10的负scale次幂. ...