从WildFly 9(子系统)中运行OkHttpClient

几天前, WildFly 9发布了,可以肯定的重点之一是Undertow Web子系统中对HTTP / 2.0的支持。 由于Hawkular最近已开始使用WildFly 9(从8.2开始)作为其基础服务器,因此尝试将http2用于从Hawkular-Wildfly-Monitor客户端到服务器的连接是很自然的。

这里的一个特点是,在我的情况下,监视器客户端在Hawkular服务器内部运行,但是最后它是在独立的WildFly服务器内部还是Hawkular服务器内部运行都没有关系。

设置

Greg Autric写了一篇博客文章,展示了如何使用脱机CLI在WildFly中设置Http2 ,这在Hawkular情况下也能很好地工作。

帖子中唯一有问题的是,在启动服务器之前设置JAVA_OPTS将忽略来自standalone.conf的所有设置,这在当前的Hawkular版本中将阻止总线代理的正确启动(因为IPv4Only标志为丢失)。

因此,我认为最好修改standalone.conf以将这些选项“添加”到已经存在的其他选项中:

JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:/opt/hawkular-1.0.0.Alpha3-SNAPSHOT/alpn-boot-8.1.3.v20150130.jar"JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"

现在,当我启动Hawkular服务器并尝试在https端口上与FireFox连接时,我会收到有关自签名证书的警告,但是可以按照Greg的帖子中的说明通过Http2连接进行连接并获取UI。

运行OkHttpClient

如前所述,WildFly监视客户端是WildFly服务器内部的子系统。 我写了一些客户端代码,该代码正在子系统中运行(缩短):

OkHttpClient httpClient;httpClient = new OkHttpClient();// DO NOT USE IN PRODUCTION, allow all hostnameshttpClient.setHostnameVerifier(new NullHostNameVerifier());setKeystore(httpClient); // Use custom ssl factoryString uri = "https://...:8443/";Request request = new Request.Builder().url(uri).addHeader("Accept", "application/json").get().build();// sync execution just for the postResponse resp = httpClient.newCall(request).execute();System.out.println(resp.toString());

失败?

除了总是使用Http(s)/1.1且从不使用Http2的事实(从最后一个println语句的输出中可以看到)之外,这段代码行之有效:

Response{protocol=http/1.1, code=204, message=....}

我一直在尝试各种选择,直到我认为必须将代码提取到独立的Java SE类中才能更好地进行隔离调试。

我编写了该类,设置了bootclasspath,然后运行它,它运行良好:

Response{protocol=h2, code=204, message=....}

那么区别是什么呢? 我删除了ALPN的bootclasspath设置,然后重新运行,连接恢复为http / 1.1。

这有点奇怪,因为我的客户端子系统在同一台WilFly服务器中运行,该服务器运行Undertow,并且能够处理http2请求,并且在较早的时候通过JAVA_OPTS添加了ALPN类。

现在请记住,WildFly正在使用他们自己的类加载器系统(jboss-modules),该系统在隔离部署和类并限制其可见性和/或泄漏到不应该看到它们的区域时非常强大。

实际上,这也是这里发生的事情。

成功!

因此,我必须将ALPN类显式添加到监视客户module.xml文件中:

<module xmlns="urn:jboss:module:1.3" name="${moduleName}"><resources><resource-root path="clients-common.jar"/>[...]<resource-root path="okhttp.jar"/><resource-root path="okio.jar"/></resources><dependencies><!-- modules required by any subsystem --><module name="javax.api"/>[...]<system export="true"><paths><!-- Needed for HTTP2 and SPDY support--><path name="org/eclipse/jetty/alpn"/></paths></system></dependencies></module>

从上面的代码片段中,您可以看到okhttpokio jar打包在模块中,并且也可用于我的客户端代码。

现在,已经对module.xml进行了调整,并且我的子系统正在使用Http2 :-)

翻译自: https://www.javacodegeeks.com/2015/07/running-okhttpclient-from-within-wildfly-9-subsystem.html

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

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

相关文章

oracle19c方言,JFinal框架操作oracle数据库

JFinal框架操作oracle数据库&#xff0c;需要在configPlugin()方法中配置链接oracle数据库的相关配置配置JFinal数据库操作插件&#xff0c;configPlugin方法这里我加载jdbc.properties配置文件实在configConstant加载的Overridepublic void configConstant(Constants me) {loa…

个税社保

资料来源&#xff1a;http://finance.qq.com/cross/20160218/H9cM96A8.html?pgv_refaio2015&ptlang2052转载于:https://www.cnblogs.com/weikang/p/5200832.html

前端程序员如何选择适合自己的培训机构

web前端开发培训哪家好这个主要是根据自己的情况来选择&#xff0c;本篇文章主要分享怎么选择适合自己的培训机构市场上有哪些培训机构以及所在位置既然关心哪家培训机构好&#xff0c;基本都是有报班学习的意向&#xff0c;所以就不多说自学和报班的区别了&#xff1b;我是不排…

linux c文件属性,【linux c learn 之stat】获取文件的属性

NAMEstat 获取文件属性这个函数位于头文件里函数原型&#xff1a;int stat(const char *path, struct stat *buf);參数&#xff1a;path 文件路径文件名称buf 指向buffer的指针返回值&#xff1a;-1 遇到错误0 成功返回函数作用&#xff1a;把path文件的信息拷贝到指…

!function(){}()

http://my.oschina.net/u/2331760/blog/468672?p{{currentPage1}} ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法&#xff0c;最初我以为是一个括号包裹匿名函数&#xff0c;再在后面加个括号调用函数&#xff0c;最后达到函数定义后立…

altium designer 10哪个作者写的好 。

问题截图&#xff1a; 博主解答&#xff1a; 其实这种书籍基本内容都差不多&#xff0c;很多都是作者来回借鉴&#xff0c;我们能根据自己的需要学到知识即可。

orm查询部分字段_ORM问题第2部分–查询

orm查询部分字段在我以前关于对象关系映射工具&#xff08;ORM&#xff09;的帖子中&#xff0c;我讨论了在处理当今常见的ORM&#xff08;包括Hibernate&#xff09;时遇到的各种问题。 其中包括与从POJO生成架构有关的问题&#xff0c;实际性能和不断出现的维护问题。 本质上…

新浪微博开发-添加子视图控制器设置颜色

一.添加子视图控制器 二.设置颜色 设置颜色&#xff1a;两种方法 一种较为繁琐&#xff0c;详见视频 第二种&#xff1a; //设置颜色 self.tabBar.tintColor UIColor.orangeColor()转载于:https://www.cnblogs.com/torrescx/p/5237142.html

linux ssh无需密码,linux下 ssh 实现无需密码的远程登陆

主机A(OpenSUSE12.1):119.78.222.95主机B (Fedora16): 202.122.25.361.主机A:生成秘钥对id_rsa和id_rsa.publinux-9juc:~ # ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Created directory /root/.ssh.…

Android studio的sdk tools下没有LLDB的解决办法

粉丝提问&#xff1a; 博主解答: 解决办法&#xff1a; 点击setting--》plugins--》找到“Android Support”选项&#xff0c;并勾选&#xff0c;然后会提示重启android studio &#xff0c;点击重启&#xff0c;ok&#xff0c;如果已经设置好SDK的路径的话&#xff0c;问题解…

随机JCache内容:多个提供程序和JMX Bean

JCache&#xff08;JSR 107&#xff09;是用于缓存的Java标准…足够了。 没有更多介绍性的东西。 这是一则速成文章&#xff0c;内容涉及 多个JCache提供程序配置&#xff0c;以及 功能&#xff1a;通过JMX Mbeans的JCache统计信息 管理多个JCache提供程序 如果您只使用一个…

HDU 2222 ac自动机模板

题意: 求n个模板串在匹配串中出现了几个. SOL: 反正就是模板啦...似乎比KMP都简单----这么说似乎有点不道德...毕竟先看的KMP而他们并没有什么不同... 貌似自己的理解和他们画的图还是有些出入......不虚慢慢看... 然后就是特殊一点的一个last数组,可以比较迅速地找到包含的子串…

linux下spi添加设备,Linux Kernl添加spidev的设备节点

一、spidev介绍如果在内核中配置spidev&#xff0c;会在/dev目录下产生设备节点&#xff0c;通过此节点可以操作挂载在该SPI总线上的设备。用户空间通过该节点可以访问内核空间。二、配置spidev设备步骤在i.MX6&#xff0c;Kernel 4.1.15上配置spidev的支持。1、配置dts支持spi…

Android studio Jin开发生成so文件的具体步骤

粉丝提问&#xff1a; 博主解答&#xff1a; 帖子链接&#xff1a;https://blog.csdn.net/wangsfine/article/details/51445199

linux中改变文件大小,Linux 改变文件大小的方法

函数原型&#xff1a;#include int ftruncate(int fd, off_t length); //改变文件大小为length指定大小;返回值 执行成功则返回0&#xff0c;失败返回-1。函数ftruncate会将参数fd指定的文件大小改为参数length指定的大小。参数fd为已打开的文件描述词&#xff0c;而且必须是以…

Ubuntu下使用SVN

Ubuntu下使用SVN SVN作为日常开发中不可缺少的工具&#xff0c;今天终于开始在Ubuntu下使用了。 1、首先需要安装SVN。Ubuntu下的SVN安装十分简单&#xff0c;sudo apt-get install subversion&#xff0c;然后根据提示一步一步&#xff0c;就完成了SVN的安装&#xff1b; 2、检…

apktool重新打包,error:No resource identifier found for attribute ‘compileSdkVersionCodename‘ in package

报错日志:AndroidManifes.xml :1 error:No resource identifier found for attribute compileSdkVersionCodename in package ‘android’ 粉丝提问: 报错图: 博主解答:

linux弹性网卡,将弹性网卡附加到 ECS 实例上之后如何配置弹性网卡

本文在介绍将弹性网卡附加到 ECS 实例上之后如何配置弹性网卡的基础上&#xff0c;重点探讨了其具体步骤&#xff0c;本文内容很紧凑&#xff0c;希望大家耐心学习。配置 ECS 实例的弹性网卡如果您的实例使用以下几种镜像&#xff0c;您不需要手工配置弹性网卡(ENI)&#xff1a…

vaadin_嵌入式码头,Vaadin和焊接

vaadin当我开发Web应用程序时&#xff0c;我希望能够从Eclipse快速启动它们&#xff0c;而不必依赖各种重量级的tomcat或glassfish插件。 因此&#xff0c;我经常要做的就是创建一个可以直接从Eclipse直接运行的基于Java的简单Jetty启动器。 该启动器会在几秒钟内启动&#xff…

终端-进入云服务器

解决办法: 1.先进入管理员模式: 2.下一步&#xff0c;链接服务器。 3.已经连接上服务器&#xff1a; 4.找到云服务器的项目路径: 在这里&#xff1a; 我们可以在cd空格/ 按Tab寻找下个文件夹&#xff0c;也可以输入ls查看文件夹。转载于…