加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Axis开发WebService 指南

发布时间:2020-12-17 00:34:45 所属栏目:安全 来源:网络整理
导读:Axis开发WebService 指南 一、?开发环境 l??????????MyEclipse 6.5 l??????????Tomcat 6.0.24 l??????????Jdk 1.6.0_22 l??????????Axis1.4 ? 二、Axis简介: ? axis全称Apache EXtensible Interaction System 即? 阿帕奇 ?可扩展交互系统。Axis本质上就是一

Axis开发WebService 指南

一、?开发环境

l??????????MyEclipse 6.5

l??????????Tomcat 6.0.24

l??????????Jdk 1.6.0_22

l??????????Axis1.4

?

二、Axis简介:



?

axis全称Apache EXtensible Interaction System 即?阿帕奇?可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建?服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器。

下载1.4 Final 链接地址:

http://ws.apache.org/axis/

?

三、Java开发Webservice 示例

Axis支持三种WebService 的部署和开发,分别为:?
??? 1、Dynamic Invocation Interface(DII)方式?
??? 2、Dynamic Proxy方式?
??? 3、Stubs方式

Stubs方式是最通用的做法,又因其灵活的特点,建议使用这种方式.

下面是详细的开发步骤:

1)???????创建web工程

1、??MyEclipse 6.5创建web project,取名为axistest;

2、??新建文件夹 文件夹名为lib,然后 将下载下来的axis 其 axis-1_4lib 目录下的jar 拷贝到ib目录下,将这些jar引入到axistest classpath 下,如图:



?

2) .编写Server 程序

1、??新建class,包取名:server??类名:HelloServer

声明sayHello方法,具体代码如下:


Java代码??

收藏代码

  1. <span?style="">package?Server;??
  2. ??
  3. /**?
  4. ?
  5. ?*?开发webservice:?服务器端?
  6. ?
  7. ?*?@author?lvqing?
  8. ?
  9. ?*?
  10. ?
  11. ?*/??
  12. ??
  13. ???
  14. ??
  15. public?class?HelloServer?{??
  16. ??
  17. ???
  18. ??
  19. public?String?sayHello(String?name){??
  20. ??
  21. return?"hello:"+name;??
  22. ??
  23. }??
  24. ??
  25. }</span>??
?

结构图:



?

2、配置web.xml

web.xml文件很容易配置,拷贝axis包里面的WebService示例的web.xml配置到我们的工程中的web.xml中就可以了。

·?

Xml代码??
  • <span?style=""><?xml?version="1.0"?encoding="UTF-8"?>????
  • web-app?version="2.5"?????
  • ????xmlns="http://java.sun.com/xml/ns/javaee"?????
  • ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?????
  • ????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?????
  • ????http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">????
  • ??welcome-file-list>????
  • ????welcome-file>index.jsp</>????
  • ??????
  • ????<!--?===============?Axis?Webservice?=============-->????
  • ????servlet>????
  • ????????servlet-name>AxisServletservlet-class>org.apache.axis.transport.http.AxisServlet>AdminServlet>org.apache.axis.transport.http.AdminServletload-on-startup>100>SOAPMonitorService>org.apache.axis.monitor.SOAPMonitorServiceinit-param>????
  • ????????????param-name>SOAPMonitorPortparam-value>5001servlet-mappingurl-pattern>/servlet/AxisServlet>*.jws>/services/*>/SOAPMonitormime-mappingextension>wsdlmime-type>text/xml>xsd>????
  • ??????
  • web-app>??span>??
  • ?

    3) 部署 web project

    利用MyEclipse部署工具?将我们的项目部署到Tomcatwebapp目录下




    ?
    ?

    4) 创建?deploy.wsdd文件

    这个文件可以在任意目录下创建,但是为了维护方便 ,我将它创建在zxistest 项目Src:目录下:

    示例代码:


    Xml代码?? deployment?xmlns="http://xml.apache.org/axis/wsdd/"???
  • ??
  • ????xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">???
  • ??
  • ????<!--?这里的helloserver为wsdd描述符中的ServiceNamespace??-->???
  • ??
  • ????service?name="helloserver"?provider="java:RPC">???
  • ??
  • ????????<!--?这里的ClassName就是我的服务类了,这个服务主要功能就是传递一个自定义的对象??-->???
  • ??
  • ????????parameter?name="className"?value="Server.HelloServer"?/>???
  • ??
  • ????????<!--?这里描术的意思是,此服务类中的方法全部享出来.?value值为*号???
  • ??
  • ????????如果你只想让你的客户端只能调用其中一个方法时,value值改为方法名就可以了.?--parameter?name="allowedMethods"?value="*"?/>???
  • ??
  • ????service>???
  • ??
  • deployment>??
  • ?

    5) 生成?server-config.wsdd??文件

    server-config.wsdd 文件是WebService的核心配置文件。Web服务能否发布,很大程度上取决于次文件的配置

    这里 我们写个批处理脚本deploy.bat:

    set Axis_Lib=D:workspaceMEENMAaxistestlib

    set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

    set Axis_Servlet=http://localhost:8080/axistest/servlet/AxisServlet

    %Java_Cmd% org.apache.axis.client.AdminClient -l %Axis_Servlet% deploy.wsdd

    pause;

    接下来,在执行deploy.bat前,请确保Tomcat 服务已运行,否则在Dos命令窗口中看到如下错误:



    ?

    看到如下图运行的结果,表明已经在TomcatwebappsaxistestWEB-INF目录下 生成了server-config.wsdd文件.?(Activation.jar 和 mail.jar这两个包虽然没有加入到CLASSPATH中,但是不影响我们的开发。)



    ?

    好了,大功告成了!webservice 发布成功了,重启Tomcat,我们来测试一下,看是否发布成功.

    在IE上输入:?http://localhost:8080/axistest/services/helloserver?wsdl

    看到如图结果表明发布成功:



    ?

    6) 生成客户端Client wsdl文件

    在IE上输入:?http://localhost:8080/axistest/services/helloserver?wsdl?,点击文件?→?另存为.存到a?xistest 项目Src:目录下

    7)Wsdl2Java

    为了方便,我们写个批处理脚本 WSDL2Java.bat

    set Axis_Lib=D:workspaceMEENMAaxistestlib

    set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

    set Output_Path=D:workspaceMEENMAaxistestsrc

    set Package=client

    %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% helloserver.wsdl

    pause;

    解释下此命令:

    %Output_Path%是客户端文件输出路径,%Package%是包名

    这时 我们可以看到?a?xistest?工程下已经生成了客户端程序,如图:



    ?

    8) 客户端测试代码


    Java代码?? package?client;??
  • ??
  • ???
  • ??
  • import?java.net.URL;??
  • ??
  • ???
  • ??
  • ?*?webservice??客户端?程序?
  • ?
  • ?*/??
  • ??
  • class?ClientTest?{??
  • ??
  • static?void?main(String[]?args)?{??
  • ??
  • HelloServerService?service?=?null;???
  • ??
  • ????????HelloServer?helloServer?=?null;???
  • ??
  • ????????try?{???
  • ??
  • ????????????System.out.println("connect......");???
  • ??
  • ????????????String?StrPortAddress?=?"http://localhost:8080/axistest/services/helloserver";???
  • ??
  • ????????????URL?portAddress?=?new?URL(StrPortAddress);???
  • ??
  • ????????????//?得到客户端服务???
  • ??
  • ????????????service?=?new?HelloServerServiceLocator();???
  • ??
  • ????????????//?得到客户端stub???
  • ??
  • ????????????helloServer?=?service.gethelloserver(portAddress);??
  • ??
  • ????????????//?测试服务方法???
  • ??
  • ????????????String?resultStr?=?helloServer.sayHello("iteye");??
  • ??
  • ????????????System.out.println(resultStr);???
  • ??
  • ????????}?catch?(Exception?e)?{???
  • ??
  • ????????????e.printStackTrace();???
  • ??
  • ????????}?finally?{???
  • ??
  • ????????????System.out.println("End.");???
  • ??
  • ????????}???
  • ??
  • }??
  • ??
  • }</span>??
  • ?

    终结?……

    • axistest.zip?(2 MB)
    • 下载次数: 472
    • 查看图片附件

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读