2014-02-18 47 views
0

即時嘗試生成一個隨機數字符串用於我的soap請求。我發現了一些jboss函數並將二進制文件導入到/ lib文件夾。Jmeter - 使用jboss庫創建隨機數

我的代碼如下所示:

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


我想你需要先檢查所有需要的庫和依賴關係中存在的JMeter運行庫(lib/ext目錄)。
然後重啓試試,

如果你仍然得到錯誤,請嘗試使用下面的代碼,以使自己的jar文件,

而不是org.jboss.util.Base64類,你可以使用this Base64 jar file,把你的jar文件,並在Base64 jar/EXT文件夾,重新啓動Jmet呃

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";} 
    } 

    } 

可以使用從訪問這個jar文件BeanShell的預處理器下面的腳本

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



+0

請參閱[此鏈接] (HTTP:// IHAR der.sourceforge.net/current/java/base64/)獲取更多信息 –

+0

謝謝,結果發現jmeter allready內置了一個名爲commons-codec-1.8.jar的庫,其中包含一個用於Base64的編碼器功能。所以我解決了它使用: String Nonce = new String(Base64.encodeBase64(DateSeedString.getBytes(「US-ASCII」))); vars.put(「Nonce」,Nonce); – Demoric