創建一個絕對URI我有一個XmlAdapter元帥一類關聯的對象各自的REST URI的:使用UriBuilder從XmlAdapter
public class AirportAdapter extends XmlAdapter<URI, Airport> {
@Override
public URI marshal(Airport airport) throws Exception {
return UriBuilder.fromResource(AirportsResource.class).path(AirportsResource.class,
"getAirportResource").build(airport.getId());
}
然而,這產生了一個相對URL(/機場/ 1),其無法將URI解組爲Airport
對象(顯然):
@Override
public Airport unmarshal(URI uri) throws Exception {
// Does work, but not desirable
return JAXB.unmarshal("http://localhost/resources" + uri, Airport.class)
// Does not work
return JAXB.unmarshal(uri, Airport.class);
}
}
我需要UriBuilder
建立一個絕對路徑(HTTP://本地主機/資源/一irports/1),我知道我可以使用UriInfo
類來做到這一點,但我不能將它注入到適配器中,因爲它不是資源。當我用協議,主機和資源路徑預先加載URI時,解組確實有效。通過什麼方式讓UriBuilder建立一條絕對路徑而不需要自己預先設置?
更新
我想如果我創建了一個JAXB上下文自己:
JAXBContext jc = JAXBContext.newInstance("com.acme.foo:com.acme.bar");
Unmarshaller u = jc.createUnmarshaller();
,並設置適配器上的解組自己,通過實體管理器從數據庫中,而不是抓住正確的對象通過URI進行編組,這些還會被框架使用嗎?還是它自己創建新的實例,使這種方法變爲靜音?
這是一個很好的資源布萊斯,謝謝!我現在工作完美:-) – Laurens