2011-12-23 37 views
1

bin /ディレクトリでバッチファイルを実行してActiveMQを実行すると、Webブラウザを開いてhttp://localhost:8161/admin/にアクセスして管理/管理コンソールにアクセスできます。Javaでポート番号を予約する

これは私に不思議です。

これは私のローカルサンドボックスであり、Webサーバー(httpdまたはotherweise)がインストールされていません。それで、ActiveMQが私のマシン上のポートを "登録"して排他的にそれを聞くことができるのはどうですか?

​​(別のポート番号に気付く)に接続しようとすると、に接続できません。エラー。

どういうわけか、AMQは「このURI(localhost:8161)をこのマシンのルートディレクトリにマップする」と言っています。プログラマーとして、私はこのようなものがどう機能するかに興味があります。

+1

あなたは 'httpd'がそれをどうやって行うと思います、なぜActiveMQが同じことをすることができないでしょうか? – Mat

+0

良い古いソケット... – aishwarya

答えて

1

ソケットで読むことをお勧めします。hereすべてのWebサーバーは、HTTPプロトコルを処理するソケットリスナーです。 HTTPプロトコルはここにhereです。 Webサーバーは多くの場合、他の多くのことを処理しますが、それが基本です。小さなプログラムでWebサーバーを稼働させたいのであれば、ホイールを再発明しないことをお勧めします。サーバーにjettyを組み込みます。

+0

私はGlassFishサーバーのセットアップを計画していました。特定のポートで待機するようにGFを設定して、そのポート上のHTTP要求をサーブレットにマップすることができますか? – IAmYourFaja

+0

私はグラスフィッシュの設定に慣れていませんが、ここではGoogleで見つけられるものがあります:http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmos.html#gkrgo –

+0

ありがとうフードの中で何が起こっているのかを説明する時間をとるためのDMoses、そして私のための参照を見つけるために! – IAmYourFaja

3

Javaプロセスは、Webサーバーとして、または他の目的で、任意のポート(Linuxでは> = 1024)を使用できます。これを行うには別のWebサーバーは必要ありません。

+1

Javaは、他のプロセスと同様に1024未満のポートを完全に使用することができます。それは、プロセスの種類ではなく、OSのアクセス許可の問題です。 –

+0

あなたはrootとして実行しているだけです。 ;) –

1

ActiveMQは、そのポート上のHTTP接続をリッスンする埋め込みJetty serverを開始します。他のサーバーを実行する必要はありません。それはすべてJavaから行われます。あなたが十分に深く掘り下げれば、その下にはServerSocketという種類があります。 Java Tutorialには、すべてのソケットとポートでのリスニングについて学ぶことができます。

+0

おかげさまでライアン - あなたは私のコメントをDMosesの応答にお読みください。あなたにも同じ質問があります:私はこれを行うためにGlassFishサーバーを設定できますか? – IAmYourFaja

+0

@Adam:あなたが探しているものはあまり明確ではありません。あなたが求めているのは、サーブレット・コンテナが行うために構築されているものです。その場合、[Jetty](http://www.eclipse.org/jetty/)、[Tomcat](http://tomcat.apache.org/)、Glassfish(実際には[Grizzly](http:/java。net/projects/grizzly-servlet-container))、[Winstone](http://winstone.sourceforge.net/)、または多数の商用製品のいずれかが実質的に同じように動作します - ポートにバインドし、 [servlet](http://docs.oracle.com/javaee/6/api/javax/servlet/Servlet.html)を使用してレスポンスを作成させてください。 –

0

最も簡単なレベルでは、ActiveMQはServerSocketインスタンスを作成し、このサーバーソケットを使用して接続を待機しています。ソケットは常にポートにバインドされます。

0

1つ:このポートは1024以上であるため、「非ルート」ユーザーがそれを聴くことができます。

2番目:専用アドレスからのポートにのみバインドできます。これは、ActiveMQがそのポートを127.0.0.1(localhost)でのみ開いている可能性があることを意味します。外部インタフェースのIPアドレスからそのURLを開くことができるかどうか試してみてください。チャンスはありません。

Unixシステムを使用している場合、どのプログラムがnetstat -ltpnを使用してどのポートをリッスンしているかを確認できます。

ポートへのバインディングの基本システムコールはlisten(2)です。

関連する問題