2014-01-30 5 views
0

JMeter 샘플러에서 이진 데이터 응답을 읽고 BeanShlll 포스트 프로세서에서 비 직렬화하려고합니다.JMeter 샘플러에서 이진 데이터 읽기

흐름은 컨트롤러가 먼저 이진 데이터를 반환하는 웹 서비스에 요청을 보냅니다. 내가 JMeter에서 볼 때, 약간의 쓰레기 문자가 보입니다.

BeanShell 스크립트의 실제 개체 (내 사용자 지정 개체)로 변환해야합니다.

이것은 내가 시도한 것입니다. 그러나 운이 없다. 아니면 뭔가 바보 같은 짓을하고있을 수도 있습니다. 추 신 : 추첨 물건을 가진 새내기.

import java.io.ObjectOutputStream; 
import com.package.MyClass; 

MyClass myObj = new MyClass(); 
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data)); 

myObj = ois.readObject(); 

작동하지 않습니다. 아무것도 표시하지 않습니다. 도움이 되었습니까?

답변

0

해당 이진 데이터에 readObject 메서드가 제대로 작동합니까? 예를 들어 StreamCorruptedException이 발생하지 않고 포스트 프로세서가 작동을 멈추게됩니다. BeanShell 가이드 사용하는 방법으로 당

으로 Beanshell이 ​​코뿔소 엔진 내에서 실행되기 때문에 같은 뭔가를 jmeter.log 파일을 검사에서 떨어져 무엇이 잘못되었는지 볼 수있는 다른 옵션이 없습니다 : BSH 메소드를 호출 오류 및 사용이 System.out.println ("something") 또는 log.info ("something")를 사용하여 스크립트가 실패한 위치의 맨 아래로 이동하십시오.

포스트 프로세서가 성공했는지 여부를 확인할 방법이 없다면 로그를 살펴보고 끝에 디버그 출력 문을 추가해야합니다. 유용 할 수 있습니다

또 다른 기술을 사용하는 방법에 대한 아래의 예를 참조하십시오 try/catch

와 코드를 둘러싼입니다. "다 괜찮 았으면"포스트 프로세서는 Successfully read data into myObj을 STDOUT에 인쇄합니다. 반대의 경우에는 관련 오류 스택 추적이 표시됩니다.

import java.io.ByteArrayInputStream; 
    import java.io.ObjectInputStream; 
    try { 
     ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data)); 
     Object myObj = ois.readObject(); 
     ois.close(); 
     System.out.println("Successfully read data into myObj"); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

희망이 도움이됩니다.

+0

필자도 비슷한 목적으로 readObjext를 사용했으며 작동합니다. 이 경우가 아닙니다. 감사합니다 –

+0

jmeter.log에 뭐라고 쓰여 있습니까? beanshell 관련 오류가 있습니까? 코드가 try/catch 블록으로 래핑되었을 때 stdout에 예외가 있습니까? JMeter classpath에'MyClass' jar가 있습니까? –

+0

아무 것도 표시되지 않습니다. try/catch로조차. 지금은 파일에 응답을 저장하고 그 파일을 InputStream으로 읽는다. 그것은 작동합니다. –