IDEA开发WebService实例

本文适用于webservice 初学者,通过一个简单的webservice实例+调用讲解

不知道什么是webservice的,去百度,简单来说就是个socket 接口服务,类似天气服务、手机归属地查询服务...

下面我们自己来写一个webservice 接口

1.打开idea ,新建一个java project,按下图勾选webservice,以及ApacheAxis

2.填写工程名字,完成创建

3.项目初始结构(有一个自动生成的Java类–HelloWorld)

4.生成WSDL文件

    a.可以修生成的HelloWorld文件内容,我这里实现一个加法,代码如下:

  package example;

        public class HelloWorld {

                 public double add(double a,double b) {

                            return a + b;

            }

      }

5.右键选择webservice ,生产wsdl 文件

6.这时会发现在项目结构目录里多了一个HelloWorld.wsdl文件。


7.配置Tomcat服务器,idel 没有装tomcat插件的自行百度安装,很简单

    a.选择Run > Edit Configurations,

这时配置页面底部可能会显示有Warning:No Artifacts marked for deployment(警告:没有标记要部署的产物)。

点击警告信息右侧的Fix…按钮切换到Deployment标签页。



8.在出现的窗口中选择Project Settings > Artifacts,会到在新的警告信息。点击警告信息右侧的Fix…按钮,在弹出菜单里选择Add ‘JAX-WS-Apache Axis’ to the artifact。


9.测试http://localhost:8081/services,

http://localhost:8081/services/HelloWorld?wsdl

6)编写客户端代码调用服务

package test;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.utils.StringUtils;

public class CalculateClient {

public static void main(String[] args) {

// 指定调用WebService的URL(这里是我们发布后点击HelloWorld)

        String url = "http://localhost:8081/services/HelloWorld?wsdl";

//调用的方法

        String method = "add";

//调用方法的参数列表

        Object[] parms =new Object[]{2.0,3.0};

CalculateClient calculateClient =new CalculateClient();

//调用方法

        String svrAddResult = calculateClient.CallMethod(url, method, parms);

System.out.println(svrAddResult);

String svrMinusResult = calculateClient.CallMethod(url, "minus",new Object[]{5.0,2.0});

System.out.println("5.0 - 2.0 is " + svrMinusResult);

}

//实现WebService上发布的服务调用

    public String CallMethod(String url,String method,Object[] args) {

String result =null;

if(StringUtils.isEmpty(url)) {

return "url地址为空";

}

if(StringUtils.isEmpty(method)) {

return "method地址为空";

}

Call rpcCall =null;

try {

//实例websevice调用实例

            Service webService =new Service();

rpcCall = (Call) webService.createCall();

rpcCall.setTargetEndpointAddress(new java.net.URL(url));

rpcCall.setOperationName(method);

//执行webservice方法

            double rslt = (double) rpcCall.invoke(args);

result =String.valueOf(rslt);

}catch (Exception e) {

e.printStackTrace();

}

return result;

}

}

10.运行测试类:

成功ok!
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2018年5月24日接到人生第一个开发任务:利用webservice将本地客户端数据定时上传给服务端。 一、首先补...
    小黄帮主阅读 2,660评论 0 3
  • 一、Java基础 1.写出下面代码的执行结果 2.写出下面代码的执行结果 3.写出下面代码的执行结果 (此题需写出...
    joshul阅读 542评论 0 1
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,182评论 1 0
  • 一. Java基础部分.................................................
    wy_sure阅读 3,835评论 0 11
  • 5月20号之前完成
    半邪亦正阅读 192评论 0 0