Javaアプリをあるソケット(例:172.16.1.10:8080)でHTTPサーバーを実行させ、ネットワーク上の別のコンピューターがドメイン(例http://myjavadomain.com
)に接続したときにソケットにリダイレクトされるようにするにはどうすればよいですか?
2 に答える
Apache Tomcat を使用している場合は、以下の構成が役に立ちます。
Fot Apache Tomcat は、TOMCAT_HOME の場所の構成場所にある Host エントリで作成する必要があります。
あなたに役立つ以下の手順に従ってください
1) 2)の場所でserver.xml
ファイルを見つけます。ファイル内で以下のホスト エントリを作成します。conf
TOMCAT_HOME
server.xml
<Host name="www.xyz.com" debug="0" appBase="webapps/mynewhost" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="mynewhost_log." suffix=".txt" timestamp="true"/>
</Host>
In appBase property place the location of your web app
3) ブラウザで上記の URL を開きます。
本格的な HTTP サーバーを実行したい場合は、おそらく何らかの外部ライブラリを使用したいと思うでしょう。たとえば、Tomcatは Java で書かれていますが、SUN のhttpserver パッケージもあります。単純なソケット サーバーの場合は、java.net パッケージの組み込みクラスを使用できます。
ServerSocket server = new ServerSocket(8080);
while (running) {
Socket socket = server.accept();
handleConnection(socket);
}
Socket
これは、ポート 8080 で着信ソケット接続をリッスンし、クライアントが接続するたびに新しいソケットを作成します。その後、とを介してクライアントと通信できます。これはおそらく別のスレッドで行うため、Socket
他のクライアントからの着信接続をリッスンし続けることができます。InputStream
OuputStream
ServerSocket
質問の 2 番目の部分について: デフォルトでは、Web ブラウザーはポート 80 に接続します。ポート転送を行う方法はいくつかあります。iptables を使用した解決策の 1 つが、次のWeb サイトで提供されています。
iptables -t nat -I PREROUTING --src 0/0 --dst 172.16.1.10 -p tcp --dport 80 -j REDIRECT --to-ports 8080
しかし、最も簡単な解決策は、マシンに接続するときにポート番号を直接指定することです。
http://myjavadomain.com:8080
これは、myjavadomain.com が既に 172.16.1.10 に解決されるように DNS が構成されていることを前提としています。