У меня есть странная проблема. У меня есть корневой ресурс и вспомогательный ресурс (код ниже).Jax-RS - объекты вспомогательных ресурсов записываются на вывод
Когда я называю «команда/тест», вызов заканчивается на «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.
Мой сервер приложений является tomee с Apache CFX jax- 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;
}
}
Sub Ресурс:
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;
}
}