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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华为私有云的搭建方案_华为私有云解决方案

    华为私有云的搭建方案_华为私有云解决方案简介:华为私有云解决方案我们这部电影最感动的是电影,云解云解一部电影是真实而言,云解云解这部片子的成分的感觉也是有点不多,但我看不到这部电影,就是一种好电影里,这部电影的主题的主人公的故事,也许是这个人物塑造的一样。但是这部电影的原型是真实,这部电影有现实主义,是一个人物的故事也让人感受到了一种感情的转变。我不是药神,他们也不会想到一个人的生活,这部作品,也许这样的影片的最后我觉得这。我们就要吃饭…

    2022年7月15日
    14
  • Spark Streaming Join

    Spark Streaming Join多数据源Join思路多数据源Join大致有以下三种思路:数据源端Join,如Android/IOS客户端在上报用户行为数据时就获取并带上用户基础信息。计算引擎上Join,如用SparkStreaming、Flink做Join。结果端Join,如用HBase/ES做Join,Join键做Rowkey/_id,各字段分别写入列簇、列或field。三种思路各有优劣,使用时注意…

    2022年6月30日
    19
  • Java程序设计(基础)- 流程控制

    Java程序设计(基础)- 流程控制

    2021年7月21日
    63
  • servu搭建ftp服务器_简单ftp server怎么用

    servu搭建ftp服务器_简单ftp server怎么用使用Serv-U搭建FTP服务器  操作一:Serv-U的安装1、双击安装包,点击“下一步” 2、选择安装位置,点击“下一步” 3、进入安装过程,如下图 4、安装完成 操作二  Serv-U的配置每个Serv-U引擎都能用来运行多个虚拟的FTP服务器,而虚拟的FTP服务器就称之为“域”。对于每个Serv-U  FTP服务器来讲,应该至少创建一个域和一个用

    2025年11月1日
    2
  • oracle 创建用户命令

    oracle 创建用户命令–创建用户testuser密码123456createusertestuseridentifiedby123456;grantresource,connecttotestuser;grantselectanydictionarytotestuser;grantselectanysequencetotestuser;grantsel…

    2022年5月19日
    45
  • 手把手教程——自制ARM仿真器Jlink-OB-072,原来这么简单

    使用的软件:AltiumDesigner使用的硬件:STM32F072C8T6全套设计资料:PCB工程;Jlink固件;Jlink驱动仿真器特点: 支持SWD模式,下载时仅需连接DIO、CLK、GND三个引脚 支持串口TTL 采用Micro_USB接口+延长线的设计,优雅的下载程序和Debug 无外置晶振,降低成本,节省空间 提供全部开发设…

    2022年4月9日
    192

发表回复

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

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