创建了一个非常基本的WS。我有LoggingHandler,Test,TestImpl,& TestPublisher。我的发布者在下面创建我的终端:
import javax.xml.ws.Endpoint;
public class TestPublisher {
public static void main(String[] args) {
LoggingHandler handle = new LoggingHandler();
Endpoint ep = Endpoint.publish( "http://localhost:8060/message/hello",
new TestImpl() );
ep.getBindings().getHandlerChain().add( new LoggingHandler() );
System.out.print( handle.toString() );
}
}
我的测试界面使用@WebService& @WebMethod只做“String getHello(String str);” 我的TestImpl实现Test并使用@WebService(endpointInterface =“我的包位置”)并且只有一个方法“public String getHelloWorld(String str){return”Hello“+ str;} 我的处理程序有handleMessage,handleFault和&关。我也可以提供这些代码,但我认为这不会有所帮助。
当我在同一台(dev)RH6电脑上访问localhost:port / message / hello时,效果很好!我得到“你好我的名字”。我甚至可以在localhost获取一个wsdl文件:port / message / hello?wsdl
当我尝试从任何其他电脑,Linux或Windows访问时,我收到超时或“无法显示网页”错误。所以我在eclipse中的tcp / ip monitor中设置监控并将流量从端口8061(新端口)路由到我的WS端口[here] [link3],而不更改任何代码。
结果:除了运行服务(dev)之外,我仍然无法从任何其他PC访问8060。所以我将我的浏览器指向另一台PC到端口8061(tcp / ip monitor),它成功返回我的消息!我需要运行一个监视器转发到我的java webservice吗?
在我的RH6盒子上,我没有运行防火墙或网络服务器&我在我的工作网络上。我可以成功启动tomcat6并从其他电脑获得8080,而无需使用tcp / ip monitor。
答案 0 :(得分:1)
使用您机器的IP地址尝试Endpoint.publish,
ex:Endpoint.publish(“http://192.168.0.1:8060/message/hello”)