视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
axis2发布服务(WebService)和生成客户端(Client)
2025-10-03 04:07:13 责编:小OO
文档
一、准备工作

1.下载axis2相关jar包目前最新版本为1.6.2;将axis2-1.6.2-bin.rar,axis2-1.6.2-war.zip一并下载下来,下载地址:http://axis.apache.org/axis2/java/core/download.cgi

2.下载axis2插件:axis2-eclipse-codegen-plugin-1.6.2.zip、axis2-eclipse-service-plugin-1.6.2.zip,下载地址:http://axis.apache.org/axis2/java/core/tools/index.html

3安装Eclipse插件,安装成功如下图:

5.新建Web Project(axis2_Service)

将axis2-1.6.2-bin\\lib下的jar拷贝到axis2_Service\\lib下,打开axis2-1.6.2-war.zip\\axis2\WEB-INF下的conf、modules、services解压到项目(axis2_Service)WebRoot\\WEB-INF下

6.修改web.xml文件,添加如下代码:

7.添加两个类:bean类和服务类

Bean类:

package cn.com.zjl.entity;

import java.io.Serializable;

public class User implements Serializable{

    /**

     * 

     */

    private static final long serialVersionUID = 1L;

    

    private int id;

    private String name;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

要发布的服务类:

package cn.com.zjl.service;

import cn.com.zjl.entity.User;

public class UserService {

    public User getUser(User user) {

        System.out.println("service:"+user.getId());

        System.out.println("service:"+user.getName());

        User po2 = new User();

        po2.setId(1);

        po2.setName("zjl");

        return po2;

    }

}

8.Axis2插件工具生成aar文件,发布WebService

在项目上右击->new->other 

选择Axis2 Service Archiver,点击next

Class File Location选择工程路径下的classes文件,点击Next

勾选Skip WSDL项,点击next

这里没有jar文件,所以默认,点击Next

勾选Generate the service xml automatically项,点击Next

Service Name 随便写记住就行,Class name包名点类名称 点击Load会出现这个类下的所有方法名称,点击Next

Output location选择输出文件位置(具体位置根据具体而定),点击Finsh

说明成功。

刷新项目:

 

项目下多了个UserService.arr文件

9.启动Tomcat,在地址栏输入http://localhost:8080/axis2_service/services/UserService?wsdl回车,

页面是一些xml配置性东西的内容,说明WebService发布成功

10.新建客户端项目(项目名称:axis2_client),调用发布的WebService

11.使用axis2插件生成客户端代码

第一种方式:

选择第一个,Next

选择第一个,Next

将能访问的WebService接口复制进去(也可以是一个后缀名为WSDL的文件名,我们在第二种方式在谈)。点击Next

Codegen option 选择custom,勾选Generate test case(勾选此项,会生成测试类,此类需要junit.jar包)。点击Next

这里我们选择第一个,Output path 选择项目名,点击Finsh

说明生成客户端成功。

刷新项目会多成几个java类文件,我们修改UserServiceTest.java类

在这个类中添加main方法,将testgetUser方法中的代码添加到Main函数里稍作修改:

public static void main(String[] args) throws Exception {

        UserServiceTest test = new UserServiceTest();

        cn.com.zjl.service.UserServiceStub stub = new cn.com.zjl.service.UserServiceStub();// the

        cn.com.zjl.service.GetUser getUser6 = (cn.com.zjl.service.GetUser) test

                .getTestObject(cn.com.zjl.service.GetUser.class);

        User u=new User();

        u.setId(1);

        u.setName("曾塞燕");

        getUser6.setUser(u);

        stub.getUser(getUser6);

    }

运行后控制台打印:

关掉最右边的双xx,就可以看见如下图,调用WebService成功

第二种方式生成客户端调用WebService:

在axis2_service项目上,生成WSDL,

选择第一个,Next

选择第二个,Next

Add Folder项目路径下的classes,填写Fully Qualified Class Name,点击Test Class loading…没有红叉叉,说明成功,Next

默认值,Service Name可以自己喜好改,Next

Output location选择要输出的文件位置 Finsh

说明成功

然后再客户端项目上(axis2_client)生成调用axis2_Service的WebService,跟第一种方式一样,唯一的区别在于如下图:

将路劲改成,前面我们生成的WSDL文件,如下图:

(这个WSDL文件根据你生成所在的位置而定)

测试UserServiceTest类的main方式时,如果报异常,检查一下

UserServiceStub stub=new UserServiceStub();

点击进去构造的WebService是否正确,如果不正确将其改成正确地址,也可以构造UserServiceStub stub=new UserServiceStub(“http://localhost:8080/axis2_service/services/UserService?wsdl”);这样子就不会报错了。

12.可以将客户端生成服务(WebService)

13.在axis2_client新建

选择第一个,Next

选择第一个,Next

选择WSDL文件,或者一个发布的WebService地址,Next

为了客户端和服务代码的区别,将Custom package name 改成sitv

勾选Generate server side code、Generate a default service.xml、Generate an Interface for Skeleton,Next

Finsh

项目多了sitv包和resources文件,将文件resources下的services.xml和UserService.wsdl文件复制到WebRoot/Web-INF/Services/userService/META-INF下(文件目录手动构建)

修改UserService.wsdl文件

将文件内容最后几段如下代码:

Location默认生成出来的地址不对,我们改成我们具体项目发布的地址:

http://localhost:8080/axis2_client/services/UserService

打开services.xml文件,最前的一段内容如下:

我们将这个class改成具体类所在的包下面:sitv.UserServiceMessageReciverInout,

sitv.UserServiceSkeleton

修改web.xml文件,在web.xml文件添加如下代码:

启动tomcat,在地址栏输入:http://localhost:8080/axis2_client/services/UserService?wsdl页面出现,xml形式的发布WebService内容,配置成功,

Axis2_client的WebService和axis2_service发布的WebService一模一样了。区别在于axis2_client根据axis2_service发布的wsdl文件发布服务生成的代码不一样(即sitv下的java类就是服务),效果一模一样。

测试:

修改UserServiceSkeleton.java类里的getUser方法,原来代码如下:

修改后如下:

在UserServiceTest类中如下:

将地址改成:

http://localhost:8080/axis2_client/services/UserService?wsdl

测试如下:

点击最右边的X,如下:

测试成功。下载本文

显示全文
专题