Веб-сервисы в Java -- java поле с участием xml поле с участием web-services поле с участием web-applications пол Связанный проблема

Web Services in Java


5
vote

проблема

русский

Что вы обычно используете для подключения к веб-сервису, когда вы разрабатываете проект Java?

Есть разные API-S, которые могут сделать работу. Из разных книг и учебников я прочитал о: JAX-WS, JAXB, JAXM, JAXR, JAX-RPC, AXIS ANS.

Я заинтересован в том, что именно вы используете и сколько? Возьмите это как опрос, если хотите :)

Английский оригинал

What do you usually use to connect to a Web Service when you are developing a Java project?

There are different API-s that can do the job. From different books and tutorials I have read about: JAX-WS, JAXB, JAXM, JAXR, JAX-RPC, Axis ans so on.

I'm interested in what exactly are you using and how much? Take this as a survey if you wish :)

</div
           

Список ответов

12
 
vote
vote
Лучший ответ
 

Чтобы ответить на ваш вопрос, нам сначала нужно дифференцировать между перечисленными вами инструментами.

JAX-WS, JAXB, JAXM, JAXR, JAX-RPC - это API, связанные с XML и веб-службой, а ось 1 и 2 являются реализациями нуля, один или более из этих API в зависимости от версии.

Jax-B 1 и 2 представляют собой XML к API-API на объект, 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 / LILLAL.

Следующая версия спецификации была переименована из JAX-RPC 2.0 до JAX-WS 2.0 и разрабатывается как JSR-224; Этот выпуск будет рассмотреть ряд дополнительных требований в области, и увеличит синергию между спецификациями JAXB и JAX-WS. Вы можете получить доступ к странице проекта JAX-WS здесь.

Поскольку укладывает SOAD, поскольку Jax B 1.0 и JAX-RPC 1.0 рекомендую оставаться далеко от Axis 1.0 и XFire (который, если я правильно вспомню, даже не реализует JAX-RPC 1). Существует множество мыльных стеков, которые реализуют более новые API (JAX-WS 2.x и Jax-B 2.x).

Как упомянули другие, ось 2, JAX-WS RI и CXF - все действительные варианты. Эти стеки мыла гораздо более зрелые и поддерживают многие современные спецификации WS- *.

Слово осторожности о комментариях, касающихся использования вашего IDE к автоматическому генерирующему клиентскому коду. Хотя я большой сторонник генерации кода связывания XML-связывания XML и интерфейсов JAX-WS от XSDS и WSDL, соответственно, я осторожно использую встроенный мастер в вашей IDE для выполнения автоматического поколения. Если вы работаете над командой с более чем одним разработчиком или планируете изменять сгенерированный код, вы должны рассмотреть возможность ремонтопригодности такого подхода.

Если у вас есть более одного разработчика, придет время, когда один из них использует другую версию инструмента автоматического генерации, другой IDE или имеет другую конфигурацию в их инструменте. Кроме того, если вы автоматически генерируете из мастера, он зависит от разработчиков, чтобы помнить, как они создали код в случае, если вам нужно повторно генерировать его в будущем. Если вы измените XSD и не помните свою конфигурацию с последнего автоматического сгенерированного, сгенерированный код может не соответствовать существующему коду, который уже используется во всей вашей программе.

Если вы планируете изменить сгенерированный код, убедитесь, что вам только когда-либо нужно сделать это только один раз, и что, сразу у вас удобно поддерживать код вручную или объединять регенерированный код с помощью своих модификаций на регулярной основе.

Оба этими вопроса могут избегать, сценарируя генерацию кода в процессе создания. JAX-WS и JAX-B Оба поставляются с задачами Ant и / или модули Maven 2, которые легко в использовании в ваших сборках. Серьезно возьмите эти предупреждения, поскольку я видел, что несколько проектов страдают от этих вопросов, когда им нужно было модифицировать код, который был сгенерирован 5 лет назад сотрудником, который покинул фирму.

Мои последние слова осторожности должны быть осторожны при разрешении инструмента для автоматического создания интерфейсов веб-сервисов из ваших WSDL. Инструмент JAX-WS RI WSDL2JAVA любит размещать жесткие пути к WSDL в сгенерированных интерфейсах. Моя мнение, что вы должны автоматически генерировать интерфейсы один раз, а затем удалить жесткокодируемые URL и ссылки Qname, чтобы сделать приложение интерфейса Для всех веб-сервисов, которые реализуют связывание WSDL, что интерфейс представляет, а не только одна конечная точка, которую описывает ваш WSDL.

 

To answer your question, we first need to differentiate between the tools you listed.

JAX-WS, JAXB, JAXM, JAXR, JAX-RPC are XML and Web service related APIs while Axis 1 and 2 are implementations of zero, one, or more of these APIs depending on the version.

JAX-B 1 and 2 are XML to object binding APIs, JAX-WS is a WSDL and SOAP based Web service API and the predecessor of JAX-RPC, JAX-M is an older XML messaging API and JAX-R is an abstraction API for interacting with registries such as UDDI and ebXML.

From the Java.net JAX-RPC page:

The JAX-RPC expert group has wide industry participation with Sun Microsystems as the EG lead. The initial specification (JAX-RPC 1.0) was JSR-101 and was released in June 2002. A maintenance release followed in October 2003 providing better integration with JAXB 1.0 as well as better support for doc/literal.

The next version of the spec was renamed from JAX-RPC 2.0 to JAX-WS 2.0 and is being developed as JSR-224; this release will address a number of additional requirements in the area, and will increase the synergy between the JAXB and JAX-WS specifications. You can access the JAX-WS project page here.

Since SOAP stacks have come a long way since JAX-B 1.0 and JAX-RPC 1.0 I recommend staying far away from Axis 1.0 and XFire (which if I recall correctly doesn't even implement JAX-RPC 1). There are numerous SOAP stacks out there that implement the newer APIs (JAX-WS 2.x and JAX-B 2.x).

As others have mentioned, Axis 2, JAX-WS RI, and CXF are all valid choices. These SOAP stacks are far more mature and support many modern WS-* specifications.

A word of caution about the comments regarding using your IDE to auto-generate client code. While I am a big proponent of generating XML data binding code and JAX-WS interfaces from XSDs and WSDLs, respectively, I caution using a built-in wizard in your IDE to perform the auto-generation. If you work on a team with more than one developer or plan to modify the generated code you should consider the maintainability of such an approach.

If you have more than one developer, there will come a time when one of them is using a different version of the auto-generation tool, a different IDE, or has a different configuration in their tool. Additionally, if you auto-generate from a wizard, it is up to the developers to remember how they generated the code in the event that you need to re-generate it in the future. If you change the XSD and don't remember your configuration from the last time you auto-generated, the generated code may not align with the existing code that is already used throughout your program.

If you plan to modify the generated code, make sure that you only ever need to do it once and that from then on you are comfortable maintaining the code by hand or merging the regenerated code with your modifications on a regular basis.

Both of these issues can be avoided by scripting the code generation in your build process. JAX-WS and JAX-B both come with Ant tasks and/or Maven 2 plug-ins that are easy to use in your builds. Take these warnings seriously as I have seen multiple projects suffer through these issues when they needed to modify code that was generated 5 years ago by an employee that had since left the firm.

My final words of caution are to be careful when allowing a tool to auto-generate your Web service interfaces from your WSDLs. The JAX-WS RI WSDL2Java tool likes to place hard-coded paths to the WSDL in the generated interfaces. It is my opinion that you should auto-generate the interfaces once and then remove the hard-coded URLs and QName references to make the interface applicable to all Web services that implement the WSDL Binding that the interface represents and not just the one endpoint that your WSDL describes.

</div
 
 
3
 
vote

http://cxf.apache.org/ это приятно.

 

http://cxf.apache.org/ is nice.

</div
 
 
3
 
vote

Вы можете использовать, Apache Axis. Это автоматически генерирует java stubs, если вы предоставляете WSDL. Как только заглушки генерируются, как звонить обычный класс Java.

 

you can use, apache axis. This will generate the java stubs automatically if you provide the WSDL. once the stubs are generated its just like calling a normal java class.

</div
 
 
   
   
3
 
vote

Сторонники оси здесь должны быть точными.

проект axis 1.x был заброшен после того, как оси 1.4 был выпущен в апреле 2006 года, более трех лет назад. Недавно мы столкнулись с несколькими критическими ошибками безопасности потоков в клиентских библиотеках AXIS 1.4, в том числе 100% спинов ЦП и тупики. Они хорошо документируются (и все еще нерешены) в базе данных оси 1.x. Само собой разумеется, что мы отказываемся от оси 1.x (и просто используя код клиента HTTP Apache).

<Сильная> ось 2 - это совершенно новая база кода ... Возможно, кто-то другой может комментировать это.

Основываясь на нашем опыте, который мы рассмотрим metro , cxf , / strong> для мыльных веб-сервисов. (Мы рекомендуем подходы на основе остальных подходов по поводу мыла всякий раз, когда у вас есть выбор, и используете Restlet Framework, которые мы любим)

ИМО, вы были бы абсолютно орехами, чтобы пойти с осью 1.x

 

Axis proponents here need to be precise.

The Axis 1.x project was abandoned after Axis 1.4 was released in April 2006, over three years ago. We've recently encountered several very critical thread safety bugs in the Axis 1.4 client libraries, including 100% CPU spins and deadlocks. These are well documented (and still unresolved) in the Axis 1.x bug database. Needless to say we are giving up on Axis 1.x (and just using raw Apache HTTP client code).

Axis 2 is an entirely new code base ... perhaps someone else can comment on it.

Based on our experience we'd consider Metro, CXF, hand-coding, and (maybe) Axis 2 for SOAP web services. (We recommend REST-based approaches over SOAP whenever you have a choice, and are using the Restlet framework, which we love)

IMO, you'd be absolutely nuts to go with Axis 1.x

</div
 
 
2
 
vote

Потому что мы имеем довольно тяжелые инвестиции весной, мы используем Spring-WS с JAXB.

 

Because we have quite heavy investment in Spring, we use Spring-WS with JAXB.

</div
 
 
2
 
vote

Я использовал обе оси, так и оси2 и найду их как очень хорошо.

 

I have used both Axis and Axis2 and find them both very good.

</div
 
 
2
 
vote

Я думаю, что наиболее распространенное использование с Apache Axis2. Очень легко создавать услуги с ним, и вы найдете много учебных пособий.

 

I think the most common use is with Apache Axis2. It's very easy to create services with it and you will find a lot of tutorials.

</div
 
 
1
 
vote

Я использовал оба JAX-WS RI и Apache CXF . Если вы используете Весна Тогда CXF - очень хороший вариант. Как упомянул Филл, есть Spring-WS также, но CXF строит на Scest Jax-WS. Если вы не используете весну, то я бы сказал, что RI - это способ пойти, тем более, так как он в комплекте с Java 6.

 

I've used both JAX-WS RI and Apache CXF. If you are using Spring then CXF is a very good option. As Phill mentioned, there is Spring-WS as well, but CXF builds upon the JAX-WS spec. If you are not using Spring then I would say that the RI is the way to go, especially since it is bundled with Java 6.

</div
 
 
0
 
vote

для POX + HTTP или RESTFLAY WEAB SERVICES, Регистрация или достойный Внедрение клиента HTTP полностью достаточно.

 

For POX+HTTP or RESTful web services, Restlet or a decent HTTP client implementation are completely sufficient.

</div
 
 
0
 
vote

+1 для оси Apache.

Но JAX-WS также будет хорошим выбором.

 

+1 for Apache Axis.

But JAX-WS would also be a good choice.

</div
 
 
 
 

Связанный проблема

21  Тип несоответствия для генеральных классов  ( Type mismatch for class generics ) 
У меня есть следующий код, который не скомпировался, и хотя есть способ сделать его компиляцией, я хочу понять, почему он не компилирует. Может ли кто-нибудь ...

5  Конвенции о ведении регистрации [Закрыто]  ( Logging conventions ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> <Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 ...

3  Eclipse Java Formatter - новая линия до закрытия скобок  ( Eclipse java formatter newline before closing parentheses ) 
Можно ли настроить Dippleter Eclipse Java для вставки новой строки до закрытия скобок выражений, деклараций метода и вызовы методов? Обратите внимание на же...

87  Регулярное выражение для URL-адресов в Java  ( Regular expression to match urls in java ) 
<Р> Я использую RegexBuddy при работе с регулярными выражениями. Из своей библиотеки я скопировал регулярное выражение для URL-адресов. Я успешно протестирован...

0  Android Studio Back Button  ( Android studio back button problems ) 
на данный момент. Я создал простое приложение для викторины на Android Studio. Все работает нормально, в том числе, когда я иду от первой фактической жизни. Я...

17  Перегрузка Java VS переопределения  ( Java overloading vs overriding ) 
Привет, я просто хочу убедиться, что у меня есть эти понятия правильно. Перегрузка в Java означает, что у вас может быть конструктор или метод с различным кол...

0  Должен ли я использовать Mac для разработки Javafx для iOS  ( Do i have to use a mac to develop javafx for ios ) 
Документация http://docs.gluonhq.com/charm/4.0.1 / # _ iOS говорит, что мне нужно «Mac с MacOS X 10.9 или превосходящим» для разработки для iOS. Но я не пон...

-1  Нужно упростить логическое выражение (байт, короткое, целое число) Java  ( Need to simplify logical expression byte short integer java ) 
Мне нужно упростить выражение Первое выражение <код> (byte)( (short)((short)( (byte)((theInt >> 8) & 0xFF) & 0xFF) + 128) & 0xFF); второе выражение ...

0  Как удалить нынешние barchart (jfreechart), отображаемый и отображаю новый Barchart в том же представлении плагина Eclipse RCP?  ( How to delete the present barchartjfreechart displayed and display new barchar ) 
Я создаю Barchart с видом на плагин RCP. Данные, которые будут отображаться на графике, поставляется из файла базы данных SQLite3. Код, который я написал, ото...

22  Множественные методы постконструкции?  ( Multiple postconstruct methods ) 
Он говорит в Документация Java для Postconstruct что Только один метод может быть аннотирован с этой аннотацией Но я просто пытался аннотировать три м...

1  Реализация интерфейса Realmmodel при расширении другого объекта  ( Implementing realmmodel interface while extending another object ) 
Я хочу использовать новую функцию realm-java, где я могу просто реализовать интерфейс Realmmodel и добавить аннотацию @realmclass для определения таблицы. Все...

0  Класс libgdx не рисует текстуру  ( Libgdx class does not draw texture ) 
Я пытаюсь нарисовать игровой символ в моем классе "MaigaMestreen.java" из класса "Mavans.java", когда я касаюсь экрана моего телефона. К сожалению, моя прогр...

60  Получение ConcurrentModificationException брошенного при удалении элемента из списка java.util.List во время итерации? [Дубликат]  ( Getting a concurrentmodificationexception thrown when removing an element from a ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

0  Как повторять первые столбцы, затем строки для чтения листа Excel в Java  ( How to iterate first columns then rows to read excel sheet in java ) 
Я хочу прочитать лист Excel так что я хочу прочитать мои данные 1-го столбца и повторять все строки, затем 2-й столбец Так как это сделать. Я сначала попроб...

27  Отслеживание запроса XML / Ответы с JAX-WS при возникновении ошибки  ( Tracing xml request responses with jax ws when error occurs ) 
Я хочу войти в систему RAW Post Post, если есть какие-либо ошибки, я использую JAX-WS. Любая помощь будет оценена. Есть просто простым способом (ака: не исп...

Связанный проблема

21  Тип несоответствия для генеральных классов 
5  Конвенции о ведении регистрации [Закрыто] 
3  Eclipse Java Formatter - новая линия до закрытия скобок 
87  Регулярное выражение для URL-адресов в Java 
0  Android Studio Back Button 
17  Перегрузка Java VS переопределения 
0  Должен ли я использовать Mac для разработки Javafx для iOS 
-1  Нужно упростить логическое выражение (байт, короткое, целое число) Java 
0  Как удалить нынешние barchart (jfreechart), отображаемый и отображаю новый Barchart в том же представлении плагина Eclipse RCP? 
22  Множественные методы постконструкции? 
1  Реализация интерфейса Realmmodel при расширении другого объекта 
0  Класс libgdx не рисует текстуру 
60  Получение ConcurrentModificationException брошенного при удалении элемента из списка java.util.List во время итерации? [Дубликат] 
0  Как повторять первые столбцы, затем строки для чтения листа Excel в Java 
27  Отслеживание запроса XML / Ответы с JAX-WS при возникновении ошибки 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.