2012-02-11 33 views
1

我已經着手實現對類似於torquebox(www.torquebox.org)上的mod_xsendfile的功能的支持。 Torquebox基本上是JBoss AS 7之上的一堆代碼,這使我的努力有點像在JBoss AS 7上使sendfile工作。Jboss AS7,APR本地連接器和發送文件

這裏的主要問題可能是我對JBoss的混淆,但是在浪費太多的方法之後小時用盡我所有的谷歌搜索的資源,我不得不beleive說有一個人在那裏誰實際上知道如何當我明白這個道理,sendfile的是在JBoss中支持這個事情的作品在AS 7

通過使用JBoss的Web本土連接器(http://www.jboss.org/jbossweb/downloads/jboss-native-2-0-10),即APR http連接器。

花費數小時未能上安裝這些AS 7,這似乎是爲別人魅力的作品後(https://community.jboss.org/message/614790),grep'ing我的本地的JBoss目錄告訴我,這些本機連接器appearently與AS 7.在我的情況下,所需的DLL文件被放到

%JBOSS_HOME%\模塊捆綁\組織\ jboss的\作爲\網絡\主\ LIB \ WIN-x86_64的

所以史詩般的失敗,試圖安裝已經存在的東西。 檢查我的standalone.xml配置文件還揭示了這種原生接口被用於

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host"> 
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> 
    <virtual-server name="default-host" enable-welcome-root="false"> 
     <alias name="localhost"/> 
     <alias name="example.com"/> 
    </virtual-server> 
</subsystem> 

開關所有的日誌級別調試和檢查日誌顯示日誌消息

獨立/日誌/ server.log.2012 -02-10:324:23:12:17,964 INFO [org.apache.coyote.http11.Http11AprProtocol](MSC服務線程1-5)在http-127.0.0.1-127.0.0.1-8080上啓動Coyote HTTP/1.1

其中Http11AprProtocol指示使用APR http連接器。然而,網絡上的許多帖子都提到,還應該顯示以下行:

org.apache.catalina.core.AprLifecycleListener init INFO:APR功能:IPv6 [true],sendfile [true],接受過濾器[false ],隨機[真]。

無論日誌級別如何,AprLifecycleListener行都不會顯示。

當我審查這個,似乎APR http連接器現在正在使用。

根據該文件,我可以得到如下的servlet工作

public class Sendfile extends HttpServlet { 
    protected void doGet(HttpServletRequest request, 
         HttpServletResponse response) throws ServletException, IOException { 
     if(Boolean.TRUE == request.getAttribute("org.apache.tomcat.sendfile.support")){ 
      // Send all the files!! 
     } 
     else{ 
      throw new ServletException("BOOM!"); 
     } 
    } 
} 

但是,沒有。該org.apache.tomcat.sendfile.support屬性爲null,如果嘗試嘗試設置HTTP頭髮送文件(忽略支持屬性)並設置所需的sendfile其餘屬性,我的瀏覽器認爲它是接收文件,但沒有數據傳輸......並且連接被掛起。

要總結的問題,似乎所需的APR本土連接器在使用時,應了sendfile默認啓用,但服務器有沒有什麼線索,我試着讓它做。

如何繼續?

回答

8

我也失去了幾小時試圖瞭解它是如何工作的。你做得很對。差一點兒把網絡系統爲native=true

<subsystem xmlns="urn:jboss:domain:web:1.1" 
     default-virtual-server="default-host" native="true"> 

啓動它:

11:00:26,018 DEBUG [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-3) Loaded: apr-1 
11:00:26,039 DEBUG [org.jboss.modules] (ServerService Thread Pool -- 58) Module org.jboss.xb:main defined by local module loader @d8d9850 (roots: /home/mmagnani/Development/jboss-eap/jboss-eap-6.0/modules) 
11:00:26,070 DEBUG [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-3) Loaded: z 
11:00:26,071 DEBUG [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-3) Loaded: crypto 
11:00:26,072 DEBUG [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-3) Loaded: ssl 
11:00:26,079 DEBUG [org.jboss.as.ejb3] (ServerService Thread Pool -- 36) Adding EJB @Asynchronous support 
11:00:26,082 DEBUG [org.jboss.as.ejb3] (ServerService Thread Pool -- 36) Configuring timers 
11:00:26,092 DEBUG [org.jboss.as.ejb3] (ServerService Thread Pool -- 36) Adding EJB IIOP support 
11:00:26,101 FINE [org.hornetq.core.server.impl.HornetQServerImpl] (MSC service thread 1-6) Starting server HornetQServerImpl:: 
11:00:26,120 DEBUG [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-3) Loaded: tcnative-1 
11:00:26,141 DEBUG [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-3) Loaded Apache Tomcat Native library 1.1.23. 
11:00:26,141 DEBUG [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-3) APR capabilities: IPv6 [true], sendfile [true], random [true]. 

好運:)

+0

完全正確。我最終要求Jean-Frederic Clere提供答案。所以完全確認。 – Parbst 2012-10-05 19:58:53