Я оцениваю Apache CXF для проекта, поэтому я написал небольшое демонстрационное приложение, чтобы попробовать несколько вещей. Следуя руководству пользователя CXF, я смог довольно быстро настроить и запустить свое приложение.
Одна вещь, которую я хотел проверить, заключалась в том, насколько хорошо CXF может обрабатывать метод, возвращающий большой массив примитивов. Поэтому я определил метод «float[] getRandFloats(int count)
», который просто возвращает массив указанной длины, заполненный случайными числами. Глядя на WSDL, сгенерированный java2wsdl
, я вижу, что метод правильно указывает возвращаемый тип float[]
. Проверяя клиентскую сторону, я также вижу, что (в конечном итоге) получаю float[]
.
Я заметил, что по мере увеличения количества элементов в моем массиве производительность клиента снижается. Я запустил профилировщик на стороне клиента и увидел, что для каждого элемента в возвращаемом массиве создается Float
объектов. Кажется, это происходит, когда CXF вызывает JAXB во время разбора ответа.
Я оцениваю CXF для использования с приложением, которое потенциально отправляет обратно миллионы чисел с плавающей запятой, поэтому создание этого объекта крайне нежелательно. Чтобы использовать CXF, мне нужно найти способ предотвратить создание этого объекта. Я просмотрел документацию и список рассылки, но не нашел способа обойти это.
Кто-нибудь сталкивался с подобной проблемой при использовании CXF? Если да, то как вы обошли это?