设为首页 收藏本站
查看: 691|回复: 0

[经验分享] 从无到有,WebService Apache Axis2初步实践

[复制链接]

尚未签到

发表于 2018-11-23 07:27:22 | 显示全部楼层 |阅读模式
  WebService说起来容易, 做起来还真有些让人一头雾水,先看了《JAVA WEB服务 构建与运行》和《JavaWebSererSOAP》大致了解了一下WebService,可是还是不得要领,想用Java做一个WebService服务的例子,然后通过其他应用来享用服务,百度,google一大堆还是获取到了很大帮助,比如如下博文:

  •   http://blog.csdn.net/zjw10wei321/article/details/7708117
      Axis2 Web服务配置文件services.xml详解
  •   http://www.ibm.com/developerworks/cn/webservices/ws-apacheaxis2/  Web 服务与 Axis2 体系结构
  •   http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/02/249556.html  WebService大讲堂之Axis2
  开始学习困难重重,作文以祭之,决定先从Axis2框架开始,以实践驱动对Webservice的理解和开发的学习。
  1.Axis2环境搭建
  下载: axis2-1.6.0-bin.zip  axis2-1.6.0-war.zip
  官方网站:http://axis.apache.org/axis2/java/core/download.cgi
  如果下载axis2-1.6.0-src.zip,需要Ant,Maven支持来构建bin.

  •   配置环境变量:AXIS2_HOME,PATH(JDK支持,具体方法略)
  •   搭建Axis2服务环境需要Apach-tomcat支持,将axis2-1.6.0-war.zip解压后的.war文件部署到tomcat中。
  •   启动tomcat,浏览器访问: http://localhost:8080/axis2/
  •   看到Welcome,安装Axis2服务成功,欢迎页面中上的Services:服务列表,Validate:检验系统环境,Administration:Axis2安装管理控制台(登录的默认用户密码在:axis2\WEB-INF\conf\axis2.xml下)。
  • admin
    axis2
  

  2.Axis2实例开发
  

  下面这个例子是进入Axis2框架开发Webservice服务的Hello World程序。
  快速起步,一个简单的例子,创建个一个服务类:
package com.axis.service;
public class HelloService {
public String sayHello(String name) {
if (null == name) {
name = "boby";
}
return "Hello , " + name;
}
}  配置services.xml文件


HelloService POJO Service


com.axis.service.HelloService




  

  HelloService实现服务要提供的功能,services.xml配置对服务进行描述,最后部署服务。
  关于services.xml文件的配置可也参见本文开始提到的第一篇博文。
  服务的目录结构:
DSC0000.jpg

  jws2根目录下直接放服务类,META-INF下放置services.xml,然后将工程打包为jws2.jar,由于Axis2建议服务的归档文件后缀为aar,手动改后缀,然后将jws2.aar放置到tomcat的webapp下的axis2工程下的WEB-INF下的services目录下,例如我本地路径:D:\__dev\apache-tomcat-6.0.37\webapps\axis2\WEB-INF\services。
  重启Tomcat,浏览器访问http://localhost:8080/axis2/services/listServices 查看服务列表
DSC0001.jpg

  HelloService提供了一个sayHello的操作,浏览器访问:
  http://localhost:8080/axis2/services/HelloService/sayHello?name=Jack
  sayHello:方法,name参数,参数值:Jack,服务返回结果:

Hello , Jack
  下面是客户端使用服务的示例代码:
package com.axis.client;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class HelloServiceClient {
private static String url1 = "http://localhost:8080/axis2/services/HelloService";
public static void main(String[] args) throws AxisFault {
RPCServiceClient client;
client = new RPCServiceClient();
Options options = client.getOptions();
System.out.println("======sayHello========");
EndpointReference endpoint = new EndpointReference(url1);
options.setTo(endpoint);
QName qname = new QName("http://service.axis.com", "sayHello");
Object[] methodArgs = new Object[] { "Tom" };
@SuppressWarnings("rawtypes")
Class[] returnType = new Class[] { String.class };
String result = (String) client.invokeBlocking(qname, methodArgs,
returnType)[0];
System.out.println(result);
}
}  运行上述程序可以看到控制台输出:
DSC0002.jpg

  从结果上看,第一行客户端本身的输出,第二行是服务端返回的结果打印信息。
  至此展示了搭建一个简单的基于Axis2 WebService框架的服务应用实例的全过程。
  在从无到有的使用Axis2Webserivce框架做示例的过程中,反复阅读了本文上面的三篇文章,关于Webservice应用开发流程如上示,而Axis2提供的强大功能,还需要话更多的时间,精力不断学习和实践,另外要不断理解Webservice的原理,这里主要指Java开发Webservice。
  总结一下:
  1.服务程序对外提供接口,接口方法的实现通过实现类隐藏提供,这样服务端的业务发生改变不用影响到客户端的使用;
  2.服务程序对外接口要描述清晰,功能具体
  3.service.xml配置文件要组织合理,避免配置膨胀
  下面是一个服务组的services.xml文件配置:



MoneyService POJO Service


com.axis.service.MoneyService







这是一个提供文件写入的服务,客户端将本地文件写入远程服务器


com.axis.service.FileTransportImpl






  

  4.Webservice真应了《JavaWebSererSOAP》作者所言,说起来容易,实践起来真心不易。
  初次接触Webservice开发,路还很长。
  PS:希望有Java开发Webservice方面经验的朋友指点帮助。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-638401-1-1.html 上篇帖子: apache + tomcat 下篇帖子: apache之mod_status& mod_info即时监控模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表