webservice 完整的例子

1、开发webservice 服务器端
  1.1建立一个javabean
 
package com.sinosoft.bean;
    public class User
    {
        private String name;
        private String pwd;
        public String getName()
        {
            return name;
        }
        public void setName(String name)
        {
            this.name = name;
        }
        public String getPwd()
        {
            return pwd;
        }
        public void setPwd(String pwd)
        {
            this.pwd = pwd;
        }
}
这是一个很普通的javabean到时用于webservice参数
 
1.2写webservcie方法
 
package com.sinosoft.webservice;
import com.sinosoft.bean.User;
public class EntityAgres
{
    public User mYUser(User user)
    {
        User u=new User();
        u.setName(user.getName());
        u.setPwd(u.getPwd());
        return u;
    }
}
//这个方法是webserivce 传递的参数和返回的参数都是javabean形式
1.3、些方法是传递的接收的都是普通的参数形式
package com.sinosoft.webservice;
 
public class HelloService
{
            /** *//** 
             * 不带参数的函数 
             * 
             * @return 返回Hello字符串 
             */ 
            public String sayHello()
            { 
                return "Hello"; 
            } 
 
            /** *//** 
             * 带参数的函数 
             * 
             * @param name 
             * 名称 
             * @return 返回加上名称的欢迎词 
             */ 
            public String sayHelloToPerson(String name)
            { 
                if (name == null || name.equals(""))
                { 
                    name = "nobody"; 
                } 
                return "Hello " + name; 
            } 
 
 
}
2、发布webserivce
 2.1、新建一个文件夹在里面新建deploy.wsdd文件和deploywebservice.bat批处理文件,
deploy.wsdd内容如下
 <?xml version="1.0" encoding="UTF-8"?> 
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> 
<service name="HelloServices" provider="java:RPC"> 
    <parameter name="className" value="com.sinosoft.webservice.HelloService"/> 
    <parameter name="allowedMethods" value="*"/> 
</service> 
<service name="HelloServicesEntity" provider="java:RPC"> 
    <parameter name="className" value="com.sinosoft.webservice.EntityAgres"/> 
    <parameter name="allowedMethods" value="*"/> 
    <beanMapping qname="myNS:User" xmlns:myNS="urn:AnalyzUser" languageSpecificType="java:com.sinosoft.bean.User"/>
</service> 
</deployment> 
2.2 deploywebservice.bat 文件内容如下
java -cp axis-ant.jar;axis-schema.jar;axis.jar;commons-discovery-0.2.jar;commons-logging-1.0.4.jar;jaxrpc.jar;log4j-1.2.8.jar;saaj.jar;wsdl4j-1.5.1.jar;xmlsec-1.3.0.jar org.apache.axis.client.AdminClient -lhttp://localhost:8080/ws/services/AdminService deploy.wsdd   pause 
 
3、客户端
package com.sinosoft.test;
 
import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
 
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
 
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 TString {
 
     private static final String HELLO_SERVICE_ENDPOINT = "http://127.0.0.1:8080/ws/services/HelloServices?wsdl"; 
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
        //callSayHello();
        TBean();
 
        // TODO Auto-generated method stub
 
    }
 
 
    public static void callSayHello() { 
                try { 
                    Service service = new Service(); 
                   Call call = (Call) service.createCall(); 
                    call.setTargetEndpointAddress(new java.net.URL( 
                           HELLO_SERVICE_ENDPOINT)); 
                   //下面名字查询的http://121:8080/WebServiceTest/services/HelloServices?wsdl文件里有 
                    call.setOperationName(new QName("http://webservice.sinosoft.com", 
                           "sayHello")); 
                    call.setReturnType(org.apache.axis.Constants.XSD_STRING); 
                    try { 
                        //远程调用发布的方法 
                       String ret = (String) call.invoke(new Object[] {}); 
                        System.out.println("The return value is:" + ret); 
                        return; 
                    } catch (IOException e) { 
                        e.printStackTrace(); 
                    } 
                } catch (MalformedURLException e) { 
                    e.printStackTrace(); 
                } catch (ServiceException e) { 
                    e.printStackTrace(); 
                } 
 
            } 
 
    public static void TBean() { 
        Service service = new Service(); 
         Call call;
        try {
 
 
            call = (Call) service.createCall();
 
            QName qn = new QName("urn:AnalyzUser","User");
 
            call.registerTypeMapping(User.class,qn,
 
                          new BeanSerializerFactory(User.class, qn),
                          new org.apache.axis.encoding.ser.BeanDeserializerFactory(User.class, qn));
 
 
 
            call.setTargetEndpointAddress("http://localhost:8080/ws/services/HelloServicesEntity?wsdl");     
 
                   call.setOperationName(new QName("EntityAgresService","mYUser"));
 
                   call.addParameter("user",qn, ParameterMode.IN);
 
                   call.setReturnClass(User.class);
                   User u=new User();
                   u.setName("11111");
                   u.setPwd("11111");
 
                   User s= (User) call.invoke(new Object[]{u});
                   System.err.print(s.getName());
 
 
 
           }catch(Exception e) {
 
                System.out.println( "Error : " + e.toString());
 
            }       
 
 
        } 
 
 
}
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值