User user = OfyService.ofy().load().type(User.class).id(id).now();
JSONObject jsonUser = new JSONObject();
jsonUser.put("user_id", user.getUser_id());
jsonUser.put("device_id", user.getDevice_id());
jsonUser.put("email", user.getEmail());
jsonUser.put("name", user.getName());
jsonUser.put("push_token", user.getPush_token());
jsonUser.put("user_pic", user.getUser_pic());
jsonUser.put("userWishList", ObjectifyService.ofy().load().refs(user.getUserWishList()).values());
return Response.status(200).entity((jsonUser.toString())).build();
此代码在localhost上正常工作,但在部署后不会正常工作,发生stackoverflow:
Caused by: java.lang.StackOverflowError
at java.security.ProtectionDomain.implies(ProtectionDomain.java:300)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:462)
at java.security.AccessController.checkPermission(AccessController.java:698)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.reflect.Method.invoke(Method.java:47)
at org.json.JSONObject.populateMap(JSONObject.java:1167)
at org.json.JSONObject.<init>(JSONObject.java:281)
我不知道为什么会出现这种情况,在localhost上我调试了它并正常工作,因为它应该也是我看不到任何递归调用这个错误,也许lib间接地做这个。 任何帮助将非常感激!
答案 0 :(得分:0)
如果相同的代码在不同的环境中产生不同的结果(例如:StackOverflowError),您应该查看JVM的配置。
例如,堆栈的大小在不同的JVM上可能会有所不同。您可以增加堆栈的大小,以允许更多的调用。根据安装的Java虚拟机(JVM),默认线程堆栈大小可能等于512KB或1MB。您可以使用-Xss标志增加线程堆栈大小。可以通过项目配置或命令行指定此标志。