MyEclipse10 + Axis2 开发webservice

来源:互联网 发布:ubuntu怎么识别u盘 编辑:程序博客网 时间:2024/06/05 17:05

       最近准备用Axis2做WebService的开发,期间也碰到一些坑爹的问题,在MyEclipse10下安装最新的Axis2插件,不知道是不是人品问题还是插件的兼容性不太给力都没有成功,只能使用低版本的Axis2。

       新版的Axis2插件下载地址:http://axis.apache.org/axis2/java/core/tools/index.html

一、MyEclipse  下Axis2插件的下载和安装:

       (1)下载地址MyEclipse Axis2插件

         http://archive.apache.org/dist/ws/axis2/tools/1_4_1/ 

   下载 axis2-eclipse-codegen-wizard.zip 和axis2-eclipse-service-archiver-wizard.zip

         http://archive.apache.org/dist/ws/axis2/1_5_1/
         下载axis2-1.5.1-war.zip 和  axis2-1.5.1-bin.zip        (2)解压插件 ($ECLIPSE_HOME表示你安装的myeclipse主目录)                    将上面的插件解压,将axis2-1.5.1-war下的axis2.war文件复制到tomcat\webapps 目录下,                         启动tomcat输入http://localhost:8080/axis2 打开axis2主界面,如果能打开,说明安装成功;                             (3)将axis2-eclipse-codegen-wizard.zip和axis2-eclipse-service-archiver-wizard.zip的解压文件复制到$ECLIPSE_HOME\MyEclipse 10\dropins目录中,重启MyEclipse,在file>new>other中可以看到Axis2 Wizards,至此,Axis2插件安装成功。                    (4)试一下用wsdl文件生成java源文件,会出现错误,           An error occurred while completingprocess-java.lang.reflect.InvocationTargetException的错误。           解决方法如下:           Setp1:从Axis2的lib库中复制"geronimo-stax-api_1.0_spec-1.0.1.jar"和"backport-util-concurrent-3.1.jar"(如果没有找到可以自己去下载这两个jar包)文件到Axis2_Codegen_Wizard_1.3.0的lib目录中,同时修改Axis2_Codegen_Wizard_1.3.0下的plugin.xml文件,在<runtime>中添加 <library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">
         <export name="*"/>
 </library>
 <library name="lib/backport-util-concurrent-3.1.jar">
        <export name="*"/>
 </library>  
到plugin.xml文件中,并将将version="1.3.0"改为version="1.4.0"保存!
           Step2:Axis2_Codegen_Wizard_1.3.0改为Axis2_Codegen_Wizard_1.4.0
                     重启Myeclipse重新使用wsdl生成java源文件可以成功生成java文件,插件安装成功!

二、Axis2 Webservice 简单例子:

                1、New 一个Web Project项目Axis2Service,创建User.java         
<span style="font-size:18px;font-style: normal;">public class User implements Serializable{private static final long serialVersionUID = -8428746819403017248L;private int id;private String name;private int age;    //生成getter、setter方法省略}</span>
       2、创建service,用于发布  UserService.java           
<span style="font-size:18px;font-style: normal;">public class UserService {public String getGreetin(String name){return "Welcome:"+ name;}public String addUser(User user){if(null != user){return "你好"+ user.getName();}return "user is null";}public User queryUser(){User user = new User();user.setId(1000120);user.setName("李亦非");user.setAge(27);return user;}public String addUsers(User[] users){    if(null != users){    return "Welcome:" + Arrays.toString(users);    }    return "users is null";}public User[] queryUsers(){User[] users = new User[2];User user1 = new User();user1.setId(1000120);user1.setName("zhang fei");user1.setAge(1000);User user2 = new User();user2.setId(1000121);user2.setName("zhao yun");user2.setAge(995);users[0]=user1;users[1] = user2;return users;}}</span>
            3、发布service            (1)右键工程名称Axis2Service->New->Other,选择Axis2 Service Archiver,                         (2)打包编译文件,指向编译好的service文件位置,一般都是XXX\WebRoot\WEB-INF\classes,                                  next->选中skip WSDL,Next->什么都不填NEXT->选中Generate the service xml automatically,NEXT->          
           如下图填写UserService类的全路径,点击load,在下面的Method表中出现方法说明load成功,点击NEXT,
          填写Output file location,点击Finish,如下图。                 (3)右键点击Axis2Service项目,刷新,出现UserService.aar文件,如下图:         把UserService.aar文件放到%tomcat_home%webapps\axis2\WEB-INF\services下。
浏览器输入http://localhost:8080/axis2/services/UserService?wsdl 出现如下图,说明发布成功。                               4、用MyEclipse的Web Service Client生成客户端调用代码       (1) New 一个Web Project 项目Axis2Client, 在项目中右键new -> other -> Web Service Client,选中,          点击NEXT -> 出现如图:         
  点击Next ,
         
填写WSDL file location ,如上图,点击Next ,          直接默认,点击Next,          选择Output path,一般直接选择客户端项目,点击Finish,然后Refresh刷新Axis2Client项目生成如下图文件说明成功           在Axis2Client项目的lib下添加Axis2客户端的依赖包,如下图                   新建一个测试类,           
package com.test;import com.axis2.service.UserServiceStub;import com.axis2.service.UserServiceStub.GetGreetin;import com.axis2.service.UserServiceStub.GetGreetinResponse;public class TestUserSerivce {public static void main(String[] args) throws Exception {UserServiceStub stub = new UserServiceStub();UserServiceStub.GetGreetin getGreeting = new GetGreetin();getGreeting.setName("zhaoyun");GetGreetinResponse gRes = stub.getGreetin(getGreeting);//接收方法返回值String getResult = gRes.get_return();System.out.println(getResult);}}
运行程序,输出  Welcome:zhaoyun 则成功!
           

 三、生成客户端java文件的其他方式:

        (1)、进入cmd命令窗口,切换到Axis2-1.5.1\bin 目录下,输入          wsdl2java -uri http://localhost:8080/axis2/services/UserService?wsdl -p com.axis2.client                     确定,在Axis2-1.5.1\bin 目录下会生成相应的代码。                            (2)、编写bat生成客户端代码           
set Axis_Lib=E:\myworkspace10\Axis2Client\WebRoot\WEB-INF\libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%   set Output_Path=D:\Axis2Clientset Package=com.axis2.client%Java_Cmd% org.apache.axis2.wsdl.WSDL2Java -o %Output_Path% -p %Package% -uri http://localhost:8080/axis2/services/UserService?wsdl  pause
           其中  E:\myworkspace10\Axis2Client\WebRoot\WEB-INF\lib 是新建的客户端项目下的jar包目录,D:\Axis2Client 是指向生成代码的文件目录,com.axis2.client 是指向代码生成目录的包名
             
 

          运行编写好的批处理文件(buildWebserviceClient.bat),会在指定的目录下生成java文件。                  


























 

0 0
原创粉丝点击