java – Restlet – 安全地(线程方式)将信息从Filter传递给Resource
作者:互联网
我想将(附加)信息从过滤器传递给资源.
我目前尝试这样做的方式是,在Filter中:
getContext().getAttributes().put("additionalInformation", "info..");
并在资源中检索它:
getContext().getAttributes().get("additionalInformation");
问题:
>这是将数据从过滤器传递到资源的最佳方法吗?
>这样线程是否安全 – 如果两个客户端将接近相同的资源,它们是否都使用相同的上下文?
>如何使用request.getAttributes().put(…)而不是getContext().getAttributes().put(…)?优缺点都有什么?
上下文文档:
Concurrency note: attributes and parameters of a context are stored in
concurrent collections that guarantee thread safe access and modification.
If several threads concurrently access objects and modify these collections,
they should synchronize on the lock of the Context instance.
这是否意味着上下文不是线程安全的?
解决方法:
是的,请求对象是Restlet提供的解决方案,用于使用其属性在请求处理中涉及的所有元素之间交换数据.这可以看作是请求的上下文(并且是为此做出的),并且这种方法确实是线程安全的.
上下文是应用程序中所有元素共享的内容.请求处理(过滤器,服务器资源,…)中涉及的所有元素中的上下文通常是应用程序之一.它不是线程安全的,不应该用于在请求中的元素之间共享数据.
希望它能帮到你,
蒂埃里
标签:java,restlet 来源: https://codeday.me/bug/20190628/1317082.html