私は奇妙な問題に遭遇しました。私は、Jersey 2.2 を使用して安静な Web サービスを実行しています (jersey-media-moxy を使用)。出力を application/xml として生成すると、問題なく動作します。しかし、出力を application/json として生成すると、「Internal Server Error 500」が発生します。
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 ステータス 500 - 内部サーバー エラー
タイプ ステータス レポート
message 内部サーバー エラー
説明 サーバーで内部エラー (内部サーバー エラー) が発生したため、この要求を実行できませんでした。
アプリのログ ファイルまたは Tomcat のログ ファイルにエラー メッセージが見つからないため、何が起こっているのかわかりません。
この問題の考えられる理由を知っている人はいますか? 本当に感謝しています...