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 ...
随机推荐
- netsh
NetSH (Network Shell) 是windows系统本身提供的功能强大的网络配置命令行工具. 导出配置脚本:netsh -c interface ip dump > c:\inter ...
- Quartz.NET simple_demo
Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和 ...
- GUI编程笔记(java)03:GUI的组件继承图
1.组件继承图: 2.分析上面的组件继承图 (1)Component:public abstract class Component extends Object implements ImageOb ...
- nginx同时监听本机ipv4/ipv6端口
修改nginx.conf配置文件 server { listen ; listen [::]:; } 0.0.0.0 表示本机所有ipv4地址,需要监听特定地址替换即可 [::] 表示本机所有ip ...
- linux 下ffmpeg和mencoder安装
ffmpeg和mencoder是进行视频转换和视频抽帧的重要开源工具,支持linux和windows环境下的视频转换和视频抽帧操作.本文章记录在linux这两者工具的安装过程.ffmpeg集成视频编码 ...
- 微信上传图文消息invalid media_id hint,thumb_media_id怎么获取
微信上传图文消息thumb_media_id, thumb_media_id怎么获取, 微信群发图文消息invalid media_id hint, 微信群发图文消息40007, 40007,inva ...
- .Net程序员学习Linux(二)
本次知识点:递归命令符,wc命令,文档编辑器 vi的简单使用,文本常用操作命令,find查询文件命令,grep匹配文本中对应的关键字 递归命令符 递归对于程序猿来说不默认,经常用于级联关系,一层套一层 ...
- angularjs中异常处理
1.TypeError: Cannot read property '$valid' of undefined a. Add ng-submit attribute to the form: < ...
- Javascript基础学习(1)_类型、值和变量
1.null和undefined ①概念上区别: null是一个特殊的对象,是“非对象”,使用typeof后是object对象 undefined用未定义的值表示更深层次的“空值”,它是变量的一种取值 ...
- hibernate - Transaction not successfully started
今天在测试 transaction(使用事务进行管理)的时候, 总报错: Transaction not successfully started 可能有多种原因, 这位哥们总结得很好: Transa ...