0
私は奇妙な問題があります。私はルートリソースとサブリソースを持っています(コードは下にあります)。Jax-RS - サブリソースオブジェクトが出力に書き込まれる
"/ team/test"を呼び出すと、呼び出しは "return subResource;"で終了します。サブリソースオブジェクトは応答として出力として書き込まれます。
{
"team": {
"id": 1,
"state": 1,
"name": "test",
"channels": []
}
}
私は「/チーム/テスト/名前」と呼ぶとき、私は404応答を取得し、サーバーログにこのメッセージが出力されます。
WARNUNG: No operation matching request path "/ts-webservice-dev/rest/team/test/name" is found, Relative Path: /test/name, HTTP Method: GET, ContentType: */*, Accept: */*,. Please enable FINE/TRACE log level for more details.
マイアプリケーションサーバはApacheのCFX JAX-とtomeeですrsの実装。 別のマシンに非常によく似たコードの別のアプリケーションがあり、正常に動作しています。不幸にも、私は現在のプロジェクトを他のマシンでテストすることも、このマシン上の他のプロジェクトをテストすることもできません。
私はこれをどのように解決できるか教えてもらえますか?
ルートリソース:
@Path("/team")
public class TeamResource extends BaseResource {
private TeamRepository teamRepository;
@GET
@Path("/{teamName}")
public TeamSubResource findTeam(@PathParam("teamName") String teamName) throws TeamInactiveException, TeamNotFoundException {
Optional<TeamEntity> team = teamRepository.findByName(teamName);
if (!team.isPresent()) {
throw new TeamNotFoundException(teamName);
} else if (team.get().getState() != 1) {
throw new TeamInactiveException(team.get());
} else {
TeamSubResource subResource = CDI.current().select(TeamSubResource.class).get();
subResource.setTeam(team.get());
return subResource;
}
}
@Inject
public void setTeamRepository(TeamRepository teamRepository) {
this.teamRepository = teamRepository;
}
}
サブリソース:
public class TeamSubResource {
private TeamEntity team;
@GET
@Path("/")
public String test1() {
return "test1";
}
@GET
@Path("/test")
public String test2() {
return "test2";
}
@GET
@Path("/name")
public String name() {
return team.getName();
}
public void setTeam(TeamEntity team) {
this.team = team;
}
public TeamEntity getTeam() {
return team;
}
}