Java 从XmlAdapter使用UriBuilder创建绝对URI

Java 从XmlAdapter使用UriBuilder创建绝对URI,java,jakarta-ee,rest,jaxb,jersey,Java,Jakarta Ee,Rest,Jaxb,Jersey,我有一个XmlAdapter将类中的关联对象封送到它们各自的REST URI: public class AirportAdapter extends XmlAdapter<URI, Airport> { @Override public URI marshal(Airport airport) throws Exception { return UriBuilder.fromResource(AirportsResource.class).path(AirportsRes

我有一个XmlAdapter将类中的关联对象封送到它们各自的REST URI:

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());
}
我需要
UriBuilder
来构建绝对路径(http://localhost/resources/airports/1)我知道我可以使用
UriInfo
类来实现这一点,但是我不能将它注入适配器,因为它不是资源。当我在URI前面加上协议、主机和资源路径时,解组确实有效。有什么方法可以让UriBuilder构建一条绝对路径,而不必自己进行预处理

更新

我想如果我自己创建一个JAXB上下文:

JAXBContext jc = JAXBContext.newInstance( "com.acme.foo:com.acme.bar" );
Unmarshaller u = jc.createUnmarshaller();

我自己在解组器上设置适配器,通过实体管理器从数据库中获取正确的对象,而不是通过URI进行umarshalling,框架是否也会使用这些适配器,还是自己创建新实例,使这种方法静音?

如果在
封送器
/
解组器
上设置
XmlAdapter
的实例,那么
XmlAdapter
的实例将在所有用
@XmlJavaTypeAdapter
注释的地方使用该类


在像Jersey这样的JAX-RS环境中,您可以使用
MessageBodyReader
/
MessageBodyWriter

设置此设置,如果在
Marshaller
/
解组器上设置
XmlAdapter
的实例,则该
XmlAdapter
的实例将在所有已用
@XmlJavaTypeAdapter
注释的位置使用使用该类


在Jersey这样的JAX-RS环境中,您可以使用
MessageBodyReader
/
MessageBodyWriter

进行设置,这是一个非常好的资源Blaise,谢谢!我现在工作得很好:-)这是一个极好的资源Blaise,谢谢!我现在让它工作得很好:-)
JAXBContext jc = JAXBContext.newInstance( "com.acme.foo:com.acme.bar" );
Unmarshaller u = jc.createUnmarshaller();