2013-09-11 21 views
0

我遇到了一個奇怪的問題。 我使用Jersey 2.2來做我平靜的web服務(使用jersey-media-moxy)。 如果我產生我的輸出作爲application/xml,它運行良好。 但是,如果產生我的輸出作爲應用程序/ JSON,我得到「內部服務器錯誤500」。在的ivy.xmlJersey 2.2:輸出xml OK,但在json上失敗

我的依賴設置:

<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狀態500 - 內部服務器錯誤

類型狀態報告

消息內部服務器錯誤

描述服務器遇到一個內部錯誤(內部服務器錯誤)阻止其完成此請求。

我不覺得我的應用程序的日誌文件或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是好的。

相關問題