Jmeter - 使用jboss库创建Nonce

时间:2014-02-18 09:11:20

标签: jboss jmeter nonce

我试图生成一个Nonce字符串,以便在我的soap请求中使用。我发现了一些jboss函数并将二进制文件导入/ lib文件夹。

我的代码如下所示:

import org.jboss.ws.extensions.security.nonce.DefaultNonceGenerator;
import org.jboss.util.Base64;

//Generate Nonce security key
DefaultNonceGenerator nonceGen = new DefaultNonceGenerator();
String Nonce = nonceGen.generateNonce();

vars.put("Nonce", Nonce);

但是我在jmeter.log中得到这些错误:

2014/02/18 10:02:37 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method:      eval  Sourced file: inline evaluation of: ``import org.jboss.ws.extensions.security.nonce.DefaultNonceGenerator; import org. . . . '' : Typed variable declaration : Method Invocation nonceGen.generateNonce 
2014/02/18 10:02:37 WARN  - jmeter.modifiers.BeanShellPreProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval    Sourced file: inline evaluation of: ``import org.jboss.ws.extensions.security.nonce.DefaultNonceGenerator; import org. . . . '' : Typed variable declaration : Method Invocation nonceGen.generateNonce 

任何人都知道我做错了什么?我不知所措:(

1 个答案:

答案 0 :(得分:1)


我认为您需要先检查Jmeter运行时(lib / ext)中是否存在所有必需的库和依赖项 然后重新启动并尝试,

如果仍然出现错误,请尝试使用以下代码制作自己的jar文件,

您可以使用this Base64 jar file代替 org.jboss.util.Base64 类,将您的jar文件和Base64 jar放入 bin / ext 文件夹并重新启动Jmeter

import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import org.jboss.util.Base64;

  public class MyDefaultNonceGenerator     
  {
     public String generateNonce()
     {
        try
        {
           SecureRandom pseudoRng;
           pseudoRng = SecureRandom.getInstance("SHAPRNG");
           pseudoRng.setSeed(System.currentTimeMillis());
           byte[] bytes = new byte[];
           pseudoRng.nextBytes(bytes);
           return Base.encodeBytes(bytes);
        }
        catch (NoSuchAlgorithmException e)
        {return "Null";} 
     }

  }

您可以使用以下脚本从 beanshell预处理器访问此jar文件

var nonce= new yourpackage.MyDefaultNonceGenerator().generateNonce() vars.put("nonce",nonce);