Axis入门教程

Axis入门篇

1.   下载Axis,下载地址http://ws.apache.org/

2.   安装。Jboss中安装为例。

1)   web部署目录下建立axis.war文件夹(名字可以任意取)。

2)   将下载的axis包解压找到webapp目录,将目录中的axis下的文件拷贝至axis.war下,启动JBoss,在浏览器中验证是否安装成功。输入:

http://localhost/axis

3.   开发环境Eclipse3.1,axis包都加到工程类路径中来。建立一个run,在Main Class中输入:org.apache.axis.client.AdminClient,这个是用来部署Web Service的。在arguments中输入-lhttp://localhost/axis/services/AdminService src/deploy.wsdd

第一个例子

package net.wide.axis.service;

 

 

public class Greet {

    private int count = 0;

    public String sayHello(String name){

        return "Hello " + name + " you are the " + (++count);

    }

}

编写wsdd文件,在src文件夹下建立deploy.wsdd文件,内容如下:

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

    <service name="Greet" provider="java:RPC">

       <parameter name="scope" value="application"/>

       <parameter name="className" value="net.wide.axis.service.Greet"/>

       <parameter name="allowedMethods" value="sayHello"/>

    </service>

</deployment>

描述文件对这个service描述的内容有,

1)   服务名

2)   作用域范围,包括:

request:每次请求都是一个新的实例;

session:一个会话中一个实例;

application:全局一个实例。

run完成部署,同时要把class文件拷贝至WEB-INF/classes/目录下。

重起JBoss,测试非常简单直接在浏览器中输入:http://localhost/axis/services/Greet?method=sayHello&name=me

就可以看到返回的结果了,是xml格式的。

在客户端编码测试:

package net.wide.axis.client;

 

 

import java.rmi.RemoteException;

 

 

import javax.xml.namespace.QName;

import javax.xml.rpc.ServiceException;

 

 

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

 

 

public class GreetClient {

    public static void main(String[] args) throws ServiceException, RemoteException {

        String endPoint = "http://localhost/axis/services/Greet?wsdl";

        Service service = new Service();

        Call call = (Call) service.createCall();

        call.setTargetEndpointAddress(endPoint);

        call.setOperationName(new QName("http://Greet","sayHello"));

        String result = (String) call.invoke(new Object[]{"zcy"});

        System.out.println(result);

    }

}

第二个例子:简单对象

对于自定义对象需要序列化

1SimpleObject.java

package net.wide.axis.bean;

 

 

import java.io.Serializable;

 

 

public class SimpleObject implements Serializable {

    private static final long serialVersionUID = -8764373511157843460L;

    private String name;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

SimpleObjectCreator.java

package net.wide.axis.service;

 

 

import net.wide.axis.bean.SimpleObject;

 

 

public class SimpleObjectCreator {

    public SimpleObject createSimpleObject(String name){

        System.out.println("创建SimpleObject...");

        SimpleObject simpleObject = new SimpleObject();

        simpleObject.setName(name);

        return simpleObject;

    }

}

书写描述文件

<service name="SimpleObjectCreator" provider="java:RPC">

       <parameter name="className" value="net.wide.axis.service.SimpleObjectCreator"/>

       <parameter name="allowedMethods" value="createSimpleObject"/>

       <beanMapping xmlns:myNS="urn:Creator" qname="myNS:SimpleObject" languageSpecificType="java:net.wide.axis.bean.SimpleObject"/>

    </service>

测试一样可以直接用浏览器来进行,下面是编码测试:

package net.wide.axis.client;

 

 

import java.rmi.RemoteException;

 

 

import javax.xml.namespace.QName;

import javax.xml.rpc.ServiceException;

 

 

import net.wide.axis.bean.SimpleObject;

 

 

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.ser.BeanDeserializerFactory;

import org.apache.axis.encoding.ser.BeanSerializerFactory;

 

 

public class SimpleObjectCreatorClient {

 

 

    /**

     * @param args

     * @throws ServiceException

     * @throws RemoteException

     */

    public static void main(String[] args) throws ServiceException, RemoteException {

        String endPoint

= "http://localhost/axis/services/SimpleObjectCreator?wsdl";

        Service service = new Service();

        Call call = (Call) service.createCall();

        call.setTargetEndpointAddress(endPoint);

        QName qname = new QName("urn:Creator","SimpleObject");

        call.registerTypeMapping(SimpleObject.class,

qname,

new BeanSerializerFactory(SimpleObject.class, qname),

new BeanDeserializerFactory(SimpleObject.class, qname));

        call.setOperationName("createSimpleObject");

        SimpleObject simpleObject =

(SimpleObject) call.invoke(new Object[]{"Hello"});

        System.out.println(simpleObject.getName());

    }

}

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值