2012-01-08 2 views
0

두 개의 웹 서비스와 클라이언트를 사용하여 여행사를위한 인터페이스를 제공하는 시스템을 만들고 있습니다. 사용 가능한 항공편을 스키마 문서를 기반으로 XML 문서에 저장하고 쿠폰을 검색하거나 지정된 항공편을 예약 할 수있는 메소드를 제공하는 항공편 예약 웹 서비스가 있습니다. 또한 특정 통화로 사용자 가격을 제공하기 위해 항공편 예약 서비스 및 통화 변환 서비스를 이용하는 여행사 서비스가 있습니다. 그러면 고객은 이용 가능한 항공편을보고 예약하기 위해 여행사 서비스를 이용합니다.웹 서비스/클라이언트간에 JAXB 객체 전달하기

제 문제점은 비행 예약 서비스에서 여행사 서비스로, 그리고 앞으로는 고객에게 비행 정보를 제공하는 것입니다. 오퍼 목록에 사용 된 스키마는 웹 서비스와 클라이언트 모두에서 사용됩니다. 쿠폰이 포함 된 xml 문서는 OffersType의 개체가되기 위해 비행 예약 서비스에서 비 정렬 화되어 있습니다. 이 객체를 여행사에 반환하여 작업을 수행 할 수 있도록 한 다음 클라이언트에게 반환합니다. 그러나 여행사 프로그램의 메소드에 액세스 할 때 flightbooking.OffersType 만 반환되며 로컬 OffersType으로 캐스팅 할 수 없습니다. 이것을 할 수있는 방법이 있습니까? 또는 리모컨의 정보를 사용하는 OffersType을 새로 만들어야합니까? OffersType?

그래서 예를 들어, 비행 예약 웹 서비스에 : 이벤트 OffersType의 인스턴스 인과

@WebMethod(operationName = "getOffers") 
public OffersType getOffers() { 
    try { 
     javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(this.getClass().getPackage().getName()); 
     javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller(); 
     offers = (OffersType) unmarshaller.unmarshal(new java.io.File("\\resources\\CurrentOffers.xml")); //NOI18N 
    } catch (javax.xml.bind.JAXBException ex) { 
     // XXXTODO Handle exception 
     java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N 
    } 
    return offers; 
} 

.

그리고 여행사 측 : 반환 된 객체가 flightbooking.OffersType의 인스턴스로

private OffersType getOffers() { 
    OffersType ret = new OffersType(); 
    flightbooking.FlightBookingWS port = service.getFlightBookingWSPort(); 
    return port.getOffers(); 
} 

하지만 분명히 즉, 작동하지 않습니다.

+2

보기 지금까지 시도했다 일부 코드입니다. – tobiasbayer

+0

당신은'OffersType'이라는 2 개의 클래스가 있다는 것을 의미합니까? 하나는 여행사의 편에, 다른 하나는 옆에 있습니까? – AlexR

+0

예, OffersType이라는 두 개의 클래스가 각 끝에 하나씩 있습니다. 둘 다 동일한 xsd를 기반으로합니다. 샘플 코드로 OP를 편집했습니다. – Bonnotbh

답변

1

서버와 클라이언트 모두에서 Java를 사용하는 경우 Jersey + Jackson을 양쪽에서 사용합니다. 양측에 모델이 있고, 제대로 주석을 달았 으면 한 쪽에서 다른 쪽으로 넘길 수 있습니다.

온라인으로 많은 예제가 있습니다,하지만 난이 SO 질문을 시작 했죠 : How to reuse Jersey's JSON/JAXB for serialization?