日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

發布時間:2023/12/3 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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>

從上面的代碼片段中,您可以看到okhttp和okio jars打包在模塊中,并且也可用于我的客戶端代碼。

現在,已經對module.xml進行了調整,并且我的子系統正在使用Http2 :-)

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

wildfly

總結

以上是生活随笔為你收集整理的wildfly_从WildFly 9(子系统)中运行OkHttpClient的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。