2017-12-22 2 views
0

Aber während ich das gleiche mache, bekomme ich "Sicherheitsrahmen von XStream nicht initialisiert, XStream ist wahrscheinlich anfällig." Unten ist der Code-SchnipselAufruf von JMETER durch Java-Code und Ausführen der JMX-Testdatei verursacht Xstream-Sicherheitsausnahme

package com.jmeter.runner; 

import java.io.FileInputStream; 

import org.apache.jmeter.engine.StandardJMeterEngine; 
import org.apache.jmeter.save.SaveService; 
import org.apache.jmeter.util.JMeterUtils; 
import org.apache.jorphan.collections.HashTree; 

import com.thoughtworks.xstream.XStream; 

public class JMeterFromExistingJMX { 

    public static void main(String[] argv) throws Exception { 


     Class<?>[] classes = new Class[] { JMeterFromExistingJMX.class }; 
     XStream xStream = new XStream(); 
     XStream.setupDefaultSecurity(xStream); 
     xStream.allowTypes(classes); 



      // JMeter Engine 
      StandardJMeterEngine jmeter = new StandardJMeterEngine(); 


      // Initialize Properties, logging, locale, etc. 
      JMeterUtils.loadJMeterProperties("F:/Required_Setup_Softwares/apache-jmeter-3.3/bin/jmeter.properties"); 
      JMeterUtils.setJMeterHome("F:/Required_Setup_Softwares/apache-jmeter-3.3"); 
      JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level 
      JMeterUtils.initLocale(); 

      // Initialize JMeter SaveService 
      SaveService.loadProperties(); 

      // Load existing .jmx Test Plan 
      FileInputStream in = new FileInputStream("F:/Required_Setup_Softwares/apache-jmeter-3.3/bin/test.jmx"); 
      HashTree testPlanTree = SaveService.loadTree(in); 
      in.close(); 

      // Run JMeter Test 
      jmeter.configure(testPlanTree); 
      jmeter.run(); 
     } 


} 

Während des Laufens I wie unten

Security framework of XStream not initialized, XStream is probably vulnerable. 
Exception in thread "main" java.lang.NullPointerException 
    at org.apache.jmeter.engine.StandardJMeterEngine.configure(StandardJMeterEngine.java:176) 
    at com.jmeter.runner.JMeterFromExistingJMX.main(JMeterFromExistingJMX.java:46) 

jmeter.configure (testPlanTree) die Xstream Sicherheits Störung erhalten; Diese Zeile verursacht das Problem, da sie intern Xstream verwendet. So versuchte ich unten Code zu überwinden, aber es funktioniert nicht.

Class<?>[] classes = new Class[] { JMeterFromExistingJMX.class }; 
     XStream xStream = new XStream(); 
     XStream.setupDefaultSecurity(xStream); 
     xStream.allowTypes(classes); 

Bitte helfen Sie mir mit dem gleichen. Ich habe versucht, auch den Code unten, aber seine nicht zu arbeiten

XStream xstream = new XStream(); 
// clear out existing permissions and set own ones 
xstream.addPermission(NoTypePermission.NONE); 
// allow some basics 
xstream.addPermission(NullPermission.NULL); 
xstream.addPermission(PrimitiveTypePermission.PRIMITIVES); 
xstream.allowTypeHierarchy(Collection.class); 
// allow any type from the same package 
xstream.allowTypesByWildcard(new String[] { 
    "com.your.package.**" 
}); 

Antwort

0

Ich kann das Problem nicht reproduzieren, aber der Code ein wenig flockig aussieht:

  • in F:/Required_Setup_Softwares/apache-jmeter-3.3 Blick scheint es, Sie verwenden JMeter 3.3
  • Blick in SaveService.loadTree() Funktion gemäß JMeter 3.3 es File erfordert, nicht die Fileinputstream

so würde ich empfehlen die folgenden Schritte zur Fehlerbehebung:

  1. Stellen Sie sicher, JMeter 3.3 libraries in Ihrem Projektabhängigkeiten haben
  2. Achten Sie darauf, den Code unten entfernen:

    // Load existing .jmx Test Plan 
    FileInputStream in = new FileInputStream("F:/Required_Setup_Softwares/apache-jmeter-3.3/bin/test.jmx"); 
    HashTree testPlanTree = SaveService.loadTree(in); 
    in.close(); 
    

    und ersetzen Sie es mit der folgenden Zeile:

    HashTree testPlanTree = SaveService.loadTree(new File("F:/Required_Setup_Softwares/apache-jmeter-3.3/bin/test.jmx")); 
    
  3. Führen Sie einen sauberen Build Ihres Projekts durch - das i ssue sollte weggehen.

+0

Vielen Dank, es hat für mich funktioniert. –

Verwandte Themen