我們使用IBM捆綁的Apache Wink爲我們的應用程序提供JAXRS端點。我們正在編寫Websphere 8.5.5。由於我們符合servlet 3.0,所以我們使用'編程'方式來配置JaxRS應用程序,這意味着web.xml中沒有條目,並且我們依賴於對帶註釋的jax rs資源進行類掃描。一般來說,它工作正常。使用Apache Wink覆蓋Websphere 8.5.5上的Jackson Object Mapper屬性
@ApplicationPath("/api/v1/")
public class MyApplication extends Application{
此版本的WebSphere和Apache Wink一起,使用傑克遜1.6.x版的JSON德/序列化和一般的效果很好。我們希望儘管改變一些對象映射器的默認值
因此,我們定義了一個客戶上下文解析器,其中只是改變一些序列/反序列化屬性。
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJackssonConverter implements ContextResolver<ObjectMapper> {
final ObjectMapper defaultObjectMapper;
public AibasJackssonConverter() {
defaultObjectMapper = createDefaultMapper();
}
...
mapper.getSerializationConfig().set(SerializationConfig.Feature.INDENT_OUTPUT, true);
在JAX-RS調用,我們可以看到,容器註冊新的供應商,沒有任何錯誤
的問題是,該配置是不是「跟隨」,從日誌中我可以看到, Wink引擎正在查找一個WinkJacksonProvider,它反過來會返回一個遵循Jackson(s)默認值的JacksonProvider?
有沒有辦法改變這個默認值?
我試圖改變應用程序對象的實現,如此處所示,以便以編程方式配置提供程序,但它不起作用。
http://www.ibm.com/developerworks/java/library/wa-aj-jackson/index.html
任何提示或建議?
非常感謝
您是否試過WebSphere論壇? http://ibm.biz/websphere-forum – dbreaux
我也無法讓這個工作。當我在Application getClasses()中包含一個JacksonJsonProvider時。 Websphere將使用Jackson。但是沒有辦法定製傑克遜。如果我在Application getSingletons()中包含一個自定義配置的JacksonJsonProvider。 Websphere不會使用它。沒有響應對象(或其有效載荷)被序列化。應該返回響應主體的REST方法不返回任何內容。 (使用TomcatEE,生活變得如此簡單。) – devdanke