使用Servlet为LoadRunner提供全局连续唯一数

原文:

http://hi.baidu.com/higkoo/blog/item/1d4b5d6df8805ce842169451.html

    以前有针对LoadRunner自带的参数唯一数功能进行过说明,由于存在一些问题且灵活性差。

    也有针对使用脚本为LoadRunner提供唯一数的方法说明。

    两种方法各有千秋但都不完美,现需要拿到一批连续的唯一数,中间不要有断点。用上述的第1种方法可以实现,但必须一次执行完成,最大的问题是中途退出后数据会被重复使用。

    本想用PHP来简单实现一个,结果发现PHP不擅长做这事。

    了解了一下,用Java来实现非常容易。起一个Servlet,给一个全局变量加锁即可。Java的这个锁功能在这里是关键,代码示意如下:

 
package org.higkoo.test;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Demo extends HttpServlet{

    private static final long serialVersionUID = 1L;
    public static Object onlyYou = newObject();
    public static int id = 0;

    public void doGet(HttpServletRequestrequest,HttpServletResponseresponse)
            throws ServletException,IOException{
        response.setContentType("text/html ;charset=UTF-8");
        response.setHeader("Cache-Control","no-cache");
        PrintWriterout = response.getWriter();
        out.println(get_id());
        out.close();
    }

    public void doPost(HttpServletRequestrequest,HttpServletResponseresponse)
            throws ServletException,IOException{
        id = Integer.parseInt(request.getParameter("id"));
    }

    public static int get_id() {
        synchronized (onlyYou) {
            return id++;
        }
    }
}

    直接使用get即可获取一个ID,使用POST方法可以对ID赋值。

    在LoadRunner获取这个ID的方法就不用介绍了吧,这事它最擅长不过了

posted on 2011-03-19 23:23  preftest  阅读(651)  评论(0编辑  收藏  举报

导航