WebService学习

WebService的学习总结

一、WebService是什么?
  1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)
  2. 一个跨语言、跨平台的规范(抽象)
  3. 多个跨平台、跨语言的应用间通信整合的方案(实际)
  
二、为什么要用Web service?
  web service能解决:
  跨平台调用
  跨语言调用
  远程调用

三、什么时候使用web Service?
  1. 同一家公司的新旧应用之间
  2. 不同公司的应用之间
  3. 一些提供数据的内容聚合应用:天气预报、股票行情

四、Web Service中的几个重要术语
4.1、WSDL(web service definition language)
  WSDL是webservice定义语言, 对应.wsdl文档, 一个webservice会对应一个唯一的wsdl文档, 定义了客户端与服务端发送请求和响应的数据格式和过程

4.2、SOAP(simple object access protocal)
  SOAP是"简单对象访问协议"

是一种简单的、基于HTTP和XML的协议, 用于在WEB上交换结构化的数据
soap消息:请求消息和响应消息
4.3、SEI(WebService EndPoint Interface)
  SEI是web service的终端接口,就是WebService服务器端用来处理请求的接口

4.4、CXF(Celtix + XFire)
  一个apache的用于开发webservice服务器端和客户端的框架

五.webService开发中的应用
JDK开发WebService
5.1.开发WebService服务器端
1、定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示:

package me.gacl.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
//使用@WebService注解标注WebServiceI接口
@WebService
public interface WebServiceI {

    //使用@WebMethod注解标注WebServiceI接口中的方法
    @WebMethod
    String sayHello(String name);
    
    @WebMethod
    String save(String name,String pwd);
}

2、编写interface的实现类,使用@WebService注解标注实现类,实现接口中定义的所有方法,如下所示:

package me.gacl.ws;

import javax.jws.WebService;
//使用@WebService注解标注WebServiceI接口的实现类WebServiceImpl
@WebService
public class WebServiceImpl implements WebServiceI {

    @Override
    public String sayHello(String name) {
        System.out.println("WebService sayHello "+name);
        return "sayHello "+name;
    }

    @Override
    public String save(String name, String pwd) {
        System.out.println("WebService save "+name+", "+pwd);
        return "save Success";
    }
}

3、使用Endpoint(终端)类发布webservice,代码如下:

package me.gacl.ws.test;

import javax.xml.ws.Endpoint;

import me.gacl.ws.WebServiceImpl;

public class WebServicePublish {

    public static void main(String[] args) {
        //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
        //String address = "http://192.168.1.100:8989/";这个WebService发布地址的写法是合法的
        //String address = "http://192.168.1.100:8989/Webservice";这个WebService发布地址的是合法的
        String address = "http://192.168.1.100:8989/WS_Server/Webservice";
        //使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
        Endpoint.publish(address , new WebServiceImpl());
        System.out.println("发布webservice成功!");
    }
}

运行WebServicePublish类,就可以将编写好的WebService发布好了,WebService的访问URL是:http://192.168.*.**:8080/WS_Server/Webservice ,如下图所示:
在这里插入图片描述
 这里我们编写了一个WebServicePublish类来发布WebService,如果是Web项目,那么我们可以使用监听器或者Servlet来发布WebService,如下:

1、使用ServletContextListener监听器发布WebService

package me.gacl.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.xml.ws.Endpoint;
import me.gacl.ws.WebServiceImpl;

//使用Servlet3.0提供的@WebListener注解将实现了ServletContextListener接口的WebServicePublishListener类标注为一个Listener
@WebListener
public class WebServicePublishListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //WebService的发布地址
        String address = "http://192.168.1.100:8080/WS_Server/WebService";
        //发布WebService,WebServiceImpl类是WebServie接口的具体实现类
        Endpoint.publish(address , new WebServiceImpl());
        System.out.println("使用WebServicePublishListener发布webservice成功!");
    }
}

将Web应用部署到服务器运行时,在初始化Web应用上下文时,就会发布WebService了。

接着我们可以使用发布的URL地址访问WebService,如下图所示:
  在这里插入图片描述
  2、使用Servlet发布WebService

package me.gacl.web.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.xml.ws.Endpoint;
import me.gacl.ws.WebServiceImpl;
//使用Servlet3.0提供的@WebServlet注解将继承HttpServlet类的普通Java类标注为一个Servlet
//将value属性设置为空字符串,这样WebServicePublishServlet就不提供对外访问的路径
//loadOnStartup属性设置WebServicePublishServlet的初始化时机
@WebServlet(value="",loadOnStartup=0)
public class WebServicePublishServlet extends HttpServlet {

    /* (non-Javadoc)
     * @see javax.servlet.GenericServlet#init()
     * 在WebServicePublishServlet初始化时发布WebService
     */
    public void init() throws ServletException {
        //WebService的发布地址
        String address = "http://192.168.1.100:8888/WebService";
        //发布WebService,WebServiceImpl类是WebServie接口的具体实现类
        Endpoint.publish(address , new WebServiceImpl());
        System.out.println("使用WebServicePublishServlet发布webservice成功!");
    }
}

将Web应用部署到服务器运行时,在初始化WebServicePublishServlet时,就会发布WebService了.

参考地址链接:https://www.cnblogs.com/xdp-gacl/p/4259481.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值