基于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映射的方案 ...
随机推荐
- JS定义类及对象
1.工厂方式 <script type="text/javascript"> function createObject(name){ var p = new Obje ...
- 史上最简单的ButterKnife配置教程
网上的教程感觉都是抄来抄去,没一个靠谱的 还是自己丰衣足食搞一个ButterKnife配置教程吧.. 我的Android Studio版本是3.3. 1.dependencies中添加依赖 imple ...
- Linux内核同步 - sleepable RCU的实现
一.前言 由于曾经在Linux2.6.23上工作了多年,我对这个版本还是非常有感情的(抛开感情因素,本来应该选择longterm的2.6.32版本来分析的,^_^),本文主要就是描述Linux2.6. ...
- byte[] 转Hex String
一.一个字符串转byte数组怎么转? byte[] byteArray = String.getBytes(); 二.又想把生成的数组转回字符串怎么办? String covertString = n ...
- 取出分组后每组的第一条记录(不用group by)按时间排序
--操作日志表 CREATE TABLE [dbo].[JobLog]( [JobLogId] [int] IDENTITY(1,1) NOT NULL, [FunctionId] [nvarchar ...
- MyBatis generator 使用方式 小结
1. 配置到 maven 中pom.xml 中 2. 手动运行 脚本文件 3. 基于 web 项目 http://git.oschina.net/redArmy/springboot-gener ...
- ps钢笔工具 (重要工具)
ps钢笔工具 ctrl键 + 鼠标选中操作的点 = 移动点 alt键 + 方点 + 拖拉 = 拖出两个手柄 和 控制两端弧度 alt键 + 圆点 = 控制单向弧度
- [sql]mysql启停脚本
写了个较为完善的mysql多实例的启动停止脚本. [root@lanny 3307]# cat mysql #!/bin/sh [ $# != 1 ]&&{ echo "US ...
- angular学习笔记(五)-阶乘计算实例(1)
<!DOCTYPE html> <html ng-app> <head> <title>2.3.2计算阶乘实例1</title> <m ...
- VS2012, opencv2.4.4环境搭建
2.1 环境准备 安装 Visual Studio 2012 下载 opencv 最新版本( 目前是2.4.6, 下载链接 ) 2.2 安装 opencv 2.2.1. 双击下载的 OpenCV-2. ...