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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 构建vscode的vue组件代码补全插件以及上传

    构建vscode的vue组件代码补全插件以及上传

  • linux 安装tinyxml,使用TinyXml「建议收藏」

    linux 安装tinyxml,使用TinyXml「建议收藏」使用TinyXml的两种方法。第一,导入所需的头文件和cpp文件TinyXml由两个头文件(.h文件)和四个CPP文件(.cpp文件)构成,用的时候,只要将(tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp)导入工程就可以用它的东西了。这就是开源的好处,就跟你自己写的程序一样,想怎么用都行。…

  • 缓冲区溢出漏洞_电脑基于堆栈的缓冲区溢出

    缓冲区溢出漏洞_电脑基于堆栈的缓冲区溢出缓冲区溢出缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下了隐患。操作系统所使用的缓冲区,又被称为”堆栈”。在各个操作进程之间,指令会被临时储存在“堆栈”中,“堆栈”也会出现缓冲区溢出。缓冲区溢出的危害…

  • HTTP与HTTPS的区别,详细介绍[通俗易懂]

    HTTP与HTTPS的区别,详细介绍[通俗易懂]目录HTTP与HTTPS介绍HTTPS和HTTP的主要区别客户端在使用HTTPS方式与Web服务器通信时的步骤CA证书的申请及其使用过程HTTPS的缺点SSL与TLS的区别?SSL/TLS历史SSL/TLS协议的基本过程HTTPS涉及的计算环节如何优化HTTPS的速度HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在We…

  • B – Fedya and Maths 暴力找规律入门

    B – Fedya and Maths 暴力找规律入门

  • 在线学习Java的几个网站,别再盲目学习java了![通俗易懂]

    在线学习Java的几个网站,别再盲目学习java了![通俗易懂]LearnJava在线这是一个非常不错的学习Java的在线网站,纯免费。这是一个个人项目,旨在通过简单有效的在浏览器中进行练习让你快速掌握Java编程语言。通过直接从网络浏览器运行实际代码,你无需在本地安装和执行代码就可以尝试编码,这无疑提高了编程效率和上手效率。你可以根据目录进行练习,有基础部分和高级部分,首先有例子代码,告诉你需要注意的事项以及详细的讲解,旨在把你教会后再让你进行练习。下面就是练习部分,练习部分没有固定在底部边框,可以自由滑动,能够让你编写代码的同时能够查看示例代码详解

发表回复

您的电子邮箱地址不会被公开。

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