我已經着手實現對類似於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默認啓用,但服務器有沒有什麼線索,我試着讓它做。
如何繼續?
完全正確。我最終要求Jean-Frederic Clere提供答案。所以完全確認。 – Parbst 2012-10-05 19:58:53