zoukankan      html  css  js  c++  java
  • Axis2 WebService(配置、发布、调用)

    LifeBa文章如未注明转载均为原创.
    转载请注明: 转载自Life吧 本文永久链接地址:http://www.lifeba.org/arch/java_axis2_webservice.html

    本文最后更新2012-11-26

    准备工作

    1、下载:axis2-1.5.4-bin.zip,axis2-1.5.4-war.zip 下载地址:http://axis.apache.org/axis2/java/core/
    2、环境变量设置
    AXIS2_HOME E: esearchaxis2-1.5.4-binaxis2-1.5.4
    JAVA_HOME C:Program FilesJavajdk1.6.0_21
    3、axis2-1.5.4-war.zip解压,将压缩包内的axis2.war部署到%TOMCAT-HOME%/webapps下,启动tomcat,访问http://localhost:8085/axis2/看是否正常。

    点击Service会进入Service列表页面,当前只有一个Version服务。http://localhost:8085/axis2/services/Version?wsdl
    4、下载 axis2-eclipse-codegen-plugin-1.5.4.zip,axis2-eclipse-service-plugin-1.5.4.zip 解压后将plugins 复制到 �LIPSE_HOME%plugins。
    http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.5.4/axis2-eclipse-codegen-plugin-1.5.4.zip
    http://www.apache.org/dyn/mirrors/mirrors.cgi/axis/axis2/java/core/1.5.4/axis2-eclipse-service-plugin-1.5.4.zip

    安装完插件后,IDE中选择new->other会看到下面界面

    如果安装Axis2插件之后,在eclipse中没有出现界面,就换一个eclipse版本
    在版本比较新的eclipse中,安装Axis插件,是把jar复制到�LIPSE_HOME%dropins目录下,而不是plugins目录

    AXIS2发布Web Services
    一、工程文件

    1、新建 Axis2Service1 java工程。
    2、新建 Axis2Service1srcwsTestWs.java

    package ws;
    public class TestWs {
    public String showName(String name) {return name; }
    public String getName() {return "Axis2Service Sample"; }
    }

    二、arr部署方式
    1、手动打包
    新建Axis2Service1deploy文件夹 ,将Axis2Service1in下的class文件复制过来。
    新建Axis2Service1deployMETA-INFservices.xml文件


    < description>AxisService
    < parameter name="ServiceClass">ws.TestWs
    < operation name="showName">
    < messageReceiver
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    < /operation>
    < operation name="getName">
    < messageReceiver
    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    < /operation>
    < /service>

    生成aar包 Axis2Service1deploy>jar cvf AxisService.aar . (注意带.号)

    2、插件打包
    IDE中选择New->other->Axis2 Service Archiver,点击Next;
    Class File Location:选择Axis2Service1in目录,点击Next;
    勾选Skip WSDL,点击Next;
    Service Archiver 选择jar位置,如果没有jar包就直接点击Next;
    勾选Generate the service xml automatically 自动生成XML file文件,点击Next
    service name,输入:AxisService,然后在class name 中填写要发布的类(全路径),点击load。勾选 Search declared methods only。点击next

    output File location,输入:D: ; output File Name,输入artiver文件的名称 AxisService。点击finish。
    提示 Service Archvie generated successfully! 注册表明,生成成功。
    3、发布AxisService
    AxisService.aar复制到%TOMCAT-HOME%/webapps/axis2/WEB-INF/services下。(不打aar包,Axis2Service1deploy下面复制过去也是可以)

    打开http://localhost:8085/axis2/services/listServices 看到

    三、独立部署

    1、新建java web project工程。
    2、文件复制
    %TOMCAT-HOME%webappsaxis2WEB-INFlib 复制到 Axis2Service2WebRootWEB-INFlib 下,并加入工程引用。
    %TOMCAT-HOME%webappsaxis2WEB-INFconf 复制到 Axis2Service2WebRootWEB-INFconf
    %TOMCAT-HOME%webappsaxis2WEB-INFmodules 复制到 Axis2Service2WebRootWEB-INFmodules
    3、web.xml 代码如下


    < web-app id="wmf" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    < servlet>
    < servlet-name>AxisServlet
    < servlet-class>org.apache.axis2.transport.http.AxisServlet
    < load-on-startup>1
    < /servlet>
    < servlet-mapping>
    < servlet-name>AxisServlet
    < url-pattern>/services/*
    < /servlet-mapping>

    2、新建 Axis2Service2srcwsTestWs.java

    package ws;
    public class TestWs {
    public String showName(String name) {return name; }
    public String getName() {return "Axis2Service Sample"; }
    }

    3、新建Axis2Service2WebRootWEB-INFservices目录。
    4、新建一个AxisService服务
    AxisServiceMETA-INFservices.xml


    < description>AxisService
    < parameter name="ServiceClass">ws.TestWs
    < operation name="showName">
    < messageReceiver
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    < /operation>
    < operation name="getName">
    < messageReceiver
    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    < /operation>
    < /service>

    启动tomcat后,访问http://localhost:8085/Axis2Service2/services/AxisService?wsdl看是否正常。

    AXIS2调用Web Services

    一、客户端stub文件生成
    1、脚本生成方式
    去AXIS2的解压目录下bin(%AXIS2_HOME%in)下执行下面语句
    wsdl2java -uri http://localhost:8085/Axis2Service2/services/AxisService?wsdl -p ws -s -o stub
    -p参数指定了生成的Java类的包名
    -o参数指定了生成的一系列文件保存的根目录
    在stubsrcws自动生成AxisServiceStub.java

    2、插件生成方式
    IDE中选择New->other->Axis2 Code Generator,点击Next;
    勾选Generate Java source code from a WSDL file,点击Next;
    WSDL file location,输入:http://localhost:8085/Axis2Service2/services/AxisService?wsdl,点击Next;
    如果路径不对会提示:Specified WSDL is invalid!, Please select a validated *.wsdl/*.xml file on previous page.
    正确的话界面如下,点击next;

    指定输入路径,点击Next

    提示:All operations completed successfully! 生成成功。在D:srcws 自动生成了stub一系列文件,其中ws是包名。

    上面2种方式生成的stub类有点不一样,脚本生成方式是单一文件,插件生成方式生成的一系列文件。

    二、客户端调用
    脚本生成方式为例子,插件生成的类似。

    1、新建 java工程 Axis2Client
    新建Axis2Clientlib文件夹
    将%AXIS2_HOME%lib 下的jar包复制到Axis2Clientlib,并加入工程引用中
    将通过脚本生成的单一AxisServiceStub.java文件 加入到srcws下
    2、新建test.TestWs.java 主要代码如下

    //初始化Sub类
    AxisServiceStub stub = new AxisServiceStub();
    //传递AxisServiceStub.ShowName对象,相关参数在这边赋值。
    AxisServiceStub.ShowName command = new AxisServiceStub.ShowName();
    command.setName("Hello!");
    //取得返回值
    String name = stub.showName(command).get_return();
    System.out.println(name);

    调用成功后控制台输出:Hello!

    上面代码展示了如何从webservice中 调用方法。

  • 相关阅读:
    解决跨域问题的后端解决方案
    java-反射
    验证接口实现类对于接口中所有方法是否都要重写?
    完成Triangle时遇到的问题
    刚知道的一种算法
    完成ATM编程练习题时遇到的问题
    完成Account编程练习遇到的问题
    完成StopWatch编程练习题时遇到的一些问题
    Window环境下Java备份和恢复Mysql数据
    IDEA导入项目不下载依赖问题
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480458.html
Copyright © 2011-2022 走看看