2012-02-11 23 views
1

私は、トルクボックス(www.torquebox.org)のmod_xsendfileに似た機能のサポートを実装しようと努力しました。 Torqueboxは、基本的にはJBoss AS 7の上にコードの束です。私の努力は、JBoss AS 7でsendfileを動作させるのと同等です。Jboss AS7、APRネイティブコネクタとsendfile

ここでの主な問題は、おそらく私のJBossに対する混乱ですが、すべての私のグーグルのリソースを消耗時間は、私はこの、sendfileのは、JBossでサポートされて理解し、このことは、JBossのWebネイティブコネクタを使用することにより7.

としてどのように機能するかを実際にを知っているそこに誰かがあることを信じてする必要があります(http://www.jboss.org/jbossweb/downloads/jboss-native-2-0-10)、すなわちAPR httpコネクター。

他の人たちの魅力(https://community.jboss.org/message/614790)のように見えるAS 7にこれらをインストールするのに時間を費やしてしまった後、grep'ing私のローカルJBoss dirは私に言います。これらのネイティブコネクタはappearently私の場合は7として、必要なDLLが

% JBOSS_HOME%以下の\モジュール内に配置されているに同梱されている\ orgの\ 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コネクタが使用されていることを示します。しかし、Web上の多くの記事では、次の行も表示する必要があると述べています。

org.apache.catalina.core.AprLifecycleListener init情報:APR機能:IPv6 [true]、sendfile [true]、accept filters [false ]、ランダム[真]。

ログレベルに関係なく、AprLifecycleListener行は決して表示されません。

これを確認すると、現在APR httpコネクタが使用されているようです。

ドキュメントによると、私は

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としてWebシステムを置く逃した:

<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

関連する問題