Как разрешить WSDL2Java создание статического блока размером более 64 КБ?
-
05-09-2019 - |
Вопрос
В настоящее время мы работаем с предоставляемой поставщиком схемой WSDL, которая является очень большой.Стиль привязки - RPC.Насколько я знаю, Axis 1.x - единственный инструмент Java, поддерживающий определения RPC WSDL.Пожалуйста, поправьте меня, если я ошибаюсь на этот счет.
WSDL2Java генерирует сервис-названиеSkeleton.java файл, размер которого составляет блок статической инициализации 1,3 Мб - значительно больше, чем ограничение Java в 64 КБ.
Учитывая, что мы не можем изменить определение интерфейса, как вы думаете, что нам следует предпринять?
Наши варианты, как я их вижу, таковы:
- Разбейте сгенерированный статический блок
- Разбейте WSDL (не уверен, возможно ли это без изменения интерфейса)
- Исправьте код Axis WSDL2Java
Есть еще какие-нибудь идеи?
Решение
Видишь это Статья, который дает некоторые инструкции о том, как вы можете преобразовать RPC WSDL в документный.Я рекомендую попробовать это в первую очередь.
Кроме того, у вас, вероятно, есть RPC / encoded WSDL (который, кстати, не соответствует WS-I).JAXWS поддерживает только RPC / literal.Таким образом, любой фреймворк (например, CXF или Axis2) будет поддерживать это.Итак, вы также можете попробовать преобразовать WSDL в RPC / literal.
CXF имеет инструмент это могло бы сделать эту работу за вас.
В любом случае, я рекомендую попробовать преобразовать WSDL в более свежую форму.Это облегчит вашу жизнь, как для серверной, так и для клиентской реализаций.Я не верю, что с Axis1 стоит бороться за это.Даже ручное написание и синтаксический анализ SOAP-сообщений могли бы быть проще.
Другие советы
Если ваш wsdl, вероятно, будет часто меняться, возможно, стоит исправить код wsdl2java, в противном случае я бы выбрал первый вариант.