如何从AJAX调用Java Web服务(JAX-WS)?

时间:2009-07-31 20:10:59

标签: ajax xmlhttprequest jax-ws

我正在开发java Web服务(JAX-WS)以将数据插入mysql DB并检索它。此Web服务有两个方法,即fetchFromDB和insertIntoDB。当我使用netbeans IDE测试服务时,服务似乎运行正常。

Address: /CalculatorWSService
WSDL:    /CalculatorWSService?wsdl

但是当我尝试通过提供url http://localhost:8080/CalculatorApp/CalculatorWSService使用AJAX的xmlHttpRequest对象来访问它时。它无法访问它。我已经开发了C#Web服务,并且使用url访问它们非常容易,但是java Web服务似乎没有遵循它。

我的问题是

用于访问AJAX中的Web服务操作的URL是什么? (我需要在网址中使用'?wsdl'吗? 是否有一个javascript ajax库可以轻松访问JAX-WS Web服务? Apache Axis Web服务是比JAX-WS更好的选择吗? 请帮帮我,谢谢,杰伊

2 个答案:

答案 0 :(得分:1)

从客户的角度来看,我没想到Axis和JAX-WS之间存在显着差异。客户端需要的所有东西都应该在WSDL中。

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

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

答案 1 :(得分:1)

我遇到了与你相同的问题,无法从Javascript调用Jax-ws Web服务,但我找到了一种方法。

要使用的网址可以是相同的(EndPointAddress)http://localhost:8080/CalculatorApp/CalculatorWSService

但是当您从javascript创建XMLHttpRequest对象时,您必须:

*使用POST方法打开URL,我尝试使用GET,但它对我不起作用 *将SOAPAction请求标头设置为wsdl中的标头,即使其为空“” *要小心发送请求正文,肥皂信封必须正确。

希望这可以帮到你!

再见。
Paul Manjarres。