WebServices入门

WebServices入门

                                               ——实践篇

上一篇我们简要的说了一些关于webservices的一些理论,在这一篇中我们来写一个简单的例子。我们知道现在webserices规范都只是一个框架,具体用java实现有好几个版本(如apachebeaibmsun都有其实现版本),我们在这里用apacheaxis,所以我们的环境是:JB8weblogic6.1或者更高版本,因为在JB8中已经集成了axis。下面就让我们开始吧。

事前

JB8中我们已经建立一个项目HELLOWORLD,在这个项目中已经建立了一个名字为helloworldwar、一个名字为HELLOWORLDear以及一个名为BeanHelloworldClass。在这个Web Services里面我们将把BeanHelloworld类里面的sayHelloworld()方法和sayHello()方法都发布为Web Services的方法。

项目如图一:

图一

事中

下面我们开始来发布这个Webservices

1、右键单击BeanHelloworld.java => Export as a web service菜单。

如图二:

 

图二

 

2、      配置WebServices

如图三,其中EARwebApp分别是我们项目里面的earwar,当然你也可以新建这两个东西;Toolket可以选Apache AxisApache Soap 2,这两个都是ApacheWebservices,我们选用Apache Axes

图三

3、  按照向导完成这两步以后会出现下面的界面。这个界面主要是导出我们服务的描述文件(WSDL),其中Interface or class是选择要发布那个Interfaceclass,如果我们是发布Interface,需要给他指定实现类,也就是Implementation class将不会是灰色;Generate client stub是否要求产生客户端的测试代码。如图四

图四

4、在这一步里主要是设置服务描述文件(WSDL)的一些属性,

如图五:

Deploy scope :有三种,分别是RequestApplicationSessionRequest:表明这个对象在SOAP请求/响应周期内存在;Application:表明只创建一个对象实例,这个对象将会处理后面所有的请求;Session:表明容器会为每个客户创建一个对象实例,并在多个请求/响应会话中保存这个对象。顺便说一句,在axis中的session是用web服务器的session来实现的。

Location URLWebServices的请求地址;

其他属性按照默认值就可以。

图五

5、这一步中主要是选择要发布的方法,如图六:

    Selection mode中如果是Allow selected methods:会把BeanHelloworld.java中的所有public方法发布出去;Allow selected mothods:会把选择的方法发布出去;而Desallow selected methods :正好与Allow selected mothods相反。

图六

我们把sayHello()sayHelloworld()两个方法都发布成为Web Services 的方法

图七

6、这一步中我们主要设置SOAP版本,如图八:

Type vesion设为 SOAP1.1。然后按照向导完成发布,重新打包就可以部署到WebLogic中啦!

 

 

图八

7、这一步中可以用Axis说生成的测试用例来测试我们的WebServices;

事后

     让我们来看看生成的WSDL文档,客户有了这个文档就可以调用刚才发布的Web Services的方法。

 

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions

   上面这一句是wsdl文档的开头

targetNamespace="http://bean.helloworld.test.com"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:apachesoap="http://xml.apache.org/xml-soap"

xmlns:impl="http://bean.helloworld.test.com-impl"

xmlns:intf="http://bean.helloworld.test.com" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

上面这一段描述的是这个文档的所要用到的命名空间。

<wsdl:types/>

上面这句是定义wsdl文档要用到复合数据类型,它是符合XML Schema(XSD)定义了一套标准的数据类型,而在我们这个文档中我们只用了简单的数据类型,所以它是个控值。

   <wsdl:message name="sayHelloRequest">

      <wsdl:part name="name" type="xsd:string"/>

   </wsdl:message>

   <wsdl:message name="sayHelloworldResponse">

      <wsdl:part name="sayHelloworldReturn" type="xsd:string"/>

   </wsdl:message>

   <wsdl:message name="sayHelloResponse">

      <wsdl:part name="sayHelloReturn" type="xsd:string"/>

   </wsdl:message>

   <wsdl:message name="sayHelloworldRequest">

   </wsdl:message>

上面这一段定义了四个Message,在理论篇中介绍过Message是通信消息的数据结构的抽象类型化定义。有人会说上面为什么是四个而不是三个或五个,因为我们发布了两个方法,而每一个方法都有请求/响应消息,这个

<wsdl:message name="sayHelloRequest">

                 <wsdl:part name="name" type="xsd:string"/>

           </wsdl:message>

Message就只是去请求sayHello()的消息,该Message中包括调用sayHello()的参数,这个参数的名字是name,类型为String

           这个

<wsdl:message name="sayHelloResponse">

               <wsdl:part name="sayHelloReturn" type="xsd:string"/>

        </wsdl:message>

   MessagesayHello()响应的消息,Message中包括sayHello()返回值这个返回值的名字为sayHelloReturn,类型为String.其他两个是调用sayHelloWorld()方法的请求/响应的消息。

<wsdl:portType name="BeanHelloworld">

      <wsdl:operation name="sayHelloworld">

         <wsdl:input message="intf:sayHelloworldRequest" name="sayHelloworldRequest"/>

         <wsdl:output message="intf:sayHelloworldResponse" name="sayHelloworldResponse"/>

      </wsdl:operation>

      <wsdl:operation name="sayHello" parameterOrder="name">

         <wsdl:input message="intf:sayHelloRequest" name="sayHelloRequest"/>

         <wsdl:output message="intf:sayHelloResponse" name="sayHelloResponse"/>

      </wsdl:operation>

   </wsdl:portType>

   上面这段定义了一个portType,在理论篇中我们知道portType是: 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。

   在这个portType中包含了两个operation,我们知道operation是:对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。下面这个operation

<wsdl:operation name="sayHello" parameterOrder="name">

         <wsdl:input message="intf:sayHelloRequest" name="sayHelloRequest"/>

         <wsdl:output message="intf:sayHelloResponse" name="sayHelloResponse"/>

      </wsdl:operation>

包含了前面定义的sayHelloRequest消息和sayHelloResponse消息。上面parameterOrder="name"调用方法sayHello()的参数序列。

   <wsdl:binding name="BeanHelloworldSoapBinding" type="intf:BeanHelloworld">

      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="sayHelloworld">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="sayHelloworldRequest">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

namespace="http://bean.helloworld.test.com" use="encoded"/>

         </wsdl:input>

         <wsdl:output name="sayHelloworldResponse">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

namespace="http://bean.helloworld.test.com" use="encoded"/>

         </wsdl:output>

      </wsdl:operation>

      <wsdl:operation name="sayHello">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="sayHelloRequest">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

namespace="http://bean.helloworld.test.com" use="encoded"/>

         </wsdl:input>

         <wsdl:output name="sayHelloResponse">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

namespace="http://bean.helloworld.test.com" use="encoded"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   上面这一段定义了Binding,我们知道Binding :特定端口类型的具体协议和数据格式规范的绑定。Binding结构定义了某个PortType与某一种具体的网络传输协议或消息传输协议相绑定,从这一层次开始,描述的内容就与具体服务的部署相关了。比如可以将PortTypeSOAP/HTTP绑定,也可以将PortTypeMIME/SMTP相绑定等。

   上面<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>描述了调用的方式style="rpc" (远程过程调用),具体的网络传输协议transport="http://schemas.xmlsoap.org/soap/http" 也就是soap/http协议.其他的就是具体描述每个operation.

<wsdl:service name="BeanHelloworldService">

      <wsdl:port binding="intf:BeanHelloworldSoapBinding" name="BeanHelloworld">

         <wsdlsoap:address location="http://localhost:7001/helloworld/services/BeanHelloworld"/>

      </wsdl:port>

   </wsdl:service>

   上面这一段定义了service,我们知道Service :描述的是一个具体的被部署的Web服务所提供的所有访问入口的部署细节,一个Service往往会包含多个服务访问入口,而每个访问入口都会使用一个Port元素来描述。

   <wsdl:port binding="intf:BeanHelloworldSoapBinding" name="BeanHelloworld">描述了上面定义的binding.

   <wsdlsoap:address location="http://localhost:7001/helloworld/services/BeanHelloworld"/>描述了具体的请求地址

</wsdl:definitions>

当然上面这句就是整个文档的结束标记啦。

 

 

以后有机会我们在看看soap请求或响应的文档。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《XML入门经典第五版》是一本非常有价值的学习XML的书籍。该书由CSDN(中国最大的专业IT社区)出版,以方便IT从业人员和学生更好地掌握和应用XML技术。 本书从XML的基础概念和语法开始讲解,逐步引导读者掌握XML的核心知识。它包括XML的结构、DTD(文档类型定义)、XML Schema、XPath、XSLT(XML样式表语言转换)、XML编程、XML Web Services等多个方面的内容。无论是初学者还是有一定经验的XML使用者,都可以从这本书中获得很多实用的知识和技巧。 《XML入门经典第五版》通过清晰的语言、丰富的案例和实践经验,帮助读者全面理解XML的概念和用法。书中配有大量的代码示例和解析,使读者能够更好地理解XML的操作和应用。 此外,该书还提供了一些常见的问题和解决方案,帮助读者克服在实际开发过程中可能遇到的困难和挑战。通过学习这本书,读者可以掌握XML的基本原理和应用技巧,从而更好地进行XML数据处理和文档编辑。 总之,《XML入门经典第五版》是一本经典的XML学习资源,适合所有希望学习和应用XML技术的读者。在CSDN出版的指导下,这本书具有可靠的来源和优质的内容,对于提升XML能力和应用能力有着重要的帮助。 ### 回答2: 《XML入门经典 第五版》是一本介绍XML(可扩展标记语言)的经典入门教材。XML是一种用于描述、存储和传输数据的标记语言,在Web开发、数据交换和信息管理等领域具有广泛的应用。这本书通过详细讲解XML的基本语法、结构和应用,帮助读者快速掌握XML的核心概念和技术。 这本书的第五版在前几版的基础上进行了全面更新和扩展,更加贴合当下的XML发展趋势和应用场景。书中介绍了XML的起源和发展历程,阐述了XML与HTML的区别和联系,详细阐述了XML的语法规则和标记语言的设计原则。同时,书中还介绍了XML的解析与处理技术,包括DOM(文档对象模型)、SAX(简单API for XML)和XPath(XML路径语言)等重要概念和工具的使用方法。 此外,该书还涵盖了XML的数据验证、转换和传输等方面的内容。通过示例和实战案例,读者能够学习如何使用XML进行数据验证和约束,并掌握XML与其他常用数据格式(如JSON和CSV)的转换方法。对于XML的传输和网络应用,书中介绍了SOAP(简单对象访问协议)和REST(表征状态转移)等协议,并给出了实际应用的示例。 总体而言,《XML入门经典 第五版》是一本系统全面的XML入门教材,适合想要快速入门XML的读者。通过阅读该书,读者可以了解XML的基本概念和技术,掌握XML的语法规则和解析处理方法,并学会如何应用XML进行数据验证、转换和传输。无论是初学者还是有一定基础的开发者,都可以从这本书中获得宝贵的知识和实践经验。该书的PDF版本可以在CSDN等技术网站上获取和下载。 ### 回答3: 《XML入门经典 第五版》是一本有关XML(可扩展标记语言)的经典教材,提供了全面而深入的知识和实践指导。该书从基础知识开始,逐步介绍XML的结构、语法、应用和相关技术。 本书分为11章,内容包括XML的基本概念、DTD(文档类型定义)、XML Schema、命名空间、XSLT(可扩展样式表语言转换)、XQuery(查询语言)、XLink和XPointer(链接和指向)、XML数据库、SOAP和Web服务等。每章都提供了实例和示意图,深入浅出地解释了每个主题的概念和用法。 本书第五版在第四版的基础上,对最新的XML标准和相关技术进行了更新和补充。它不仅包含了对XML 1.1版本的解释,还介绍了近年来出现的新技术和标准,如XQuery 1.0和XSLT 2.0。此外,本书还提供了一些实用的案例和示例代码,帮助读者深入理解XML的应用。 CSDN是一个知名的技术社区和资源分享平台,提供了大量的IT技术文章、教程和书籍资源。通过在CSDN搜索栏中输入《XML入门经典 第五版 PDF》,你可以找到该书的电子版资源。CSDN上可能有用户上传了该书的PDF版本,你可以通过下载获得这本书的电子副本。 通过阅读《XML入门经典 第五版》,你可以系统地学习XML的各个方面,并获得实际应用的经验。无论是从事软件开发、网络应用还是数据管理等方面的工作,掌握XML都会是一个有利的技能。希望这本书可以帮助你深入理解XML并在实践中运用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lcl101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值