使用Grizzly的嵌入式Java服务器:如何启用http2

皮埃尔·卢克·卡梅尔·比隆

因此,我尝试使用Grizzly / Jersey创建REST API服务器,并且工作正常,但是我无法弄清楚如何启用http2。关于该主题的文档几乎不存在。这就是我所拥有的:

private static SSLContext getSSLContext(final String keystore) throws Exception {
    SSLContext sslContext = SSLContext.getInstance("TLSv1");
    final char[] passphrase = "changeit".toCharArray();
    final KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    final KeyStore ks = KeyStore.getInstance("JKS");
    try (InputStream stream = Main.class.getResourceAsStream(keystore)) {
        ks.load(stream, passphrase);
    }
    kmf.init(ks, passphrase);
    sslContext.init(kmf.getKeyManagers(), null, null);
    return sslContext;
}

final ResourceConfig rc = new ResourceConfig().packages("path.to.package");
final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(uri, rc, false);
final NetworkListener listener = server.getListeners().iterator().next();
listener.registerAddOn(new Http2AddOn());
listener.setSecure(true);
final SSLEngineConfigurator configurator =
    new SSLEngineConfigurator(
        getSSLContext("keystore.jks"),
        false,
        false,
        false
    );
listener.setSSLEngineConfig(configurator);

而且,据我所知,我的pom.xml文件具有所有适当的依赖项:

<dependency>
    <groupId>org.glassfish.grizzly</groupId>
    <artifactId>grizzly-http2</artifactId>
    <version>2.3.24</version>
</dependency>

<dependency>
    <groupId>org.glassfish.grizzly</groupId>
    <artifactId>grizzly-npn-bootstrap</artifactId>
    <version>1.2</version>
</dependency>

<dependency>
    <groupId>org.glassfish.grizzly</groupId>
    <artifactId>grizzly-npn-api</artifactId>
    <version>1.2</version>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-grizzly2-http</artifactId>
</dependency>

当我用curl -v --http2 ...测试服务器时,我得到了

  • ...
  • ALPN / NPN,服务器不同意协议
  • 使用TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256的SSL连接
  • ...

有人知道缺少什么吗?

皮埃尔·卢克·卡梅尔·比隆

我发现了问题所在。此处说明:http//unrestful.io/2015/10/09/alpn-java.html

Java 8不支持ALPN。grizzly-npm-bootstrap在那里重写系统类以提供该支持。因此,应将其添加到Xbootclasspath中,如下所示:

java -Xbootclasspath/p:/path/to/grizzly-npn-bootstrap.jar

并且由于它覆盖了系统类,因此需要适应新版本的JRE。由于我使用的是Java 8,并且grizzly-npn-bootstrap.jar仅适用于OpenJDK 7,所以我很不走运。

一种选择是切换到Jetty,它为OpenJDK的大多数(全部)发行版提供alpn-boot。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Grizzly嵌入式服务器在Jersey-Spring中配置现有的应用程序上下文?

来自分类Dev

如何通过纯HTTP在C#Kestrel Web服务器中启用http2?

来自分类Dev

如何关闭Spring Boot嵌入式服务器

来自分类Dev

使用FastCGI的嵌入式Web服务器

来自分类Dev

嵌入式Jetty服务器

来自分类Dev

如何从Java代码在jboss cli中启动嵌入式服务器?

来自分类Dev

我可以在WSO2身份服务器中为嵌入式LDAP启用SSL端口吗?

来自分类Dev

Java中使用嵌入式Cassandra服务器测试Cassandra-Spark作业的示例

来自分类Dev

在Docker上使用嵌入式Jetty服务器运行Java应用程序

来自分类Dev

使用嵌入式码头,如何将ServerConnector链接到服务器?

来自分类Dev

嵌入式Http服务器在本地视频上跳秒

来自分类Dev

使用`System.exit()`停止具有嵌入式Jetty服务器的Java应用程序是否安全?

来自分类Dev

在内存/嵌入式SFTP服务器中,用于使用Java中的私钥身份验证进行测试

来自分类Dev

如何在嵌入式tomcat服务器中设置自定义领域?我正在使用Spring Boot。

来自分类Dev

嵌入式Jetty服务器的REST资源

来自分类Dev

从服务器名称路由到嵌入式Snaplet

来自分类Dev

以编程方式配置嵌入式Underwow服务器

来自分类Dev

嵌入式码头服务器发生爆炸

来自分类Dev

在嵌入式设备上安装SSH服务器

来自分类Dev

嵌入式Java HTTPS服务器进行集成测试

来自分类Dev

嵌入式Java HTTPS服务器进行集成测试

来自分类Dev

嵌入式Java Web服务器隐藏应用程序界面

来自分类Dev

如何配置嵌入式码头服务器记录所有请求?

来自分类Dev

请问如何找到jdeveloper嵌入式Weblogic服务器的密码?

来自分类Dev

如何将嵌入式服务器部署到Elastic-Beanstalk?

来自分类Dev

如何设置嵌入式码头的跨域策略?REST服务器

来自分类Dev

如何配置嵌入式Jetty服务器以将NCSARequestLog打印到STDOUT

来自分类Dev

如何配置嵌入式码头服务器记录所有请求?

来自分类Dev

如何在嵌入式板上检查/调整SSH服务器

Related 相关文章

  1. 1

    如何使用Grizzly嵌入式服务器在Jersey-Spring中配置现有的应用程序上下文?

  2. 2

    如何通过纯HTTP在C#Kestrel Web服务器中启用http2?

  3. 3

    如何关闭Spring Boot嵌入式服务器

  4. 4

    使用FastCGI的嵌入式Web服务器

  5. 5

    嵌入式Jetty服务器

  6. 6

    如何从Java代码在jboss cli中启动嵌入式服务器?

  7. 7

    我可以在WSO2身份服务器中为嵌入式LDAP启用SSL端口吗?

  8. 8

    Java中使用嵌入式Cassandra服务器测试Cassandra-Spark作业的示例

  9. 9

    在Docker上使用嵌入式Jetty服务器运行Java应用程序

  10. 10

    使用嵌入式码头,如何将ServerConnector链接到服务器?

  11. 11

    嵌入式Http服务器在本地视频上跳秒

  12. 12

    使用`System.exit()`停止具有嵌入式Jetty服务器的Java应用程序是否安全?

  13. 13

    在内存/嵌入式SFTP服务器中,用于使用Java中的私钥身份验证进行测试

  14. 14

    如何在嵌入式tomcat服务器中设置自定义领域?我正在使用Spring Boot。

  15. 15

    嵌入式Jetty服务器的REST资源

  16. 16

    从服务器名称路由到嵌入式Snaplet

  17. 17

    以编程方式配置嵌入式Underwow服务器

  18. 18

    嵌入式码头服务器发生爆炸

  19. 19

    在嵌入式设备上安装SSH服务器

  20. 20

    嵌入式Java HTTPS服务器进行集成测试

  21. 21

    嵌入式Java HTTPS服务器进行集成测试

  22. 22

    嵌入式Java Web服务器隐藏应用程序界面

  23. 23

    如何配置嵌入式码头服务器记录所有请求?

  24. 24

    请问如何找到jdeveloper嵌入式Weblogic服务器的密码?

  25. 25

    如何将嵌入式服务器部署到Elastic-Beanstalk?

  26. 26

    如何设置嵌入式码头的跨域策略?REST服务器

  27. 27

    如何配置嵌入式Jetty服务器以将NCSARequestLog打印到STDOUT

  28. 28

    如何配置嵌入式码头服务器记录所有请求?

  29. 29

    如何在嵌入式板上检查/调整SSH服务器

热门标签

归档