2012-05-25 111 views
2

我如何去讓我的Java應用程序運行在一些插座(比如172.16.1.10:8080)的HTTP服務器,並讓這個在網絡上的其他計算機連接到域(例如http://myjavadomain.com )它被重定向到套接字?指定域名的IP地址

+0

您正在使用哪個Web容器? –

回答

0

如果你想運行一個完全成熟的HTTP服務器,那麼你可能會想要使用一些外部庫。例如,Tomcat是用Java編寫的,但也有SUN的httpserver package。如果它只是你追求一個簡單的socket服務器,您可以使用內置類在java.net包:

ServerSocket server = new ServerSocket(8080); 

while (running) { 
    Socket socket = server.accept(); 
    handleConnection(socket); 
} 

這將監聽8080端口傳入的套接字連接,並創建一個新的Socket每當客戶端連接。您可以與客戶端通過再溝通SocketInputStreamOuputStream,你可能會做一個單獨的線程,讓你的ServerSocket可以繼續監聽來自其他客戶端的連接。

關於你問題的第二部分:在默認情況下,Web瀏覽器將連接到端口80,並且有幾種方法,你可以做端口轉發。連接到你的機器,例如,當

iptables -t nat -I PREROUTING --src 0/0 --dst 172.16.1.10 -p tcp --dport 80 -j REDIRECT --to-ports 8080 

但最簡單的解決辦法是乾脆直接指定端口號:使用iptables一個可行的辦法是給上this website

http://myjavadomain.com:8080 

這是假設您的DNS已配置,以便它已將myjavadomain.com解析爲172.16.1.10。

+0

非常感謝,非常豐富。 –

1

如果您使用的是Apache Tomcat,那麼以下配置將對您有所幫助。

Fot的Apache Tomcat上,你必須做出的TOMCAT_HOME位置的配置位置的主機項。

按照下面的步驟,將有助於你

1)找到在server.xml文件中的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)現在在瀏覽器中打開上面的網址。