基于wsdl2java訪问外来service服务
一、wsdl2java介绍
Wsdl2java是cxf提供的一个用于生成client代码的工具,它的功能跟wsimport差点儿相同。
可是wsdl2java工具仅仅能生成訪问基于cxf公布的服务的代码。Wsdl2java位于cxf_home/bin文件夹下,因此使用这个工具时须要加入文件夹到path中。Wsdl2java工具的參数与wsimport有所不同。主要有:
-d 參数,指定生成代码的文件夹
-p 參数,指定生成的新的包结构
(Wsdlurl) –http://server.port/service?wsdl,webservice的wsdl地址。必须的參数
二、新建javaproject,并公布webservice
新建java project,命名为HelloCXF,导入CXF相关的jar包。
在src文件夹中新建com.hellocxf.service包,并新建People类,People类代码为:
package com.hellocxf.service; import javax.jws.WebMethod;
import javax.jws.WebService; @WebService
public interface People {
publicString sayHello(String name);
//@WebMethod(exclude=true)
publicString makeFriend(String name);
}
在src文件夹中新建com.hellocxf.serviceImpl包,并新建Student类。Student代码为:
package com.hellocxf.serviceImpl; import javax.jws.WebMethod;
import javax.jws.WebService; import com.hellocxf.service.People; @WebService
public class Student implements People { @Override
publicString sayHello(String name) {
//TODO Auto-generated method stub
System.out.println("Hello:"+name);
returnname;
} @WebMethod(exclude=true)
@Override
publicString makeFriend(String name) {
//TODO Auto-generated method stub
System.out.println("makefriend with "+name+" student");
returnname;
} }
在src文件夹新建com.hellocxf.servicePublice包,并创建ServicePublish类。用于公布webservice.ServicePublish代码为:
package com.hellocxf.servicePublish; import javax.xml.ws.Endpoint; import com.hellocxf.service.People;
import com.hellocxf.serviceImpl.Student; public class ServicePublish { publicstatic void main(String[] args) {
//TODO Auto-generated method stub
PeoplemService = new Student(); Stringaddress = "http://localhost:8080/People";
Endpoint.publish(address,mService);
} }
执行ServicePublish类,公布webservice服务。
三、利用wsdl2java工具生成client调用服务代码
在D盘新建目录generatedCode
打开cmd命令。切换到该文件夹下
执行wsdl2java –d . wsdl">
http://localhost:8080/People?wsdl
四、新建clientproject,调用webservice服务
在eclipse中新建javaproject,命名为CXFClient
将第三部生成的.java类文件总体拷贝到src文件夹下.
在src文件夹下新建com.webservice.use包,在包中新建类ServiceUse.用于完毕对webservice的调用,代码为:
package com.webservice.use; import com.hellocxf.serviceimpl.People;
import com.hellocxf.serviceimpl.StudentService; public class ServiceUse { publicstatic void main(String[] args) {
//TODO Auto-generated method stub //<wsdl:servicename="StudentService">
StudentServicestudentService = new StudentService(); //<wsdl:portbinding="tns:StudentServiceSoapBinding"name="StudentPort">
//<wsdl:bindingname="StudentServiceSoapBinding" type="ns1:People">
Peoplepeople = studentService.getStudentPort(); StringserviceResult = people.sayHello("yinyuchun");
System.out.println(serviceResult); } }
类ServiceUse代码中创建的service类型和调用的port、方法都是从wsdl获取的。
基于wsdl2java訪问外来service服务的更多相关文章
- Android跨进程訪问(AIDL服务)
我将AndroidAIDL的学习知识总结一下和大家共享 在Android开发中,AIDL主要是用来跨进程訪问. Android系统中的进程之间不能共享内存,因此,须要提供一些机制在不同进程之间进行数据 ...
- 基于Apache CXF的Web Service服务端/客户端
转自:https://www.aliyun.com/zixun/wenji/1263190.html CXF服务端: package com.sean.server; import javax.jws ...
- 怎样基于谷歌地图的Server缓存公布Image Service服务
怎样基于谷歌地图的Server缓存公布Image Service服务 第一步:下载地图数据 下载安装水经注万能地图下载器,启动时仅仅选择电子.谷歌(这里能够依据自己的须要选择).例如以下图所看到的. ...
- Kivy A to Z -- 怎样从python代码中直接訪问Android的Service
在Kivy中,通过pyjnius扩展能够间接调用Java代码,而pyjnius利用的是Java的反射机制.可是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了b ...
- CentOs虚拟机能够互相ping通,但无法訪问虚拟机服务
CentOs虚拟机能够互相ping通,但无法訪问虚拟机服务 虚拟机ip:192.168.0.57 主机 ip:192.168.0.80 在虚拟机上搭建了php环境.虚拟机CentOs,主机win7 虚 ...
- 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice
一.基于JAX-WS的Web Service服务端/客户端 下面描述的是在main函数中使用JAX-WS的Web Service的方法,不是在web工程里访问,在web工程里访问,参加第二节. JAX ...
- Nginx 因 Selinux 服务导致无法远程訪问
文章来源:http://blog.csdn.net/johnnycode/article/details/41947581 2014-12-16日 昨天晚上处理好的网络訪问连接.早晨又訪问不到了. 现 ...
- 编写Web Serviceclient訪问www.webxml.com.cn提供的服务
好久没更新博客了,近期各种忙. 之前做Web Service课程的作业,当中有一个实验.实验内容如题所看到的. 以下简单说下怎样编写Web Serviceclient訪问webxml.com.cn里的 ...
- 通过rinetd实现port转发来訪问内网的服务
一. 问题描写叙述 通过外网来訪问内网的服务 二. 环境要求 须要有一台能够外网訪问的机器做port映射.通过数据包转发来实现外部訪问阿里云的内网服务 三. 操作方法 做port映射的方案 ...
随机推荐
- leetcode719:直线上的第k近点对
问题描述 给定数组a[N],可以确定C(N,2)个点对,也就确定了C(N,2)个距离,求这些距离中第k小的距离(k<C(N,2)). 思路 看到第k小.第k大这种问题,首先想到二分法. 把求值问 ...
- Android HTTP通讯
这里有一个非常棒的http通讯的总结,我看了以后茅塞顿开. 先贴代码: 01 public class Activity1 extends Activity { 02 03 private ...
- JMeter学习笔记--JMeter属性和变量
JMeter属性统一定义在jmeter.properties文件中.JMeter属性在测试脚本的任何地方都是可见的(全局),通常被用来定义一些JMeter使用的默认值.如属性remote_hosts定 ...
- Win32:引用头文件
1.首先,在代码文件头部使用#include来包含任何头文件(扩展名为.h或者.hpp的文件)都不会“产生”额外的函数. 我们可以说,包含一个头文件之后,该头文件内部已经定义的一些变量,宏,函数等等资 ...
- 在ubuntu中配置深度学习python图片分类实验环境
1 安装numpy,scipy, matplotlib, sudo apt-get install python-numpy sudo apt-get install python-scipy sud ...
- poj2151--Check the difficulty of problems(概率dp第四弹,复杂的计算)
Check the difficulty of problems Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5009 ...
- 跟我一起学习VIM - vim插件合集
2016-06-14 15:04 13333人阅读 评论(0) 收藏 举报 分类: Linux(104) 目录(?)[+] 前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教 ...
- Dos.ORM logo.Net轻量级开源ORM框架 Dos.ORM
http://www.oschina.net/p/dos-orm http://www.oschina.net/project/lang/194/csharp http://www.cnblogs.c ...
- 错误 1 error LNK2019: 无法解析的外部符号 "public: __thiscall Distance::Distance(int)" (??0Distance@@QAE@H@Z),该符号在函数 _main 中被引用
错误: 错误 1 error LNK2019: 无法解析的外部符号 "public: __thiscall Distance::Distance(int)" (??0Distanc ...
- springboot获取URL请求参数的多种方式
1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @pa ...