У меня есть служба JAX-RS REST, реализованная с использованием Джерси. Одной из замечательных особенностей JAX-RS/Jersey является то, как легко POJO можно превратить в службу REST, просто воспользовавшись несколькими аннотациями Java... включая тривиально простой механизм перевода POJO в JSON - с помощью аннотаций JAXB.
Теперь я хотел бы использовать эту классную функциональность JSON-ifying для целей, отличных от REST, - мне бы хотелось, чтобы вы просто сериализовали некоторые из этих объектов на диск, как текст JSON. Вот пример объекта JAXB, который я хотел бы сериализовать:
@XmlRootElement(name = "user")
public class UserInfoImpl implements UserInfo {
public UserInfoImpl() {}
public UserInfoImpl(String user, String details) {
this.user = user;
this.details = details;
}
public String getUser() { return user; }
public void setUser(String user) { this.user = user; }
public String getDetails() { return details; }
public void setDetails(String details) { this.details = details; }
private String user;
private String details;
}
Джерси может превратить один из них в json без дополнительной информации. Мне интересно, предоставил ли Джерси эту функциональность в API для таких потребностей, как мой? Мне не повезло найти его до сих пор...
Спасибо!
UPDATE 2009-07-09. Я узнал, что могу использовать объект "Провайдеры", чтобы сделать именно то, что я хочу:
@Context Providers ps;
MessageBodyWriter uw = ps.getMessageBodyWriter(UserInfoImpl.class, UserInfoImpl.class, new Annotation[0], MediaType.APPLICATION_JSON_TYPE);
uw.writeTo(....)
... Это записывает объект как json в любой выходной поток, который был бы идеальным для меня, но я могу получить только объект Providers, используя @Context из объекта @Component. Кто-нибудь знает, как получить доступ к нему из обычного, не аннотированного POJO? Спасибо!