zoukankan      html  css  js  c++  java
  • Java利用webservice创建接口案例源码

    环境要求:

    JDK1.7,并配置Java的环境变量

    BaseDao  接口:

    /**
     * 要使得成为一个可供访问的接口,必须添加:@WebService
     * */

    @WebService
    public interface BaseDao {
        //添加一个加法的接口
        
        @WebResult(name="addddddre")
        public int add(@WebParam(name="add01")int a,@WebParam(name="add02")int b);
        
        public String t(String a,String b);
        
        public User login(String usename,String password);
        
    }

    BaseDaoImpl:

    /**
     * endpointInterface  是接入点的配置(提供给访问者,访问哪里)
     * */
    @WebService(endpointInterface="com.sram.dao.BaseDao")
    public class BaseDaoImpl implements BaseDao{

        @Override
        public int add(int a, int b) {
            // TODO Auto-generated method stub
            System.out.println("a+b的和为"+(a+b));
            return a+b;
        }

        @Override
        public String t(String a, String b) {
            // TODO Auto-generated method stub
            return a+b;
        }

        @Override
        public User login(String username, String password) {
            // TODO Auto-generated method stub
            System.out.println("username"+username+","+"password"+password);
            return new User(username,password);
        }

    }

    添加接口服务:

    MyServer.java

    public class MyServer {
        public static void main(String[] args) {
            //添加服务,确定在网上发布的地址
            String url="http://localhost:8888/sram";
            //发布接口
            Endpoint.publish(url, new BaseDaoImpl());    
        }
    }

    MyClient:客户端访问接口:

    /**
     * 定义访问的客户端:
     * */
    public class MyClient {
        public static void main(String[] args) {
            URL url;
            
            try {
                url = new URL("http://localhost:8888/sram?wsdl");
                QName qname = new QName("http://impl.dao.sram.com/","BaseDaoImplService");
                //根据服务的名称创建service
                Service service = Service.create(url,qname);
                //获取接口
                BaseDao dao = service.getPort(BaseDao.class);
                //通过wsdl转换成Java对象。没有依赖Java程序,但依赖Java接口。
                System.out.println(dao.add(3, 5));
                /**
                 * 成功调用服务端的接口,实现功能,但是有问题。
                 * 
                 * 1,服务商不可能把接口名提供给你。
                 * 
                 * 2,如果服务器系统使用.NET开发没有接口。所以,咱们写的
                 * 客户端不应该依赖服务器平台。
                 * */
                
                System.out.println(dao.t("test1", "test2"));
                
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    注意:第一种访问依赖接口BaseDao,不推荐:

    方式2:

    利用wsimport生成不依赖平台的客户端访问类。
    具体办法:打开控制台,在控制台端生成访问文件(前提:需要配置Java的环境变量)

    -d 指明生成的目录
    -keep 保留Java代码
    -verboss 输出生成详细信息

    d:/test 为生成代码的地址

    生成客户端访问服务器接口的代码:
    wsimport -d d:/test -keep -verbose http://localhost:8888/sram?wsdl

    生成之后,将其拷贝到访问项目中,再次利用MyClient类,将BaseDao导入地址改为生成文件中的接口的地址。

    再次访问,OK!

  • 相关阅读:
    json参数http post请求
    获取文本的节点数据
    mongodb robo3t 查询所有 更改固定的50一页
    mongdb 更新字段类型
    数据库表的统计表更新 解决Sql Timeout 时间已到的问题
    html背景图圆角图片设置方法
    abp.vnext vue 跨域设置
    Springboot结合ESAPI——配置XSS过滤
    centos docker安装rabbitmq
    JAVA byte[]转String 中文问题
  • 原文地址:https://www.cnblogs.com/hukailee/p/3856520.html
Copyright © 2011-2022 走看看