日期:2014-05-17  浏览次数:20736 次

axis2 客户端不能调用wsdl2java 生成的类
axis2的知友们,我遇到了这个问题,希望的到解决:
首先我写了一个简单的服务端的java类,只是一个普通的java类,代码如下:
package com.webservice.server;

import java.util.Random;


public class WebServiceServer {

public String sayHello(String name){
return name + "COME ON!!";
}

public int getAge(){
return new Random().nextInt(30);
}


}

,然后通过axis2的eclipse插件生成了services.wsdl文件,进而我想通过这个wsdl文件自动生成stub类,把生成的类还是放到了当前工程中,工程目录结构如下,黄色部分是我最原始写的服务端的java类:

生成的WebServiceServerStub.java类中有错误,因为程序的开头代码是这样写的:
 public class WebServiceServerStub extends org.apache.axis2.client.Stub
        implements WebServiceServer{

它把WebServiceServer这个类当成了一个接口,可是我最原始定义的服务端代码只是一个普通的java类啊!所以这个地方我不太明白为什么!
接下来的问题就是我要编写客户端的代码了,想应用这个自动生成的类进行编写,看到网上的一些写法是:

WebServiceServerStub wsss = new WebServiceServerStub();//----1
WebServiceServerStub.SayHello sh = WebServiceServerStub.SayHello();//-----2
sh.setName("小明"); 
System.out.println(wsss.sayHello().get_return());

这样应该在控制台输出:小明COME ON!!
可是2处就不能这样写,WebServiceServerStub.之后根本就找不到这个SayHello类(把原来的sayHello方法自动生成的一个类),所以请帮忙解决一下!自学习中!恳请帮忙,()

------解决方案--------------------
LZ,你试试把sayhello那个类放在你发布的包的class类下面看看行不行

顺便说下.LZ试试用MAVEN来打包AXIS2看看,AAR包就不用自己生成了,直接MVAEN自己生成的WAR包可以直接访问,\