2017-05-09 7 views
0

私がやろうとしていること:ロード時にjmeterエラーが発生する。SaveService.loadProperties();

私は、テストプランを読み込んでそれを実行するJavaサービスをビルドします。私はBashスクリプトとjmeter GUIを使用していません。 javaアプリケーションはクラウド内で実行できるようにサービスとして構築されています。アイデアは、ちょうど直径のトラフィックデータを作成することです。

intellij(ローカル)上でsrcを実行すると、すべて正常に動作します。

アプリを起動するとすべてOKです。

java -jar -Dserver.port=8090 diameter-service-0.0.1-SNAPSHOT.jar 

実行REST要求:私はエラーを取得、次の要求の後

localhost:8090/api/v1/encode 

java.io.FileNotFoundException: file:/Users/myuser/Downloads/diameter-service-0.0.1-SNAPSHOT.jar!/jmeter/bin/saveservice.properties (No such file or directory) 

私がチェックしたものを最初にすることはJMeterのホームでした。コンソール上 システムアウト:

HOME: file:/Users/myuser/Downloads/diameter-service-0.0.1-SNAPSHOT.jar!/jmeter 

ファイルもクラスパスで利用可能とビンの下に位置し、SLOあります。

/src/main/resources/jmeter/bin/saveservice.properties 
/src/main/resources/jmeter/bin/jmeter.properties 
/src/main/resources/jmeter/bin/user.properties 

私はjMeterのホームパスはOKだと思います。それは間違った推定ですか? ウェイjMeterはsaveservice.propertiesをロードできませんか?

これは、jmeterがFILEクラスでファイルを開こうとするためですか? javaはどのようにしてsaveservice.propertiesをロードできますか? jMeter Homeが設定されているので不要ですか? SaveService class sourcesaveservice.propertiesファイルを1として

private static final String jMeterHomePath = "/jmeter"; 
private static final String jMeterPropertiesFile = jMeterHomePath + "/bin/jmeter.properties"; 
... 


File propertiesFile = FileStreamUtil.jMeterPropertiesToTempFile(jMeterPropertiesFile); 
String jMeterPropertiesPath = propertiesFile.getPath(); 

StandardJMeterEngine jMeter = new StandardJMeterEngine(); JMeterUtils.setJMeterHome(Encoder.class.getResource(jMeterHomePath).getPath()); 

JMeterUtils.loadJMeterProperties(jMeterPropertiesPath); 

JMeterUtils.initLogging(); 
JMeterUtils.initLocale(); 

String home = JMeterUtils.getJMeterHome(); 
System.out.println("HOME: "+home); 

SaveService.loadProperties(); 
+0

はあなたのjarファイルを開いて、このリソース持って確認してください: 'JMeterの/ binに/クラスパスディレクトリ内saveservice.properties'またはjarのルートにし – davidxxx

+0

実際には、私はそれを雲に走らせました。 [Last comment](http://stackoverflow.com/questions/43863635/jmeter-error-on-load-saveservice-loadproperties#comment74851362_43867845) –

答えて

0

次のように読まれている:

// some code 

private static final String SAVESERVICE_PROPERTIES_FILE = "/bin/saveservice.properties"; 

// Property name used to define file name 
private static final String SAVESERVICE_PROPERTIES = "saveservice_properties"; // $NON-NLS-1$ 

// some more code 


public static Properties loadProperties() throws IOException{ 
    Properties nameMap = new Properties(); 
    try (FileInputStream fis = new FileInputStream(JMeterUtils.getJMeterHome() 
      + JMeterUtils.getPropDefault(SAVESERVICE_PROPERTIES, SAVESERVICE_PROPERTIES_FILE))){ 
     nameMap.load(fis); 
    } 
    return nameMap; 
} 

だから、あなたがあなたのJMeterホーム、期待通りに動作します。この方法の下でbin/saveservice.propertiesファイルを持っていることを確認する必要があります。

ソリューションにJMeterをパッケージ化する場合は、動作させるにはunpack it somewhereにする必要があります。それ以外の場合は、前述のSaveServiceクラスを修正して、リソースファイルからプロパティを読み取る必要があります。

JMeterテストのプログラム実行の詳細については、いくつかの例を参照してください。Five Ways To Launch a JMeter Test without Using the JMeter GUIを参照してください。

+0

ok、クラウドでは不可能な部分を解凍するには、ファイルサービスがありませんたった今。もう1つのポイントは、Web上でその呼び出しでJavaコードが見つかった場所です。JMeterUtils.loadJMeterProperties(jMeterPropertiesPath);戻り値を使用しないので意味がありません。 –

+0

実際、 'System.setProperty(" saveservice_properties "、"/path/to/saveservice/properties ");のようなカスタム* saveservice.properties *ファイルの場所を指定することはできますが、JMeterのようなストーリーの終わりはありませんいくつかのプロパティファイル、すなわち 'upgrade.properties'が必要です。あなたがプロパティをオーバーライドしても、JMeterが追加のスラッシュを追加するような方法でこのトリックを演奏することはできません。 –

0

ファイルがJar内にある場合、Fileクラスでファイルを開くことはできません。 ファイルurlに感嘆符(!)を処理できません。

それはあなたの問題なら、ここで解決策を確認してください。 Accessing a file inside a .jar file

+0

いいえ、それは私が知っている問題ではありませんクラスパスからファイルを取得する方法。要点は、JMeterがファイルシステム環境で使用するビルドであることです。クラウドでサービスを実行するソリューションを今すぐ入手します。すべての小道具ファイルをコンテナから一時フォルダに移動し、JMeterをこのパスに誘導します。 –

関連する問題