簡體   English   中英

我們可以使用jaxws-rt.jar作為運行時實現,雖然它包含sun庫嗎?

[英]can we use jaxws-rt.jar as runtime implementation though it includes sun libraries?

許多人建議不要出於各種原因使用sun包。 這里提供詳細的答案。

但是我使用jaxws-rt.jar是使用sun庫的jaxws-rt.jar

我想知道我是否應該jaxws-rt.jar 我在tomcat容器中運行,我不想包含Jboss,GlassFish或任何其他應用程序服務器的jaxws實現。

這是我想要做的(設置連接和請求超時)

import com.sun.xml.internal.ws.client.BindingProviderProperties;
import javax.xml.ws.BindingProvider;

((BindingProvider)soapService).getRequestContext()
        .put(BindingProviderProperties.REQUEST_TIMEOUT,REQUEST_TIMEOUT_MILLI);
((BindingProvider)soapService).getRequestContext()
        .put(BindingProviderProperties.CONNECT_TIMEOUT,CONNECT_TIMEOUT_MILLI);

謝謝

正如您所發現的,某些行為(例如連接超時)是通過特定於實現的方式來控制的。

如果您不熱衷於編譯(導入) com.sun包,一種刪除編譯時依賴項的方法,但是設置這些屬性以按照您需要的方式控制JAX-WS引用實現,您可以嘗試只設置BindingProvider通過字符串值請求參考實現的上下文屬性。 即使在與RI之外的其他JAX-WS運行時運行時,您也可以設置這些屬性 - 它不會失敗(它可能沒有任何效果)。

import javax.xml.ws.BindingProvider;

((BindingProvider)soapService).getRequestContext()
    .put("com.sun.xml.ws.request.timeout", 5000L);
((BindingProvider)soapService).getRequestContext()
    .put("com.sun.xml.ws.connect.timeout", 5000L);

以下是您問題中兩個常量的兩個值。 JAXWSProperties.CONNECT_TIMEOUTBindingProviderProperties.REQUEST_TIMEOUT

這是一種誤解。

即使它包括sun圖書館?

它不包括“ sun圖書館”。 指的是一個com.sun庫。 那是完全不同的事情。 兩件完全不同的東西。

許多人建議不要出於各種原因[使用] sun包。

只有一個建議很重要,它是關於sun。*包注釋 其中的有效判決是:

包含對sun。*包的直接調用的程序不是100%純Java。

sun.*包當然是有原因的,那就是為JDK中的各種東西提供實現。 如果這是你的程序對這些類的唯一用途,特別是如果你的代碼不包含“直接調用sun.* packages”,你就沒有什么可擔心的了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM