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

原文地址:https://www.cnblogs.com/peggy89321/p/2966050.html