jboss eap 7_使用JBoss EAP 7的HTTP / 2

jboss eap 7

就在几天前,新的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

jboss eap 7

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

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

相关文章

Modern C++ 最核心的变化是什么?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删个人觉得最核心的变化是右值引用的引入&#xff0c;右值引用是 C 走向现代化的最重要一步。建议每一位 C 开发者都应该深入去了解并充分使用它。…

设计模式示例_命令设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

第一个C语言编译器是怎样编写的

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删不知道你有没有想过&#xff0c;某种编程语言的第一个编译器是怎么来的呢&#xff1f;这不就是“鸡生蛋&#xff0c;蛋生鸡”的问题吗&#xff1…

备忘录模式 命令模式_备忘录设计模式示例

备忘录模式 命令模式本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 …

还在分析我写的 bug 啊,我都是随便写的!

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删还在分析我写的 bug 啊&#xff0c;我都是随便写的&#xff01;客户就是可以为所欲为&#xff0c;怎么地&#xff01;下面教大家如何对付产品经理…

mysql如何让表建立连接吗_MySQL 表与表之间建立关系

引子&#xff1a;如下图是一张非常寻常的表格&#xff0c;在以前的工作中实常会制作类似的表格&#xff0c;但是今天的数据库内容&#xff0c;将我之前这种传统的制表思路上升了一个层次&#xff1b;今天核心的内容就是怎样让表与表之间产生关系&#xff0c;在思考这个问题的时…

访客模式 无痕模式 区别_访客设计模式示例

访客模式 无痕模式 区别本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查…

项目经理升职了是啥_什么是升职率?

项目经理升职了是啥我确实相信您熟悉彼得原则 。 一般而言&#xff0c;该原则是一种观察&#xff0c;即晋升可能会并且将导致晋升人员不再符合工作资格的情况。 对于JVM&#xff0c;存在类似的问题。 太快地提升对象可能会对性能产生重大影响。 在这篇文章中&#xff0c;我们将…

mysql事件定时_MySQL事件(定时任务)

whats the MySQL 事件MySQL5.1 版本开始引进 event 概念&#xff0c;MySQL 中的事件(event&#xff1a;时间触发器)是用于执行定时或周期性的任务&#xff0c;类似 Linux 中的 crontab&#xff0c;事件可以精确到秒。通过单独或调用存储过程使用&#xff0c;在某一特定的时间点…

lucene简介_Lucene简介

lucene简介本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中&…

jsp mysql 插入数据_jsp连接MySQL实现插入insert操作功能示例

下午终于实现了jsp连接MySQL执行插入操作的功能。在index.jsp页面输入数据&#xff0c;提交到mysql——insert.jsp页面进行插入数据库的操作。index.jsp页面代码如下&#xff1a;request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8&…

swagger生成示例_生成器设计模式示例

swagger生成示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &…

设计模式适配器模式_适配器设计模式示例

设计模式适配器模式本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &…

mysql mgr bug_Mysql MGR架构误操作引发的问题处理

【背景介绍】故障方描述&#xff1a;一次用户刷权限的时候不小心把数据库用户表记录删掉了&#xff0c;执行之后发现不对后重建用户&#xff0c;杀掉进程后重新MGR启动报错。【报错信息】2018-06-13T12:47:41.405593Z 32 [Note] Plugin group_replication reported: Group comm…

css外墙法_外墙设计模式示例

css外墙法本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff0…

设计模式示例_桥梁设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

数值分析 使用c语言 源码_分析源码,学会正确使用 Java 线程池

在日常的开发工作当中&#xff0c;线程池往往承载着一个应用中最重要的业务逻辑&#xff0c;因此我们有必要更多地去关注线程池的执行情况&#xff0c;包括异常的处理和分析等。本文主要聚焦在如何正确使用线程池上&#xff0c;以及提供一些实用的建议。文中会稍微涉及到一些线…

设计模式示例_状态设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

cam350 不能打开光绘文件_如何在CAM350中导入Allegro光绘

内容简介&#xff1a;本人之前遇到过 CAM350 导入 Allegro 格式光绘后钻孔偏移、异型孔不显示的问题&#xff0c;捣鼓过之后找到一个方法&#xff0c;在 Allegro 群友的建议下制作该文档进行适当的说明。1. 导入 Gerber 文件鉴于手工导入 Gerber 文件需要逐层设置&#xff0c;过…

d3js mysql_D3.js入门指南

近期略有点诸事不顺&#xff0c;趁略有闲余之时&#xff0c;玩起D3.js。之前实际项目中主要是用各种chart如hightchart、echarts等&#xff0c;这些图形库玩起来貌都是完美的&#xff0c;一切皆可配置&#xff0c;但几年前接触了D3之后&#xff0c;觉得前面那chart类库局限的地…