Webservice笔记(一)

1.笔记内容
  1. 便民网站分析;2. java开发webservice;3. webservice和socket区别;4. 什么是webservice;5. Soap1.1和soap1.2区别;6. wsdl;7. 客户端开发的第二种方式;8. soap;9. 通过http发送soap协议体;10. webservice客户端开发总结;

2.便民网站分析
  2.1:通过便民网站,查询日常信息
   分析:
这里写图片描述
Tcp: 是一种传输层协议,是一种面向连接的协议,经过三次握手客户端和服务端建立一个连接(通道)。Tcp传输数据时稳定。
Udp:是一种传输层协议,是一种数据报协议,速度快但不稳定。它是面向非连接的协议,它不与对方建立连接,而且直接就把数据报发送过去。

  2.2:Socket实现天气查询
    企业开发后台服务常使用socket。socket开发时注意:1.服务端要有可持续运行能力,保证线程一直在运行。2.并发处理能力,要使用多线程。
分析:
这里写图片描述
实现:

//创建服务端
public class WeatherServer {
   
    public static void main(String[] args) throws Exception {
        /**
         * 创建socket服务端 应用服务的端口建议10000以上,主要目的避免端口被占用问题
         */
        ServerSocket serverSocket = new ServerSocket(12345);
        System.out.println("启动天气查询服务!");
        while (true) {
            try {
                /**
                 * 接受客户端连接 阻塞方法
                 */
                Socket socket = serverSocket.accept();
                Thread.sleep(1000);
                /**
                 * 开启一个新线程 新线程处理内容就是:接受客户端的请求,向客户端发送数据
                 * 可以使用线程池 ThreadPoolExecutor
                 */
                new Thread(new WeatherRunable(socket)).start();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

//加入多线程测试
public class WeatherRunable implements Runnable {
   
    private Socket socket;
    public WeatherRunable(Socket socket) {
        this.socket = socket;
    }
    public void run() {
        DataInputStream dataInputStream = null;
        DataOutputStream dataOutputStream = null;
        try {
            /**
             * 接受客户端请求数据
             */
            dataInputStream = new DataInputStream(socket.getInputStream());
            String cityName = dataInputStream.readUTF();
            System.out.println("from client..." + cityName);
            /**
             * 向客户端发送数据
             */
            dataOutputStream = new DataOutputStream(socket.getOutputStream());
            String result = "晴";
            dataOutputStream.writeUTF(result);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                dataInputStream.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            try {
                dataOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

//创建客户端
/**
 * 天气查询socket客户
 * @author zhaojd
 */
public class WeatherClient {
   
    public static void main(String[] args) throws Exception, IOException {
        /**
         * 创建socket链接
         */
        Socket socket = null;
        DataInputStream dataInputStream = null;
        DataOutputStream dataOutputStream = null;
        while (true) {
            try {
                socket = new Socket("127.0.0.1", 12345);
                /**
                 * 向服务器发送数据
                 */
                dataOutputStream = new DataOutputStream(socket.getOutputStream());
                String cityName = "广州";
                dataOutputStream.writeUTF(cityName);
                System.out.println("to server..." + cityName);
                /**
                 * 接受服务器数据
                 */
                dataInputStream = new DataInputStream(socket.getInputStream());
                String result = dataInputStream.readUTF();
                System.out.println("from server..." + result);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                dataInputStream.close();
                dataOutputStream.close();
                socket.close();
            }
        }
    }
}

小结:
    使用socket传输数据需要关注如何解析数据流。
    如果可以面向对象开发,直接传输Java对象,既可减轻开发的复杂度。
3. java开发webservice
    java中共有三种webservice规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。
  3.1 Jaxws
    JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(Java API For XML-Remote Procedure Call)目前已经被JAX-WS 规范取代。从java5开始支持JAX-WS2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值