java - 单例 servlet?

标签 java servlets singleton

如果我像这样声明一个单例 servlet

公共(public)静态类 SomeServlet 扩展 HttpServlet {.....

它给出了错误,表明在 NetBeans 中此处不允许修饰符 static。

请告诉我如何创建一次只允许一个客户端执行的单例 servlet。

提前致谢, 马埃斯

最佳答案

  • static 与在任何时间点仅由一个线程执行无关。
  • 您可以将静态类作为内部类,但由于第一点,这对您的问题没有帮助
  • 如果我没记错的话,只有一个 servlet 实例化过,所以没有必要创建单例。 更新:我记错了正如 DefLog 指出的那样
  • 因此同步方法(doGet、doPost、服务或您的实现方法)update: 不会达到目的。

根据您对问题的明确理解(无双关语意),我怀疑这是您应该选择的解决方案。而是改写您的问题,以便您使用您在问题的第一次修订中陈述的解决方案来陈述您试图解决的问题。

更新:请参阅对此答案的评论,了解为什么您真的不想被同步 迷住。您可能(例如)希望让多个 servlet 访问相同的功能一次一个。另外,如果在 servlet 级别进行同步,则会引入严重的缩放问题。这绝对是解决并发问题的错误地方。

关于java - 单例 servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/574798/

相关文章:

java - Spring XML 配置 - 如何定义 Instant、BigDecimal、...参数?

java - 文件不会删除

tomcat - 如何使用 JavaMail/Servlet 机制创建 ConfirmationURL?

ios - Objective C - 单例静态方法覆盖不适用于多个子类

vb.net - Visual Basic 模块 v 单例

java - Docker Cloud 自动构建 - 没有这样的文件或目录

java - 尝试访问 docx 文件中的子节点

java - 在 Apache XMLRPC 环境中获取请求用户的 IP 地址?

java - 什么对象可用于在 Web 应用程序到达 JSP 或 Servlet 之前拦截所有请求?

multithreading - java :singleton, 静态变量和线程安全