使用 APISpark Restlet 扩展限制对 Restlet 资源的请求

2024-04-14

这是我限制分钟请求数量的代码:

        MethodAuthorizer ma = createMethodAuthorizer();
        ma.setNext(router);

        FirewallRule rule = new PeriodicFirewallCounterRule(60, TimeUnit.SECONDS, new IpAddressCountingPolicy());
        ((PeriodicFirewallCounterRule)rule).addHandler(new RateLimitationHandler(new UniqueLimitPolicy(10)));
        FirewallFilter firewallFiler = new FirewallFilter(getContext(), list(rule));
        firewallFiler.setNext(ma);

        return ma;

问题是没有错误,但即使从资源请求超过 10 个请求,它仍然不会抛出“Too Many Request”


我使用 GAE 项目中的配置代码和开发服务器使其工作。

我使用了Restlet 2.3.1版本/GAE 1.9.18版本以及以下代码作为客户端:

public static void main(String[] args) {
    int i = 0;
    try {
        while (i < 30) {
            ClientResource cr = new ClientResource("http://localhost:8080/test");
            Representation repr = cr.get();
            System.out.println(">> call #"+i);
            Thread.sleep(100);

            i++;
        }
    } catch (Exception ex) {
        System.out.println(">> call #" + i + " failed");
        ex.printStackTrace();
    }
}

在第 10 次通话后出现以下异常:

>> call #0
>> call #1
>> call #2
>> call #3
>> call #4
>> call #5
>> call #6
>> call #7
>> call #8
>> call #9
>> call #10 failed
429 (429) - The server is refusing to service the request because the user has sent too many requests in a given amount of time ("rate limiting")
    at org.restlet.resource.ClientResource.doError(ClientResource.java:590)
    at org.restlet.resource.ClientResource.handleInbound(ClientResource.java:1153)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1048)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1023)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:928)
    at org.restlet.resource.ClientResource.get(ClientResource.java:636)
    at org.restlet.gae.test.GaeRestletClient.main(GaeRestletClient.java:15)

希望对你有帮助, 蒂埃里

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 APISpark Restlet 扩展限制对 Restlet 资源的请求 的相关文章

  • 声纳违规:安全性 - 使用 byte[] 时直接存储数组

    我确实遇到过以下两篇关于类似问题的帖子声纳违规 https stackoverflow com questions 11580948 sonar violation security array is stored directly and
  • 谁能解释一下 servlet 映射吗?

    我正在尝试使用 SpringMVC 编写一个 Web 应用程序 通常我只是将一些虚构的文件扩展名映射到 Spring 的前端控制器并快乐地生活 但这次我要使用类似 REST 的 URL 没有文件扩展名 将我的上下文路径下的所有内容映射到前端
  • eclipse juno 打开时出错

    在安装 Eclipse 并正常工作一年多后 我今天打开 Eclipse Juno 并在打开工作区时收到一条错误消息 我使用的是 Windows 8 64 位 Java 64 位和 Eclipse 64 位 此后我尝试重新安装 Java 和
  • Java 弱哈希映射 - 需要根据值的弱点而不是键来删除条目

    所以JavaWeakHashMap让我们创建一个映射 如果其键变弱 则删除该映射的条目 但是我怎样才能创建一个Map 当它的条目被删除时values地图上变弱了 我想使用映射的原因是作为全局哈希表 它根据对象的 ID 跟踪对象 ID gt
  • 如何用Java创建图像

    比如说在我的程序中 我有这个paint 方法 我的愿望是创建所绘制的矩形的图像 使用 for 循环 我尝试了下面的方法 它确实给了我那些矩形 蓝色 但背景是全黑的 当我运行程序而不创建图像 仅在 JFrame 上绘制矩形时 背景为白色 我怎
  • @NotNull.List 的目的

    当我查看标准时限制条件 http docs oracle com javaee 6 api javax validation constraints package summary html在 Bean Validation API JSR
  • 将二进制数据的 byte[] 转换为 String

    我有二进制格式的数据 hex 80 3b c8 87 0a 89 我需要将其转换为字符串 以便通过 Jackcess 将二进制数据保存在 MS Access 数据库中 我知道 我不打算在 Java 中使用 String 来存储二进制数据 但
  • (Java) 在 Mac OS X 上以编程方式访问“系统根目录”下的 SSL 证书

    我正在编写一个 Java 应用程序 它可以通过远程 Https 站点进行 REST Api 调用 远程站点由受信任的证书签名 它在 Windows 上运行良好 但由于 SSL 证书问题 在 OS X 上运行时遇到问题 我做了一些挖掘 发现原
  • 从 org.w3c.dom.Node 获取 Xpath

    我可以从 org w3c dom Node 获取完整的 xpath 吗 假设当前节点指向 xml 文档中间的某个位置 我想提取该元素的 xpath 我正在寻找的输出 xpath 是 parent child1 chiild2 child3
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • Spring @Value 添加验证小于

    我使用以下属性值注入 我如何向此操作添加小于验证 我的意思是我想设置一个验证user maxpassiveday可以说 财产价值不得低于 100 Value user maxpassiveday int maxpassiveday 使用Sp
  • 比较和删除列表和数组java中不存在的元素

    我有一个String数组和一List
  • 如何在 Ivy 中使用不同的分类器下载多个 Maven 依赖项?

    我试图依靠Neo4j 服务器 jar http repo neo4j org content repositories snapshots org neo4j app neo4j server 1 5 SNAPSHOT neo4j serv
  • EclipseLink 2.7.0 和 JPA API 2.2.0 - 签名不匹配

    当运行由maven构建的具有以下依赖项的项目时
  • 为什么jdk中没有ConcurrentLinkedHashMap类?

    这个问题直接接着问从我之前的问题来看 https stackoverflow com q 12299731 1527084 我想我的第二个问题的答案是否定的 所以我想了解为什么 java util concurrent 包中没有 Concu
  • 有时 Properties.load() 会跳过行

    在以下情况下 Properties load 会跳过 InputStream 的第二行 这是 Java 的错误还是正常行为 public class PropTest public static void main String args
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • 如何将多部分文件从另一个服务发送到一个服务

    我有两个端点 api 它们是 uploadand 重定向 upload是我直接上传文件的地方 重定向是我接收文件并将其传递给上传并获取 JSON 响应的地方 upload 所以下面是我的代码 package com example impo
  • 如何确保超类的子类方法的线程安全?

    我参加了一次面试 并被要求为以下要求设计一个课程 假设我有一个 A 类 它可以有任意数量的子类 即子类 类 A 有一个名为 doSomething 的方法 该方法是同步的 要求是 A 的所有子类都是强制性的重写 doSomething me
  • javafx中的stackpane和root有什么区别?

    我正在练习javafx做饼图 以下是开发饼图的代码 如果我这样做Group并与StackPane 我发现输出没有区别 我已经评论了组部分 只是徘徊两者之间的区别 import javafx application Application i

随机推荐

  • Firebase身份验证:如何获取当前用户的密码?

    我是新来的火力地堡身份验证 所以 我正在创建一个带有配置文件的基本应用程序 我做了一个活动来编辑用户的基本信息 例如DisplayName and Email 我不想添加更改密码的功能 但首先 我不想检查当前用户的密码并将其与String从
  • 如何在linux中查找包含字符串的行[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Linux 中有一个文件 我想显示该文件中包含特定字符串的行 该怎么做 通常的方法是使用grep https linux die n
  • Android 4.0 添加日历和事件

    我想在android 4 0及以上版本的设备中添加日历事件 目前我正在使用以下代码添加事件 if android os Build VERSION SDK INT lt 7 Uri calendars Uri parse content c
  • 如何使用摄像头直播作为活动背景?

    我正在尝试制作一个应用程序 其中我需要使用相机实时馈送作为背景 我知道这是一件愚蠢的事情 但无能为力 这是客户的要求 我尝试过使用SurfaceView但到目前为止还没有成功 到目前为止 我在 Stack Overflow 上发现的更多内容
  • 从conda为pip3创建requirements.txt

    我通常使用 conda 来管理我的环境 但现在我正在进行的项目需要比我的笔记本电脑更多的马力 因此 我尝试使用我大学的配备新英特尔至强处理器的工作站 但我没有管理员权限 而且工作站没有 conda 所以我被迫使用 virtualenv 和
  • 公共运算符 new、私有运算符删除:使用 new 时出现 C2248“无法访问私有成员”

    类具有重载运算符new and delete new是公开的 delete是私人的 在构造此类的实例时 出现以下错误 pFoo new Foo bar example cpp 1 错误 C2248 Foo operator delete 无
  • Android IAB 错误 - 需要身份验证

    我在我的应用程序中测试 In App Billing v3 时遇到问题 我无法使用测试帐户购买任何东西 它总是向我显示一个 Play 商店对话框 Error Authentication is required You must log i
  • Clang 和二进制折叠表达式 — 空参数包的诅咒

    具体来说 Clang 3 6 0 目前由 Coliru 托管 所有这些片段都是从以下位置调用的 int main foo std cout lt lt n n foo 1 2 3 以下代码 template
  • XAML 编辑器的黑色背景

    我目前正在开发一个具有白色文本和透明背景的用户控件 不幸的是 因为 VS2010 中的 XAML 设计视图具有白色背景 所以我看不到我正在设计的任何内容 我已经浏览了我能想到的所有设置对话框 但一直无法找到更改 XAML 设计器背景颜色的设
  • Android:多次播放 AudioTrack 会导致崩溃

    我正在尝试使用 AudioTrack 播放音频缓冲声音 wav 请参阅下面的代码 我需要在Thread下调用这个函数来支持同时播放 在线程下很好 正常播放声音效果很好 但是 如果我连续使用 AudioTrack 执行播放声音 即在完成第一个
  • 点冻结与点列表

    为什么pip list生成比以下更全面的列表pip freeze pip list feedparser 5 1 3 pip 1 4 1 setuptools 1 1 5 wsgiref 0 1 2 pip freeze feedparse
  • 对于大文件,使用 dataURI 创建 iframe 失败,有解决方法吗? [复制]

    这个问题在这里已经有答案了 function openNewWindow strPreviewId let newWindowViewer window open var index mapPreviewIdWithFile strPrev
  • 同一浏览器中不同用户的 Cookie

    网站页面上有一些下拉菜单 用户只有在经过身份验证后才能访问此页面 我想将此值保存到 cookie 中 并在用户返回我的网站时将其设置回下拉菜单 将当前选择的下拉选项值保存到 cookie 并稍后检索它不是问题 但是 如果我由另一个用户在同一
  • 如何在 LaTeX 中扩展文章文档类?

    我真的不需要对默认文章文档类进行大量更改 我想要的只是 重新定义页边距 我希望它们在所有页面上都相同 但与默认值不同 使用扉页 在标题页上添加更多元素 title author and date对我来说还不够 我想要company和公司lo
  • Android 版本是否有最小堆大小?

    许多帖子都谈到了 Android 堆大小 到目前为止我发现最大堆大小的唯一共同点是它至少为 16MB 但这是自 API 3 以来的限制 为了使用更多内存 人们会建议使用 NDK 或任何超出 正常 Android 开发的东西 是否有任何 An
  • 如何更改 d3 图例条目间距/对齐方式

    我有这样一个传说 如您所见 每个图例条目的宽度相同 相反 我希望每个图例条目的宽度根据条目符号和文本的宽度而变化 最终 我希望前导条目文本的末尾与后续条目符号的开头之间的距离相同 换句话说 我希望 OA 和加号之间的距离与 OI 和菱形以及
  • codeigniter 标头中重复的“set-cookie: ci-session”字段

    每次在我的控制器中使用 this gt session gt set userdata 或 this gt session gt set flashdata 时 另一个相同的 Set Cookie ci session 会添加到 http
  • 外键必须映射到概念侧参与外键关联的某些 AssociationSet 或 EntitySet

    我试图在实体框架中使用一对一 主 详细 关系 但是 我收到此错误 从第 254 443 行开始映射片段时出现问题 外键约束 options Advanced FK00 从表 options Advanced ProductID 到表 pro
  • 外部 VS2013 构建错误“错误 MSB4019:找不到导入的项目 <路径>”

    我使用 CMake 文件从命令 proms 构建一个项目 该项目可以找到here http www adobe com devnet xmp html 在构建时我遇到以下错误 C Users User Desktop XMP Toolkit
  • 使用 APISpark Restlet 扩展限制对 Restlet 资源的请求

    这是我限制分钟请求数量的代码 MethodAuthorizer ma createMethodAuthorizer ma setNext router FirewallRule rule new PeriodicFirewallCounte