实现HttpSession时的弃用警告

时间:2013-04-01 06:40:42

标签: java servlets httpsession

在我尝试实现HttpSession时,我应该覆盖getSessionContext方法。但它会引发不推荐使用的警告,因为该方法及其返回类型HttpSessionContext已被弃用。

@deprecated javadoc标记修复了getSessionContext定义的警告,但无法修复导入HttpSessionContext的警告。在导入之前放置@SuppressWarnings会导致编译错误。

如何修复这两个警告?

代码:

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionContext;

public class MyServletSession implements HttpSession {
    // ...

    /**
     * @deprecated
     */
    @Override
    public HttpSessionContext getSessionContext() {
        throw new UnsupportedOperationException();
    }

    // ...
}

警告:

$ javac -Xlint:deprecation -cp /path/to/javax.servlet-api-3.0.1.jar MyServletSession.java
MyServletSession.java:5: warning: [deprecation] HttpSessionContext in javax.servlet.http has been deprecated
import javax.servlet.http.HttpSessionContext;
                                     ^
1 warning

1 个答案:

答案 0 :(得分:1)

如果您确实需要实现自己的HttpSession,并禁止弃用警告,我相信正确的编译器参数是-Xlint:-deprecation。请注意-

之前的deprecation

编辑:这会删除所有弃用警告,因此如果您尝试仅抑制该类中的警告,则可能不适用。相反,我发现这对我有用:

// Note, no import of javax.servlet.http.HttpSessionContext
import javax.servlet.http.HttpSession;

@SuppressWarnings("deprecation")
public class MySession implements HttpSession {

    /**
     * This javadoc comment, along with the fully qualified name of HttpSessionContex in the method signature seems to do the trick.
     * @deprecated
     */
    public javax.servlet.http.HttpSessionContext getSessionContext() {
    }

    //... All your other methods
}