我试图生成一个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
任何人都知道我做错了什么?我不知所措:(
答案 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);