每个客户使用Jersey处理的Cookie

许多REST服务会将cookie用作身份验证/授权方案的一部分。 这是一个问题,因为默认情况下,旧的Jersey客户端将使用单例CookieHandler.getDefault ,大多数情况下,该示例将为null,如果不为null,则在多线程服务器环境中不太可能工作。 (这是因为默认情况下,默认的Jersey客户端将使用URL.openConnection)。

现在,您可以使用针对Jersey的Apache HTTP客户端适配器来解决此问题; 但这并不总是可用。 因此,如果您想在服务器环境中将Jersey客户端与cookie一起使用,则需要做一些反思,以确保您使用自己的私有cookie jar。

final CookieHandler ch = new CookieManager();Client client = new Client(new URLConnectionClientHandler(new HttpURLConnectionFactory() {@Overridepublic HttpURLConnection getHttpURLConnection(URL uRL) throws IOException {HttpURLConnection connect = (HttpURLConnection) uRL.openConnection();try {Field cookieField = connect.getClass().getDeclaredField("cookieHandler");cookieField.setAccessible(true);MethodHandle mh = MethodHandles.lookup().unreflectSetter(cookieField);mh.bindTo(connect).invoke(ch);} catch (Throwable e) {e.printStackTrace();}return connect;}}));

仅当您的环境使用JDK随附的sun.net.www.protocol.http.HttpURLConnection的内部实现时,此方法才有效。 对于WLS的现代版本,情况似乎如此。

对于JAX-RS 2.0,可以使用Jersey 2.x特定的ClientConfig类和HttpUrlConnectorProvider进行类似的更改。

final CookieHandler ch = new CookieManager();Client client =ClientBuilder.newClient(new ClientConfig().connectorProvider(new HttpUrlConnectorProvider().connectionFactory(new HttpUrlConnectorProvider.ConnectionFactory() {@Overridepublic HttpURLConnection getConnection(URL uRL) throws IOException {HttpURLConnection connect = (HttpURLConnection) uRL.openConnection();try {Field cookieField = connect.getClass().getDeclaredField("cookieHandler");cookieField.setAccessible(true);MethodHandle mh = MethodHandles.lookup().unreflectSetter(cookieField);mh.bindTo(connect).invoke(ch);} catch (Throwable e) {e.printStackTrace();}return connect;}})));

2015年2月11日更新:在某些情况下,尤其是使用https,我看到HttpURLConnection封装在另一个类中,要解决此问题,只需使用反射即可访问委托字段的值。 我已经更新了代码示例以反映此问题。

翻译自: https://www.javacodegeeks.com/2015/02/per-client-cookie-handling-jersey.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

domino从Excel导入数据

HTML部分—————————————————————————————————————————————— 1 <table style"WIDTH: 99%; BORDER-COLLAPSE: collapse" class"linkeytable"> 2 <tbody> 3 <tr> 4 <td width"15%&qu…

uniapp 微信小程序打包 vendor.js过大 导致打包超过2M

1、分包加载&#xff0c;小程序限制一个包2M&#xff0c;可以分9个子包&#xff0c;整包共计不能超出20M&#xff0c;这一步很简单&#xff0c;如果看文档感觉枯燥的可以参考uview框架的demo&#xff0c;因为这个demo就使用了小程序的分包机制&#xff0c;demo链接&#xff08;…

JVMTI标记如何影响GC暂停

这篇文章分析了为什么Plumbr Agents在某些情况下以及如何延长GC暂停的时间。 对基本问题进行故障诊断揭示了有关在GC暂停期间如何处理JVMTI标记的有趣见解。 发现问题 我们的一位客户抱怨说&#xff0c;附加了Plumbr代理后&#xff0c;应用程序的响应速度明显降低。 通过分析G…

[置顶] 状态压缩DP 简单入门题 11题

1.每一行用一个二进制数表示&#xff0c; 有些二进制数是题目中不合法的状态&#xff0c;我们可以预处理出一行合法状态的个数&#xff0c;在递推的过程中复杂度就会大大降低。 POJ 3254 Corn Fields codePOJ 3311 Hie with the Pie codeHDU 4539…

Css fade()函数降低颜色变量透明度

primary-color颜色变量 background-color: fade(primary-color, 20%);

使用Apache Hadoop计算PageRanks

目前&#xff0c;我正在接受Coursera的培训“ 挖掘海量数据集 ”。 我对MapReduce和Apache Hadoop感兴趣已有一段时间了&#xff0c;通过本课程&#xff0c;我希望对何时以及如何MapReduce可以帮助解决一些现实世界中的业务问题有更多的了解&#xff08;我在这里介绍了另一种解…

React 解决鼠标移入子元素触发父元素的mouseout事件

方法一、 用mouseleave/mouseenter代替mouseover/mouseout【最佳方法】 mouseover 与 mouseenter: mouseover > 不论鼠标指针穿过被选元素或其子元素&#xff0c;都会触发 mouseover 事件。 mouseenter > 只有在鼠标指针从元素外穿入被选元素&#xff08;到元素内&#…

分享一篇关于奇异值分解的文章[Eng]

原文地址&#xff1a;http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/ One day, a bunch of friends, who happened to be big Family Guy fans, decided to put together a site to rank and share their thoughts on the show. Soon thereafter they h…

Java 8陷阱–提防Files.lines()

Java8中有一个非常不错的新功能&#xff0c;它允许您在一个衬里中从文件中获取字符串流。 List lines Files.lines(path).collect(Collectors.toList());您可以像对待任何其他Stream一样操作Stream&#xff0c;例如&#xff0c;您可能想要filter&#xff08;&#xff09;或ma…

为雅安祈福

四川是个多灾多难的省份&#xff0c;更是个多地震的省份&#xff0c;十年之内发生了两次大地震。我们能做的就是为雅安的人们祈福。 淘宝给互联网带头了&#xff1a; 天猫也跟着祈福了&#xff0c;因为他们都属于阿里巴巴&#xff0c;这里就不上图了。 百度作为国内互联网企业的…

在运行时打开GC日志记录

总是有下一个JVM表现不佳。 而且&#xff0c;您内心深知&#xff0c;如果您只有少数启动选项可以公开一些有关正在发生的事情的信息&#xff0c;那么您可能就有机会真正修复该死的东西。 但是不&#xff0c;您需要的标志&#xff08; -XX&#xff1a; HeapDumpOnOutOfMemoryErr…

jpannel设置位置xy_实用的摄影技巧!10种常见摄影场景的单反相机设置技巧!

相机是爱拍一族必不可少的东西&#xff0c;对于摄影爱好者对于一些相机设置技巧可能也不是太了解&#xff0c;在摄影过程中&#xff0c;有很多的场景需要不同的设置&#xff0c;根据光线变化和周围环境&#xff0c;一般来说都会特定的摄影技巧&#xff0c;今天红视觉和大家一起…

搞清楚固件库版本

1.自己联系代码&#xff0c;MDK中用的固件库是V3.5&#xff1b; 2.UM0427 manual的pdf是低版本的 3.注意版本之间的变化 4.固件库里面有.CHM的手册&#xff0c;多看。转载于:https://www.cnblogs.com/itloverhpu/archive/2013/04/21/3033355.html

Hazelcast入门指南第6部分

这是有关Hazelcast的一系列文章中的第六篇。 如果一个人没有看过过去的五年&#xff0c;请到表中的内容后 &#xff0c;我创建赶上。 本地客户 在上一篇文章之后&#xff0c;我决定要去本地化。 是的&#xff0c;我将演示Hazelcast自己的Java客户端。 Java不是唯一的本地客户端…

Only digits (0-9) can be put inside [] in the path string: formData.XXX

使用uniapp开发时微信小程序中爆出的问题&#xff0c;问题在于form表单组件中绑定表单值,去除报错值则正常。 解决办法如下&#xff1a; 修改注释行内容&#xff0c; 转载连接

用Maven管理JavaScript资源

Maven用来管理Java类库之间的依赖已经非常普遍了。最近有一直在做JavaScript的开发&#xff0c;就突然想提问自己是不是也可以考虑用Maven的机制来管理JavaScript的依赖。 Google了一下&#xff0c;发现了一篇文件覆盖了我的想法。 http://ajaxian.com/archives/using-maven-to…

嵌套类型的前5个用例

前几天&#xff0c;在reddit上进行了有趣的讨论&#xff0c;即静态内部类。 什么时候太多&#xff1f; 首先&#xff0c;让我们回顾一下Java的基本历史知识。 Java语言提供了四个级别的嵌套类 &#xff0c;通过“ Java语言”&#xff0c;我的意思是这些构造仅是“语法糖”。 它…

外包以小时计算金额的费用_2020年初级会计各大税种的计算公式,请收藏!

一、各种税的计算方式增值税1、一般纳税人应纳税额销项税额—进项税销项税额销售额税率组成计税价格成本(1成本利润率)组成计税价格成本(1成本利润率)(1-消费税税率)2、进口货物应纳税额组成计税价格税率组成计税价格关税完税价格关税(消费税)3、小规模纳税人应纳税额销售额征收…

VSCode设置ESLint语法检查

转载 "eslint.validate": ["javascript","javascriptreact","vue-html",{"language": "vue","autoFix": true}],"eslint.run": "onSave","eslint.autoFixOnSave": true…