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