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

相关推荐

发表回复

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

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