webservice服务发布地址localhost或者127.0.0.1外网访问不到msdl,本机却可以访问
程序员文章站
2022-05-30 16:46:33
...
情况描述
在学习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呢,就是标识着您在局域网里面的地址,也就是小区内的几栋几楼几号房子。
若有错误恳请指出,虚心学习,积极沟通.
上一篇: jupyter修改注释字体
下一篇: 修改JupyterNotebook的字体