Скажем, то, что у Вас есть уровень представления в JSF, и что к Вашему бизнес-уровню получают доступ с помощью веб-сервисов. Как Вы назвали бы свои веб-сервисы от JSF?
Я рассматривал, чтобы иметь мои бобы поддержки для вызова веб-сервисов, но я просто, хотя я мог использовать Ajax с JSF для соединения с веб-сервисами. Что Вы выбрали бы и почему? Какой-либо другой выбор Вы могли рекомендовать?
Править: Я использую Spring в бизнес-уровне, возможно, та информация может помочь с предложениями.
Спасибо.
Я бы обернул вызов веб-сервиса в класс сервиса, доступ к которому осуществляется через управляемый боб. Таким образом, внешний модуль не будет знать, как именно к нему поступают данные - через веб-сервисы или каким-либо другим способом.
Допустим, у вас есть презентационный уровень в JSF, а доступ к бизнес-уровню осуществляется с помощью веб-сервисов. Как вы будете вызывать веб-сервисы из JSF?
Классический" подход заключается в том, чтобы внедрить класс фабрики JAX-WS-прокси (сгенерированный из WSDL) в ManagedBean:
public class ItemController {
@WebServiceRef(wsdlLocation = "http://localhost:8080/CatalogService/Catalog?wsdl")
private CatalogService service;
public DataModel getItems() {
if (model==null || index != firstItem){
model=getNextItems();
}
return this.model;
}
public DataModel getNextItems() {
Catalog port = service.getCatalogPort();
model = new ListDataModel(port.getItems( firstItem,batchSize));
return model;
}
}
Пример взят из Sample Application using JAX-WS, JSF, EJB 3.0, and Java.
Я бы реализовал EJB-компоненты и представил их как веб-службу (для независимого от языка удаленного доступа) в приложении. Я бы обращался к EJB-компонентам путем поиска и прямого вызова их (для повышения производительности). К сожалению, вы не сказали, какую платформу вы используете, поэтому я не могу быть уверен, будут ли мои предложения осуществимы.