我正在創建一個使用兩個Web服務和一個客戶端爲旅行代理提供接口的系統。有一個航班預訂網絡服務,它將一個XML文檔中的可用航班(基於模式)存儲起來,並提供檢索要約或預訂給定航班的方法。還有一種旅行代理服務,它使用航班預訂服務和貨幣兌換服務,以便以特定貨幣提供用戶價格。然後,客戶將消費旅行社服務,以查看和預訂可用航班。在Web服務/客戶端之間傳遞JAXB對象
我的問題是將航班信息從機票預訂服務獲取到旅行社服務,然後再發送給客戶。用於商品列表的模式用於Web服務和客戶端。包含優惠的xml文件在機票預訂服務內解除編組,成爲OffersType
的對象。我想將這個對象返回給旅行社,以便可以對其執行操作,然後將其返回給客戶端。但是,在旅行社計劃中訪問該方法時,它只會返回flightbooking.OffersType
,該地址無法投射到本地OffersType
。有沒有辦法做到這一點?或者我需要創建一個新的OffersType
,它使用來自遠程OffersType
的信息?
因此,例如,在航班預訂Web服務:
@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;
}
與報價是的OffersType
一個實例。
然後在旅行社方面:
private OffersType getOffers() {
OffersType ret = new OffersType();
flightbooking.FlightBookingWS port = service.getFlightBookingWSPort();
return port.getOffers();
}
但顯然不起作用,因爲返回的對象是flightbooking.OffersType
一個實例。
顯示到目前爲止你已經嘗試過什麼一些代碼。 – tobiasbayer 2012-01-08 19:11:48
你的意思是說你有兩個名爲'OffersType'的類:一個在你身邊,另一個在旅行社的旁邊? – AlexR 2012-01-08 19:33:32
是的,兩個名爲OffersType的類在每一端都有一個。兩者都基於相同的xsd。我用示例代碼編輯了我的OP。 – Bonnotbh 2012-01-08 19:50:02