首页 文章

Jboss AS7,APR原生连接器和sendfile

提问于
浏览
1

我已经开始努力在torquebox(www.torquebox.org)上实现类似于mod_xsendfile的功能支持 . Torquebox基本上是JBoss AS 7上的一堆代码,这使我的努力等同于使sendfile在JBoss AS 7上运行 .

这里的主要问题可能是我对JBoss的困惑,但是在浪费了太多时间耗费我所有的谷歌搜索资源之后,我必须相信那里的某些人实际上知道这个东西在AS 7中是如何工作的 .

据我了解,JBoss通过使用JBoss Web本机连接器(http://www.jboss.org/jbossweb/downloads/jboss-native-2-0-10)支持sendfile,即APR http连接器 .

花了好几个小时没有在AS 7上安装这些,这看起来像其他人的魅力(https://community.jboss.org/message/614790),grep'ing我的本地JBoss目录告诉我,这些本机连接器是显然与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>

将所有日志记录级别切换为调试并检查日志会显示日志消息

standalone / log / server.log.2012-02-10:324:23:12:17,964 INFO [org.apache.coyote.http11.Http11AprProtocol](MSC服务主题1-5)在http-127.0上启动Coyote HTTP / 1.1 .0.1-127.0.0.1-8080

其中Http11AprProtocol指示使用APR http连接器 . 但是,网上的很多帖子都提到还应该显示以下行:

org.apache.catalina.core.AprLifecycleListener init INFO:APR功能:IPv6 [true],sendfile [true],接受过滤器[false],random [true] .

无论日志记录级别如何,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头以发送文件(忽略support属性)并设置其余所需的sendfile属性,我的浏览器认为它正在接收文件,但是没有传输数据......并且连接处于挂起状态 .

总结一下这个问题,似乎所需的APR原生连接器正在使用中,默认情况下应该启用sendfile,但是服务器不知道我试图让它做什么 .

如何进行?

1 回答

  • 8

    我也失去了几个小时试图了解它是如何工作的 . 你做的一切都很对 . 刚刚错过了将Web系统设为 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].
    

    祝好运 :)

相关问题