在weblogic中,因为我需要会话管理的自定义cookie名称,所以我在weblogic.xml中使用了以下内容
<session-descriptor>
<timeout-secs>7200</timeout-secs>
<cookies-enabled>true</cookies-enabled>
<persistent-store-type>cookie</persistent-store-type>
<persistent-store-cookie-name>MY_PARAM</persistent-store-cookie-name>
</session-descriptor>
在将数字放入会话的语句中出现以下错误...
java.lang.IllegalArgumentException: Cookie based sessions support
attributes of
type "String" only; could not set attribute: CUSTID
at
weblogic.servlet.internal.session.CookieSessionData.setAttribute(Cook
ieSessionData.java:63)
之前使用自定义Cookie名称进行持久性工作正常。我错过了什么吗?我该怎么做才能避免因自定义cookie名称要求而导致的代码更改 的更新:
myCustId是一个数字,我试图把它放在CUSTID会话attributr中:
session.setAttribute("CUSTID", myCustId);
因此,在出现上述错误后,如果我更改下面的代码,问题就解决了。
session.setAttribute("CUSTID", myCustId.toString());
但我不想进行这些更改,因为许多其他此类数字字段都设置为会话属性。
答案 0 :(得分:0)
当您切换到自定义cookie时,WebLogic开始使用其他类来管理会话。不幸的是,这个类对setAttribute方法进行了字符串检查,如下面的文档中所述:
https://docs.oracle.com/cd/E13222_01/wls/docs103/webapp/sessions.html#wp139726
“您只能在会话中存储字符串属性。如果在会话中存储任何其他类型的对象,则会抛出IllegalArgument异常。”