2012-02-11 27 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