欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

webservice服务发布地址localhost或者127.0.0.1外网访问不到msdl,本机却可以访问

程序员文章站 2022-05-30 16:46:33
...

webservice服务发布地址localhost或者127.0.0.1外网访问不到msdl,本机却可以访问

情况描述

      在学习webservice过程中,将一个简单的webservice程序发布到我自己的服务器上,在我用自己电脑访问服务器上的wsdl是,发现访问不了.
下面是程序代码(这里体现了,两种发布服务的方法.)
注意:设置发布地址哪一行(问题描述在注释里)

//方法1
    public void giveService() {
        //创建一个发布服务的工厂
        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        //设置发布地址
        /*
        	这里面目前写的是localhost,当然写127.0.0.1也是一样的,
        	这种写法在本机里是可以运行的,在本机想访问wsdl直接访问
        	直接设置的地址即可.
        	但是将他发布到服务器上的用其他机器访问时则会访问不到,
        	这个我们需要将http://localhost:8210/MyGod中的地址
        	localhost改为服务器的
        	注意本机ip不等于127.0.0.1
        */
        factory.setAddress("http://localhost:8210/MyGod");
        //设置服务类
        factory.setServiceBean(new WebServiceGiveImpl());
        //发布服务
        Server server = factory.create();
        //开始服务
        server.start();
        //日志提示
        Logger logger = LoggerFactory.getLogger(PublishingService.class);
        logger.info("服务发布成功");
    }

    //方法2
    public void giveServiceTwo() {
        //设置发布地址
        String address = "http://localhost:8210/MyGod";
        //发布服务
        Endpoint.publish(address, new WebServiceGiveImpl());
        //日志提示
        Logger logger = LoggerFactory.getLogger(PublishingService.class);
        logger.info("服务发布");
    }

问题分析

      这里面目前写的是localhost,当然写127.0.0.1也是一样的,
这种写法在本机里是可以运行的,在本机想访问wsdl直接访问
直接设置的地址即可.
但是将他发布到服务器上的用其他机器访问时则会访问不到,
这个我们需要将http://localhost:8210/MyGod中的地址
localhost改为服务器的
注意本机ip不等于127.0.0.1

//设置发布地址
        /*
        	这里面目前写的是localhost,当然写127.0.0.1也是一样的,
        	这种写法在本机里是可以运行的,在本机想访问wsdl直接访问
        	直接设置的地址即可.
        	但是将他发布到服务器上的用其他机器访问时则会访问不到,
        	这个我们需要将http://localhost:8210/MyGod中的地址
        	localhost改为服务器的
        	注意本机ip不等于127.0.0.1
        */
        factory.setAddress("http://localhost:8210/MyGod");

问题总结和解决

       我们需要修改地址localhost为服务器的地址
       另外说明:如果是用的是云服务器的话要写内网ip,不然报错.
内网ip和外网ip的区别:(借鉴网上答案并不全面)
       外网IP是全世界唯一的IP地址,仅分配给一个网络设备。而内网IP是由路由器分配给每一部内部使用的IP地址,而内网的所有用户都是通过同一个外网IP地址进行上网的,而内网的IP地址每个人的都不一样,Internet上的用户也无法直接访问到内网用户。简单来说呢,外网IP就是标示了您在整个互联网上的地址,就相当于小区的地址,而内网IP呢,就是标识着您在局域网里面的地址,也就是小区内的几栋几楼几号房子。
webservice服务发布地址localhost或者127.0.0.1外网访问不到msdl,本机却可以访问
若有错误恳请指出,虚心学习,积极沟通.

相关标签: java webservice