MyEclipse10 + Axis2 开发webservice

       最近准备用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/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\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%   
set Output_Path=D:\Axis2Client
set 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值