小弟刚接触这块,各位能否给我稍微大概的介绍一下,重点是客户端,服务端,配置以及其他相关的内容,因为还不是很熟,所以问题也比较抽象,各位看着给吧PS:不太希望长篇大论copy过来。

解决方案 »

  1.   

    我的理解就是服务端用 Java 写了个 WebService,也就是个方法。客户端(可以是 Java,也可以是其他语言编写的)可以调用这个方法。如果客户端是 Java 写的,那可以使用 WebService 接口和 WebService 工具调用服务端的服务
    如果客户端是其他语言编写的,那可以通过 WSDL 进行调用
      

  2.   

    WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。
    这种技术允许网络上的所有系统进行交互。随着技术的发展,一个Web服务可以包含额外的指定功能并且可以在多个B2B应用中协作通讯。 Web服务可以理解请求中上下文的关系,并且在每一个特定的情况下产生动态的结果。这些服务会根据用户的身份,地点以及产生请求的原因来改变不同的处理,用以产生一个唯一的,定制的方案。这种协作机制对那些只对最终结果有兴趣的用户来说,是完全透明的。 
    UDDI 
    在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件。所以,我们需要一种方法来发布我们的Web服务。 UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。UDDI 项目中的成员可以通过UDDI Business Registry (UBR) 来操作Web服务的调用,UBR是一个全球性的服务。 Web服务供应商可以在UBR中描述并且注册他们的服务。 用户可以在UBR中查找并定位那些他们需要的服务。 UDDI是一种根据描述文档来引导系统查找相应服务的机制。 UDDI包含标准的“白皮书”类型的商业查询方式, “黄皮书”类型的局部查找,以及 “绿皮书”类型的服务类型查找。 UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。 WSDL 对于商业用户来说,要找到一个自己需要使用的服务,他必须知道如何来调用。 WSDL (Web Services Description Language) 规范是一个描述接口,语义以及Web服务为了响应请求需要经常处理的工作的XML文档。这将使简单地服务方便,快速地被描述和记录。以下是一个WSDL的样例: 
    <?xml version="1.0"?>
    <definitions name="StockQuote"
    targetNamespace="http://example.com/stockquote.wsdl"
    xmlns:tns="http://example.com/stockquote.wsdl"
    xmlns:xsd1="http://example.com/stockquote.xsd"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns="http://schemas.xmlsoap.org/wsdl/">
    <types>
    <schema targetNamespace=http://example.com/stockquote.xsd
    xmlns="http://www.w3.org/2000/10/XMLSchema">
    <element name="TradePriceRequest">
    <complexType>
    <all>
    <element name="tickerSymbol" type="string"/>
    </all>
    </complexType>
    </element>
    <element name="TradePrice">
    <complexType>
    <all>
    <element name="price" type="float"/>
    </all>
    </complexType>
    </element>
    </schema>
    </types>
    <message name="GetLastTradePriceInput">
    <part name="body" element="xsd1:TradePriceRequest"/>
    </message>
    <message name="GetLastTradePriceOutput">
    <part name="body" element="xsd1:TradePrice"/>
    </message>
    <portType name="StockQuotePortType">
    <operation name="GetLastTradePrice">
    <input message="tns:GetLastTradePriceInput"/>
    <output message="tns:GetLastTradePriceOutput"/>
    </operation>
    </portType>
    <binding name="StockQuoteSoapBinding"
    type="tns:StockQuotePortType">
    <soap:binding style="document"
    transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="GetLastTradePrice">
    <soap:operation
    soapAction="http://example.com/GetLastTradePrice"/>
    <input>
    <soap:body use="literal"/>
    </input>
    <output>
    <soap:body use="literal"/>
    </output>
    </operation>
    </binding>
    <service name="StockQuoteService">
    <documentation>My first service</documentation>
    <port name="StockQuotePort" binding="tns:StockQuoteBinding">
    <soap:address location="http://example.com/stockquote"/>
    </port>
    </service>
    </definitions>它包含了以下的关键信息: 消息的描述和格式定义可以通过XML文档中的<types>和<message> 标记来传送。 <portType> 标记中表示了消息传送机制。 (e.g. request-only, request-response, response-only) 。 <binding> 标记指定了编码的规范 。 <service> 标记中表示服务所处的位置 (URL)。 WSDL在UDDI中总是作为一个接口描述文档。因为UDDI是一个通用的用来注册WSDL规范的地方,UDDI的规范并不限制任何类型或者格式描述文档。这些文档可能是一个WSDL文档,或者是一个正规的包含导向文档的Web页面,也可能只是一个包含联系信息的电子邮件地址。现在Java提供了一个 Java API for WSDL (JWSDL)规范。它提供了一套能快速处理WSDL文档的方法,并且不用直接对XML文档进行操作,它会比JAXP更方便,更快速。 
    SOAP 当商业用户通过UDDI找到你的WSDL描述文档后,他通过可以Simple Object Access Protocol (SOAP) 调用你建立的Web服务中的一个或多个操作。 SOAP是XML文档形式的调用商业方法的规范,它可以支持不同的底层接口,象HTTP(S)或者SMTP。 之所以使用XML是因为它的独立于编程语言,良好的可扩展性以及强大的工业支持。之所以使用HTTP是因为几乎所有的网络系统都可以用这种协议来通信,由于它是一种简单协议,所以可以与任何系统结合,还有一个原因就是它可以利用80端口来穿越过防火墙。 SOAP的强大是因为它简单。SOAP是一种轻量级的,非常容易理解的技术,并且很容易实现。它有工业支持,可以从各主要的电子商务平台供应商那里获得。从技术角度来看,SOAP详细指明了如何响应不同的请求以及如何对参数编码。一个SOAP封装了可选的头信息和正文,并且通常使用HTTP POST方法来传送到一个HTTP 服务器,当然其他方法也是可以的,例如SMTP。SOAP同时支持消息传送和远程过程调用。以下是一个SOAP请求。 
    POST /StockQuote HTTP/1.1
    Host: www.stockquoteserver.com
    Content-Type: text/xml; charset="utf-8"
    Content-Length: nnnn 
    SOAPAction: "Some-URI" <SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    <SOAP-ENV:Header>
    <t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">
    5
    </t:Transaction>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
    <m:GetLastTradePrice xmlns:m="Some-URI">
    <symbol>SUNW</symbol>
    </m:GetLastTradePrice>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope> JAXR 
    为了支持UDDI在Java平台上的功能,Java APIs for XML Registries (JAXR)允许开发者来访问注册中心。 值得注意的是,JAXR并不是建立Web服务必需的,你可以利用其他常用的XML APIs来直接集成这些协议。 JAXR是一个方便的API,它提供了Java API来发布,查找以及编辑那些注册信息。它的重点在于基于XML的B2B应用,复杂的地址本查找以及对XML消息订阅的支持等Web服务。 它也可以用来访问其他类型的注册中心,象ebXML注册中心。这些对Web服务的注册信息进行的操作,可以使用当前的一些Web服务工具来完成(例如第三方的SOAP和ebXML消息工具)。另外,当JAXP提供了一致并具有针对性的API来完成这些操作,这将使开发变得更加容易。 JAX/RPC 
    为了使开发人员专注于建立象SOAP那样的基于XML的请求,JCP正在开发基于RPC (JAX/RPC) 的Java API。JAX/RPC是用来发送和接收方法调用请求的,它基于XML协议,象SOAP,或者其他的象XMLP (XML Protocol,要了解更多可以参考http://www.w3.org/2000/xp/)。JAX/RPC使你不用再关注这些协议的规范,使应用的开发更快速。不久,开发人员就不用直接以XML表示方法调用了。目前有很多第三方实现了SOAP,开发人员可以在不同的层次上调用SOAP,并选择使用哪一种。将来,JAX/RPC会取代这些APIs并提供一个统一的接口来构造以及处理SOAP RPC请求。在接收一个从商业伙伴那里过来的SOAP请求的时候,一个Java servlet用JAX/RPC来接收这个基于XML的请求。一旦接收到请求后,servlet会调用商务方法,并且把结果回复给商业伙伴。 JAXM 当从商业合作伙伴那里接收一个Web服务的请求时,我们需要Java API实现一个Servlet来处理ebXML消息,就象我们用JAX/RPC来处理SOAP请求一样。 Java API for XML Messaging (JAXM) 是集成XML消息标准(象ebXML消息或者SOAP消息)的规范。 这个API是用来推动XML消息处理的,它检测那些预定单的消息格式以及约束。它控制了所有的消息封装机制,用一种直观的方式分割了消息中的信息,象路由信息,发货单。这样,开发人员只要关注消息的有效负载,而不用去担心那些消息的重复处理。目前的开发人员用JAXP来实现JAXM将要提供的功能,JAXM将会提供一套非常具有针对性的API来处理基于XML的消息传送。这将大大简化开发人员的代码,并使它们具有统一的接口。 JAXM和JAX/RPC的差别在于处理消息导向的中间件以及远程过程调用的不同。JAXM注重于消息导向,而JAX/RPC是用来完成远程过程调用的。
    请注意,在JAXM 和 JAX/RPC技术成熟之前,开发人员还是依赖于第三方的SOAP APIs,象Apache SOAP, IdooXOAP, 以及 GLUE。当JAXM 和 JAX/RPC正式发布后,它将为当前不同的SOAP和ebXML消息提供统一的接口。就象JDBC位多种不同的数据库提供统一的接口。 
    JAXB 
    XML绑定技术可以把XML文档和Java对象进行自由转换。 用JAXB,你可以在后台的EJB层,把XML文档转换成Java对象。同样你也可以把从EJB中取出的Java对象转换成XML文档返回给用户。 JAXB接口提供了比SAX和DOM更高级的方法来处理XML文档。它提供的特性可以在XML数据和Java类之间互相映射,提供了一个简单的方法来转换XML数据。它比逐个解析标记更简单。
      

  3.   


    webservice可以独立的部的吧,是怎么部的,服务器有啥特殊不?
    客户端也是java写的话,是怎样调用到webservice的接口的? RMI?具体怎样的,能不能给稍微说几句?
      

  4.   

    现在的 WebServices 工具,都能支持 JSR 181,也就是使用 Annotation 来发布 WebServices,
    WSDL 也是自动生成的不需要做什么处理
      

  5.   


    WebServices 可以独立部署的,一般部署在 Web 容器中。至于怎么调用,需要使用工具,有兴趣的话可以去看看 Apache 的 CXF。CXF 可以说是 XFire 和 AXIS 的
    升级合并体。对 CXF 的话,客户端只要知道 WSDL 文件,CXF 能通过这个文件生成必要的接口就可以调用了。现在的 WebService 工具内部处理已经不采用 JAX-RPC 了(据我所知 JAX-RPC 在 Java EE 6 中已经删除了),
    而是采用更为高效的 StAX 进行处理。
      

  6.   

    建议楼主是用axis这个插件,要不自己写wsdl会很恶心的,我现在正在做webservices呢
      

  7.   

    WebService,说白了也就是跨平台的资源集成利用。比如说,有两个资源,也可以说是服务(只是个简单的例子)
    加法(c)
    减法(java)
    而且这连个资源还在不同的平台上。该怎么联系在一起呢。
    首先你得有个共通的通信手段:soap,在不同的平台下都是可以跑的。
    其次,怎么找到相关的资源呢?
    将写好的东西放到服务器上,正如八楼朋友所说的axis,然后生成了“资源的说明书”(wsdl)
    最后,客户端无论在何种平台,利用何种语言,只要通过SOAP,找到相应的wsdl,就可以调用,并辅助你完成功能。
    大概的介绍一下,如果楼主想深入了解的话,就要多多研究一下了,三楼朋友提到的都是webservice所用的技术。加油吧!
      

  8.   

    http://www.ibm.com/developerworks/cn/webservices/ws-startaxis/index.html我前几个月自学的时候就是照着这个做的helloworld的例子有没有实际项目中用到过webservice的朋友说说webservice一般用在哪得?
      

  9.   


    我们的项目是提供验证服务的, 多个project都用相同的验证
    感觉就是把功能抽象出来达到通用的目的
      

  10.   

    如何配置和使用WebServices集群 
    http://www.mscto.com/JavaScript/2009010953897_2.html
      

  11.   

    去我的博客,我写了一篇用java构建和调用WebService的博文。有图,非常详细。
      

  12.   

    WebService说白了就是实现客户端和服务器交互数据.
    在JAVA里面客户端和服务器交互数据的技术有很,如RMI,EJB等.但是有个局限就是客户端和服务器端必须用JAVA来写.
    而WebService则没有限制.服务器端和客户端可以是不同的语言.它们是通过WSDL文件来交互的,也就是基于SOAP协议(XML+HTTP).
    建议ZH先写客户端学起.链接一个服务.
    我用的axis2会比较的多一些.
    http://minjiaren.javaeye.com/admin/blogs/452031
    这是本人学习WebService的心得.希望对楼主有所帮助
      

  13.   

        webservice可以实现不同项目之间的数据传输,并且它是跨平台的。客户端与服务器端的交互是通过服务器端定义的wsdl文件进行交互的,其实就是webservice把你定义的后台服务接口以xml的形式发布出来,客户端只要通过这个wsdl调用定义好的方法,接收相应的返回值。
        我曾经的一个项目是在winform的一个小程序调用java发布的一个webservice,采用的是xfire。总体来看效果还可以。
        现在开源用的比较多的就是axis、xfire、cxf。axis是Apache比较早的开源项目,xfire相对来说比axis要简单,性能也比axis要好(指axis1.x),基于低内存的STAX 模型。cxf应该是在xfire之上的一个Apache开源项目,但我没具体用过,据说对spring的支持比较好。楼主先看看资料,自己选择一个适合自己项目的吧!
      

  14.   

    WSDL文件有啥用?
    类似于ws的接口声明? 如果client知道怎么调用,比如是同一个项目中开发的,知道ws接口长啥样,
    这样WSDL文件还有啥价值吗?还是我的理解有问题?
      

  15.   

    现在的 WebServices 工具,都能支持 JSR 181,也就是使用 Annotation 来发布 WebServices, 
    WSDL 也是自动生成的不需要做什么处理
      

  16.   

    例子:http://www.diybl.com/course/3_program/java/javashl/200899/141441.html
      

  17.   

    <beans xmlns="http://xfire.codehaus.org/config/1.0">
    <service>
    <name>memberPortal</name>
    <namespace>com.arvato.ffp.webservice</namespace>
    <serviceClass>com.arvato.ffp.memberPortal.service.MemberPortalService</serviceClass>
    <implementationClass>com.arvato.ffp.memberPortal.service.impl.MemberPortalServiceImpl</implementationClass>
    </service>
    <service>
    <name>awardPortal</name>
    <namespace>com.arvato.ffp.webservice</namespace>
    <serviceClass>com.arvato.ffp.awardPortal.service.AwardPortalService</serviceClass>
    <implementationClass>com.arvato.ffp.awardPortal.service.impl.AwardPortalServiceImpl</implementationClass>
    </service>
    </beans>