当前位置:  开发笔记 > 编程语言 > 正文

在Ubuntu上使用Java应用程序打开端口80

如何解决《在Ubuntu上使用Java应用程序打开端口80》经验,为你挑选了1个好方法。

我需要做的是运行一个Java应用程序,它是Restlet的RESTful服务服务器端writetern.此服务将由另一个在Google App Engine上运行的应用程序调用.

由于GAE的限制,每个http调用仅限于具有HttpUrlConnection类的端口80和443(http和https).因此,我必须在端口80或443上部署我的服务器端应用程序.

但是,由于应用程序在Ubuntu上运行,并且非root用户无法访问1024以下的端口,因此在运行应用程序时将抛出Access Denied异常.

我想到的解决方案包括:

    将文件驻留在/lib/security/java.policy中的JRE的安全策略更改为grantjava.net.SocketPermission"*.80""listen,connect,accept,resolve"权限.但是,两者都不使用命令行要包含此文件或覆盖JRE的java.policy文件中的内容,同样的异常会不断出现.

    尝试以root用户身份登录,但由于我对Unix的不熟悉,我不知道该怎么做.

    我没有尝试的另一个解决方案是将所有80的呼叫映射到更高的端口,如1234,然后我可以在1234上部署我的应用程序而没有问题,并且GAE调用发送请求到端口80.但是如何连接缺少的差距仍然是一个问题.

目前我正在使用"黑客"方法,即将应用程序打包到jar文件中,并使用root权限运行jar文件.它现在可以工作,但在真实的部署环境中绝对不合适.

所以,如果有人对解决方案有任何想法,非常感谢!



1> objects..:

你可以使用iptables重定向使用这样的东西:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport http -j REDIRECT --to-ports 8080

使用以下命令永久更改(在重新启动后保留):

iptables-save

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有