java开发webservice接口_webservice接口的开发和调用
一、WebService的开发手段
使用Java开发WebService时可以使用以下两种开发手段
1、 使用JDK开发(1.6及以上版本)
2、使用CXF框架开发(工作中)
二、使用JDK开发WebService
2.1、开发WebService服务器端
1、定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示:
1 package me.gacl.ws;
2
3 import javax.jws.WebMethod;
4 import javax.jws.WebService;
5
6 /**
7 * @author gacl
8 * 定义SEI(WebService EndPoint Interface(终端))
9 */
10 //使用@WebService注解标注WebServiceI接口
11 @WebService
12 public interface WebServiceI {
13
14 //使用@WebMethod注解标注WebServiceI接口中的方法
15 @WebMethod
16 String sayHello(String name);
17
18 @WebMethod
19 String save(String name,String pwd);
20 }
2、编写interface的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法,如下所示:
1 package me.gacl.ws;
2
3 import javax.jws.WebService;
4
5 /**
6 * @author gacl
7 * SEI的具体实现
8 */
9 //使用@WebService注解标注WebServiceI接口的实现类WebServiceImpl
10 @WebService
11 public class WebServiceImpl implements WebServiceI {
12
13 @Override
14 public String sayHello(String name) {
15 System.out.println("WebService sayHello "+name);
16 return "sayHello "+name;
17 }
18
19 @Override
20 public String save(String name, String pwd) {
21 System.out.println("WebService save "+name+", "+pwd);
22 return "save Success";
23 }
24 }
3、使用Endpoint(终端)类发布webservice,代码如下:
1 package me.gacl.ws.test;
2
3 import javax.xml.ws.Endpoint;
4
5 import me.gacl.ws.WebServiceImpl;
6
7 /**
8 * @author gacl
9 *
10 * 发布Web Service
11 */
12 public class WebServicePublish {
13
14 public static void main(String[] args) {
15 //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
16 //String address = "http://192.168.1.100:8989/";这个WebService发布地址的写法是合法的
17 //String address = "http://192.168.1.100:8989/Webservice";这个WebService发布地址的是合法的
18 String address = "http://192.168.1.100:8989/WS_Server/Webservice";
19 //使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
20 Endpoint.publish(address , new WebServiceImpl());
21 System.out.println("发布webservice成功!");
22 }
23 }
运行WebServicePublish类,就可以将编写好的WebService发布好了,WebService的访问URL是:http://192.168.1.100:8989/WS_Server/Webservice ,如下图所示:
二、开发客户端
客户端调用我使用的两种方式
第一种使用apche cxf生成代码进行访问
1、下载apache cxf的包,地址为:http://cxf.apache.org/download.html 如:apache-cxf-3.1.6
2、解压apache-cxf-3.1.6到任意目录
3、配置环境变量
os系统设置
1)、export CXF_HOME=/Users/moon/Desktop/tools/apache-cxf-3.1.6
2)、path后面加 :$CXF_HOME/bin
windows系统设置
1)、CXF_HOME=D:\apache-cxf-3.1.6
2)、在path后面加上 %CXF_HOME%/bin;
在命令中输入wsdl2java,如果有提示usage,就表明配置成功
4、运行wsdl2java工具
在命令中输入:wsdl2java -d \xx\xxx\xx -client http://localhost:8080/cxfWSServer/webservice/Greeting?wsdl
(\xx\xxx\xx 是客户端程序代码所在的目录,http://localhost:8080/cxfWSServer/webservice/Greeting?wsdl 是发布的webservice服务)
附wsdl2java用法:
wsdl2java -p com -d D:\\src -all xx.wsdl
-p 指定其wsdl的命名空间,也就是要生成代码的包名:
-d 指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web service的代码
-impl 生成web service的实现代码
-ant 生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
生成后的代码直接放到client工程上面
另外新建一个client类 直接使用生成的类调用
package com.moon.cxf;
import com.moon.cxf.client.Greeting;
import com.moon.cxf.client.GreetingImplService;
public class CxfClient {
public static void main(String[] args) {
GreetingImplService serviceFactory = new GreetingImplService();
Greeting service =
serviceFactory.getGreetingImplPort();
String result = service.greeting("Jaune");
System.out.println(result);
}
}
二、使用axis调用webservice接口
引入axis 相关jar包
代码如下
package com.moon.cxf;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
/**
* 使用axis调用cxf发布的webservice接口
* @author moon
*
*/
public class AxisClient {
public static void main(String[] args) throws ServiceException, RemoteException {
try {
String endpoint = " http://localhost:8080/cfxWSServer/webservice/Greeting";
// 调用过程
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://server.cxfWebservice.moon.com/","greeting"));// WSDL里面描述的操作名称
call.addParameter("username",
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);// 操作的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型
call.setUseSOAPAction(true);
// 给方法传递参数,并且调用方法
String temp = "good";
Object[] obj = new Object[] { temp };
String result = (String) call.invoke(obj);
System.out.println("Result is : " + result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关代码:https://github.com/15210448683/WebServiceDemoImpl
java开发webservice接口_webservice接口的开发和调用相关推荐
- java webservice接口开发_php开发webservice服务端接口(wsdl)
首先要创建两个文件Test.php Test.wsdl Test.php文件代码是处理具体业务的接口代码 Test.php代码: ?php ini_set("soap.wsdl_cache_ ...
- webservice 暴漏接口_webService接口是什么?
展开全部 Web 是使应用62616964757a686964616fe59b9ee7ad9431333431366263程序可以与平台和编程语言无关的方式进行相互通信的一项技术.Web 服务是一个软 ...
- mysql webservice接口_WebService接口在PHP中的使用
Web服务是一种外部使用的服务,PHP调用它实际上非常简单.可以说如果想要对web的知识点有所提升,webService也是每个学习编程人员的基础使用.本篇要带来的是WebService在php中的运 ...
- java和webservice接口测试_webservice接口测试
1,用soupui进行测试 2,安装soupUI 3,测试的时候是给了一个wdsl 操作步诹:new (name , 填写地址)---导入wsdl文件---看到所有的接口 发送请求的格式 canshu ...
- Java开发WebService(使用Java-WS)
前言: 初学Java,因为工作需要,直接跳到开发WebService.以前用.NET开发过WebService,对比一下,Java的WebService开发部署难度高了不止一个档次.网上的教程各式各异 ...
- 用Java 开发 WebService Axis简单实例
用 Java 开发 WebService Axis 简单实例 在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上.用Eclipse开发 ...
- IDEA中进行SpringBoot整合spring-ws开发webservice接口后期要修改xsd文件流程
场景 SpringBoot整合spring-ws开发webservice接口(全流程详细教程) 参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl ...
- Webservice开发之xsd中开发请求数据的响应接口
场景 SpringBoot整合spring-ws开发webservice接口(全流程详细教程)参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
- Webservice开发之xsd中开发登录请求的响应接口
场景 SpringBoot整合spring-ws开发webservice接口(全流程详细教程)参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
- Webservice开发之xsd中开发list请求参数的接口
场景 SpringBoot整合spring-ws开发webservice接口(全流程详细教程)参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
最新文章
- Flex Air程序打包成独立的exe安装文件
- lambda表达式python_Python中的Lambda表达式
- css实现自适应背景图及背景图透明度处理
- shell 拿到service状态_9个实战及面试会经常用到的Shell脚本!
- 好程序员分享大势所趋 HTML5成Web开发者最关心的技术
- 企业要顺应社会生态环境
- nginx源码分析(5)——监听socket初始化
- Android 4.X 系统加载 so 失败的原因分析
- php滑动轮播效果,js实现移动端手指滑动轮播图效果
- php syslog服务器,Linux Syslog日志服务器的搭建
- 【电路仿真】基于matlab simulink三相半波可控整流电路【含Matlab源码 331期】
- PAT L1 049 天梯赛座位分配
- 计算机485通讯原理,串口通信原理详解.ppt
- ROS配置DS-NAT端口映射
- win10系统不能多开服务器,win10游戏不能双开如何处理_win10电脑游戏双开同时运行操作方法...
- 时间状语:(现在完成时)/ 固定语句(现在完成时)/29主动表被动/23过去完成时:又 名 过去的过去;/过去将来时/(过去完成时)/25 过去完成时,固定搭配/26 时间状语 (将来完成时)
- 从程序员到项目经理:思维一换天地宽
- python和r语言哪个简单_python与r语言哪个简单
- Linux如何检查脱域,ZeroLogon的利用以及分析
- vue移动端使用手势库---alloytinger