Чтобы ответить на ваш вопрос, нам сначала нужно провести различие между инструментами, которые вы перечислили.
JAX-WS, JAXB, JAXM, JAXR, JAX-RPC являются API-интерфейсами, связанными с XML и веб-сервисами, в то время как Axis 1 и 2 являются реализациями нулевого, одного или более этих API в зависимости от версии.
JAX-B 1 и 2 - это API-интерфейсы привязки XML к объектам, JAX-WS - это API-интерфейс веб-службы на основе WSDL и SOAP, предшественник JAX-RPC, JAX-M - более старый API-интерфейс для обмена сообщениями XML, а JAX-R - API абстракции для взаимодействия с такими реестрами, как UDDI и ebXML.
Со страницы Java.net JAX-RPC:
Экспертная группа JAX-RPC широко представлена в отрасли, а Sun Microsystems выступает в качестве лидера EG. Первоначальная спецификация (JAX-RPC 1.0) была JSR-101 и была выпущена в июне 2002 года. В октябре 2003 года последовал технический выпуск, обеспечивающий лучшую интеграцию с JAXB 1.0, а также лучшую поддержку doc / literal.
Следующая версия спецификации была переименована из JAX-RPC 2.0 в JAX-WS 2.0 и в настоящее время разрабатывается как JSR-224; В этом выпуске будет рассмотрен ряд дополнительных требований в этой области, и увеличится синергизм между спецификациями JAXB и JAX-WS. Вы можете получить доступ к странице проекта JAX-WS здесь.
Поскольку стеки SOAP прошли долгий путь со времен JAX-B 1.0 и JAX-RPC 1.0, я рекомендую держаться подальше от Axis 1.0 и XFire (который, если я правильно помню, даже не реализует JAX-RPC 1). Существует множество стеков SOAP, которые реализуют более новые API (JAX-WS 2.x и JAX-B 2.x).
Как уже упоминалось, Axis 2, JAX-WS RI и CXF являются допустимыми вариантами. Эти стеки SOAP намного более развиты и поддерживают многие современные спецификации WS- *.
Предупреждение о комментариях относительно использования вашей IDE для автоматической генерации кода клиента. Хотя я большой сторонник создания кода связывания данных XML и интерфейсов JAX-WS из XSD и WSDL, соответственно, я предостерегаю использование встроенного мастера в вашей среде IDE для выполнения автоматической генерации. Если вы работаете в команде с более чем одним разработчиком или планируете модифицировать сгенерированный код, вам следует рассмотреть возможность поддержки такого подхода.
Если у вас более одного разработчика, наступит время, когда один из них использует другую версию инструмента автоматического создания, другую IDE или другую конфигурацию в своем инструменте. Кроме того, если вы автоматически генерируете из мастера, разработчики должны помнить, как они генерировали код в том случае, если вам нужно будет сгенерировать его в будущем. Если вы изменили XSD и не помните свою конфигурацию с момента последнего автоматического создания, сгенерированный код может не соответствовать существующему коду, который уже используется в вашей программе.
Если вы планируете модифицировать сгенерированный код, убедитесь, что вам когда-либо потребуется сделать это только один раз, и с этого момента вам будет удобно поддерживать код вручную или регулярно обновлять код с вашими модификациями.
Обе эти проблемы можно избежать, создав сценарий генерации кода в процессе сборки. JAX-WS и JAX-B поставляются с задачами Ant и / или подключаемыми модулями Maven 2, которые легко использовать в ваших сборках. Относитесь к этим предупреждениям серьезно, поскольку я видел, как несколько проектов страдали от этих проблем, когда им нужно было изменить код, созданный 5 лет назад сотрудником, который с тех пор покинул фирму.
Мои последние слова предостережения: будьте осторожны, когда инструмент позволяет автоматически генерировать интерфейсы ваших Web-сервисов из ваших WSDL. Инструмент JAX-WS RI WSDL2Java любит размещать жестко закодированные пути к WSDL в сгенерированных интерфейсах. По моему мнению, вам следует автоматически сгенерировать интерфейсы один раз, а затем удалить жестко закодированные URL-адреса и ссылки QName, чтобы сделать интерфейс применимым ко всем веб-службам, реализующим привязку WSDL, которую представляет интерфейс, а не только к одной конечной точке, которую WSDL описывает.