如何在javascript/ajax中基于Java的Soap Web服务?

问题描述:

为了测试目的,我必须提供一个.jsp页面(index.jsp)以及我的Web服务项目。 基本上.jsp页面有一个文本,用于在其提交的SOAP响应会阅读SOAP请求字符串&。如何在javascript/ajax中基于Java的Soap Web服务?

我“javax.xml.ws.Service &调度”类,它的正常工作尝试过。 但现在我被要求提供一个基于javascript/ajax的代码。

任何人可以帮助我对此。

我在这里给一个样本.wsdl文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:tns="http://zensar.com/greeting" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Greeting" 
    xmlns:grtng="http://zensar.com/greeting/schema" 
    targetNamespace="http://zensar.com/greeting"> 
    <wsdl:types> 
     <xsd:schema targetNamespace="http://zensar.com/greeting"> 
      <xsd:import namespace="http://zensar.com/greeting/schema" 
       schemaLocation="Greeting.xsd"></xsd:import> 
     </xsd:schema> 
    </wsdl:types> 
    <wsdl:message name="GreetingRequest"> 
     <wsdl:part element="grtng:GreetingRequest" name="GreetingRequest" /> 
    </wsdl:message> 
    <wsdl:message name="GreetingResponse"> 
     <wsdl:part element="grtng:GreetingResponse" name="GreetingResponse" /> 
    </wsdl:message> 
    <wsdl:portType name="GreetingPort"> 
     <wsdl:operation name="Greeting"> 
      <wsdl:input message="tns:GreetingRequest" /> 
      <wsdl:output message="tns:GreetingResponse" /> 
     </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding name="Greeting" type="tns:GreetingPort"> 
     <soap:binding style="document" 
      transport="http://schemas.xmlsoap.org/soap/http" /> 
     <wsdl:operation name="Greeting"> 
      <soap:operation soapAction="http://zensar.com/GreetingWS/Greeting" /> 
      <wsdl:input> 
       <soap:body use="literal" /> 
      </wsdl:input> 
      <wsdl:output> 
       <soap:body use="literal" /> 
      </wsdl:output> 
     </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="Greeting"> 
     <wsdl:port binding="tns:Greeting" name="Greeting"> 
      <soap:address location="http://localhost:8085/Greeting/services" /> 
     </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions>** 
+0

我会考虑写一个JAX-RS在相同的业务逻辑/基于JSON的服务。与尝试从Javascript中使用SOAP相比,这应该不那么痛苦 – millimoose 2013-02-14 13:05:13

+0

也可能JAX-WS也支持JSON +普通HTTP端点以用于“常规”/非REST Web服务。 – millimoose 2013-02-14 13:07:17

你可以试试这个... http://www.ibm.com/developerworks/webservices/library/ws-wsajax/ 这篇文章详细解释了一切。

就个人而言,我会说,直接通过JavaScript使用Web服务是有点自虐。

在我看来,调用服务器端方法(无论是什么样的架构,c#,java,php等)都会更容易,然后执行CURL请求并将响应发送回前端结束。

手工编写了一个SOAP端点在JavaScript似乎只是毫无意义时,你可以使用类似的Axis2在服务器端做SOAP握手的锅炉板重载。