問題タブ [nio2]
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.
java - Java7非同期NIO2サーバーでの接続拒否
Java 7 nio2 を使用して非同期ソケットサーバーを作成しました。
これはサーバーのスニッパーです。
ここに接続を試みるクライアント コードのスニペットがあります...
クライアントを解雇するテストがあります。
約100のクライアントに対して非常にうまく機能します。約140+で、クライアントが接続しようとすると、クライアントで大量の例外が発生します。例外は次のとおりです: java.util.concurrent.ExecutionException: java.io.IOException: リモート コンピューターがネットワーク接続を拒否しました。
私のテストは、Windows 7 を実行している 1 台のラップトップで行われました。爆発したとき、TCP 接続を確認すると、約 500 から 600 の接続がありますが、問題ありません。私は 4,000 の TCP 接続を処理できる同様の JDK 1.0 java.net ソケット プログラムを持っています。
サーバーで例外や怪しいものはありません。
だから私はここで何が間違っているのか途方に暮れています。何か案は?
java - ループまたは再帰的に AsynchronousSocketChannel#read を使用する方法は?
関連する質問を見つけましたが、完全な例が提供されていないため、特に役に立ちませんでした。
問題: AsynchronousSocketChannelを使用して、固定サイズのバッファーを使用して長さが不明なデータを読み取る方法
最初の試行 (1 回読み取り):
while (つまり、ストリームの終わりに達した)バッファへの継続的な読み取りをきれいに実装するには、どのような変更を加える必要がありますか?bytesRead != -1
java - AsynchronousSocketChannel から Serializable オブジェクトを逆シリアル化する方法
逆シリアル化を実行するには、ObjectInputStream
. ただし、AsynchronousSocketChannel
に変換できない を使用するだけObjectInputStream
です。私に何ができる?
java - Java 7 nio 2 プログラムの予期しない出力
Pro Java 7 NIO.2 Page No 118の小さなプログラムを試しています
コードは次のとおりです。
しかしglobal.properties
、フォルダーに存在する(または任意のファイル)の行を変更すると、次のC:\\Java
ように出力されます-
なぜイベントを2回発生させるのですか?
ファイル内の正確に変更された行を検出するために Java で利用できるサービスはありますか?
JDK : jdk1.7.0_09
IDE : Eclipse Java EE IDE バージョン : Juno リリース
プラットフォーム : Windows 7
java - Windowsでnio.2 AsynchronousServerSocketChannel.accept()の動作を修正しますか?
次のテスト プログラムは、単純なバインド/受け入れを実行してから、チャネル グループをシャットダウンします。
プログラムが結果の ShutdownChannelGroupException を出力することを期待しますが、代わりに、完了ハンドラーを呼び出すことはなく、スレッド プールで例外をスローします。
誰かが何が起こっているのかを明らかにすることができますか? shutdownNow() には次の動作があると彼らが言うとき、私はドキュメントを誤解していますか?
コールバックがまだ「アクティブ」になっていないため、破棄されるだけですか?
java - Java NIO2 AIO - TCP チャット サーバー
私はJava NIO2で遊んでいて、AsynchronousServerSocketChannelに基づいてTCPチャットサーバーをコーディングしようとしています。
シンプルな ECHO-Server をプログラミングすることは問題なく、問題なく動作しました。現在、多くのクライアントを受け入れ、接続されているすべてのクライアントに着信メッセージをブロードキャストしようとしていますが、問題に直面しています。
少し長くなったので、ここのコードを過去のビンに投稿しました
今までは 1 つのメッセージをブロードキャストすることができましたが、その後何か問題が発生し、しばらくすると次のエラーが表示されます。
スレッド「pool-1-thread-13」での例外 java.nio.channels.WritePendingException
linux - OpenJDK 7 AsynchronousServerSocketChannel は、外部ではなく localhost/127.0.0.1 にバインドされている場合、localhost のみを受け入れます
openSUSE 12.2 (x86_64) では AppArmor が実行されておらず、ファイアウォールが無効になっています。
AsynchronousServerSocketChannel を使用するサーバーが接続をリッスンしている場合、localhost または 127.0.0.1 を指定すると、localhost からの接続のみが受け入れられ、別のマシンから接続しようとすると拒否されます。なんてこと?!ローカルホストや 127.0.0.1 ではなく、実際のマシンのホスト名または IP アドレスを Java サーバーに入力すると、別の場所からの接続が受け入れられます。ダブルWTF?!
古い学校の同期サーバーを使用する場合、そのような問題はありません.localhostポートにバインドすると、ローカルマシンと外部マシンの両方からの接続を受け入れます. さらに、両方とも localhost にバインドするように設定した場合、同期と NIO2 の間に次の違いがあることに気付きました。
このサーバーを複数のマシンに展開する予定であるため、これは私にとって大きな問題であり、ローカルホストではなく実際のホスト名/IP を追加するために、すべてのマシンの構成ファイルを変更する必要があるのは大きな苦痛です。localhostを指定した場合に機能するように修正するにはどうすればよいですか?
java - FileSystems.getPath(URI)のクエリ
Java 7のソースコードクラスでは、Pathsにメソッドget(URI)があります。
get(URI)内に存在します:
FileSystems.getDefault()
デフォルトのファイルシステムへの参照を返します。しかし、その後、ドキュメントによると.provider()
、ファイルシステムを閉じてから.getPath(uri)
呼び出されます。誰かが私に何が起こっているのか説明してもらえますか?ファイルシステムが閉じられてから返されるように見えるのはなぜですか?
誰かがそのreturnステートメントで何が起こっているかについてのブローバイブローを私に与えることができれば素晴らしいでしょう。
ejb-3.1 - EJB 3.1 および NIO2: ファイル システムの監視
私たちのほとんどは、NIO2 を利用するのに優れたものであることに同意していると思います。入ってくる xml ファイルのファイル システムの一部を監視したいと仮定すると、今では簡単な作業です。しかし、別のサービス ( app -server とファイル システムを監視するサービス) を開始する必要がないように、それらを既存の Java EE アプリケーションに統合したい場合はどうすればよいでしょうか? そのため、EJB 3.1 のすべてのものと、ファイル システムを監視するある種のサービスを備えた重いアプリケーション サーバーを用意し、ファイルが表示されたら適切なアクションを実行します。興味深いことに、適切なアクションは Message を作成して JMS で送信することであり、両方をアプリ サーバーに統合するとよいでしょう。
@Startup を試しましたが、展開がフリーズします (そして、そこで I/O を使用してはならないことはわかっていますが、試してみただけです)。とにかく...何か提案はありますか?
java - java7で特定のユーザーのファイルアクセス属性を設定する方法
私はjava7ファイルAPIを使用しています。検索したファイルの所有者を設定し、所有者属性を変更できます。私のコードは
このコードから、ファイルの所有者を設定できます。しかし、私のタスクは、ユーザー (rashmi) にファイルへの読み取りアクセス権を付与し、もう 1 人のユーザーに読み取り/書き込みアクセス権を付与することです。ユーザーに特定のアクセス権を付与する方法を教えてください。タスクを達成できるようにコードまたはリンクします。