Web Service 简单的例子

什么是Web Service?

可以使用Web Service这种技术实现SOA的思想,就像借助Java实现面向对象的思想。
Web Service实现的是机器与机器之间的互通,即只要是基于web service提供的服务的机器,都可以非常方便的进行服务功能的互相访问,相当于在机器之间搭建了一个通用的同学平台。通过Web Service, .Net平台和Java EE 平台可以方便的实现互通。同时可以为用户提供更高层次、更方便的资源共享,如分布式计算等。

例子:

从Java SE 6.0开始,JavaSE提供了支持Web Service开发的工具包,基于它可以快速开发出Web Service。

  • 环境:使用的环境是Java SE 8.0。
  • 功能:实现一个接受用户姓名输入,返回一个数值的功能。
  • 步骤如下:
    1. 创建Web Service实现类
      创建一个Java类,其名称为MyLuckTestWebService,如下
      这里写图片描述
package com.company;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
 * Created by ling on 2015/4/23.
 */
@WebService     //注解,通知系统所创建的一个类会作为一个Web Service发布
public class MyLuckTestWebService {
    //定义Web Service中的服务方法
    public String calLuck(String customer) {
        return customer + " , 您今日的幸运指数为:" + (int)(Math.random() * 100);
    }

    public static void main(String[] args) {
        //指定URL和服务实现类并发布
        Endpoint.publish("http://localhost:8080/MyWebServices/MyLuckTestWebService",new MyLuckTestWebService());//
        System.out.print("Web servise starting");
    }
}
  1. 编译并生成Web service
    编译MyLuckTestWebService.java源文件,在当前路径打开cmd,输入
    这里写图片描述
    wsgen命令将对Web Service类自动进行包装,生成所需要的辅助类,执行该命令后会生成一个jaxws文件夹

  2. 发布Web Service
    运行MyLuckTestWebService类,发布WS
    这里写图片描述

  3. 开发客户端辅助类
    在开发客户端之前,需要为客户端生成一线访问对应的辅助类。在客户端的路径下的cmd中输入wsimport命令,将在目录下创建一个辅助类的目录。
    这里写图片描述
    使用wsimport命令是输入的“”http://localhost:8080/MyWebServices/MyLuckTestWebService?wsdl”,这是Web Service的WSDL文件的URL地址。
    每个Web Service在使用wsgen生成并发表后都会产生一个WSDL文件,这个XML文件告诉外界该WS都有什么样的功能。根据WSDL就能编写调用WS的客户端。

  4. 开发客户端代码

package com.company;

import java.lang.String;
import java.net.URL;
import javax.jws.*;
import javax.xml.ws.*;
import java.net.*;
import javax.xml.namespace.*;

public class MyLuckTest_Client {
    public static void main(String[] args) throws Exception {
        URL wsURL = new URL("http://localhost:8080/MyWebServices/MyLuckTestWebService?wsdl");

        //使用动态服务
        QName qn = new QName(   "http://company.com/", "MyLuckTestWebServiceService"); //服务名称
        Service service = Service.create(wsURL, qn); //动态服务
        MyLuckTestWebService wsemPort = service.getPort(MyLuckTestWebService.class);
        System.out.println(wsemPort.calLuck("TOM"));

        MyLuckTestWebServiceService wsems = new MyLuckTestWebServiceService();//静态服务
        wsemPort = wsems.getMyLuckTestWebServicePort();
        System.out.println(wsemPort.calLuck("Jack"));
    }
}
  1. 编译运行客户端
    将其编译运行,其输出结果如图所示
    这里写图片描述

遇到的问题:
1、出现Exception in thread “main” java.lang.NoClassDefFoundError错误。
- 原因:创建Web Service包含了包层次
- 解决:在执行Java命令时,要按照上述包层次,相应的创建目录层次,把上面生成的.class文件放到 /当前目录/com/company 目录下。.java文件在当前目录下。
2、出现Exception in thread “main” java.lang.UnsupportedClassVersionError错误
- 原因:环境配置问题
- 解决:重新配置JAVA环境


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值