2012-05-25 85 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)现在在浏览器中打开上面的网址。