2010-05-17 4 views
5

JSF에서 프리젠 테이션 티어가 있고, 웹 티어를 사용하여 비즈니스 티어에 액세스한다고 가정 해 보겠습니다. JSF에서 웹 서비스를 어떻게 부르겠습니까?JSF 코드에서 웹 서비스 호출하기

웹 서비스를 호출하기 위해 내 백킹 빈을 고려하고 있었지만, 웹 서비스에 연결하기 위해 JSF와 함께 Ajax를 사용할 수는 있습니다. 무엇을 선택하겠습니까? 추천 할만한 다른 선택 사항이 있습니까?

편집 : 비즈니스 티어에서 봄을 사용하고 있습니다. 어쩌면 그 정보가 제안에 도움이 될 수 있습니다.

감사합니다.

답변

10

관리 클래스를 통해 액세스되는 서비스 클래스에서 웹 서비스 호출을 래핑합니다. 따라서 프론트 엔드는 웹 서비스를 통해 또는 다른 수단을 통해 데이터가 얼마나 정확하게 전달되는지 알 수 없습니다.

+0

+1 저는 Bozho에 동의합니다. 저는 웹 서비스 호출을 서비스 클래스에 보관하고 앞으로 발생할 웹 서비스 변경 사항과 격리 된 프리젠 테이션 레이어를 유지하려고합니다. – elduff

+0

다시 한 번 감사합니다. Bozho,이 방법을 사용하고 있습니다. –

2

EJB를 구현하고 응용 프로그램 내에서 웹 서비스 (언어 독립 원격 액세스 용)로 노출시켜 EJB를 조회하고 직접 호출하여 성능을 향상시킵니다. 불행히도 당신은 어떤 플랫폼을 사용하고 있는지 말하지 않았기 때문에 제 제안이 실현 가능할 지 확신 할 수 없습니다.

+0

비즈니스 계층에서 Spring을 사용하고 있습니다. –

3

JSF에서 프레젠테이션 계층을 사용하고 웹 서비스를 사용하여 비즈니스 계층에 액세스한다고 가정 해 보겠습니다. JSF에서 웹 서비스를 어떻게 부르겠습니까?

은 "고전적인"방법은 ManagedBean은으로합니다 (WSDL에서 생성)는 JAX-WS 프록시 팩토리 클래스를 주입하는 것입니다 :

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에서 가져옵니다.

관련 문제