Java线程信息传递_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值