WebService入门java实现服务端接口调用

Java套接字的范例帮助理解

第一个javaDemo
服务端套接字代码:
    /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package webservicedemo_socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author toshiba
 */
public class WebserviceDemo_Socket {

    /**
     * webservice的基础,套接字。
     * @param args the command line arguments
     */
    public static void main(String[] args) {

       ServerSocket serverSocket;
       DataInputStream dataInputStream = null;
       DataOutputStream dataOutputStream = null;

       while(true){

                try {
                    serverSocket = new ServerSocket(1234);
                    System.out.println("服务端已经启动");
                    Socket socket=serverSocket.accept();
                    dataInputStream = new DataInputStream(socket.getInputStream());
                    dataOutputStream = new DataOutputStream(socket.getOutputStream());

                    String cityName = dataInputStream.readUTF();
                    System.out.println("from client"+cityName);
               //查询天气
                    String result ="sunshine";
                    dataOutputStream.writeUTF(result);   
                } catch (IOException ex) {
                    Logger.getLogger(WebserviceDemo_Socket.class.getName()).log(Level.SEVERE, null, ex);
                } finally{
                    if(null!=dataInputStream){
                        try {
                            dataInputStream.close();
                        } catch (IOException ex) {
                            Logger.getLogger(WebserviceDemo_Socket.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                    if(null!=dataOutputStream){
                        try {
                            dataOutputStream.close();
                        } catch (IOException ex) {
                            Logger.getLogger(WebserviceDemo_Socket.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                }

       }

    }
}

客户端套节字代码
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package webservicedemo_socket_client;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author toshiba
 */
public class WebserviceDemo_Socket_Client {
    public static void main (String[]args){
            Socket socket=null;
            DataOutputStream outputStream=null;
            DataInputStream inputStream=null;
        try {
            socket = new Socket("127.0.0.1",1234);
            outputStream = new DataOutputStream(socket.getOutputStream());
            String cityName ="北京";
            outputStream.writeUTF(cityName);
            System.out.println("to server"+cityName);
            inputStream = new DataInputStream(socket.getInputStream());
            String result = inputStream.readUTF();
            System.out.println("from server"+result);

        } catch (IOException ex) {
            Logger.getLogger(WebserviceDemo_Socket_Client.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            if(null!=socket){
                try {
                    socket.close();
                } catch (IOException ex) {
                    Logger.getLogger(WebserviceDemo_Socket_Client.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if(null!=outputStream){
                try {
                    outputStream.close();
                } catch (IOException ex) {
                    Logger.getLogger(WebserviceDemo_Socket_Client.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if(null!=inputStream){
                try {
                    inputStream.close();
                } catch (IOException ex) {
                    Logger.getLogger(WebserviceDemo_Socket_Client.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

    }
}

实例使用代码,新建一个项目:

天气查询接口
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package webservice_jaxws_first;

/**
 * 天气查询
 * @author toshiba
 */
public interface WeatherInterface {
    public String queryWeather(String cityName);

}

创建项目接口实现类
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package webservice_jaxws_first.impl;

import javax.jws.WebService;//JDK自带的jar包。
import webservice_jaxws_first.WeatherInterface;

/**
 *
 * @author toshiba
 */
@WebService //使用注解
public class WeatherInterfaceImpl implements WeatherInterface {

    @Override
    public String queryWeather(String cityName) {
        System.out.println("from client"+cityName);
        String result="晴朗";
        return result;
    }

}

启动这个口,向外部发送webservice的服务

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package webservice_jaxws_first_server;

import javax.xml.ws.Endpoint;
import webservice_jaxws_first.impl.WeatherInterfaceImpl;

/**
 *
 * @author toshiba
 */
public class Server {
    public static void main (String []args){
        String address ="http://127.0.0.1:12345/weather";
        Endpoint.publish(address, new WeatherInterfaceImpl());
        System.out.print("发布webservice");
    }
}

在浏览器中查看wbservice的服务
这里写图片描述
在IDE中创建项目,wsimportantproject,然后在DOS窗口中使用wsimport.exe,
wsimport简介:
这里写图片描述

java自带的解析wbservice的xml生成Java代码,就是webservic地图

这里写图片描述
然后在该项目中新建客户端,调用webservice地图,请求服务端。
项目目录结构如下:
这里写图片描述
请求的测试代码:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package webservice_jaxws_first.client;

import webservice_jaxws_first.impl.WeatherInterfaceImpl;
import webservice_jaxws_first.impl.WeatherInterfaceImplService;

/**
 *
 * @author toshiba
 */
public class WbserviceClient {

    public static void main(String[]args){
        //通过webService的的视图
        WeatherInterfaceImplService weatherService = new WeatherInterfaceImplService();
        //通过视图得到服务端点
        WeatherInterfaceImpl weatherInterfaceImpl = weatherService.getWeatherInterfaceImplPort();
        //通过服务端点调用webservice接口
        String result= weatherInterfaceImpl.queryWeather("北京");
            System.out.println("from server"+result);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值