自定义cookie会话持久性

时间:2016-01-11 17:57:30

标签: session cookies weblogic persistence

在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());

但我不想进行这些更改,因为许多其他此类数字字段都设置为会话属性。

1 个答案:

答案 0 :(得分:0)

当您切换到自定义cookie时,WebLogic开始使用其他类来管理会话。不幸的是,这个类对setAttribute方法进行了字符串检查,如下面的文档中所述:

https://docs.oracle.com/cd/E13222_01/wls/docs103/webapp/sessions.html#wp139726

“您只能在会话中存储字符串属性。如果在会话中存储任何其他类型的对象,则会抛出IllegalArgument异常。”