WebService:设置服务器提供SOAP1.2的服务
来源:互联网 发布:manifest.json 编辑:程序博客网 时间:2024/06/01 22:04
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)开发服务端:
@WebServicepublic class HelloWorld implements IHelloWorld {@Overridepublic 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);
并实现接口,publicclass HelloWorld implements IHelloWorld。
(2)抽取的接口
@WebServicepublic 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的服务
- SOAP1.1和SOAP1.2的区别
- webservice 中将soap1.1协议转换soap1.2协议
- 在SOAP1.2下实现HelloWord服务
- 服务器提供服务的方式
- 用java实现简单快速的webservice客户端/数据采集器(支持soap1.1和soap1.2标准,支持utf-8编码)
- 调用第三方提供的webService服务
- XFire soap1.2以及默认绑定下的服务发布方式
- webservice 调用第三方提供的webService服务
- 构建基于CXF的WebService服务(2)-- 利用CXF提供的wsdl2java工具创建客户端
- 一些提供免费的WebService服务的网…
- 提供webService服务的框架的各种配置方式总结
- 3.调用第三方提供的webService服务
- JAVA调用第三方提供的webService服务
- Axis2關於SOAP1.1和SOAP1.2
- SOAP1.1 与 SOAP1.2 区别总结
- Web-Service-SOAP1.1 vs SOAP1.2
- 如何在前台脚本中调用服务器提供的webservice
- ios中重写CollectionViewCell
- android使用pull解析xml
- nyoj 27 水池数目
- ios中Tableview的两个获得重用cell方法的区别?(兼容iPhone5.0之前的版本)
- oracle中对时间的操作以及to_char和to_date用法总结
- WebService:设置服务器提供SOAP1.2的服务
- javascript脚本何时被执行
- sqoop的安装、配置及使用简介
- 把权限管理做到最好,把业务做到最好
- TOJ 3504 Repeatless Numbers / 深搜
- linux下nginx服务器重启命令关闭
- windows默认共享的打开和关闭
- 冒泡排序,插入排序,快速排序 简单总结
- 与Android的系统打交道