Постпроцессор JSR223: исключение ClassNotFoundException: org.apache.bsf.engines.java.JavaEngine

#jmeter

#jmeter

Вопрос:

Я пытаюсь использовать постпроцессор JSR223 в jmeter 2.11 с некоторым кодом Java, и я продолжаю получать эту ошибку:

 org.apache.bsf.BSFManager:Exception:java.lang.ClassNotFoundException:org.apache.bsf.engines.java.JavaEngine
  

Я проверил файлы jar bsf / bsh, не уверен, что еще мне нужно сделать, чтобы это сработало. Я читал, что рекомендуется использовать groovy, но мне бы очень хотелось, чтобы это работало с java.

Ответ №1:

Согласно самым первым строкам из документации BSF Sampler:

Подробную информацию о поддерживаемых языках см. На веб-сайте Apache Bean Scripting Framework. Возможно, вам потребуется загрузить соответствующие jar для языка; они должны быть помещены в каталог JMeter lib.

И в том же месте:

API BSF был в значительной степени заменен JSR-223, который включен в Java 1.6 и далее. Большинство языков сценариев теперь поддерживают JSR-223; пожалуйста, используйте вместо этого сэмплер JSR223. Пробоотборник BSF должен быть необходим только для поддержки устаревших языков / тестовых сценариев.

Поэтому я бы рекомендовал рассмотреть следующее (в порядке от наихудшей до наилучшей производительности)

  1. Семплер Beanshell (если ваш Java-код делает что-то «легкое»)
  2. JSR223 Sampler groovy language — для «тяжелых» операций (опять же, вам понадобится groovy jar в вашем пути к классу JMeter)
  3. Напишите свою собственную реализацию Java-сэмплера запросов

Как Beanshell, так и Groovy поддерживают синтаксис Java с некоторыми ограничениями, которые можно легко обойти.

Смотрите Сценарий Beanshell против JSR223 против Java JMeter: снижение производительности, которого вы так долго ждали!руководство, которое может помочь вам сделать правильный выбор.