当我将数据插入表(db2)时,我收到此错误:
Message: Operation not allowed for reason code "7" on
table "ELSAG.ICGR1106".. SQLCODE=-668, SQLSTATE=57016, DRIVER=3.50.152,...
Run Code Online (Sandbox Code Playgroud)
当我用Google搜索它时,我发现之前的ALTER TABLE语句试图将列添加到具有使用行属性敏感性定义的编辑过程的表中.没有列可以添加到此表.
有没有办法纠正它?
一旦我放下并重新创建表格,我可以再次插入.
提前致谢.
我的任务是向站点管理员显示用户名列表以及每个用户当前使用的 Tomcat 会话数量(以及其他一些与支持相关的信息)。
我将经过身份验证的用户保留为应用程序上下文属性,如下所示(省略不必要的细节)。
Hashtable<String, UserInfo> logins //maps login to UserInfoRun Code Online (Sandbox Code Playgroud)
其中 UserInfo 定义为
class UserInfo implements Serializable {
String login;
private transient Map<HttpSession, String> sessions =
Collections.synchronizedMap(
new WeakHashMap<HttpSession, String>() //maps session to sessionId
);
...
}
Run Code Online (Sandbox Code Playgroud)
每次成功登录都会将会话存储到此sessions映射中。我的HttpSessionsListener实现sessionDestroyed()从该映射中删除了已销毁的会话,如果sessions.size() == 0,则从 中删除 UserInfo logins。
有时我会为某些用户显示 0 个会话。同行评审和单元测试表明代码是正确的。所有会话都是可序列化的。
Tomcat 是否有可能将会话从内存卸载到硬盘驱动器,例如,当有一段时间不活动时(会话超时设置为 40 分钟)?从 GC 的角度来看,是否存在会话“丢失”但未调用 HttpSessionsListener.sessionDestroyed() 的其他情况?
J2SE 6、Tomcat 6 或 7 独立运行,在任何操作系统上的行为都是一致的。