2009-12-21 28 views
7

Vì vậy, tôi viết một mùa xuân (2.5 (+ Jersey (1.1.4.1) và cố gắng để tạo ra một JSONConfiguration sử dụng một ContextResolver Đây là mã:.Jersey thực hiện ContextResolver <JAXBContext> trong mùa xuân

package com.rhigdon.jersey.config; 

import com.sun.jersey.api.json.JSONConfiguration; 
import com.sun.jersey.api.json.JSONJAXBContext; 

import javax.ws.rs.ext.ContextResolver; 
import javax.ws.rs.ext.Provider; 
import javax.xml.bind.JAXBContext; 

@Provider 
public final class JAXBContextResolver implements ContextResolver<JAXBContext> { 
    private JAXBContext context; 

    public JAXBContextResolver() throws Exception { 
    this.context = new JSONJAXBContext(JSONConfiguration.mappedJettison().build(), "com.rhigdon.core.model."); 
    } 

    public JAXBContext getContext(Class<?> aClass) { 
    return context; 
    } 
} 

Đáng tiếc là ứng dụng của tôi vẫn trả lại ánh xạ mặc định:

{ "id": "1", "câu hỏi": "/ là tên của con vật cưng đầu tiên của bạn là gì?"}

Khi tôi gỡ lỗi ứng dụng, nó không bao giờ thực sự chạm vào mã này. Đây có phải là do sử dụng SpringServlet không? Đây là Cấu hình Jersey của tôi trong web.xml của tôi:

<servlet> 
    <servlet-name>Jersey Spring Web Application</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey Spring Web Application</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

Bất kỳ ai có thiết lập tương tự với JSONConfiguration đang hoạt động?

Trả lời

12

Bạn cần phải đăng ký cung cấp dịch vụ của bạn trong bối cảnh mùa xuân của bạn:

<bean class="com.company.jersey.config.JAXBContextResolver"/> 

Hoặc, nếu bạn đang sử dụng cấu hình chú thích dựa trên, bạn cần phải chú thích lớp nhà cung cấp của bạn với @Component và bao gồm một cái gì đó giống như

<context:annotation-config /> 
<context:component-scan base-package="com.company.jersey" /> 

vào cấu hình ngữ cảnh ứng dụng của bạn.

+2

Đây là giải pháp khá rõ ràng nhưng tôi muốn trả lời trong trường hợp bất kỳ ai khác trống rỗng như tôi. :) – rhigdon

1

Tôi đang sử dụng phiên bản jersey 1.10 và tôi không có chú thích @Component cũng như định nghĩa bean và nó hoạt động mà không có nó.

-4


Jersey REST của Dịch vụ
com.sun.jersey.spi.spring.container.servlet.SpringServlet
com.sun.jersey.config.property.packages ca.gc.cbsa.ezfw.foundation .webservice

+0

Câu trả lời này giúp giải quyết vấn đề như thế nào? Vui lòng giải thích câu trả lời của bạn. –

+0

Đừng ép mọi người sử dụng Spring khi họ không muốn. – Orri

Các vấn đề liên quan