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 ...
随机推荐
- QT皮肤系统的动态切换
应用需求: 提供皮肤切换选项,在不重启应用程序的情况下实现皮肤的动态切换. 理论基础: 1) 图片资源是如何被利用的 这里先简要说明一下实现原理,皮肤的动态切换其关键在于图片资源的加载方式.QT中每个 ...
- java 流程执行 循环 foreach循环
一. if分支 1. 结构 if else if else 2.执行原则 if if if 结构 会一直去执行()里的判断语句 if else if else if 结构 只要一条( ...
- android之Java+html+javascript混合开发
android开发,除了使用原生态的开发方式之外,还可以使用java+html+javascript混合开发的方式来开发,这样可以节省大量的开发时间,同时还可以使不同设备的用户获得相同的用户体验.好了 ...
- svn出错问题(用户名密码有修改以及资源url改变时)
用eclipse 同步SVN服务器宛然无法访问了: org.tigris.subversion.javahl.ClientException: RA layer request failed svn: ...
- hibernate和mybatis思想,区别,优缺点
Hibernate 简介 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行.程序员往往只 ...
- 避免 TCP/IP 端口耗尽
转载:http://www.cnblogs.com/tianzhiliang/archive/2011/06/27/2091214.html 当客户端启动到服务器的 TCP/IP 套接字连接时,客户端 ...
- IMPDP hangs, session wait “wait for unread message on broadcast channel”
昨晚有个朋友说加班在IMPDP数据, 在导入中途突然没有了进展,挂在那里不动了,impdp 窗口也没有报错, 一直等了1个多小时,说是impdp使用了parallel,怀疑是parallel参数出了问 ...
- MVVM模式应用 之为ApplicationBarIconButton 添加Command操作属性
在学习MVVM的过程中,总是会遇到挫折,一碰到就是花费好长时间去解决..唉,不求量,只求质. 第一种(已经实践成功): (1)http://bindableapplicationb.codeplex. ...
- 通过EL表达式,后台数据传到前台,引号及后面的数据被截断的问题:
问题描述: 通过EL表达式,后台数据传到前台,引号及后面的数据被截断的问题: 如: 前端页面: html: 问题解决: 1.一个简单的办法,把 input 写成这样: <input type=& ...
- Leetcode系列-Search in Rotated Sorted Array
做Leetcode题有一段时间了,但都是断断续续的,到现在才做了30题左右,感觉对自己来说还是有点难度的.希望自己能继续坚持下去,在校招前能解决超过一百题吧. 其实这些题就是用来训练你的解题思路的,做 ...