2012-02-12 5 views
0

두 웹 서비스와 상호 작용하는 Jersey-client 애플리케이션을 작성했습니다. 하나는 REST이고 다른 하나는 SOAP입니다. 필자는 REST 서비스에서 제공하는 직원 데이터를 사용하여 SOAP 서비스를 사용하여 새 사용자를 만듭니다.RESTful 웹 서비스 프록시 클래스

@Entity 
@Table(name = "EMPLOYEE_TABLE") 
@XmlRootElement 
public class Employee implements Serializable { 
    ... 
} 

내가 명시 적으로 엔티티 클래스에 대한 스키마 정의를 작성하지 않은 :

나머지 서비스는 직원 개체를 반환하는 JAX-RS (뉴저지) 응용 프로그램입니다.

GET /employees/100 

<Employee id='100' providerId='3345'> 
    <Link type="application/xml" href="/employees/100" rel="self"/> 
    <Name>Doe, Dr. John</Name> 
    <Departments> 
    <Department id='10'><Name>Emergency Medicine</Name></Department> 
    <Department id='56'><Name>Behavioral Medicine</Name></Department> 
    </Departments> 
</Employee> 

비누 서비스 (은 BusinessObjects 엔터프라이즈 웹 서비스 SDK)가 그 사용을 단순화하는 자바 클라이언트를 제공합니다

GET 요청은 직원 엔티티의 표현을 반환합니다.

Employee 엔티티의 XML 표현을 구문 분석하여이를 User 클래스의 적절한 설정자에게 할당 할 수는 있지만 저지 클라이언트 애플리케이션에 Employee 프록시 클래스 (적절한 주석이있는)를 만드는 것이 더 쉬울 것입니다. .

질문 :

  1. 합니까 JAX-RS (특히 뉴저지, 내 경우) 엔티티의 스키마 정의 (XSD 형식)를 노출하는 메커니즘을 가지고? WADL 문서에는 이러한 유형의 정보가 포함되어 있지 않습니다.
  2. 직원 리소스 클래스를 모방 한 POJO 클래스 표현을 수동으로 만들 수는 있지만 '도구'를 사용해야합니다. 이것에 대한 나의 선택은 무엇입니까?
  3. 시간이 지남에 따라 Employee 엔티티에 요소를 추가해야 할 수도 있습니다. 이것은 RESTful 서비스의 새로운 버전이 만들어 져야한다는 것을 의미합니까?
  4. 저지가 스키마 정의를 자동으로 생성하고 노출하도록 구성되어 있고 Employee 엔티티가 승인되지 않은 변경을 방지하기 위해 인터페이스를 구현해야하는 경우 Employee 변경이 스키마 정의를 변경한다고 가정합니다.
+0

포인트 3과 4에 관해서는 REST API URL을 관리해야합니다. 예를 들어, 초기 버전에는'/ myservice/1.0.0/getlist' URL이 있습니다. –

답변

0

질문 1과 관련하여 웹 응용 프로그램에 XSD가 배포되어 있으면 브라우저에서 탐색 할 수 있습니다. 예를 들어, 내 webapp에서 내 XSD를 포함하는 /xsd 폴더가 있습니다. 앱이 실행 중일 때 브라우저를 http://localhost:8080/<app_name>/xsd/<xsd_name>.xsd으로 지정하고 XSD를 볼 수 있습니다.

+0

XSD 파일을 수동으로 생성해야합니까? – craig

+1

예. 그런 다음 XPS에서 Java 코드를 생성하는 데 maven 플러그인을 사용합니다. 너도 다른 방향으로 갈 수 있다는 나의 이해이다. Java 코드를 작성한 다음 XSD를 생성 할 수 있습니다. 개인적으로 나는 전에 그렇게 해본 적이 없다. – mark

+0

구현 (Jersey, 제 경우)에서 XSD를 동적으로 생성하고 더 나은 성능을 위해 캐시 할 수있는 옵션이 필요했습니다. – craig