实例4:返回对象数组

Example4 (List all Tblogins, return Tblogin[]).
 1. mysql: database(spring), testing table(spring) (same as Example1)
2. axisclasspath: ...... D:/mydemos/axis_text/src (same as Example1)
3. java codes for server: (D:/mydemos/axis_text/src/)
a) hibernate.cfg.xml (same as Example1)
b) Tblogin.hbm.xml (same as Example1)
c). LoginDaoImpl.java (should be put in the directory as: %webapp%/web-inf/classes/....)
package cn.com.mytest.dao;

import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;

import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.Query;

import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;

import cn.com.mytest.dao.hibernate.config.SessionFactoryClass;

public class LoginDaoImpl {
    private static final Log log = LogFactory.getLog(LoginDaoImpl.class);
    public void add(Serializable object){....(same as Example1)}
    public List list(){....(same as Example1)}
    public Object get(Integer loginid){ ... (same as example2)...  }
}
4) LoginImpl.java (should be put in the directory of server side as: %webapp%/web-inf/classes/....)
package cn.com.mytest.server;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import cn.com.mytest.dao.hibernate.Tblogin;
import cn.com.mytest.dao.LoginDaoImpl;

public class LoginImpl {
    private static final Log log = LogFactory.getLog(LoginImpl.class);
    LoginDaoImpl dao = new LoginDaoImpl();
    public List list(){... same as Example1...}
   public String[] listCodes(){
            .... (same as Example3).....
    }
    public Tblogin[] list(){
        List list = dao.list();
        if(list!=null){
            Tblogin[] logins = new Tblogin[list.size()];
            for(int i=0;i<list.size();i++){
                Tblogin login = (Tblogin) list.get(i);
                logins[i] = login;
            }
            return logins;
        }
        return null;
       
    }

}
4. wsdd file: deploy.wsdd (cn/com/mytest/server/deploy.wsdd)
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

 <service name="LoginService" provider="java:RPC">
  <parameter name="className" value="cn.com.mytest.server.LoginImpl"/>
  <parameter name="allowedMethods" value="*"/>
  <typeMapping qname="ns:Tblogin" xmlns:ns="urn:LoginImpl"
     languageSpecificType="java:cn.com.mytest.dao.hibernate.Tblogin"
    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
    deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    <!-- 这种方法也可以!!
    <typeMapping qname="ns:ArrayOfTblogin" xmlns:ns="urn:LoginImpl"
     languageSpecificType="java:cn.com.mytest.dao.hibernate.Tblogin[]"
    serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
    deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    -->

    <arrayMapping qname="ns:ArrayOfTblogin" xmlns:ns="urn:LoginImpl"
languageSpecificType="java:cn.com.mytest.dao.hibernate.Tblogin[]"
serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
innerType="ns:Tblogin" xmlns:ns2="urn:LoginImpl"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
 </service>

</deployment>
wsdd file: undeploy.wsdd(cn/com/mytest/server/undeploy.wsdd) (same as Example10
5) Testing from client:
package cn.com.mytest.client;

import java.util.List;
import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class TestClient {
    public static void main(String [] args)
    {
        try {
            String endpointURL = "http://localhost:8080/axis/services/LoginService";
           
            Service  service = new Service();
            Call     call    = (Call) service.createCall();
           
            QName     qn1 = new QName("urn:LoginImpl","Tblogin");
            QName    qn      = new QName( "urn:LoginImpl", "ArrayOfTblogin" );

            call.registerTypeMapping(Tblogin.class, qn1,
                          new org.apache.axis.encoding.ser.BeanSerializerFactory(Tblogin.class, qn1),       
                          new org.apache.axis.encoding.ser.BeanDeserializerFactory(Tblogin.class, qn1));
           
            call.registerTypeMapping(Tblogin[].class, qn,
                    new org.apache.axis.encoding.ser.ArraySerializerFactory(),
                    new org.apache.axis.encoding.ser.ArrayDeserializerFactory());

            call.setTargetEndpointAddress( new java.net.URL(endpointURL) );
            call.setOperationName( new QName("http://server.mytest.com.cn", "list") );
            call.setReturnType(XMLType.SOAP_ARRAY);
            Tblogin[] logins = (Tblogin[]) call.invoke(new Object[]{});
            if(logins!=null){
                for(int i=0;i<logins.length;i++){
                    Tblogin login = logins[i];
                    System.out.println("....... login code........" + login.getLogincode());
                }
            }
            else System.out.println("null");
           
        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值