• web service


    Web service 其运\作原理如下 (下图引用官方网站简介):

       +--------------------------------------+

       |         web service registry        

       |         (aka service broker)         

       |                (UDDI)                        

       +--------------------------------------+

              ^                            ^

              |                              |

        (2) |                               | (1)

              |  (the client             (the web service

            WSDL  finds the           WSDL  provider publishes

              |   service                  the web service)

              |   they want)             |

              |                              |

              v                              v

        +-----------+                +-----------+

        | service     |<--SOAP-->|  service    |

        | requestor |                 |  provider   |

        +-----------+     (3)       +-----------+

    (1) 发布 Web Service.

    (2) 寻找已发布的 Web Service.

    (3) 通过 SOAP 互相沟通.

     (1) 及 (2) 均为 optional.

    WSDL -- Web Services description Language. WSDL 描述 web service 的功能.

    UDDI -- Universal Description, Discovery and Integration. 发布web service 的协定.

    SOAP -- Simple Object Access Protocol. SOAP 通过 HTTP 传送 XML message.

    下面将对Axis2 作最简单的实例Hello World.

    开始:

    安装Tomcat 5.x.  ( 亦可选择使用 Axis2 提供的 SimpleHTTPServer )

    http://apache.seekmeup.com/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.exe

    下载后直接安装到目录 D:\\tomcat

    由于本人电脑安装了几个 tomcat , 故把 port设為8083 ( 预设port是8080 )

    http://localhost:8083/ 测试是否安装成功.

    下载 axis2-std-1.0-bin.zip 并解压到 D:\\axis2

    http://ws.apache.org/axis2/download.cgi

    http://www.reverse.net/pub/apache/ws/axis2/1_0/axis2-std-1.0-bin.zip

    设定系统环境变数 AXIS2_HOME=D:\\axis2

    下载 axis2.war :

    http://ws.apache.org/axis2/download.cgi

    http://mirrors.isc.org/pub/apache/ws/axis2/1_0/axis2.war

    将 axis2.war 放进 D:\\tomcat\\webapps 目录下.

    启动 tomcat 就会自动产生 D:\\tomcat\\webapps\\axis2

    浏览 http://localhost:8083/axis2/ , 画面如下:

    Services -- 观看已 desploy 的 web services.

    Validate -- 确定系统是否缺少 必要的library.

    Administration -- axis2 管理控制台.

    点选 Administration 连结进入控制台登入介面, 输入

    User : admin

    Password : axis2

    上面用户及密码为预设值,

    可到 D:\\tomcat\\webapps\\axis2\\WEB-INF\\conf\\axis2.xml 修改 用户名及密码.

    <parameter name=\"userName\" locked=\"false\">admin</parameter>

    <parameter name=\"password\" locked=\"false\">axis2</parameter>

      

    登入后画面如下:

    安装 Axis2 Service Archive & Code Generator Eclipse plug in(使用上发生问题):

    下载 Eclipse WTP:

    http://www.eclipse.org/webtools/

     http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/drops/R-1.5.0-200606281455/wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip

    解压至 D:\\eclipse_wtp

    下载 Axis2_Service_Archiver.zip 及 Axis2_Code_Generator.zip

    http://ws.apache.org/axis2/tools/index.html

    http://mirrors.combose.com/apache/ws/axis2/tools/1_0/Axis2_Service_Archiver.zip

    http://apache.edgescape.com/ws/axis2/tools/1_0/Axis2_Code_Generator.zip

    解压后 将 plugins 目录复製至 D:\\eclipse_wtp\\plugins

    测试 Axis2 Web Service:

    编写 Axis2 Web Service 主要需要4个步骤:

     [1] 编写实作类别.

     [2] 编写 services.xml 描述 Web Services 档案.

     [3] 建立 Web Services *.aar archive (Axis Archive)

     [4] 最后发布Web Services.

    使用 Eclipse 建立 Project:

     Eclipse: File -> New -> Java Project

    Project Name: HelloWorldService -> Finish

    [1] 建立 HelloWorldService class:

     -------------- HelloWorldService.java -----------------

     package test.joeyta

     public class HelloWorldService {

      public String echo(String value) {    // 这个 service 只是将输入的文字 return 出去

        System.out.println("Service HelloWorldService: " + value);

        return value;

      }

     }

     -------------- HelloWorldService.java -----------------

    [2] 新增目录 D:\\eclipse_wtp\\HelloWorldService\\META-INF

     建立 service descriptor 档案 D:\\eclipse_wtp\\HelloWorldService\\META-INF\\services.xml:

     --------------------- services.xml --------------------------

     <service>

      <parameter name=\"ServiceClass\"

              locked=\"false\">test.joeyta.HelloWorldService</parameter>

      <operation name=\"echo\">

       <messageReceiver class=\"org.apache.axis2.rpc.receivers.RPCMessageReceiver\"/>

      </operation>   

    </service>

     --------------------- services.xml --------------------------

    <parameter name=\"ServiceClass\" locked=\"false\">test.joeyta.HelloWorldService</parameter>

     描述 service class. 这里要包含 package,

    <operation name=\"echo\">

     描述 此 Service 提供的服务.

    Eclipse 里的 project 如下所示:

    [3] 建立 Axis2 service archive:

     在 Eclipse 里 right click \"HelloWorldService\" project

    选 Export -> JAR file

     Select the resource to export: 点择 HelloWorldService 裡的 services.xml 及 test.joeyta package

     JAR file: D:\\eclipse_wtp\\workspace\\HelloWorldService.aar

     然后按 Finish, 就会產生 D:\\eclipse_wtp\\workspace\\HelloWorldService.aar

     设定如下图所示:

    [4] 上载 Axis2 Service:

     Axis2 Administration 登陆后 选择 Upload Service 连结:

     http://localhost:8083/axis2/axis2-admin/upload

     然后选择浏览 D:\\eclipse_wtp\\workspace\\HelloWorldService.aar

     按 upload 后, 点选 Available Services 就会看到如下所示:

    在上图中点选 HelloWorldService 连结就会看到该 service 的 WSDL:

     http://localhost:8083/axis2/services/HelloWorldService?wsdl

    如果检视 WSDL 时出现 (internal server error page) :

     即检视 WSDL: http://localhost:8083/axis2/services/HelloWorldService?wsdl

     出现 Provider org.apache.xalan.processor.TransformerFactoryImpl not found 等信息.

     请到 http://www.apache.org/dist/java-repository/xalan/jars/

     下载 xalan-2.7.0.jar

     把它放在 D:\\tomcat\\webapps\\axis2\\WEB-INF\\lib 下就能解决.

    建立 Client 测试程式:

     Eclise: File -> New -> Java Project

    Project name: HelloWorldClient

    按 Finish 就产生 HelloWorldClient project

     点击 HelloWorldClient 右键选 Properties

     然后选择 Java Build Path,

    Source:

     Source folders on build path: 新增 src 目录

     Default output folder: HelloWorldClient/bin

     如下图所示:

    Library:

     按 Add External JARs 新增所有 D:\\axis2\\lib 裡的 jar libraries.

    使用 WSDL2JAVA 產生 stub classes:

     由于测试时 Eclipse Axis2 Code Generator plugin 出问题,

    故只好在 DOS command prompt 用手工输入產生.

    进入目录 D:\\axis2\\bin , 执行:

     D:\\axis2\\bin>wsdl2java.bat -uri http://localhost:8083/axis2/services/HelloWorldService?wsdl -o D:\\eclipse_wtp\\workspace\\HelloWorldClient -p test.joeyta

     -uri WSDL 的 uri 位置.

     -o 输出 stub classes 的位置. 预设会增加 src 目录.

     -p 设定输出 stub classes 使用的 package.

    產生 HelloWorldServiceStub.java 及 HelloWorldServiceCallbackHandler.java , 如下图所示.

    建立 Client 程式

    ------------------- HelloWorldClient.java ----------------------

     public class HelloWorldClient {

     public static void main(String[] args) throws Exception {

      HelloWorldServiceStub stub = new HelloWorldServiceStub()

      HelloWorldServiceStub.Echo request = new HelloWorldServiceStub.Echo()

       request.setValue(\"Hello world, Joeyta\") 

      EchoResponse response = stub.echo(request)

      System.out.println(\"Response : \" + response.get_return())

      }

    }

     ------------------- HelloWorldClient.java ----------------------

    执行后输出结果:

     Response : Hello world, Joeyta

    如下图下示:

    使用 TCP Monitor 监视 request 及 response SOAP conent:

     下载旧版 Axis library axis-bin-1_4.zip:

     http://apache.seekmeup.com/ws/axis/1_4/

     解压后把 axis.jar 复制至 D:\\axis2\\lib 裡,

     进入 D:\\axis2\\lib 目录

     执行  D:\\axis2\\lib> java -classpath axis.jar org.apache.axis.utils.tcpmon

     就会弹出 TCPMonitor

     Listen port 设為 9999 ,

    Target Hostname : 127.0.0.1

     Target Port:8083    

    然后按 Add, 如下图所示:

     [ 这样设可以依靠 port 9999 去监听 port 8083 ]

    修改 Client program HelloWorldServiceStub.java

     将所有 port 从 8083 改为 9999 后,  再次执行 HelloWorldClient.java

     就可以得到如下的 SOAP message:

    使用 SOAP Monitor 监视 SOAP data, 下面是官方的教学.

     http://ws.apache.org/axis2/1_0/soapmonitor-module.html

    官方文档非常多及齐全, 若想进一步了解, 需要花更长的时间:

     http://ws.apache.org/axis2/1_0/index.html

    Axis2 的文档及教学非常充足. 官方文档如下连结:

     http://ws.apache.org/axis2/1_0/index.html

    Axis2 官方的安装教学:

     http://ws.apache.org/axis2/1_0/installationguide.html

    Axis2 用户指南:

     http://ws.apache.org/axis2/1_0/userguide.html

    Axis2 WEB Administration 介面的使用教学:

     http://ws.apache.org/axis2/1_0/webadminguide.html

    Axis2 的设定文档:

     http://ws.apache.org/axis2/1_0/axis2config.html

    AXIOM (Axis Object Model) 教学:

     http://ws.apache.org/axis2/1_0/OMTutorial.html

    Axis2 Eclipse plugin 教学:

     http://ws.apache.org/axis2/tools/1_0/eclipse/wsdl2java-plugin.html

  • 相关阅读:
    【Django总结】详解Django admin高级用法
    【Django总结】Django model中的class Meta详解
    【Django总结】django中的objects.get和objects.filter方法的区别
    【Django总结】Django的时间字段DateTimeField
    【Django总结】Django数据模型的一些字段解析
    codechef Chef and Chefcoin
    codechef Hikaru, Touya and Waya
    [CmdOI2019]口头禅
    Codeforces Round #664 (Div. 1)(E未做)
    AtCoder Grand Contest 034
  • 原文地址:https://www.cnblogs.com/peggy89321/p/2966050.html
Copyright © 2020-2023  润新知