Мои 2 цента.
Со всей этой шумихой вокруг web services легко забыть, что web service - это всего лишь внешний интерфейс для сервиса (без приставки web-), т.е. обычного класса, инкапсулирующего в своих методах бизнес логику высокого уровня, в противоположность логике низкого уровня, т.е. getters & setters бизнес-объектов.
Примером сервиса может являться класс типа HROperations с методом (среди прочих) increaseSalaryToDepartment(deptId, percentIncrease), который в одной транзакции (!!!
) пробежит по всем работникам данного департмента и вызовет их setSalary (низкоуровневая логика) методы. Или же, если ОО подход не применяется, сделает что-нибудь типа update emp set salary = salary * ? where dept_id = ?.
То есть, еще раз хочу акцентировать, сервис - это бизнес логика высокого уровня, выполняющий операции, охватывающие много сеттеров.
Так вот, services layer является одним из необходимых атрибутов хорошо спроектированного J2EE приложения. На основе этого layer'a можно надстраивать какие угодно пользовательские интерфейсы, будь-то JSP+MVC или толстое Swing приложение, или же каждый сервис можно зарегистрировать как web service, т.е. пропустить его через java2WSDL примочку. При желании, это сервис можно обернуть stateless session bean'ом, а потом уже зарегистрировать этот бин как web service. Короче, вариантов много, но главное правило одно: нужен services layer. А обернете ли вы его web services layer'ом - это уже второй вопрос, который мы сейчас и попробуем осветить.
Ну тут-то все проще. Для чего нужны web services? Для EAI, т.е. для Enterpise Application Integration, а в частности:
1. Для обеспечения взаимодействия между частями одного приложения, написанными на разных языках программирования
2. Для обеспечения взаимодействия с приложениями других компаний, которые в большинстве случаев, опять-таки написаны на разных языках программирования.
Резюмируем: ни того, ни другого у вас нет. Отсюда: web services вам не нужны. Строить ваши JSP на вызовах web services - будет преступлением против своей компании и себя лично. Убьете перформанс напрочь.
Другое дело - services layer. Имея его, стройте свои JSP на вызовах services. Внимательно также прислушайтесь к советам местных товарищей об использовании архитектуры MVC. Я лично использую Struts - замечательнейшая вещица.
И только потом уже пропустите свои сервисы через java2wsdl и гордо заявите начальству, что web services готовы как побочный продукт
Удачи!
P.S. Возможно, я неправильно перевел coarse grained logic and fine grained logic как логика высокого и, соответсвенно, низкого уровня.
P.P.S. Пробегание по всем сотрудникам департмента использовалось только как пример более сложной логики, чем просто сеттеры. В реальном приложении рекомендуется не использовать. update emp set... в данном случае работает лучше.