2009-07-31 28 views
1

我正在开发Java Web服务(JAX-WS)以将数据插入到MySQL DB中并检索它。这个Web服务有两个方法,即fetchFromDB和insertIntoDB。当我使用NetBeans IDE测试它们时,服务似乎运行良好。如何从AJAX调用Java Web服务(JAX-WS)?

Address: /CalculatorWSService 
WSDL: /CalculatorWSService?wsdl 

但是当我尝试使用AJAX的XMLHttpRequest对象提供的网址http://localhost:8080/CalculatorApp/CalculatorWSService来访问它。它无法访问它。我开发了C#web服务,并且使用url访问它们非常容易,但是java web服务似乎没有遵循这一点。

我的问题是

用什么URL来访问在AJAX的Web服务操作? (我需要在url中使用'?wsdl'吗? 有没有一个javascript ajax库来轻松访问JAX-WS web服务? Apache Axis web服务是比JAX-WS更好的选择吗? 请帮助我,谢谢周杰伦

+0

AJAX的xmlHttpRequest是从Web服务部署在同一台机器上发出的吗? (你在你的WS网址中使用本地主机) – 2009-08-03 08:52:42

回答

1

我遇到了同样的问题,无法从Javascript调用Jax-ws网络服务,但我找到了一种方法来做到这一点。

URL中使用可以是你的相同(的EndpointAddress)http://localhost:8080/CalculatorApp/CalculatorWSService

但是当你创建你的JavaScript XMLHttpRequest对象:

*使用POST方法打开URL,我试着用GET,但它对我没有用。
*设置SOAPAction请求标题为您的wsdl中的一个,即使其为空“”。
*请求身体发送非常小心,肥皂信封必须正确。

希望这可以帮助你!

再见。
Paul Manjarres。

1

从客户端的角度来看,我没想到Axis和JAX-WS,一切客户的需求应该是在WSDL之间显著的差异。

,有时会发生

的一件事是,所使用的URL时开发一个WebService引用开发主机和端口(甚至可能是ContextRoot)当部署到特定的服务器时,任何这些都可以改变。理想情况下,可以用新的“绑定”信息创建新的WSDL。

我的第一步是直接将浏览器指向您要调用的Web服务。在我的环境中,返回一个很好的“你好,这是一个Web服务”类型的消息。如果你找不到401错误,那么你只需要研究如何部署Web服务。是否指定了不同的端口或上下文根?