問題タブ [apr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - D で apr_array_push を使用して配列を追加する
svn を使用する D でプログラムを書いていますが、D 構文に変換する方法がわかりません。私はそれを突き刺しましたが、セグメンテーション違反です。
私がCで達成しようとしているものの例:
私の知る限り、このコードは問題なく動作します。ほぼ同じ方法で行われたいくつかの例を見つけました。これをDでコピーしようとする私の試みは次のとおりです。
これにより、svn_auth_open でセグメンテーション違反がスローされます。私の最善の推測は、プロバイダーのコンテンツが newSlot が保持するポインターに到達していないということです。そして、それがなぜなのかはわかりません。
補足コード:
私の最善の推測は、APR_ARRAY_IDX でセグメンテーション違反が発生していることです。他のすべてには、有効なメモリ アドレスがあります。
追加情報: これも機能しません:
したがって、データが適切な場所に移動していなかったという私の理論は除外されます。ただし、配列のプッシュ行をコメントアウトして、配列を空の状態で送信すると、正常に動作します。したがって、これはセグメンテーション フォールトしません。
これもセグメンテーション違反であるため、svn_auth_get_simple_provider2 ではないことも知っています...
linux - Apache モジュールでのメモリ マップ ファイルの過剰な同期
私は現在、大きな mmap ファイルを使用してプロセス間でデータを共有する Apache モジュールに取り組んでいます。これは起動時に作成され、サーバーのシャットダウン時に削除されます (後の段階で保持することを選択できます)。私は Apache APR ライブラリを使用してこれを実装しましたが、少なくとも小さなファイルの場合はうまく機能します。
ただし、メモリマップファイルのサイズが大きくなると(サーバーの実行中にキャッシュするのに十分なRAMがまだあります)、オペレーティングシステム(私の場合はLinux)が大量のファイルを消費しているように見えるため、システムが事実上停止することがありますファイルをディスクと同期します。この同期を制御/削減する方法はありますか?
現時点ではコンテンツをディスクに同期する必要がないので、代わりに共有メモリ セグメントを使用するべきだったので、代わりにそれを試してみます。ただし、メモリマップファイルの同期を制御する方法にはまだ興味があります。
tomcat - NIO コネクタ + gzip 圧縮
私は長い間Tomcatのユーザーでしたが、アップグレードを視野に入れてTomcat 7を使い始めようとしています。
私たちは、多くの静的リソースを提供する BIO を使用してスタンドアロンの tomcat を使用しています...そのため、この記事は「2010 年のトップ 10」にあります http://www.tomcatexpert.com/blog/2010/03/24/myth-or-truth-one- should-always-use-apache-httpd-front-apache-tomcat-improve-performは非常に興味深いものでした
ただし、現在の使用法 (Tomcat 6 + BIO) では、次のような gzip 圧縮を使用しています。
しかし、ドキュメントを熟読しているときに、APR コネクタと NIO コネクタの両方に圧縮用のパラメータがないことに気付きました。server.xml /コネクタを介して同様の方法で圧縮を設定する方法について誰か詳しく説明できますか? 利用できない場合、この機能を組み込む予定はありますか?
独自の gzip フィルターなどを使用して、これを自分で作成できることは承知しています。ただし、gzip フィルターをすべての Web アプリケーション (SOA アーキテクチャの 10 以上の Web アプリケーション) に適用する必要があるため、コネクタ アプローチはより簡単でエレガントです。
ありがとう
apache-flex - JBoss で Apache APR ライブラリもロードすると、Solaris の Flash SWF がロードされない
アップデート + ソリューション ===============================
コメントではなくここに解決策を投稿して申し訳ありませんが、私の作品のフィルタリングに関する問題により、コメント機能が機能しません。
最終的に jboss の -b 0.0.0.0 プロパティを使用してすべてのアドレスにバインドしたので、マシン B をクライアントとしてマシン A のサーバーにアクセスしたり、その逆を試すことができました。AまたはBから接続しているかどうかに関係なく、マシンBで実行すると、常にロードに失敗することがわかりました.
同じネットワーク上の Windows マシンで Wireshark を開始し、Web ページをロードしている TCP 接続を観察しました。失敗した場合の .swf のリクエストのコンテンツの長さは 200 万程度で、wireshark のログを右クリックして [会話を表示] などを選択すると、会話全体のサイズが.swf ファイルを取得するには、わずか 130,000 でした。about:cache を見ると、ページで「完了」と言う前にキャッシュしたものとほぼ同じでした。
useSendFile プロパティにバグがあることがわかりました。(http://community.jboss.org/thread/148651?tstart=0)。これにより、カーネル メモリが不足している場合に、ファイルの一部のみが送信されます。server.xml で useSendFile="false" を使用すると、問題が解決したようです。
==================================================
元の問題
JBoss (5.1.0.GA) アプリケーション サーバーを使用しています。アプリケーション サーバーとクライアント間の接続に GraniteDS を使用しています。クライアント側はフラッシュベースです。
Granite DS は APR ライブラリ (apache ネイティブ ライブラリ) を使用する必要があるため、それを読み込んでいます。JBoss ログを見ると、apache ネイティブ ライブラリが正常にロードされたことがわかります (バージョン 1.18、1.20 も試しました)。
問題は、APR ライブラリが正常にロードされるようにすると、通常、アプリケーションの Flash 側がロードされないことです。更新を何回も押す必要があり、最終的には通常は読み込まれますが、通常は「完了」と表示された黒い Web ページが表示されるか、読み込みの進行状況バーがまったく移動しません。更新を繰り返し押すことによってのみ、ページが読み込まれます。更新を十分に行うことで最終的にロードされますが、一貫性がなく、毎回ブラウザーのキャッシュをクリアする必要があるクライアントには明らかに機能しません。
この問題は Solaris にのみ存在し、アプリケーションは Windows で正常に動作します。Solaris の複数のパッチ レベルを試し、「ldd」コマンドを使用して、ロードする必要があるライブラリにすべての依存関係があることを確認しました。
次のテストにより、swf ファイルのサイズではないことを確認しました。1) 通常の SWF (1660 kb)。2) ランダムな大きな SWF (950 kb)。3) 「Test」という 1 つのラベル コンポーネントを含む小さな SWF (277 kb)。
JBoss がネイティブ ライブラリもロードしているときに 3 つすべてをロードできませんでしたが、それがなくても問題なくロードされました。ただし、Granite がクライアントとサーバー間を接続するには、ネイティブ ライブラリを正常にロードする必要があるため、ロードしないという選択肢はありません (JBoss で NIO コネクタを使用する方法がない限り、サポートされていないように見えます)... NIO コネクタを使用する方法があれば、APR ライブラリは必要ありません。
誰もこれに遭遇したことがありますか?アイデアや推奨事項はありますか?
c++ - APR スレッドをスリープする方法は?
APR ライブラリを使用して、C++ で移植可能なマルチスレッド プログラムを作成しています。問題は、スレッドが必要ないときにスレッドをスリープ状態にする必要があることですが、そのための機能がマニュアルに記載されていません。
ネイティブ システム関数を使用せずに APR スレッドをスリープさせる方法はありますか? OS固有のコードは避けたいと思います。ありがとうございました。
c - apr_file_open() を使用してファイルを作成するにはどうすればよいですか
Apache Portable Runtime ライブラリ (バージョン 1.4) に対して次の呼び出しを行っています。
pathname
文字列 が含まれます/tmp/tempfile20110614091201
。
「許可が拒否されました」というエラー (結果コードAPR_EACCES
) が表示され続けますが、読み取り/書き込みの許可が/tmp
あります。何が原因でしょうか?
eclipse - Eclipse Tomcat apr
Tomcat 6.0.32 をスタンドアロンとして使用しています - APR ロードは問題ありません。しかし、Eclipseに同じものをインストールして実行すると、aprが見つかりません。その理由は何ですか?ありがとう。
tomcat - APRとOpenSSLを使用してTomcatがSSLセッションをキャッシュしていることをテストするにはどうすればよいですか?
Tomcat 6.0.32で実行され、暗号化通信(HTTPS)にJSSE(Java 1.6.0_26)を使用するアプリケーションがあります。最近、APRコネクタとOpenSSLを使用してテストを行っています。
APRを使用しているときに、SSLセッションがすべての接続でキャッシュ/再利用または生成されていることをどのように確認できますか?APRはSSL関連の情報をログファイルに書き込みますか?
-Djavax.net.debug=all -Djavax.net.ssl=ssl.handshake
JSSEを使用する場合、JVMに渡すことにより、Tomcatログファイル(catalina.out)でSSLハンドシェイクとセッション情報を確認できます。ただし、これらのフラグはAPRを使用している場合は機能しません。
c++ - mod_dbdがドライバーをサポートしていない場合、ApacheでDB Connを永続化するにはどうすればよいですか?
LinuxApache2.xホストからSQLServerへのODBTPインターフェイスを使用しています。mod_dbmはこれをサポートしておらず、Apacheをサポートする任意のホストにコードを移動できる必要があります。
私の環境に関する注意:Apache 2.2.17、CでラップされたC ++ for Apache、ODBTP 1.14、SQLServer2008を使用しています。
ODBTP接続を正常に実装し、モジュール自体のデータを完全に使用できますが、データを取得するためにローカルHTTP呼び出しを使用するアプリケーションでは、接続を継続的に接続、切断、および最初からやり直したいと考えていました。 JSON形式で。
問題は、データベースのクレデンシャルで安全に保護するために、プレーンテキストで記述されたアプリケーションのセキュリティを信頼しない環境にこのアプリケーションとモジュールを展開する必要があることです。アプリケーションがHTTP経由で接続する場合、データベースに送信する前にモジュールが復号化する暗号化された資格情報のみを提供します。
現在、データベースのハンドルを作成し、モジュール定義のキー付きapr_hash_tテーブルに保存しています。アプリケーションが接続すると、モジュールは、アプリケーションがURLで指定したリクエストごとの一意のトークンを検索して、そのアプリケーションの接続を見つけます。これは機能しますが、1回だけです。
ハッシュキーは32桁のキーで、最初はプールから作成されたchar *であり、ODBTPハンドルとともにハッシュテーブルの行として格納されます。どういうわけか、呼び出し間のキーが変更されており、元のキーは切り捨てられたバージョンになっています。
例:1)アプリケーションから1回呼び出して、永続的な接続を開始します。これは機能します。2)アプリケーションから3回続けて呼び出しを行い、SQL文字列を実行します。(/ stars / execute_sql / unique / <> / sql / <>)x 3
最初の呼び出しは完璧で、データを取得します。キーとして保存されたトークンの次の呼び出しは切り捨てられ、モジュールは関連付けられたキーを見つけることができません。次の呼び出しでは、トークンは試行2と同じ切り捨てられた状態になります。
メモリを上書きしているかどうかわかりませんか?ハッシュテーブルの内容を吐き出す短いループ関数を作成して、コードのすべてのポイントで関数を貼り付けて、データが破損している可能性がある場所を見つけられるようにしましたが、私の発見は意味がありません。URIに埋め込まれているデータを見つけるには、URIを分割する必要があります。この関数の行にシフトするメモリを「raw=apr_psprintf(apache-> pool、 "%s"、subject);」として追跡しました。これは以下のコードにあります。
キーが何らかの形でシフトされているため、コール1では完全に機能しますが、コール2では機能しません。
何か案は?または、これをより良く達成するためにAPR_RESLISTをどのように使用できるかについての考えさえありますか?
前もって感謝します!
tomcat - Tomcat7が常に古いバージョンのAPR1.1.20について文句を言うのはなぜですか?
WindowsにTomcat7.0.22をインストールし、libtcnative_1.dllに入れました。そのバージョン1.2.22。しかし、私がTomcatを開始すると、常にこれは文句を言います。なんで?
26-Oct-2011 18:49:25 org.apache.catalina.core.AprLifecycleListener init情報:APRベースのApache Tomcatネイティブライブラリの古いバージョン1.1.20がインストールされていますが、Tomcatは最小バージョンの1.1.22を推奨しています。