利用AXIS开发Webservice(一) —— 如何发布自己的webservice

       因为工作关系需要从事Webservice的开发工作,公司的webserivce是由Apache的AXIS来实现的,以前对这个了解不算多,不过经过几天的研究,特奉上小小的心得一篇。

        先介绍下本人开发环境吧。 JDK 1.4.2 + Myeclipse 6.0(实在经不起诱惑,尝尝鲜) + Tomcat 5.0.28 + AXIS 1.4。 AXIS 1.4包可以在http://ws.apache.org/axis/ 找到。 假设所有的环境你已经搭好,并且AXIS包也已经下好了。OK, Here we go~

         解压axis-bin-1_4.zip这个包可以看到webapps目录,双击进入把里面的AXIS文件夹拷到 %TOMCAT_HOME%\webapps目录下,之后拷贝activation.jar、mail.jar、tools.jar到%TOMCAT_HOME%\webapps\axis\WEB-INF\lib目录下。启动tomcat,访问http://localhost:8080/axis/happyaxis.jsp  如果访问成功,恭喜你!基本的配置你已经做完了。

PS:此处的%TOMCAT_HOME%指的是Tomcat的安装目录,至于那另外的三个jar包,J2EE 1.4库里就能找的到。

        现在来说一下最关键的Webservice的发布。AXIS提供了两种发布方式,一种是即时发布(Instant Deployment),另外一种是定制发布(Custom Deployment)。即时发布提供了一种非常简单的webservice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。这里也将会以定制发布为重点来介绍。

     1.即时发布 JWS (Java Web Service) Files - Instant Deployment     

    即时发布提供了一种非常简单发布方式,发布者只要有Java源代码(也就是.java文件),然后把其后缀名改成jws(也就是 java web service的缩写)拷贝到%TOMCAT_HOME%\webapps\axis目录下即完成了所有的发布工作。AXIS的编译引擎会处理接下来的所有事情。下面是一段示例代码:

java 代码
  1. public   class  HelloAXIS {   
  2.        
  3.      public  String Hello(String name){   
  4.          return   "AXIS say hello to "  + name;   
  5.     }   
  6. }  

        把 HelloAXIS.java 文件改成 HelloAXIS.jws 然后拷贝到%TOMCAT_HOME%\webapps\axis目录下,启动Tomcat之后访问 http://localhost:8080/axis/HelloAXIS.jws  如果能看到 Click to see the WSDL这个超链接就说明已经发布成功了,点击进去就可以看到这个Webservice的WSDL描述文件。server端的发布已经完成了,接下来就是编写Client端测试代码了。

java 代码
  1. package  com.chnic.test;   
  2.   
  3. import  java.net.URL;   
  4.   
  5. import  javax.xml.namespace.QName;   
  6.   
  7. import  org.apache.axis.client.Call;   
  8. import  org.apache.axis.client.Service;   
  9.   
  10. public   class  Test {   
  11.        
  12.      public   static   void  main(String[] args)  throws  Exception{   
  13.         String targetEendPoint =  "http://localhost:8080/axis/HelloAXIS.jws" ;   
  14.         Service service =  new  Service();   
  15.         Call call = (Call) service.createCall();               
  16.         call.setOperationName( new  QName(targetEendPoint,  "Hello" ));   
  17.         call.setTargetEndpointAddress( new  URL(targetEendPoint));   
  18.         String result = (String) call.invoke( new  Object[]{ "Robert" });   
  19.         System.out.println(result);   
  20.     }   
  21. }   

       测试代码很简单,如果熟悉java反射机制的朋友不用两分钟就能看明白。运行后客户端控制台出现 AXIS say hello Robert。测试成功。果然很简单吧。不过在这简单背后却是以牺牲灵活性为代价的。假如你现在手里只有.class 或者一个jar包,jws就不再能满足你的需求了,最要命的就是即时发布不支持带包的类,这点AXIS的用户手册上写的也很明白。

 Important: JWS web services are intended for simple web services. You cannot use packages in the pages, and as the code is compiled at run time you can not find out about errors until after deployment. Production quality web services should use Java classes with custom deployment.

 

      2.定制发布 Custom Deployment - Introducing WSDD

      比起即时发布定制发布更加烦琐也更复杂,但是换来的却是更大的灵活性,因此在实际项目中定制发布还是不二的选择。定制发布需要你自己编写一个WSDD(Web Service Deployment Descriptor)文件,这个东东类似与XML稍后会做出介绍。废话不多说,我们来看代码:

 

java 代码
  1. package  com.chnic.webservice;   
  2.   
  3. public   class  HelloWorld {   
  4.        
  5.      public  HelloWorld(){   
  6.            
  7.     }   
  8.        
  9.      public  String hello(String str){   
  10.          return   "Hello "  + str;   
  11.     }   
  12.        
  13.      public   int  add( int  a,  int  b){   
  14.          return  a + b;   
  15.     }   
  16.        
  17. }   

        一个带包的很简单的类,在eclipse下编译后按照包名拷到 %TOMCAT_HOME%\webapps\axis\WEB-INF\classes 目录下。以这个类为例,拷贝完之后这个HelloWorld.class的路径就是 %TOMCAT_HOME%\webapps\axis\WEB-INF\classes\com\chnic\webservice。PS: 如果嫌这样太麻烦,可以另外建一个Java Web工程用myeclipse的发布工具发布到Tomcat之后,整体一次性拷贝到websericve的工程中。

       接下来就需要编写发布文件deploy.wsdd。到%TOMCAT_HOME%\webapps\axis\WEB-INF 目录下建立这个文件并在其中添加如下内容:

xml 代码
  1. < deployment   xmlns = http://xml.apache.org/axis/wsdd/  
  2.             xmlns:java = "http://xml.apache.org/axis/wsdd/providers/java" >   
  3.        
  4.      < service   name = "HelloWorld"   provider = "java:RPC" >   
  5.          < parameter   name = "className"   value = "com.chnic.webservice.HelloWorld" />   
  6.          < parameter   name = "allowedMethods"   value = "*" />        
  7.     </ service >   
  8. </ deployment >   

       简单的介绍下各个节点的含义,"HelloWorld"当然是这个webservice的名字,后面紧跟的java:RPC指的是服务类型。这里一共有有4种类型,分别是:RPC, Document, Wrapped 和 Message。有兴趣可以看下 org.apache.axis.providers这个包和子包下面的类的API文档。之后的parameter节点第一个当然是指出具体的类,第二个从字面上也很好理解:允许调用的方法。这里的配置告诉引擎可以调用所有的public方法,当然你也可以自己指定。

     编写完配置发布文件之后,cmd打开windows的控制台,进入%TOMCAT_HOME%\webapps\axis\WEB-INF目录下键入如下命令  

  1. java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd  

       之后控制台返回Processing file deploy.wsdd 和 Done processing 这两段话即说明发布成功。(此时会在同级目录生成一个server-config.wsdd文件 )在这里的AdminClient是AXIS提供的一个客户端管理工具。至于java.ext.dirs的含义可以去了解一下classloader和JVM类装载机制方面的知识,在这里就不多解释。 还有一点要注意的是在发布的时候Tomcat服务必须处于启动状态,否则就会抛出一堆无法连接的异常信息。发布成功之后你可以通过访问 http://localhost:8080/axis/servlet/AxisServlet 来查看你所有的定制发布的服务。

客户端测试代码
  1. String targetEendPoint =  "http://localhost:8080/axis/services/HelloWorld" ;   
  2. Service service =  new  Service();   
  3. Call call = (Call) service.createCall();   
  4. call.setTargetEndpointAddress( new  URL(targetEendPoint));   
  5.   
  6. call.setOperationName( new  QName(targetEendPoint,  "hello" ));        
  7. String result = (String) call.invoke( new  Object[]{ "Robert" });   
  8. System.out.println(result);   
  9.   
  10. call.setOperationName( new  QName(targetEendPoint,  "add" ));   
  11. Integer res = (Integer) call.invoke( new  Object[]{ new  Integer( 1 ),  new  Integer( 2 )});   
  12. System.out.println( "The result is: "  + res);  

       运行测试代码,控制台显示 Hello Robert 和 The result is: 3 这两句话,说明发布成功。仔细观察下发现其实除了那个targetEndpoint 之外,即时发布和定制发布的客户端调用代码基本上都是一样的。定制发布的URL可以在WSDL文件里找到。  其实定制发布还有一些高级特性,这个就留到下一篇再说吧。

Axis2开发webservice详解 是 Apache 提供的一款第三方 WebServices 引擎,与其前身 ApacheAxis 相比, axis2 更加高效、模块化,也更面向于 XML 的组织。经过精心的设计, axis2 提供了更加便利的模块添加功能。基于新的体系结构进行了全新编写,而且没... 阅读详情

相关推荐

N5105软路由救星:PVE下iKuai频繁重启断流,更新这个内核补丁就稳了

本文深入解析N5105软路由在PVE环境下iKuai频繁重启断流的问题根源,并提供终极稳定方案——更新内核补丁。通过详细的微代码补丁安装指南和进阶调优技巧,帮助用户彻底解决稳定性问题,提升网络性能。适用于高负载场景下的长期稳定运行。

weixin_30457465的博客 404

使用Axis发布Web Service

将应用发布成Web Service,有很多种方法,这里只介绍使用Axis提供的最简单的方式,有两种:JWS(Java Web Service) File和WSDD(Web ServiceDeployment Descriptor)。 1.JWS File-即时部署 1.1步骤 1.1.1拷贝 A.java文件到webapp-root目录下,重命名为A.jws 1.1.2等待一分钟左右,访问

我有一个梦想 1120

idea用axis发布webservice

一.创建一个新项目,创建时选择webservice二.在HelloWorld类里面写自己的方法,在file下编译一下这个类,不编译,idea会提示不通过,编译后需要将为该服务发布WSDL文件,此文件必须生成.选择要发布的服务,点击ok生成wsdl文件引入axis库三.把项目部署到tomcat,启动。在浏览器输入:http://localhost:8080/services/HelloWorld?w...

zz_ddup的博客 2317

利用axis调用webservice

比如我们需要调用第三方webservice接口,如这个地址:获得随机数字或字母http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl一、准备需要的jar包    在maven项目中,pom的依赖如下&lt;!-- axis --&gt; &lt;dependency&gt; &lt;groupId&gt;o...

张小烦的博客 1万+

UR10e+D435+ag95夹爪 gazebo 仿真记录(一)

学习仿真环境gazebo下利用UR10e机械臂搭建模拟平台,此博客用于记录搭建过程!!主要参考光头明明、总有一天全城的人都要高看我们和bug404_三位博主。最终自己功能包的主要参考了bug404_的ur_platform,感觉这个结构比较合理。运行环境:Ubuntu18.04+Ros-melodic+Gazebo9。

Forbiven的博客 6326

Windows 11“此应用已被管理员阻止运行”解决方案

通过本文介绍的两种方法,你应该能够解决Windows 11中“此应用已被管理员阻止运行”的问题。无论你选择创建新管理员账户还是禁用管理员批准模式,都请确保了解相关操作的风险,并根据你的实际需求做出选择。通过禁用“用户账户控制:以管理员批准模式运行所有管理员”设置,可以解决因系统安全设置导致的应用程序被阻止运行的问题。这种方法适用于那些希望简化管理员账户操作流程的用户,但需要注意可能带来的安全风险。通过创建并登录具有管理员权限的新账户,可以解决因系统安全设置导致的应用程序被阻止运行的问题。

mmoo_python的博客 1万+

利用AXIS开发Webservice(一) —— 如何发布自己的webservice (目的:学习)

先介绍下本人开发环境吧。 JDK 1.4.2 + Myeclipse 6.0(实在经不起诱惑,尝尝鲜) + Tomcat 5.0.28 + AXIS 1.4。 AXIS 1.4包可以在http://ws.apache.org/axis/ 找到。 假设所有的环境你已经搭好,并且AXIS包也已经下...

chuchen7021的博客 147

深入解析Flex NOC总线驱动的实时带宽与延迟优化策略

本文深入解析了Flex NOC总线驱动的核心价值与优化策略。通过解读`/proc/noc/real_time`中的实时带宽与延迟数据,并结合`sysfs`接口进行动态QoS调优,可以有效解决芯片内部数据拥堵问题。文章以智能摄像头和算力盒子的实际案例,详细说明了如何通过优先级调整、带宽限制和参数优化,提升系统在复杂任务下的实时性与稳定性。

weixin_29289821的博客 282

微信开发中如何调用自己写的webservice

做微信开发,也有一段时间,调用过一些第三方的

qzp1991的专栏 6966

ESP32-CAM与TFT屏幕实时图像传输:Arduino环境下的OV2640驱动实践

本文详细介绍了在Arduino环境下实现ESP32-CAM与TFT屏幕实时图像传输的完整实践方案。重点解析了OV2640摄像头的驱动配置、硬件引脚连接、TFT屏幕初始化及图像显示优化技巧,帮助开发者快速构建稳定的实时图像显示系统,适用于物联网监控、门禁系统等场景。

cuda7parallel的博客 113

从原理图到PCB:手把手教你绘制DRV8301驱动板(附完整代码与避坑指南)

本文详细介绍了如何从原理图设计到PCB布局,手把手教你绘制DRV8301驱动板,特别适用于FOC(磁场定向控制)系统开发。内容涵盖元器件选型、电源树架构设计、栅极驱动电路、PCB布局技巧、焊接调试及代码配置,并附有完整代码与常见问题避坑指南,帮助工程师快速掌握DRV8301驱动板的设计与优化。

weixin_33716941的博客 394

Axis1.4发布WebService

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 本章节主要介绍Axis1.4发布WebService。这里只说明发布相关内容,调用方法后续会说明。 1、下载安装       下载地址:http://archive.apache.org/dist/axis/       本案例中使用的版本 :http://archive.

下雨天__的专栏 5258

CLCD 中国生命周期基础数据库使用攻略

CLCD 是公共建筑碳排放计算的理想选择,其本地化数据可显著提高计算准确性。

hy行者勇哥的博客 2668

使用Axis2实现WebService的发布和调用

一、Axis2简介: Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java调用这个WebService。 二、A

无羁之风的专栏 2万+

【EMC专题】为什么芯片规格书ESD性能中看不到MM(机器放电模型)

器件级ESD包括三种类型,HBM人体放电模型、MM机械放电模型和CDM元件充电模型。但在芯片规格书中为什么只见到HBM模型与CDM模型,却没有看到MM模型的数据?

一点硬件 450

英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构

TC3xx的HSM内核是一颗32位的ARM Cortex M3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(Public Key Crypto) ECC256、Hash SHA2,以及TRNG(真随机数生成)。

认真搞搞汽车MCU 5738

使用axis2进行WebService的开发

使用axis2进行WebService的开发 Apache Axis2 是 Apache Axis SOAP 项目的后继项目。此项目是 Web 服务核心引擎的重要改进,目标是成为 Web 服务和面向服务的体系结构(Service-Oriented Architecture,SOA)的下一代平台。 axis2 WebService开发分为服务端开发与客户端开发,服务端开发为对外提供服务,客户

Hsing Hsu's Blog 4万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

webService总结(四)——使用axis2发布和调用webService

准备工作 Axis2 官网 http://axis.apache.org/  下载axis2相关资料 其中 axis2-1.6.2-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.6.2-war.zip文件用于将WebService发布到Web容器中。最后两个是axis2在eclipse中的插件。   大概说说这几个文件如何使用。 1、解压axis2

梦想起飞的地方,必须用心去经营 3877

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

axis发布webservice

用axis来发布webservice 首先下载必须的jar包 分别是:axis.jar    axis-ant.jar   commons-discovery-0.2.jar    commons-logging-1.0.4.jar   wsdl4j-1.5.1.jar  wsdl4j-1.6.2.jar 下载完jar包后则在web.xml中配置servlet拦截器: Axi

chengxu2011的专栏 5290

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

webservice用axis2发布服务端

webservice作为较早的不同程序访问技术,已经有一段时间了,它基于xml数据通信,在最新的rpc远程调用技术是json,并且这个也会成为主流,但是最为最早的rpc技术webservice,还是有很多用处的,一般政府系统常常采用webservice。            在webservice里有许多实现服务端和客户端技术,如cxfire,xfire,axis,axis2,现在基本是cxf

weixin_37610156的博客 3340

【WebService】第四章、Axis1.4发布WebService

axis axis 1.4 axis axis-wsdl4j 1.5.1 javax.mail mail 1.4.7 本章节主要介绍Axis1.4发布WebService。这里只说明发布相关内容,调用方法后续会说明。 1、下载安装 下载地址:http://archive.apache.org/dist/axis/ 本案例中使用的

zjt921586518的专栏 1030
下一篇: IE和FF下JS和CSS的几处不同
chnic
博客等级 码龄22年 13粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值