跪求高人:发布web service如何让网络上其他机器也能访问?

chaos1983 2008-10-06 10:09:40
我先说一下前面已经完成的工作:
1、say hello服务端程序:
public class HelloServiceClass {
public String helloServiceFunc(String name){
return "Hello,"+name;
}
}
发布该服务后在自己机器上的浏览器中输入:
http://localhost:8080/HelloService/wsdl/HelloServiceClass.wsdl
可以查看到wsdl文件;


2、客户端程序如下:
package mypack;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;

public class HelloClient
{
public static void main(String[] args){
try{
String username="Guest";
if(args.length!=0)username=args[0];

String endpoint="http://localhost:8080/HelloService/services/HelloServiceClass";

Service service=new Service();
Call call=(Call)service.createCall();

call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("urn:HelloServiceClass","helloServiceFunc"));
String ret=(String)call.invoke(new Object[]{username});

System.out.println(ret);
}catch(Exception e){
e.printStackTrace();
}
}
}
这时候也可以访问所发布的服务,得到返回值“Hello,Guest”


但在别的机器上建立客户端时问题却来了:
我只是把endpoint那段代码改为:
endpoint="http://发布服务的IP:8080/HelloService/services/HelloServiceClass";
或endpoint="http://发布服务的IP/HelloService/services/HelloServiceClass";
却没法访问这个服务,查看服务的wsdl文件也说无法访问。(两台电脑都是可以上网的)
搞了一个下午都不晓得怎么回事,查资料也查不到,快急死了~~求救做过这方面工作的朋友,我想在别的机器上也能访问该服务该怎么做呢?是不是还要手动把服务发布到UDDI上还是别的什么?我是个初学者,希望各位大虾能不吝赐教,在此拜谢了!
...全文
186 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieyuanxi 2011-08-24
  • 打赏
  • 举报
回复
IP 要写上,不要写localhost ,要写上具体的IP
chaos1983 2008-10-08
  • 打赏
  • 举报
回复
问题已经解决了``谢谢kokobox
chaos1983 2008-10-06
  • 打赏
  • 举报
回复
回kokobox :
我在另外一台机器上访问服务时也在浏览器上输入了
http://发布服务的ip:8080/HelloService/wsdl/HelloServiceClass.wsdl
但是访问不成功。
而且在客户端上我输入的也是
endpoint="http://发布服务的IP:8080/HelloService/services/HelloServiceClass";
为什么却不行呢?

在连接之前我在每台机器上都独立的测试过了,都能够访问自己机器上发布的服务,但却没法访问另外那台机器的服务。会不会是证书的问题?如果是的话该怎么处理?
kokobox 2008-10-06
  • 打赏
  • 举报
回复
然后跟那个wsdl的地址生成客户端,就可以直接访问,前提是你自己要先能访问你自己


kokobox 2008-10-06
  • 打赏
  • 举报
回复
生成客户端的应该用ip或域名

例如:

http://ip:8080/HelloService/wsdl/HelloServiceClass.wsdl 这里的wsdl中的域名要用ip或者dns可以解析到域名

或者用:

http://ip:8080/工程名/services/服务名?wsdl



chaos1983 2008-10-06
  • 打赏
  • 举报
回复
补充一下,我用的软件是eclipse+lomboz+tomcat+axis

现在都休息了吗?
chaos1983 2008-10-06
  • 打赏
  • 举报
回复
补充一下,我用的软件是eclipse+lomboz+tomcat

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧