2013-09-11 1 views
0

У меня возникла странная проблема. Я использую Джерси 2.2 для выполнения моих спокойных веб-сервисов (с джерси-медиа-мокси). Если я создаю свой вывод как application/xml, он работает нормально. Но если вывести мой вывод как application/json, я получаю «Internal Server Error 500».Джерси 2.2: вывод xml ОК, но сбой на json

Мои настройки зависимостей в ivy.xml являются:

<dependency org="org.glassfish.jersey.core" name="jersey-server" rev="2.2"/> 
<dependency org="org.glassfish.jersey.containers" name="jersey-container-servlet-core" rev="2.2"/> 
<dependency org="org.glassfish.jersey.media" name="jersey-media-moxy" rev="2.2"/> 

Мой класс обслуживание:

@Path("/projects/{companykey: [0-9]*}") 
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
public class ProjectResource { 
    private static Logger logger = Logger.getLogger(ProjectResource.class); 
    private final Application app = Application.getInstance(); 
    @GET 
    public List<ProjectBase> getProjectBases(
      @PathParam("companykey") String companyKeyStr) { 
     ... 
    } 
    @GET 
    @Path("/{projectkey: [0-9]*}") 
    public ProjectBase getProjectBase(
      @PathParam("companykey") String companyKeyStr, 
      @PathParam("projectkey") String projectKeyStr) { 
     int companyKey = Integer.valueOf(companyKeyStr); 
     int projObjKey = Integer.valueOf(projectKeyStr); 
     logger.debug(MessageFormat.format("get project {1} of company {0}", 
       companyKey, projObjKey)); 
     ProjectBase project = null; 
     try { 
      project = app.getProjectIF().getProjectBase(companyKey, projObjKey); 
      if (project == null) throw new WebApplicationException(404); 
      return project; 
     } catch (ServerException se) { 
      logger.warn("get project fails ! " + se); 
      throw new WebApplicationException(500); 
     } 
    } 
    ... 
} 

//class end 

Если я спрошу для вывода XML (посетить http://biz.loc.net:8080/tm/rest/projects/100/104), я получаю:

<projectBase> 
<_checkTopicAccess>false</_checkTopicAccess> 
<_checkTaskAccess>false</_checkTaskAccess> 
.... 

Если я попрошу выход json, я получаю:

HTTP Status 500 - Внутренняя ошибка сервера

отчет Тип Статус

сообщение Internal Server Error

описание Сервер обнаружил внутреннюю ошибку (Внутренняя ошибка сервера), что помешало ему выполнить эту просьбу ,

Я не нахожу никаких сообщений об ошибках в файле журнала моего приложения или файла журнала Tomcat, поэтому у меня нет понятия, что происходит.

Кто-нибудь знает любую возможную причину этой проблемы? Действительно ценю ...

ответ

0

Можете ли вы показать код объекта? Вам не хватает пустого конструктора?

0

Спасибо за вашу помощь, следующий фрагмент кода мои сущности CLAS:

@XmlRootElement 
public class ProjectBase implements UdaEnabled, SdaEnabled, FormBean { 
    private int projObjKey; 
    private String projName; 
    //... 
    private Timestamp createdAt; 
    //... 
    //... 
    @XmlElement(name = "createdAt") 
    @XmlJavaTypeAdapter(TimestampAdapter.class) 
    public Timestamp getCreatedAt() { 
     return createdAt; 
    } 

    // non-args Constructor 
    public ProjectBase() { 
     init(); 
    } 
} 

Это делает имеет пустой конструктор, хотя они это init() внутри.

Как я уже сказал, я думаю, что это странно, потому что создание xml в порядке.

Смежные вопросы