`
peter.kong
  • 浏览: 57485 次
  • 来自: ...
社区版块
存档分类
最新评论

java web开发中构建SOAP服务

阅读更多
 

本文的预定读者首先要对j2ee有所了解,熟悉xml,tomcat等基本内容,本文主要是简单介绍一下web服务的基本内容,怎样在java web开发中构建SOAP服务。

 

        本文的预定读者首先要对j2ee有所了解,熟悉xml,tomcat等基本内容,本文主要是简单介绍一下web服务的基本内容,怎样在java web开发中构建SOAP服务:
 一、SOAP(Simple Object Access Protocol)简单对象访问协议,要了解SOAP,首先就需要了解分布式计算的由来,随着下一代的分布式计算体系web服务的出现,SOAP成为了创建和调用通过网络发布的应用程序的实际通信标准。SOAP类似传统的二进制协议IIOP(CORBA)和JRMP(RMI),但它不采用二进制数据表示法,而是采用使用XML的,基于文本的数据表示法。
        通过XML表示法,SOAP定义了一种小型有线连接协议和编码格式,以表示数据类型、编程语言和数据库,还可以使用各种Internet标准协议作为其消息传输工具,还可以提供表示RPC和文档驱动的消息交换等通信模型的约定。请注意,W3C正致力于SOAP的研究,http://www.w3c.org/2000/xp/Group/ ,并得到了主流供应商的积极响应,以便对于基于XML的协议相关的重要任务达成共识,并定义其关键要求和使用场景。
        SOAP1.2的基本规范定义了以下基本内容:
       1)用于将XML文档表示为结构化SOAP消息的语法和语义
       2)在SOAP消息中表示数据的编码标准
       3)用于交换SOAP消息的通信模型
       4)SOAP传输等底层协议的绑定
      SOAP消息主要包括了信封头,消息头,主体,附件几部分
      一个简单的SOAP消息表示:
      POST   /StudentInfo   HTTP/1.1
      Host:anthropology.cun.edu
      Content-Type: text/xml;charset="utf-8"
      Content-Length: 640
      SOAPAction:  "GetStudentInfo"

     <SOAP-ENV:Envelop xmlns:SOAP-ENV="http://www.w3c.org/2001/06/soap-envelope"
              xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"
              xmlns:xsd="http://www.w3c.org/2001/XMLSchema"
             SOAP-ENV:encodingStyle="http://www.w3c.org/2001/06/soap-encoding">
        <SOAP-ENV:Header>
            <person:mail xmlns:person="http://www.cun.edu/Header">xyz@cun.edu
        </SOAP-ENV:Header> 

        <SOAP-ENV:Body>
            <m:GetStudentInfo   xmlns:m="http://www.cun.edu/jws.student.studentInfo">
                 <student_name xsi:type='xsd:string'>
                        Wang wen yin
                 </student>
             </m:GetStudentInfo>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelop>
   以上是1.2版本命名空间,1.1的命名空间 SOAP ENVELOPE:http://schemas.xmlsoap.org/soap/envelop/ ,SOAP ENCODING: http://schemas.xmlsoap.org/soap/encoding/ 
   关于SOAP编码规范请参阅www.w3c.org/TR/xmlschema-2/ 定义的编码值,其他的一些规范可以上www.w3c.org 上具体查看。
二、以下从实际例子来学习,这里我使用的是Apache的一个子项目Axis的具体例子,便于深入了解soap的运行:
    1)下载Axis的相关内容http://ws.apache.org/axis/
    2)建立一个实例程序(遵守j2ee的web程序规范),如(WebServiceTest目录)
          把axis中lib文件夹的内容拷到你的WebServiceTest/WEB-INF/lib下,同时上网下载xerces(下载地点:http://xml.apache.org/xerces-j/)解释器的包文件xerces.jar,也拷到WebServiceTest/WEB-INF/lib文件夹下,(若要配置log4j,请把属性文件log4j.properties拷到WebServiceTest/WEB-INF/classes文件夹下)
    3)修改应用程序WebServiceTest/WEB-INF中的web.xml文件:主要servlet设置如下
       <servlet>
              <servlet-name>TestServlet</servlet-name>
              <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
      </servlet>
      <servlet-mapping>
              <servlet-name>TestServlet</servlet-name>
              <url-pattern>*.jws</url-pattern>
     </servlet-mapping>
     <servlet-mapping>
              <servlet-name>TestServlet</servlet-name>
              <url-pattern>/servlet/TestServlet</url-pattern>
    </servlet-mapping>
  
    <servlet-mapping>
              <servlet-name>TestServlet</servlet-name>
              <url-pattern>/services/*</url-pattern>
     </servlet-mapping>


     <servlet>
          <servlet-name>AdminServlet</servlet-name>
          <servlet-class>
               org.apache.axis.transport.http.AdminServlet
          </servlet-class>
          <load-on-startup>100</load-on-startup>
     </servlet>
 
     <servlet-mapping>
          <servlet-name>AdminServlet</servlet-name>
          <url-pattern>/servlet/AdminServlet</url-pattern>
     </servlet-mapping>
 
     <mime-mapping>
          <extension>wsdl</extension>
          <mime-type>text/xml</mime-type>
     </mime-mapping>
 
     <mime-mapping>
          <extension>xsd</extension>
          <mime-type>text/xml</mime-type>
     </mime-mapping>
    你现在可以在网址里输入http://localhost/WebServiceTest/servlet/TestServlet 看到了吗?Axis是使用axis.jar包里的org.apache.axis.transport.http.AxisServlet对应用程序进行处理的,基本配置就讲到这里。
三、接着我们来说Axis中的内核。
1)不使用Tomcat引擎运行Axis。
       先建立一个脚步文件,对环境变量classpath进行设置要把lib下的那些包文件的路径全都包括进去,运行:java  org.apache.axis.transport.http.SimpleAxisServer  <port>
 2)内部服务处理程序是org.apache.axis.providers.java.RPCProvider,标志出服务所需的方法,然后提供从SOAP请求消息组成部分的参数。
 3)Axis的应用程序端管理功能:
       java  org.apache.axis.client.AdminClient 就会列出参数,可供你选择。我们的例子是:java  org.apache.axis.client.AdminClient  -l http://localhost/WebserviceTest/servlet/TestServlet  list 就会显示出服务列表,返回的是xml文件
4)wsdl2java应用程序可以把wsdl文件创建基于java的程序,如占位程序等
     java  org.apache.axis.wsdl.WSDL2java  <url>
Axis的基本内容说到这里
四、具体例子
 1)编写逻辑程序,简单如:SoapTest.java
    public class SoapTest{
        public String getStr(String name){
            return "Hello,"+name;
        }
    }
  2) 部署服务,编写wsdd文件SoapTest_deploy.wsdd:
     <deployment name="SimapleTest" xmlns="http://xml.apache.org/axis/wsdd/"
         xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
         xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
         xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
             <service name="SoapTest" provider="java:RPC">
                  <parameter name="className" value="SoapTest"/>
                  <parameter name="allowedMethods" value="getStr"/>
             </service>
    </deployment>
    其中className参数是你的想部署的类名(全名),allowedMethods是调用的服务的方法,如果有多个方法的话可以用空格分开(如: <parameter name="allowedMethods" value="getStr  getMoney"/>),当用*的时候表示全部。
     好了现在准备部署了,确保环境路径classpath设置正确,运行:
        java  org.apache.axis.client.AdminClient  -l  http://localhost/WebserviceTest/servlet/TestServlet  SoapTest_deploy.wsdd
     (这里不懂的话,请参考以上的说明) 
 ok,呵呵,至此,我们已经完成了一个web服务的部署:测试http://localhost/WebServiceTest/servlet/TestServlet  看里面是否多了一个选择SoapTest服务?
      如果不想要服务了那重新编写一个wsdd文件,内容改为:
<deployment name="SimapleTest" xmlns="http://xml.apache.org/axis/wsdd/"
         xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
         xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
         xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
            <service name="SoapTest"/>
</deployment>
和上面一样,对比一下就ok了。
五、客户端测试:
     客户端我们也可以使用java来进行测试,网上也有资料的,你可以去学习,很简单的。现在为了体现web服务的魅力,我用.NET平台来测试吧,客户端使用c#编写(先要安装.net framework sdk):
    1)通过wsdl生成web服务代理,在net平台下运行:
      wsdl  /l:CS  /protocol:SOAP  /out:SoapTestClient.cs  http://localhost/WebserviceTest/services/SoapTest?wsdl  
        我们通过wsdl得到了一个cs文件SoapTestClient.cs(当前目录),你可以打开cs文件,研究一下里面的代码,那个getStr(string name)就是我们需要调用的方法,我们的客户端通过调用该方法就可以调用服务器端的方法,内部的转化wsdl.exe工具已经帮我们完成了,axis下的WSDL2Java工具也是一样的功能,可以参考我上面所说的关于Axis的内核内容
   2)编译cs文件成程序集dll:
      csc /target:library /r:System.Web.Services.dll  /r:System.Xml.dll SoapTestClient.cs
      最后我们等到了一个dll文件SoapTestClient.dll,客户端程序通过调用它就行了
   3)编写客户端应用程序SoapTestClientApp.cs
      using System;
      
      namespache  jws.client{
         public class SoapTestClientApp{
            public SoapTestClientApp(){
            }
            public static void Main(string[] args){
                if(args.Length!=1){
                    Console.WriteLine("Usage:SoapTestClientApp <name>");
                    Environment.Exit(1);
                }
                SoapTestService  st_service=new SoapTestService();
                st_service.getStr("Wang wenyin");
           }
        } 
     }
4)编译文件csc  /r:SoapTestClient.dll  SoapTestClientApp.cs
    运行SoapTestClientApp
输出结果:
     Hello,Wang wenyin
与预期结果相符。

好了,关于soap开发web服务就说到这里了,希望这篇文章能对大家有所帮助,谢谢了:)有问题的话可以留言,也可以跟我联系 gdanthrowwy@126.com



分享到:
评论

相关推荐

    JAVA WEB服务 构建与运行 JAVA WEB服务构建与运行

    Java API for XML Web Services(JAX-WS)是构建SOAP Web服务的标准API集合,而JAX-RS(Java API for RESTful Web Services)则是用于RESTful Web服务的标准API集合。此外,还经常使用SOAP with Attachments API for...

    使用Java Web服务构建SOA

    在Java Web服务和SOA环境中,持续集成和部署工具如Maven、Gradle和Jenkins可以帮助自动化构建、测试和部署过程,确保服务的稳定性和质量。 ### 7. 监控与管理 使用工具如JMX(Java Management Extensions)和管理...

    Java Web服务:构建与运行(第2版)1-3-4章源代码

    在本资源中,我们关注的是Java Web服务的构建与运行,这是第二版的教材源代码,涵盖了第1至第4章的内容。Java Web服务是一种基于开放标准的技术,用于创建网络应用程序,尤其是那些能够通过互联网进行交互的应用。...

    JAVA.WEB服务.构建与运行

    中文名: JAVA WEB服务 构建与运行 原名: Java Web Services:Up and Running 作者: Martin Kalin译者: 任增刚图书分类: 软件 资源格式: PDF 版本: 扫描版 出版社: O'Reilly书号: ISBN: 9787121097119发行时间: 2009年...

    MLDN Java Web 开发实战经典源码李兴华源代码

    Java Web开发是构建基于互联网应用程序的技术,它结合了Java语言的强大功能和Web的广泛分布性。本教程的核心知识点涵盖了以下几个方面: 1. **Servlet与JSP**:Java Web的基础,Servlet是服务器端的Java应用程序,...

    Java Web开发实例大全.基础卷

    7. **Web服务**:如RESTful API的构建,使用JAX-RS进行XML或JSON数据交换,以及SOAP Web服务的理解。 8. **前端技术集成**:HTML、CSS、JavaScript与Java Web的交互,包括AJAX技术,以及现在流行的前端框架如React...

    Java Web 整合开发 完全自学手册 源代码

    1. **Servlet与JSP**:Java Web开发中的两大基石,Servlet是服务器端的Java应用程序,用于处理HTTP请求,而JSP则是一种动态网页技术,将HTML和Java代码相结合,实现视图层的构建。学习Servlet和JSP的生命周期、请求...

    SOAP.rar_SOAP java_Web Service SOAP_java soap_java web service_s

    学习和理解SOAP以及如何在Java中实现和使用它,对于开发Web服务和实现跨系统通信至关重要。这涉及到对XML的理解,熟悉WSDL的编写,以及掌握JAX-WS或类似工具的使用。同时,了解SOAP与其他通信协议如REST的区别也很...

    Java Web整合开发王者归来

    7. EJB与Web服务篇:探讨Enterprise JavaBeans(EJB)技术,讲解EJB 3.x的主要组件,如会话bean、实体bean和消息驱动bean,以及Web服务(如SOAP和RESTful)的开发与集成。 8. 工具篇:介绍常用的开发工具和IDE,如...

    深入体验Java Web开发内幕——核心基础

    Java Web开发也涉及Web服务的创建,如SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)。RESTful API已经成为现代Web应用的主流设计风格,使用HTTP协议的CRUD操作,通过URI定位资源...

    Java Web服务构建与运行(高清中文版).part2.rar

    Java Web服务:构建与运行 作 者: (美)卡林 著,任增刚 译 出 版 社: 电子工业出版社 出版时间: 2009-11-1 目录 前言 第1章 Java Web服务快速入门  1.1 什么是Web服务  1.2 第一个例子  1.3 由Perl和...

    Java Web开发技术大全.rar

    10. **Web Services**:Java Web服务允许不同系统间的通信,基于标准如SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)。JAX-WS和JAX-RS是Java中的相关API。 以上只是Java Web...

    java调用soap接口案例

    3. **构建SOAP请求**:首先,我们需要了解SOAP服务的WSDL(Web Service Description Language)文档,从中可以获取服务的地址、端点以及方法的SOAP Action。然后,我们可以使用`SOAPMessage`对象来创建请求的XML结构...

    Java Web整合开发进阶100例.pdf

    《Java Web整合开发进阶100例.pdf》这一文件,从其标题中我们可以推测该文档将涵盖在Java Web开发领域中,整合各种技术与框架的100个实例或案例。Java Web开发是Java语言用于网络应用程序开发的一个重要领域,主要...

    [独门架构:Java Web开发应用详解].李宁.著

    《独门架构:Java Web开发应用详解》是李宁先生所著的一本深入探讨Java Web开发的专著。...通过阅读和实践书中的内容,你将能够构建出高效、稳定的Java Web应用程序,并对整个开发流程有更深入的认识。

    Java Web应用开发项目教程[聂明][电子教案].rar

    2. **MVC设计模式**:在Java Web开发中,Model-View-Controller(MVC)设计模式是非常常见的一种架构模式。教程会讲解如何使用MVC来组织应用,以及Spring MVC框架的应用,使开发者能更好地理解业务逻辑、数据模型与...

    用Java构建web服务

    在IT行业中,Java是一种广泛应用的编程语言,尤其在构建Web服务方面表现卓越。Web服务允许不同的应用程序通过网络进行通信,实现数据交换和功能共享。本教程将深入探讨如何使用Java来构建高效、可靠的Web服务。 一...

    Java Web服务:构建与运行(第2版)第2章源代码

    在本资源中,我们主要关注的是“Java Web服务:构建与运行(第2版)”这本书的第二章源代码。这个章节可能涵盖了如何利用Java技术来开发和部署Web服务,这是Java开发者在进行企业级应用开发时的重要技能。Java Web...

Global site tag (gtag.js) - Google Analytics