Axis入门教程

<script type="text/javascript"></script> <script class="blogstory"></script>

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());

 

 

 

    }

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://blog.csdn.net/UPCCPU/archive/2006/01/07/572791.aspx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值