두 개의 웹 서비스와 클라이언트를 사용하여 여행사를위한 인터페이스를 제공하는 시스템을 만들고 있습니다. 사용 가능한 항공편을 스키마 문서를 기반으로 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();
}
하지만 분명히 즉, 작동하지 않습니다.
보기 지금까지 시도했다 일부 코드입니다. – tobiasbayer
당신은'OffersType'이라는 2 개의 클래스가 있다는 것을 의미합니까? 하나는 여행사의 편에, 다른 하나는 옆에 있습니까? – AlexR
예, OffersType이라는 두 개의 클래스가 각 끝에 하나씩 있습니다. 둘 다 동일한 xsd를 기반으로합니다. 샘플 코드로 OP를 편집했습니다. – Bonnotbh