Я бы предложил использовать Apache CXF для спина. Я выбрал его для крупного проекта здесь, на работе, и он прекрасно работает! Какие преимущества это дает вам по сравнению с EJB3? Хммм ... я не могу сказать, за исключением того, что я использовал CXF, в то время как EJB3 никогда не был у меня на кухне (неясные рекомендации Cheers).
С CXF код не намного больше, чем пара аннотаций тут и там. Он использует стандартные аннотации JAXB для сортировки объектов. Через конфигурацию также можно разместить перехватчики до и после вызовов веб-сервисов, если вы хотите вести логирование и т. Д.
@WebService
public interface UserService {
public Collection<User> getUsers(@WebParam(name = "systemID") Long sysID);
}
Обратите внимание, что аннотация @WebParam
является необязательной, но в WSDL выглядит лучше, чем такие вещи, как arg0
. Да, может быть немного конфигурации XML, чтобы согласиться с этим:
<!-- the #userService is a reference to a Spring bean defined elsewhere -->
<jaxws:endpoint id="userWS" implementor="#userService"
implementorClass="com.blah.blah.blah.UserServiceImpl"
address="/UserService" />
Что касается использования веб-сервисов ... Изучив Руководство пользователя CXF, вы узнаете, как это делается: http://cwiki.apache.org/CXF20DOC/developing-a-consumer.html