java开发webservice接口_webservice接口的开发和调用

java开发webservice接口_webservice接口的开发和调用一、WebService的开发手段使用Java开发WebService时可以使用以下两种开发手段1、使用JDK开发(1.6及以上版本)2、使用CXF框架开发(工作中)二、使用JDK开发WebService2.1、开发WebService服务器端1、定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示:1package…

大家好,又见面了,我是你们的朋友全栈君。

一、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 ,如下图所示:

af60c475306d3bd66df21088c60de1af.png

二、开发客户端

客户端调用我使用的两种方式

第一种使用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工程上面

65e13c84bcfd1ebc918dfdbda901801e.png

另外新建一个client类 直接使用生成的类调用

48304ba5e6f9fe08f3fa1abda7d326ab.png

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);

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

二、使用axis调用webservice接口

引入axis 相关jar包

2d4592b4026f2786e57eebd4376c2c30.png

代码如下

48304ba5e6f9fe08f3fa1abda7d326ab.png

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();

}

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

相关代码:https://github.com/15210448683/WebServiceDemoImpl

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160348.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深入理解Java反射「建议收藏」

    深入理解Java反射「建议收藏」要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息;另一种是反射机制,它允许我们在

    2022年7月1日
    22
  • Linux抓包命令tcpdump「建议收藏」

    Linux抓包命令tcpdump「建议收藏」tcpdump是一个抓包工具,用于抓取互联网上传输的数据包tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具tcpdump支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息#常用选项-i#监听哪一个网卡-n #不把ip解析成主机名-nn #不把端口解析成应用层协议-c #指定抓包的数量-S #不把随机序

    2022年6月29日
    36
  • VBS代码–很恶心的整人效果

    VBS代码–很恶心的整人效果—-我们会经常遇到一些无聊的文件,一旦我们打开它就会出现各种烦人的新窗口,今天来看的是VBS脚本—-一:VBS简介VBS是基于VisualBasic的脚本语言。VBS的全称是:MicrosoftVisualBasicScriptEditon。(微软公司可视化BASIC脚本版)。其语言类似VisualBasic(VB),VBS是微软的WSH脚本的一种,WSH是是Win

    2022年4月28日
    67
  • idea最新激活码2021破解方法

    idea最新激活码2021破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    84
  • js中setTimeout和clearTimeout的使用

    js中setTimeout和clearTimeout的使用一、概念1、js中可以通过setTimeout函数设置定时器,让指定的代码在指定的时间运动. 如果我们希望在setTimeout之行前终止其运行就可以使用clearTimeout()。2、clearTimeout()用于重置js定时器,如果你希望阻止setTimeout的运行,就可以使用clearTimeout方法。二、使用场景1、写计时器2、需要让程序隔一

    2022年10月26日
    0
  • netty 自定义协议_自定义annotation

    netty 自定义协议_自定义annotationNetty实现自定义协议

    2022年4月22日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号