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

wildfly

几天前, 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连接时,我收到有关自签名证书的警告,但是可以按照Httpreg的说明通过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 jars打包在模块中,并且也可用于我的客户端代码。

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

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

wildfly

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

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

相关文章

C语言,单片机绕不过的坎,你对C语言内存分配了解多少呢

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删一、static在C语言里面可以用来修饰变量&#xff0c;也可以用来修饰函数。1、 先看用来修饰变量的时候。变量在C语言里面可分为存在全局数据区、…

setcellvalue 格式_POI对Excel单元格的格式的设置参数

最近在做导出Excel的功能封装&#xff0c;遇到了几个问题&#xff1a;单元格宽度问题数据不是数字格式问题格式化了之后显示的不是数字而是######的问题(其实是因为单元格宽度不够导致的无法显示格式化之后的内容)下面先说说解决方法&#xff1a;1、单元格宽度问题这个问题有两…

内存 增量数据持久_内存中数据模型和大数据持久性

内存 增量数据持久ORM框架在需要与关系数据库进行交互时可以帮助开发人员。 对于关系数据库&#xff0c;有许多出色的ORM框架&#xff0c;例如Hibernate和Apache OpenJPA&#xff0c;其中一些确实很棒。 如今&#xff0c;大数据正在涌现&#xff0c;越来越多的人开发在大数据上…

自学编程的6个技巧总结

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删有一天&#xff0c;我的一个在学编程的朋友问我&#xff1a;“我想快速学习编程&#xff0c;你有什么好的推荐吗&#xff1f;”我曾在上大学的时…

python就业班 miniweb框架_mini-web框架

1. 框架概述web框架是一个为web服务器提供服务的应用程序,专门负责处理用户的动态资源请求.静态资源: 资源的内容是固定不变的.动态资源: 资源的内容是动态变化, 数据是从数据库获取的.静态 web 服务器 使用 tcp 传输数据1. 导包 socket2. 创建一个 socket 对象, socket.socket…

java编写应用程序_为您的Java应用程序编写数据驱动的测试

java编写应用程序JUnit是一个功能非常强大的测试框架&#xff0c;它不仅为其用户提供了编写快速简便的测试的功能&#xff0c;而且还为用户提供了扩展它并使其按其期望的方式工作的机会。 在JUnit之上构建了许多框架&#xff0c;这些框架为目标受众提供了各种易用的功能。 Eas…

C语言如何知自身函数的实际地址与大小

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删事情的起因大概是这样……在很久很久以前&#xff0c;我最早用的是MASM&#xff08;Win32ASM&#xff09;写程序&#xff0c;从平台兼容性、开发…

python快速排序算法循环_算法:快速排序的Python实现

一、概述快速排序(quick sort)是一种分治排序算法。该算法首先 选取 一个划分元素(partition element&#xff0c;有时又称为pivot)&#xff1b;接着重排列表将其 划分 为三个部分&#xff1a;left(小于划分元素pivot的部分)、划分元素pivot、right(大于划分元素pivot的部分)&a…

xtext_使用Xtext为Eclipse和IntelliJ开发DSL

xtext在这篇文章中&#xff0c;我们将看到如何开发一种简单的语言。 我们的目标是&#xff1a; 语言的解析器 IntelliJ的编辑器 。 编辑器应具有语法突出显示&#xff0c;验证和自动完成功能 我们还将免费提供Eclipse和Web编辑器的编辑器 &#xff0c;但请包含您的兴奋之处&…

sed 插入多行_Linux三剑客之sed

sed命令用法小记版本&#xff1a;CentOS7▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼好久没更新文章了&#xff0c;项目的事情太多&#xff0c;总得给自己的懒惰找个借口&#xff0c;哈哈~话不多说进入正题创建测试数据[aliscaspark02 a]$ cat data#test the sedThis is the header l…

分享一些超级炫酷的C语言小技巧

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单&#xff0c;并且仍然有一些非常…

使用Apache Cassandra设置SpringData项目

在这篇文章中&#xff0c;我们将使用Gradle和spring boot来创建一个集成spring-mvc和Apache Cassandra数据库的项目。 首先&#xff0c;我们将从Gradle配置开始 group com.gkatzioura version 1.0-SNAPSHOTapply plugin: java apply plugin: eclipse apply plugin: idea appl…

优朋普乐大数据_优朋普乐邵以丁:用大数据全面洞察需求

优朋普乐创始人、董事长兼CEO邵以丁回顾优朋普乐十二年发展历程&#xff0c;数次强调是多年来积累的大数据给优朋普乐的业务拓展指明了方向&#xff0c;有的放矢的决策让企业对未来发展充满信心。大数据为及时发现甚至准确预测消费需求提供了新途径&#xff0c;因为基于相关的大…

C++编程新手容易犯的 10 种编程错误

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删公司每年都会有一定的人员流动&#xff0c;相应地也会招一些应届生补充进来&#xff0c;指导应届生已经成为老员工的必修课了。平日里会我们会经…

drill apache_Apache Drill:如何创建新功能?

drill apacheApache Drill允许用户使用ANSI SQL探索任何类型的数据。 这很棒&#xff0c;但是Drill的作用远远不止于此&#xff0c;它允许您创建自定义函数来扩展查询引擎。 这些自定义函数具有Drill基本操作的所有性能&#xff0c;但是允许执行这些性能会使编写这些函数的技巧…

python往npy写入数据_Python 存取npy格式数据实例

数据处理的时候主要通过两个函数(1):np.save(“test.npy”&#xff0c;数据结构) ----存数据(2):data np.load(test.npy") ----取数据给2个例子如下(存列表)1、z [[[1, 2, 3], [w]], [[1, 2, 3], [w]]]np.save(test.npy, z)x np.load(test.npy) x:->array([[list([1,…

Linux上C语言程序编译过程详解

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删本文将介绍如何将高层的C/C语言编写的程序转换成为处理器能够执行的二进制代码的过程&#xff0c;包括四个步骤&#xff1a;预处理&#xff08;P…

hibernate 别名_Hibernate:在sqlRestriction上使用联接表别名

hibernate 别名如果在复杂查询的情况下使用Hibernate模式&#xff0c;则需要使用sql。 因此&#xff0c;sqlRestrictions可以解决。 但是&#xff0c;对联接表别名使用sql限制有点棘手。 将有三个表&#xff1a; 公司表。 员工表。 每个员工都属于一个公司&#xff0c;因此…

C语言,动图展示十大经典排序算法

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删以前也零零碎碎发过一些排序算法&#xff0c;但排版都不太好&#xff0c;又重新整理一次&#xff0c;排序算法是数据结构的重要部分&#xff0c;…

python求偏度系数_用 Python 讲解偏度和峰度

之前笔者在做一个金融数据项目时,有朋友问我,衡量股票收益率有没有什么好的方法。这个问题让笔者也思索了好久,其实股票的收益率如果我们从本质来看不就是数据吗,无非就是收益率我们就想让其越高越好,也就是让这个数据增加得越多越好。而衡量数据我们经常用到的方法有均值…