第一部分 环境搭建

1.  环境搭建

(1)    下载Axis2服务包:axis2-1.6.2-bin.zip,axis2-1.6.2-war.zip,分别解压到D:\webservice_axis2。

(2)下载myeclipse的axis2插件Axis2_Codegen_Wizard_1.3.0 和Axis2_Service_Archiver_1.3.0,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。解压后将axis2插件包下的Axis2_Codegen_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0文件夹拷贝至Myeclipse8.5\dropins 目录下,重启myeclipse生效

2.  编码  参考《http://blog.csdn.net/ge_zhiqiang/article/details/7656112》

(1)新建web工程newWebservice ,引入axis2的lib包

A、将Axis-War包解压后,把WEB-INF/下的conf,modules,services,lib拷贝到工程newWebservice 的WebRoot/WEB-INF/

B、修改web.xml,添加axis2的servlet

<servlet>

<servlet-name>AxisServlet</servlet-name>      <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet>

<servlet-name>AxisAdminServlet</servlet-name>     <servlet-class>org.apache.axis2.webapp.AxisAdminServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>/servlet/AxisServlet</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>*.jws</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AxisAdminServlet</servlet-name>

<url-pattern>/axis2-admin/*</url-pattern>

</servlet-mapping>

(2)创建service,用于发布

HelloWorldService.java

package com.service;

public class HelloWorldService

{

public String sayHi(String helloName)

{

return "hi " + helloName;

}

}

(3).发布service

A、右键工程名newWebservice --NewàOther,选择Axis2 Service Archiver,

B、打包编译文件,指向编译好的service文件位置,一般都是XXX\WebRoot\WEB-INF\classes,选择E:\workspaces_8.5\ newWebservice \WebRoot\WEB-INF\classes目录,记得红色标记处的勾选取消掉

Ps:这里指定位置都是WEB-INF\classes目录,因为第D步填写的service包路径就是相对于此目录的

C、下一步略过wsdl文件选择,下一步选择依赖的的jar文件,没有可不用选择,下一步自动设置service.xml配置文件,

D、下一步,填写需要发布的webservice名称以及对外开放的服务类名称(自定义),服务类名称前面要带包名,(需要手动填写service路径,点击Load)

勾选Search declared method only,可以在下面的列表框中看见我们对外发布的方法名

E、下一步,将arr文件生成在newWebservice工程的WebRoot/WEB-INF/services ,E:\workspaces_8.5\newWebservice\WebRoot\WEB-INF\services;

F、启动tomcat,访问http://localhost:8080/newWebservice/services/HelloWordService?wsdl,得到wsdl文件。

至此发布完成。

第二部分  使用客户端测试webservice

(1)       根据wsdl生成客户端,有两种方式

方式一:使用myeclipse的axis2插件Axis2 Code Generator生成客户端

方式二:使用基本的命令行方式

Ps:本人使用方式一生成的代码不能够编译,提示有问题;因此采用方式二:

(3)方式二:制作《根据wsdl生成java代码.bat》

1.在D:\webservice_axis2中,已有axis2-1.6.2-bin,目标wsdl文件如Axis2Wsdl.wsdl

新建根据wsdl生成java代码.bat,内容如下:

set JAVA_HOME=D:\Program Files\Java\jdk1.6.0_10

set AXIS2_HOME=D:\webservice_axis2\axis2-1.6.2-bin\axis2-1.6.2

set Output_Path=Testclient

set Package=com.webservice.client

set Wsdl_File=D:\webservice_axis2\Axis2Wsdl.wsdl

%AXIS2_HOME%\bin\wsdl2java -uri %Wsdl_File% -p %Package% -s -o %Output_Path%

::一定要设置JAVA_HOME

::其中-url参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。如 http://localhost:8080/axis2/services/SimpleService?wsdl

::-p参数指定了生成的Java类的包名

::-o参数指定了生成的一系列文件保存的根目录

@echo  -------------OK-----------------

@echo ---The code has been created in the folder: Testclient---

@pause

绿色部分都是根据实际设置,执行批处理脚本生成的客户端代码会在Testclient中;

(2)       将Testclient中的src下的文件覆盖到项目Axis2Client的src下;新建测试代码

Test.java

package com.client.test;

import com.webservice.client.MyServiceStub;

import com.webservice.client.MyServiceStub.AddStudent;

import com.webservice.client.MyServiceStub.AddStudentResponse;

import com.webservice.client.MyServiceStub.AddStudents;

import com.webservice.client.MyServiceStub.AddStudentsResponse;

import com.webservice.client.MyServiceStub.GetGreeting;

import com.webservice.client.MyServiceStub.GetGreetingResponse;

import com.webservice.client.MyServiceStub.QueryStudent;

import com.webservice.client.MyServiceStub.QueryStudentResponse;

import com.webservice.client.MyServiceStub.QueryStudents;

import com.webservice.client.MyServiceStub.QueryStudentsResponse;

import com.webservice.client.MyServiceStub.Student;

public class Test

{

public static void main(String[] ss)

{

// 设置远程服务调用地址

String target = "http://localhost:8080/newWebservice/services/HelloWordService";

try

{

// 根据地址构造用户存根

HelloWordServiceStub stub = new HelloWordServiceStub(target);

SayHi sayHi = new SayHi();

sayHi.setHelloName("servyou");

SayHiResponse ggr = stub.sayHi(sayHi);

// 接收方法返回值

String getResult = ggr.get_return();

System.out.println(getResult);

catch (Exception e)

{

e.printStackTrace();

}

}

第三部分 备注信息

备注:发布可以不生成arr文件,好处在于:经常改动代码或者添加安全控制模块如wss4j,因为经常改动 services.xml,所以这种情况最好不打包;否则最好打包发布

方法:

(1)    在/WEB-INF/services新建HelloWorldService(最好命名跟service命名一样,便于识别);

(2)    在HelloWorldService新建META-INF目录,在META-INF中建立services.xml文件

<service name="HelloWordService">

      <description>

           Please Type your service description here

      </description>

      <messageReceivers>

           <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>

           <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

      </messageReceivers>

      <parametername="ServiceClass">com.service.HelloWorldService</parameter>

</service>

至此测试完毕

第四部分 补充

网上的实例基本都是将开发的service打包放到axis2中,但是在实际开发中,则不现实,不可能来回拷贝。而实际项目中存在两种可能性:A、新的web项目 B、已存在的web项目,如有需求:对外提供基于axis2的webservice,那么本实例就是演示这种情情况。

ps:可以将《axis2开发实例(一)》例子合并开发复杂类型

axis2开发实例(二)建立独自的新工程的更多相关文章

  1. NDK 开发实例二(添加 Eigen库)

    上一篇,我已经阐述了如何创建一个简单的NDK实例: NDK 开发实例一(Android.mk环境配置下) 在上一篇的基础上,我们来添加Eigen库,然后做一个简单实例. Eigen是一个高层次的C + ...

  2. axis2开发实例(一)

    主要参考<axis2之webservice新手超详细教程http://wenku.baidu.com/view/6eae036d011ca300a6c390a4.html> <axi ...

  3. Axis2开发实例

    1.下载①axis2-1.7.4-bin.zip.②axis2-1.7.4-war.zip.③axis2-eclipse-service-plugin-1.7.4.zip.④axis2-eclipse ...

  4. Node.js 全栈开发(二)——ES 201x 新语法的使用之基础篇

    在讲 ES 2015 新语法之前,先来说一下为什么叫 ES.JavaScript 是这门语言的名称,它有一个为它制定标准化的组织 European Computer Manufacturers Ass ...

  5. ecmall挂件开发实例二(转)

    下述例子讲述了快速增加挂件的方法,但对系统中的代码未做更改,基本参照image_ad挂件的方法. 第 一步: 了解首页模板结构 首页文 件结构 include hearder.html 包含的头文件, ...

  6. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(二)

    1. 创建一个Controller类 package com.example.demo; import org.springframework.web.bind.annotation.RequestM ...

  7. [转贴]JAVA:RESTLET开发实例(二)使用Component、Application的REST服务

    上一篇文章,我们介绍了基于JAX-RS的REST服务,本篇文章我们介绍不基于JAX-RS的模式.JAX-RS其实就是一个简单的 Application服务.和我们接下来介绍的Application基本 ...

  8. 《MFC游戏开发》笔记二 建立工程、调整窗口

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...

  9. ecshop二次开发 给商品添加自定义字段【包含我自己进一步的开发实例详解】

    本文包含商品自定义添加教程及进一步的开发实例: 教程: 说起自定义字段,我想很多的朋友像我一样会想起一些开源的CMS(比如Dedecms.Phpcms.帝国)等,他们是可以在后台直接添加自定义字段的. ...

随机推荐

  1. MVVM 入门介绍

    转载自:http://www.objccn.io/issue-13-1/ 我于 2011 年在 500px 找到自己的第一份 iOS 开发工作.虽然我已经在大学里做了好几年 iOS 外包开发,但这才是 ...

  2. 10款免费Bootstrap后台模板演示及下载

    自从有了类似Bootstrap这样强大的前端框架之后,无论我们是做静态页面,还是做网站主题,着实方便很多.即便有很多类似的其他国产.海外的前端框架比较,Bootstrap用户量以及功能文档还是比较大的 ...

  3. CDockablePane 关闭的问题

    显示或者隐藏 当点击CDockablePane上的关闭按钮时,并不能将其关闭,知识将其隐藏了起来,如果需要重新显示或隐藏,则相关命令的响应函数如下: if(m_Panes.GetSafeHwnd()) ...

  4. Windows、Linux -- 远程登录、文件传输、文件共享

    Linux  <--->  Linux 远程登录: ssh服务 ssh root@10.20.62.124 文件传输: scp服务 上传  scp /home/xxx.txt root@1 ...

  5. 微软企业库3.1DIY编译使用(数据库连接符写在企业库DLL里)

    1.在winform项目app.config文件中去掉"PublicKeyToken=b03f5f7f11d50a3a"(不然无法加载使用新编译的企业库DLL文件) 2.在企业库所 ...

  6. thinkphp整合系列之rbac的升级版auth权限管理系统demo

    权限管理基本是作为网站的标配了: 除非是像博客这类个人使用的:否则权限管理的重要性不言而喻: 今个就来写写auth权限管理: thinkphp已经内置了auth权限类位于:/ThinkPHP/Libr ...

  7. JS中三目运算符和if else的区别分析与示例

    本文是通过示例详细分析了JS中三目运算符和if else的区别,是篇非常不错的文章,这里推荐给大家.   今天写了一个图片轮播的小demo,用到了判断 先试了一下if else,代码如下: 复制代码代 ...

  8. JavaScript数组函数unshift、shift、pop、push使用实例

    如何声明数组 s中数组的声明可以有几种方式声明 复制代码代码如下: var tmp = [];  // 简写模式var tmp = new Array(); // 直接new一个var tmp = A ...

  9. scp命令报错-bash: scp: command not found

    # scp -bash: scp: command not found # which scp /usr/bin/scp # rpm -qf /usr/bin/scp openssh-clients- ...

  10. Tomcat的class加载的优先顺序

    Tomcat的class加载的优先顺序一览 1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件. 2.环境变量CLASSPATH中的jar和class文件. 3.$CATALINA ...