2016-04-21 18 views
1

これはUsing a JMeter JDBC connection in Java codeのフォローアップです。 DataSourceElementクラスのgetPassword()やgetUsernameなどのメソッドを使用するにはどうすればよいですか?私はJDBC接続構成の設定からユーザー名とパスワードを取得して変更したいと思っています。JMeterを操作するJava/beanshellコードのJDBC接続フィールド

私はそのポストで同じコードを使用していますが、beanshellサンプラー(最終的にはプリプロセッサー要素で使用されます)にあります。問題は、DataSourceElementオブジェクトが必要であり、Connectionオブジェクトのみを定義しているということです。それは私が立ち往生している場所です。

マイコード:

ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import java.sql.Connection; import org.apache.jmeter.protocol.jdbc.config.DataSo . . . '' : Typed variable declaration : Error in method invocation: Method getPassword() not found in class'com.sun.proxy.$Proxy0' 

とコンソール出力接続オブジェクトを返し、エラーで停止:

beanshell script beginning 
[email protected] 

答えて

1

それを、これは返すjmeter.log

import java.sql.Connection; 
import org.apache.jmeter.protocol.jdbc.config.DataSourceElement; 
print("\nbeanshell script beginning"); 

try { 
     Connection con = DataSourceElement.getConnection("jdbcconfig"); 
     print(con); 
     String conpasswd = con.getPassword(); 
     print(conpasswd); 
     if(con!=null) 
     con.close(); 
} 

catch (Throwable ex) { 
    log.error("Something went wrong: ", ex); 
} 

print("the end"); 

いくつかの接続情報をDatabaseMetaDataクラスを使用して取得することが可能です:

import java.sql.Connection; 
import org.apache.jmeter.protocol.jdbc.config.DataSourceElement; 
import java.sql.DatabaseMetaData; 

Connection con = DataSourceElement.getConnection("jdbcconfig"); 
DatabaseMetaData meta = con.getMetaData(); 
String conusername = meta.getUserName(); 
print(conusername); 

しかし、私はあなたが能力が巨大なセキュリティリスクを引き起こすとパスワードをこのように取得することができます思いません

ところで、あなたは次のようにtry/catchブロックにあなたのBeanShellのコードを囲むことにより、jmeter.logファイルに、より親しみやすい例外メッセージを取得することができます:JMeterの使用方法の詳細については、

try { 
    //your code here 
} 
catch (Throwable ex) { 
    log.error("Something wrong", ex); 
    throw ex; 
} 

を参照してくださいHow to Use BeanShell: JMeter's Favorite Built-in ComponentとBeanshellテスト要素のJava API