我试图在服务器端实现类中读取Cookie值。经过一些调试后,我的代码现在看起来像这样:
logger.info("Initiating login");
String oracleDad;
try {
logger.info("inside try");
oracleDad = Cookies.getCookie("dad");
logger.info("Read dad from cookie: " + oracleDad);
} catch (Exception e) {
logger.error("Failed to read dad from cookie", e);
oracleDad = "gtmd";
}
当我执行此代码时,我的onFailure块被触发,状态代码为Exception:
com.google.gwt.user.client.rpc.StatusCodeException:500电话 在服务器上失败;有关详细信息,请参阅服务器日志
服务器上的日志输出如下所示:
[INFO] c.g.e.server.rpc.MyProjectImpl - Initiating login
[INFO] c.g.e.server.rpc.MyProjectImpl - inside try
在Cookies.getCookie()调用之后,记录器,INFO或ERROR都不可能触发?我希望通过添加catch(例外e),我会得到一些错误消息,解释代码失败的原因。但执行似乎无声无息。
我正在使用com.google.gwt.user.client.Cookies。我认为客户端代码可以在服务器上运行,反之亦然。那是对的吗?还有其他我想念的东西吗?
答案 0 :(得分:1)
我正在使用com.google.gwt.user.client.Cookies。我认为客户端代码可以在服务器上运行,反之亦然。那是对的吗?还有其他我想念的东西吗?
不,这是不对的,是的,你有一些缺失:服务器代码无法在客户端上运行,和客户端代码无法在服务器上运行。
您没有获得Exception
。您收到了Error
或其他Throwable
。
尝试在try / catch块中捕获Throwable
,并且您将看到服务器JVM无法加载Cookies
类时出现错误,因为出现了错误。 JVM认为缺少本地库(因为它不知道JSNI是什么或如何运行它),所以它抛出UnsatisfiedLinkError
:
如果Java虚拟机无法找到声明为native的方法的适当本机语言定义,则抛出该文件。
在GWT中,Cookies
类旨在与浏览器本身进行交互,以查看在当前加载的页面上定义了哪些cookie。要在J2EE服务器上使用cookie,请向HttpServletRequest
对象询问它知道的cookie及其值。