【发布时间】:2015-09-17 17:45:43
【问题描述】:
我尝试创建的 REST 服务有问题。我使用内置的 GlassFish 4.1 和 Jersay 2.1。
@Path("/driver")
@RequestScoped
public class DriverResource {
private static Logger logger = LogManager.getLogger(DriverResource.class);
@Inject
private DriverManager driverManager;
private SharedResponseFactory responseFactory = new SharedResponseFactory();
@GET
@Path("/login/{pesel}/{password}")
@Produces("application/json")
public Response logIn(@PathParam("pesel") String pesel, @PathParam("password") String password) {
try {
Driver driver = driverManager.logIn(pesel, password);
logger.debug("Zalogowano kierowcę: " + driver.getFullName());
return responseFactory.getSuccesResponse(driver);
} catch (ErrorDAOException e) {
logger.catching(e);
return responseFactory.getFailureResponse(e);
} catch (NoDataFoundDAOException e) {
logger.catching(e);
return responseFactory.getFailureResponse(e);
} catch (Exception e) {
logger.catching(e);
return responseFactory.getFailureResponse(e);
}
}
}
当我尝试返回我的实体时,我得到如下响应:
{}
在我的实体中有很多循环引用,我不是在实际实现上操作,而是在接口上操作。我需要让它成为我的 Android 应用程序中的 Retrofit 可以反序列化它的方式。
Glassfish 的日志是空的,没有与 rest 相关的错误。我不知道如何使它工作。
我尝试使用@JsonIdentityInfo 处理循环引用并使用@JsonTypeInfo 使接口可以反序列化。
我认为有一个小技巧可以让它发挥作用,但不幸的是我不知道......
【问题讨论】:
标签: java android json rest glassfish