使用JBoss EAP 7的HTTP / 2

就在几天前,新的JBoss EAP 7 ALPHA版本已经发布。 而且我已经写过关于如何开始使用它的博客。 一个非常有趣的部分是HTTP / 2支持,它已作为技术预览添加。 它由新的Web服务器Untertow提供。 HTTP / 2通过压缩头并在同一TCP连接上多路复用多个流来减少延迟。 它还支持服务器在请求资源之前将资源推送到客户端的功能,从而可以更快地加载页面。

技术预览组件

关于技术预览实际含义的简短说明。 JBoss EAP中的某些功能是作为技术预览提供的。 这意味着,尽管这些组件已包含在JBoss EAP中,但它们在功能上并不完整,不适合生产使用。 因此,它们在开发中得到支持,但不建议或不支持用于生产用途。 但是它们帮助我们获得了更广泛的曝光和反馈。 因此,如果您鼓励某些无法按预期使用的功能,或者对此功能的未来方向有想法,请随时与我们联系。

红帽公司打算在将来的版本中完全支持技术预览功能。

准备您的EAP安装

应用层协议协商(ALPN)是SSL协议的扩展,有助于使HTTPS连接更快。 它是与HTTP / 2一起定义的,它使用ALPN创建HTTPS连接。 由于大多数浏览器仅通过HTTPS实现HTTP / 2,因此OpenJDK在sun.security.ssl包中实现SSL。 Java 7和Java 8中的当前实现不支持ALPN。 使用Java 9,(希望)将对ALPN( JEP 244 )提供本机支持。 EAP要求您使用Java8。由于缺少密码,因此根本无法在Java 7上运行HTTP / 2示例。

由于HTTP / 2也是Java EE8的目标,因此有望在Java 9发行之后的将来的Java SE 8更新中使用它。

为了解决Java 8上的这一限制,我们需要添加一个库,该库为JVM的启动类路径提供ALPN支持。 所需的jar文件的版本与使用中的JVM版本相关,因此必须确保为JVM使用正确的版本。 Jetty为Java提供了一个ALPN实现。 请访问码头网站,找到适合您的JDK的版本 。 在此示例中,我使用的JDK 1.8.0u60需要ALPN版本:“ 8.1.5.v20150921”。

将工作文件夹切换到JBOSS_HOME并将alpn库下载到/ bin文件夹。

curl http://central.maven.org/maven2/org/mortbay/jetty/alpn/alpn-boot/8.1.5.v20150921/alpn-boot-8.1.5.v20150921.jar >bin/alpn-boot-8.1.5.v20150921.jar

现在需要将该库添加到服务器的bootclasspath中。 将以下行添加到独立配置文件中

//standalone.conf on Linux
JAVA_OPTS="$JAVA_OPTS  -Xbootclasspath/p:$JBOSS_HOME/bin/alpn-boot-8.1.5.v20150921.jar"//standalone.conf.bat on Windows
set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:%JBOSS_HOME%/bin/alpn-boot-8.1.5.v20150921.jar"

下一步是为https连接器安装证书。 出于测试目的,您可以从Undertow测试套件中下载。 在我的旧博客中了解如何生成和运行自己的SSL证书 。

curl https://raw.githubusercontent.com/undertow-io/undertow/master/core/src/test/resources/server.keystore >standalone/configuration/server.keystore
curl https://raw.githubusercontent.com/undertow-io/undertow/master/core/src/test/resources/server.truststore >standalone/configuration/server.truststore

完成后,请启动服务器并通过命令行工具添加https连接器(连接到正在运行的服务器并发出以下突出显示的命令):

$>jboss-cli.bat|shYou are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.[disconnected /] connect[standalone@localhost:9990 /] /core-service=management/security-realm=https:add(){"outcome" => "success"}[standalone@localhost:9990 /]  /core-service=management/security-realm=https/authentication=truststore:add(keystore-path=server.truststore, keystore-password=password, keystore-relative-to=jboss.server.config.dir){"outcome" => "success","response-headers" => {"operation-requires-reload" => true,"process-state" => "reload-required"}
}[standalone@localhost:9990 /] /core-service=management/security-realm=https/server-identity=ssl:add(keystore-path=server.keystore, keystore-password=password, keystore-relative-to=jboss.server.config.dir){"outcome" => "success","response-headers" => {"operation-requires-reload" => true,"process-state" => "reload-required"}
}[standalone@localhost:9990 /] /subsystem=undertow/server=default-server/https-listener=https:add(socket-binding=https, security-realm=https, enable-http2=true){"outcome" => "success","response-headers" => {"process-state" => "reload-required"}
}
[standalone@localhost:9990 /]

关闭并重新启动EAP实例。

测试连接

服务器再次启动后,将浏览器指向https:// localhost:8443。 单击有关自签名证书的安全警告后,您会看到正常的EAP 7欢迎页面。

但是,如何确定该连接实际上是使用HTTP / 2? 您可以通过多种方式执行此操作。 如果您使用的是Chrome,则可以在浏览器栏中输入“ chrome:// net-internals”,然后在下拉菜单中选择“ HTTP / 2”。 如果您重新加载EAP主页并返回到chrome网络页面,则可以看到带有所有标头和信息的HTTP / 2会话。

eap7-http2-session

另一个选择是使用一些JavaScript并将其部署到您的应用程序中:

<p style="font-size: 125%;">You are currently connected using the protocol: <b style='color: darkred;' id="transport">checking...</b>.</p>
<p id="summary" />
<script>var url = "/";var xhr = new XMLHttpRequest();xhr.onreadystatechange = function(e) {if (this.readyState === 4) {var transport = this.status == 200 ? xhr.getResponseHeader("X-Undertow-Transport") : null;transport = transport == null ? "unknown" : transport;document.getElementById("transport").innerHTML = transport;var summary = "No HTTP/2 Support!";if (transport.indexOf("h2") == 0) {summary = "Congratulations! Your client is using HTTP/2.";}document.getElementById("summary").innerHTML = summary;}}xhr.open('HEAD', url, true);xhr.send();
</script>

恭喜你! 您刚刚将EAP安装升级到HTTP / 2! 不要忘记提供反馈并了解有关JBoss EAP 7的更多信息:并且请记住:与任何Alpha版本一样,请预见问题。 如果发现任何问题,请在
相应的JIRA 。

  • Java EE 7功能的快速入门( ZIP下载 )
  • 产品资料
  • 入门指南

翻译自: https://www.javacodegeeks.com/2015/11/http2-with-jboss-eap-7.html

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

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

相关文章

linux树莓派 ssh密码,树莓派之SSH连接经验

打开SSH服务执行raspi-configsudo raspi-config选择InterfacingOptions选项&#xff0c;回车选择SSH&#xff0c;回车Windows下客户端推荐使用putty这个免费开源的SSH客户端。下载地址在红框处填入树莓派的IP地址&#xff0c;点击右下角的Open即可。不过&#xff0c;putty的默认…

Linux读取SSD的smart信息,使用smartmontools查看SSD的“秘密”信息

仍然担心看不到sm841中的温度吗&#xff1f;您是否仍对Toshiba Q pro看不见写入量和使用寿命值感到不安&#xff1f;为了查看M4 / 00的写入量&#xff0c;您是否仍在使用C300固件升级程序重新启动到纯DOS并麻烦地运行命令&#xff1f;想知道在协议级别上SSD出了什么问题吗&…

锁定机制和数据并发管理(笔记)

共享锁和排它锁 排它锁&#xff1a;当某一个会话正在更新某一行&#xff0c;为了防止其他会话修改这一行&#xff0c;这行会被锁定这种锁称为排他锁。被排他锁锁定的行仍然可以被其他会话读取。 共享锁&#xff1a;在一个表上放置共享锁的目的是为了防止其他会话获得这个表上的…

【react.js + hooks】useGuide 创建用户引导视图

有的时候用户可能对网站上的一些操作流程感到困惑&#xff0c;这时候我们需要为用户创建引导视图。为了插入指引而专门去更改组件的渲染函数&#xff0c;显然是不合逻辑的&#xff0c;创建指引视图应该是一种对源代码低侵入的行为&#xff0c;我们可以遵循某一套约定&#xff0…

使用递归算法结合数据库解析成java树形结构

使用递归算法结合数据库解析成java树形结构 1、准备表结构及对应的表数据a、表结构&#xff1a; create table TB_TREE ( CID NUMBER not null, CNAME VARCHAR2(50), PID NUMBER //父节点 ) b、表数据&#xff1a; insert into tb_tree (CID, CNAME, PID) values (1, 中国, 0);…

ug11 linux,UG11.0升级包MP02Win#Linux系统下载就上UG网

UG11.0软件又出升级包啦&#xff01;抽空可以为NX升级啦&#xff0c;从11.0发布到现在&#xff0c;近三个月了&#xff0c;每一次版本的更新&#xff0c;都会带来较多功能的改善&#xff0c;以及对错误BUG的有效处理&#xff0c;下图为升级后的UG11.0软件&#xff1b;UG11.0升级…

akka 异常处理_使用Akka处理1000万条消息

akka 异常处理Akka演员承诺并发。 有什么更好的模拟方法&#xff0c;看看使用商品硬件和软件处理1000万条消息需要花费多少时间&#xff0c;而无需进行任何低级调整。我用Java编写了整个1000万条消息的处理过程&#xff0c;整个结果令我惊讶。 当我在具有i5 – 4核心&#xff0…

20155330 2016-2017-2 《Java程序设计》第五周学习总结

20155330 2016-2017-2 《Java程序设计》第五周学习总结 教材学习内容总结 学习目标 理解异常架构掌握try...catch...finally处理异常的方法会用throw,throws理解Collection和Map架构会用常见的数据结构和算法了解Lambada和泛型第八章 章节主要内容 小结 Throwwable定义了取错误…

yum安装odbc驱动linux,在CentOS上离线配置PostgreSQL ODBC数据源

一、问题提出内网的一台CentOS服务器&#xff0c;需配置PostgreSQL ODBC。如果可以连接Internet&#xff0c;此工作很容易&#xff0c;使用yum install自动安装相应依赖包后简单配置即可。但当置于内网环境时&#xff0c;事情就有些麻烦&#xff0c;需要事先手工下载各个依赖包…

pcie组raid linux,PCIe 4.0有多强大?组RAID 0阵列之后惊呆了

技嘉在6月16日21:00正式上市了全系列B550系列主板&#xff0c;B550系列主板属于AMD中端系列芯片组&#xff0c;能原生支持PCIe 4.0技术&#xff0c;而这次技嘉B550 AORUS MASTER主板更是不得了&#xff0c;提供了3个支持PCIe 4.0技术的M.2接口&#xff0c;你还可以组RAID 0阵列…

weblogic最大线程_处理Weblogic卡住的线程

weblogic最大线程定义或什么是缠线&#xff1f; 如果线程 在设定 的时间 内连续工作&#xff08;非空闲&#xff09;&#xff0c;则WebLogic Server会将其诊断为阻塞 。 您可以通过更改在诊断出线程被阻塞之前的时间长度&#xff08; Stuck Thread Max Time &#xff09;&#…

步进电机的正反向旋转c语言编程,实现步进电机自动正反转程序怎么写

本文收集整理关于实现步进电机自动正反转程序怎么写的相关议题&#xff0c;使用内容导航快速到达。内容导航&#xff1a;Q1&#xff1a;用c语言程序实现步进电机的正反转加减速的编程内容&#xff1a;1、本程序用于测试4相步进电机常规驱动2、需要用跳帽或者杜邦线把信号输出端…

stax 和jaxb 关系_XML解组基准:JAXB,STAx,Woodstox

stax 和jaxb 关系介绍 上周末&#xff0c;我开始考虑如何以一种资源友好的方式处理大量XML数据。我要解决的主要问题是如何以块的形式处理大型XML文件&#xff0c;同时提供上游/下游系统&#xff0c;需要处理一些数据。 当然&#xff0c;我已经使用JAXB技术已有几年了。 使用J…

48道C语言上机题参考答案,二级C语言上机题库参考答案(已修改).doc

二级C语言上机题库参考答案(已修改).doc下载提示(请认真阅读)1.请仔细阅读文档&#xff0c;确保文档完整性&#xff0c;对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档&#xff0c;不会出现我们的网址水印。3、该文档所得收入(下载内容预览)归上传者、…

(原创)SpringBoot入门

本文章是SpringBoot入门的介绍在这里 我会尽量写一些细节性的东西,我用的是IDEA2016 Tomcat7 JDK1.8 Maven3.3.9 IDEA Tomcat JDK Maven的安装我就不详细了, 这里我会提到Maven的安装和如何使用阿里云的镜像,因为官网的JAR下载真的是...比乌龟还慢 先从Maven的配置开始,到官…

电脑基础c语言,C语言经验: 如何从零基础学习C语言?

C语言是面向过程的&#xff0c;而C 是面向对象的C和C 之间的区别:C是一种结构化语言&#xff0c;其重点是算法和数据结构. 在C程序设计中&#xff0c;首先要考虑的是如何通过过程来处理输入(或环境条件)以获得输出(或实现过程(事务)控制).C &#xff0c;首先要考虑的是如何构建…

java cpu_Java High CPU故障排除指南–第1部分

java cpu本文是该系列的第1部分&#xff0c;它将为您提供有关如何进行故障排除和识别Java高CPU问题根本原因的综合指南。 本指南也适用于独立的Java程序&#xff0c;但旨在帮助涉及Java EE企业日常生产支持的个人。 它还将包括最常见的高级CPU问题列表以及高级解决方案。 生产…

android:ellipsize=end 不起作用,android:ellipsize=end 失效或者 相关的Bug

其实这文章有点傻逼。相关的问题TextView android:ellipsize“end”超出一个字符时不显示…的解决http://www.pocketdigi.com/20140122/1261.html上面我到没有遇到过。但是我遇到的更神奇。就是在使用android:ellipsize“end”正常的情况下这个属性。该textView的文本就不能加入…

适用于具有Couchbase和WildFly的多容器和多主机应用程序的Docker Machine,Swarm和Compose...

该博客将说明如何使用Docker创建部署在多个主机上的多容器应用程序。 这将使用Docker Machine&#xff0c;Swarm和Compose实现。 是的&#xff0c;所有这三个工具一起使此博客更加有趣&#xff01; 该图说明了关键组件&#xff1a; Docker Machine用于配置多个Docker主机 …

一键复制android代码,兼容安卓和ios实现一键复制内容到剪切板

js兼容安卓和ios实现粘贴板一键复制color: #000;background: #fff;overflow-y: scroll;-webkit-text-size-adjust: 100%;-ms-text-size-adjust: 100%;}html*{outline:0;-webkit-text-size-adjust: none;-webkit-tap-highlight-color: transparent}*{margin:0;padding:0}.conten…