簡體   English   中英

XSLT文檔功能在遷移后引發“連接超時”異常

[英]XSLT document function throws “Connection timed out” exception after migration

有一個Java Cocoon應用程序使用Saxon 8.7執行XSLT轉換。 一種這樣的xslt使用文檔功能來注入遠程xml資源的內容。 因此,調用如下所示: <xsl:apply-templates select="document(@href)/p-topic" mode="static-topic"/>

可以訪問遠程文檔(已使用wget測試),該遠程主機未使用任何代理。 但是,我得到以下異常堆棧跟蹤:

Caused by: org.apache.commons.lang.exception.NestableRuntimeException: net.sf.saxon.trans.DynamicError: net.sf.saxon.trans.DynamicError: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:388)

超時發生在大約20秒后。

最終,在將應用程序移至另一台服務器后出現了問題。 在初始服務器上,相同的代碼可以正常工作。 因此,這取決於環境。

我也分析了netstat的輸出。 下列連接出現在正在運行的XSLT轉換上:

Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name
tcp        0      1 ::ffff:134.27.100.67:37600  ::ffff:134.27.97.142:8510   SYN_SENT    22484/java
tcp     8559      0 ::ffff:134.27.100.67:55835  ::ffff:134.27.97.143:80     ESTABLISHED  22484/java

134.27.97.143:80是目標遠程xml資源位置。 我不知道為什么SYN_SENT連接出現在另一台服務器上。

大約5秒鍾后,第二個連接更改為以下內容:

tcp     8560      0 ::ffff:134.27.100.67:55835  ::ffff:134.27.97.143:80     CLOSE_WAIT  22484/java

再過15秒(瀏覽器現在超時)后,第一個連接消失,第二個連接變為以下內容:

tcp     0      0 ::ffff:134.27.100.67:55835  ::ffff:134.27.97.143:80     CLOSE_WAIT  22484/java

再過大約5秒鍾后,第二個連接也會消失。 我不是netstat專家,但是Recv-Q值在發生超時之前一直保持非零值似乎令人懷疑。 因此,看起來應用程序在從TCP套接字隊列讀取數據時掛起。 我嘗試了不同的雄貓(5和6)。 有任何想法嗎?

最終,我設法找到了根本原因。 看來那些遠程文檔具有DTD文件的DOCTYPE聲明。 這些DTD文件不能從新服務器訪問,而可以從舊服務器訪問。 因此,似乎Saxon嘗試下載DTD進行驗證,但未成功執行“連接超時”異常。

暫無
暫無

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

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