用Apache axis开发Web服务.docx

上传人:b****2 文档编号:17758431 上传时间:2023-08-03 格式:DOCX 页数:12 大小:20.29KB
下载 相关 举报
用Apache axis开发Web服务.docx_第1页
第1页 / 共12页
用Apache axis开发Web服务.docx_第2页
第2页 / 共12页
用Apache axis开发Web服务.docx_第3页
第3页 / 共12页
用Apache axis开发Web服务.docx_第4页
第4页 / 共12页
用Apache axis开发Web服务.docx_第5页
第5页 / 共12页
用Apache axis开发Web服务.docx_第6页
第6页 / 共12页
用Apache axis开发Web服务.docx_第7页
第7页 / 共12页
用Apache axis开发Web服务.docx_第8页
第8页 / 共12页
用Apache axis开发Web服务.docx_第9页
第9页 / 共12页
用Apache axis开发Web服务.docx_第10页
第10页 / 共12页
用Apache axis开发Web服务.docx_第11页
第11页 / 共12页
用Apache axis开发Web服务.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

用Apache axis开发Web服务.docx

《用Apache axis开发Web服务.docx》由会员分享,可在线阅读,更多相关《用Apache axis开发Web服务.docx(12页珍藏版)》请在冰点文库上搜索。

用Apache axis开发Web服务.docx

用Apacheaxis开发Web服务

Axis1.x的安装配置以及简单例子 

 

连接地址:

一. 安装和配置

      1. axis1.x 主页 http:

//ws.apache.org/axis/

        axis1.4 下载地址  http:

//www.apache.org/dist/ws/axis/1_4/axis-bin-1_4.zip

        axis1.4 源码下载  http:

//www.apache.org/dist/ws/axis/1_4/axis-src-1_4.zip

      2. 解压 axis-bin-1_4.zip 将子目录 webapps 目录下的axis目录 拷贝到 tomcat\webapps下 

      3. 从  axis-src-1_4\axis-1_4\lib 中拷贝 activation.jar 到tomcat\common\lib 下

          从  jdk_home(例如:

"C:

\ProgramFiles\Java\jdk1.5.0")\lib下拷贝tools.jar 到 tomcat\common\lib下   

      从 下载javamail-1_4.zip 将其中的mail.jar拷贝到tomcat\common\lib 下 

         从http:

//xml.apache.org/security/dist/java-library/ 下载 xml-security-bin-1_3_0.zip 将其中的lib/xmlsec-1.3.0.jar拷贝到                  tomcat/common/lib 下

      4. 启动 Tomcat,访问 http:

//127.0.0.1:

8080/axis/ 正常将出现 一个Apache Axis的页面 点击其中的 Validation正常的显示是提示找到了所有

           必要组件和可选组件

 

     5. 配置环境变量 

         AXIS_HOME =Tomcat\webapps\axis

        AXIS_LIB=%AXIS_HOME%\lib\WEB-INF\lib

        AXISCLASSPATH=.;%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;

                        %AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;

                        %AXIS_LIB%axis-ant.jar; (注意这个)%TomcatHome%\common\lib\activation.jar;.....

        也就是lib下所有包的名字,以及步骤3中加入的四个包的名字

     另外有个log4j的配置,以后再补 

 

   注:

为了减少以后的麻烦 ,tomcat 服务器必须占用端口8080          

二.发布服务(两种方式发布,三种方式调用) 

    A.DII(DynamicInvocationInterface)方式访问web服务

      1.编写服务器代码

      publicclassHelloWorld

       {

         publicStringgetName(Stringname)

         {

                   return"hello"+name;

         }

      }

 

-显示引用文字-

      2.将源码拷贝到Axis_HOME下,重命名为HelloWorld.jws

      3.访问连接http:

//localhost:

8080/Axis/HelloWorld.jws?

wsdl,页面显示Axis自动生成的wsdl

      4.编写访问服务的客户端代码

importorg.apache.Axis.client.Call;

importorg.apache.Axis.client.Service;

importjavax.xml.namespace.QName;

importjavax.xml.rpc.ServiceException;

import.MalformedURLException;

importjava.rmi.RemoteException;

publicclassSayHelloClient

{

   publicstaticvoidmain(String[]args)

 {

       try

  {

 Stringendpoint=

 "http:

//localhost:

8080/Axis/HelloWorld.jws";

   Serviceservice=newService();

           Callcall=null;

           call=(Call)service.createCall();

           call.setOperationName(newQName(

              "http:

//localhost:

8080/Axis/HelloWorld.jws",

     "getName"));

           call.setTargetEndpointAddress

   (new.URL(endpoint));

           Stringret=(String)call.invoke(newObject[]

   {"zhangsan"});

           System.out.println("returnvalueis"+ret);

       }

  catch(Exceptionex)

  {

      ex.printStackTrace();

       }

   }

}  

    B.DynamicProxy方式访问服务 

        1.  编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloWorld

      2.  编写代理接口

            publicinterfaceHelloWorldInterface extendsjava.rmi.Remote

            {

               publicStringgetName(Stringname)

                   throwsjava.rmi.RemoteException;

               }

      3. 编写并执行客户端程序TestHelloClient.java 

importjavax.xml.rpc.Service;

importjavax.xml.rpc.ServiceFactory;

import.URL;

importjavax.xml.namespace.QName;

publicclassTestHelloClient

{

   publicstaticvoidmain(String[]args)

 {

       try

       {

           StringwsdlUrl=

   "http:

//localhost:

8080/Axis/HelloWorld.jws?

wsdl";

           StringnameSpaceUri=

   "http:

//localhost:

8080/Axis/HelloWorld.jws";

           StringserviceName="HelloWorldService";

           StringportName="HelloWorld";

           ServiceFactoryserviceFactory=

   ServiceFactory.newInstance();

           ServiceafService=

   serviceFactory.createService(newURL(wsdlUrl),

        newQName(nameSpaceUri,serviceName));

           HelloWorldInterface proxy=(HelloWorldInterface )

       afService.getPort(newQName(

                   nameSpaceUri,portName), 

     HelloWorldInterface .class);

           System.out.println

   ("returnvalueis"+proxy.getName("john"));

       }catch(Exceptionex)

       {

           ex.printStackTrace();

       }

   }

}

   C.编写wsdd发布web服务,编写stubclient访问web服务

     1、编写服务端程序SayHello.java,编译SayHello.java

            publicclassSayHello

         {

            publicStringgetName(Stringname)

            {

                return"hello"+name;

            }

             }

      2. 编写LogHandler.java

         importorg.apache.axis.AxisFault;

         importorg.apache.axis.Handler;

         importorg.apache.axis.MessageContext;

         importorg.apache.axis.handlers.BasicHandler;

         importjava.util.Date;

         publicclassLogHandlerextendsBasicHandler

         {

             publicvoidinvoke(MessageContextmsgContext)throwsAxisFault

            {

                /**Loganaccesseachtime wegetinvoked. */

                try{

                       HandlerserviceHandler =msgContext.getService();

                       IntegernumAccesses= (Integer)serviceHandler.getOption("accesses");

                       if(numAccesses==null)

                           numAccesses=newInteger(0);

                     numAccesses=newInteger(numAccesses.intValue()+1);

                     Datedate=newDate();

                            Stringresult=date+":

service"+msgContext.getTargetService()+"accessed"+numAccesses+"time(s).";

                     serviceHandler.setOption("accesses",numAccesses);

                     System.out.println(result);

                   }catch(Exceptione)

                        {

                       throwAxisFault.makeFault(e);

                   }

            }

         }

  3.编写deploy.wsdd文件

      

//xml.apache.org/axis/wsdd/"xmlns:

java="http:

//xml.apache.org/axis/wsdd/providers/java">          

        

LogHandler"/>

        

RPC">

             

                   

             

             

              

        

     

   4.将编译后的文件拷贝到Axis_HOME/WEB-INF/classes下,如:

D:

\tomcat\webapps\Axis\WEB-INF\classes

   5.发布服务,生成服务配置文件 java-cp%AXISCLASSPATH%org.apache.axis.client.AdminClientdeploy.wsdd正常会输出一个文件server-config.wsdd

   6.生成客户端代码 

   a:

方式1

  将SayHello.java拷贝到Axis_HOME/下,重命名为SayHello.jws,

  执行下面的命令生存clientstub

java-cp%AXISCLASSPATH%org.apache.axis.wsdl.WSDL2Java-pclient http:

//localhost:

8080/axis/SayHello.jws?

wsdl 

这种方式相当于实际上使用了第一种发布方式来生成wsdl文件然后用WSDL2Java 生成客户端stub代码

  b:

方式2

  这种方式先用SayHello生成一个静态的SayHello.wsdl文件,然后用WSDL2Java 生成对应的客户端stub框架 

  执行如下命令生成SayHello.wsdl

java-cp%AXISCLASSPATH%org.apache.axis.wsdl.Java2WSDL-oSayHello.wsdl-lhttp:

//localhost:

8080/axis/services/SayHello-nsayhelloSayHello

  执行如下命令生成clientstub

java-cp%AXISCLASSPATH%org.apache.axis.wsdl.WSDL2Java SayHello.wsdl -pclient

  生成的stubclient文件列表为:

  1.SayHello.java

  2.SayHelloService.java。

  3.SayHelloServiceLocator.java

  4.SayHelloSoapBindingStub.java

  6、编写客户端程序,编译并执行

publicclassSayHelloClient

{

   publicstaticvoidmain(String[]args)

 {

       try

  {

   SayHelloServiceservice=newclient.

      SayHelloServiceLocator();

         client.SayHello_PortType

   client=service.getSayHello();

           StringretValue=client.getName("Yourname");

           System.out.println(retValue);

}

catch(Exceptione)

{

 System.err.println

 ("Executionfailed.Exception:

"+e);

       }

   }

}

 

 

 

Axis2 的安装配置以及简单例子 

一.安装配置 

   1.axis2的主页 http:

//ws.apache.org/axis2/index.html 

      axis21.0的下载地址 http:

//ws.apache.org/axis2/download/1_0/download.cgi

   2.servlet容器安装(以tomcat5.5为例)

       从上面给出的下载地址下载WarDistribution(axis2.war)

      放到 tomcat\webapps目录下,在浏览器中输入http:

//localhost:

8080/axis2 正常显示Welcome的页面,(查看tomcat\webapps 可以看到生成一个名为axis2的文件夹)点击Validate 验证安装是否正常

      一切正常侯即可使用axis2发布web服务 

      axis2web管理环境的用户名:

admin密码:

axis2

 

   3.配置开发相关环境变量

      需要添加AXIS2_HOME = axis2解压目录

 

      为了随处可以使用axis2提供的代码生成工具,可以在path 环境变量里添加 %AXIS2_HOME%\bin   

        

   

二.开发服务

   axis2通过两种方式来开发一个web服务,一种方式通过使用axis2primary APIs

   另一种方式使用wsdl文件来生成web服务的客户端和服务端框架代码

    A.  通过axis2primaryAPIs开发webservice

       这种方式需要学习axis2对象模型(叫AXIOM)的基础知识,而且可扩展性不如后一种方式。

        

    B.通过wsdl文件开发和测试一个web服务 

       AXIS2_HOME\samples\wsdl下有wsdl文件的例子,以Axis2SampleDocLit.wsdl为例,简单介绍一下生成框架代码的过程,

      1. 在命令行模式里,进入到AXIS2_HOME\samples\wsdl目录  

 

          注意:

这个Axis2SampleDocLit.wsdl文件有点问题,需要将里边style="rpc"的地方全部改成style="document"

 

      2. 运行wsdl2java-uri.\Axis2SampleDocLit.wsdl-ss-sd-dxmlbeans-g-oAxis2SampleDocLit-porg.apache.axis2.userguide

          这个命令在当前目录生成一个文件夹Axis2SampleDocLit 

       3.  添加服务:

编辑

              Axis2SampleDocLit\src\org\apache\axis2\userguide\Axis2SampleDocLitServiceSkeleton.java  文件

         编辑echoString方法为

      publicorg.apache.axis2.userguide.xsd.EchoStringReturnDocumentechoString(          

                                                         org.apache.axis2.userguide.xsd.EchoStringParamDocument  param4)

 

      {

        Stringname=param4.getEchoStringParam();

        StringretStr="Hello"+

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2