实例6:LOG文件服务

LogHandler
1. LoginImpl.java
package cn.com.mytest.server;

import java.util.List;
import java.util.Arrays;

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 {
    public static void main(String[] args){
        LoginImpl impl = new LoginImpl();
        Tblogin[] list = impl.list();
        System.out.println(list.length);
    }
    private static final Log log = LogFactory.getLog(LoginImpl.class);
    LoginDaoImpl dao = new LoginDaoImpl();
    public String[] listCodes(){
        List list = dao.list();
        if(list!=null){
            String[] codes = new String[list.size()];
           
            for(int i=0;i<list.size();i++){
                Tblogin login = (Tblogin) list.get(i);
                log.info("the login result: number " + i + ", loginname=" + login.getLogincode().trim().toUpperCase());
                codes[i] = login.getLogincode().trim().toUpperCase();
            }
            return codes;
        }else{
            log.info("there is no rows in the table Tblogin");
            return null;
        }
    }
    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;
       
    }
   
    public Object get(Integer loginid){
        if(loginid==null || loginid.intValue()==0) return null;
        return dao.get(loginid);
    }
    public Integer count(){
        Integer count = new Integer(0);
        List list = dao.list();
        if(list!=null) count = new Integer(list.size());
        log.info("the count of Tblogin is: " + count.intValue());
        return count;
    }

}
2. LogHandlerService.java
package cn.com.mytest.server;

import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Hashtable;

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

import org.apache.axis.AxisFault;
import org.apache.axis.Handler;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;

public class LogHandlerService extends BasicHandler {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO 自动生成方法存根

    }
   
    private static Log log = LogFactory.getLog(LogHandlerService.class);
   
    public void invoke(MessageContext msgContext) throws AxisFault {
        //每当web服务被调用,都记录到log中。
        try {
            Handler handler = msgContext.getService();
           
            Hashtable hTable = getOptions();
            log.info("getOptions() results: " + hTable);
           
            String filename = (String)getOption("filename");
            if ((filename == null) || (filename.equals("")))
                throw new AxisFault("Server.NoLogFile",
                    "No log file configured for the LogHandler!",
                    null, null);
            FileOutputStream fos = new FileOutputStream(filename, true);           
            PrintWriter writer = new PrintWriter(fos);           
            Integer counter = (Integer)handler.getOption("accesses");
            if (counter == null)
                counter = new Integer(0);

            counter = new Integer(counter.intValue() + 1);           
            Date date = new Date();
            msgContext.getMessage().writeTo(System.out);
          
            String result = "在" + date + ": Web 服务 " +
                msgContext.getTargetService() +
                " 被调用,现在已经共调用了 " + counter + " 次.";
            handler.setOption("accesses", counter);           
            writer.println(result);           
            writer.close();
        } catch (Exception e) {
            throw AxisFault.makeFault(e);
        }
    }

}
3. deployee.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="allowedMethods" value="*"/>
        <parameter name="className" value="cn.com.mytest.server.LoginImpl"/>
        <requestFlow>
            <handler name="logging" type="java:cn.com.mytest.server.LogHandlerService">
                <parameter name="filename" value="MyService.log"/>
            </handler>
        </requestFlow>
       
        <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/"/>
   
        <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>
4. TestClient.java
package cn.com.mytest.client;

import java.util.List;
import java.io.File;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

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

import cn.com.mytest.dao.hibernate.Tblogin;
import cn.com.mytest.server.*;

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、付费专栏及课程。

余额充值