原文:
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++;
}
}
}
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的方法就不用介绍了吧,这事它最擅长不过了