Java 实施HttpSession时出现弃用警告

Java 实施HttpSession时出现弃用警告,java,servlets,httpsession,Java,Servlets,Httpsession,当我试图实现HttpSession时,我应该重写getSessionContext方法。但它会引发不推荐使用的警告,因为该方法及其返回类型HttpSessionContext已不推荐使用 @deprecatedjavadoc标记修复了getSessionContext定义上的警告,但无法修复导入HttpSessionContext时的警告。并且在导入之前放置@SuppressWarnings会导致编译错误 如何修复这两个警告 代码: 警告: $ javac -Xlint:deprecation

当我试图实现HttpSession时,我应该重写
getSessionContext
方法。但它会引发不推荐使用的警告,因为该方法及其返回类型
HttpSessionContext
已不推荐使用

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

如何修复这两个警告

代码:

警告:

$ 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

如果您真的需要实现自己的
HttpSession
,并抑制弃用警告,我相信正确的编译器参数是
-Xlint:-弃用
。注意
弃用之前的
-

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

// 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
}

我认为您应该尽量避免使用
HttpSessionContext
。根据javadoc:“不推荐使用。由于安全原因,从Java(tm)Servlet API 2.1开始,不需要更换。该接口将在该API的未来版本中删除。”通常,不推荐使用有一个很好的理由:告诉您,如果您负担得起,您应该遵循任何新的实现来替换不推荐的方法类。否则,用@Override注释标记整个类如何(当然不建议这样做)?为什么要实现HttpSession?你在实现一个容器吗?为什么你需要实现你自己的HttpSession?我在PlayFramework 2.1上使用jgit实现Git存储库托管,而jgit需要PlayFramework 2.1没有的Servlet。因为我认为实现Servlet比将Servlet导入PlayFramework2.1更容易,所以我应该实现Servlet包含HttpSession。我几乎成功了,但只剩下警告。谢谢,但我只想抑制(或修复)警告。哇,即使没有@superswarnings(“弃用”),它也能完美工作。谢谢
// 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
}