-1

我有一个项目,出于服务器配置的目的,它只是一个检票口快速入门原型。我添加了一些应用程序代码,但并没有真正做任何事情来更改默认的码头配置。

我可以使用以下命令在本地运行和测试我的应用程序: http://localhost:8080 或: http://bekkar:8080(我的 PC 的网络名称)或:http: //192.168.1.2 :8080/ (我的 PC 的本地 IP)

我想从我的路由器防火墙外部访问我的 wicket 应用程序。(我最终会在我的 Blackberry 上对其进行测试,但现在我正在使用 Google Chrome 尝试从外部访问它。)

使用http://www.whatismyip.com/我找到了路由器的 IP。

我使用: http://###.###.###.###:8080 ,然后我看到一个屏幕显示需要身份验证,要求输入用户名和密码。我的检票口应用程序中没有设置任何类型的身份验证。

我有一个 NetGear 路由器 WGR614v7。使用路由器管理员,在端口转发下,我添加了以下自定义服务:

Service Name=wicket
Starting Port=8080
Ending Port=8080
Server IP Address=192.168.1.2 //my computer's local IP

添加端口转发服务定义后,我从 Chrome 收到一条不同的消息:糟糕!谷歌浏览器无法连接到###.###.###.###:8080

如何使我的 wicket jetty 快速入门可以从路由器防火墙外部访问?我不知道这是 wicket/jetty 问题(属于 SO)还是防火墙问题(属于 serverfault),所以我先在这里发布。

谢谢!

4

2 回答 2

1

我一直在我的系统上运行 jetty/wicket 应用程序并远程访问它们。我不认为我对 Jetty 做了什么特别的事情,尤其是没有检票口来完成这项工作。但如果它有帮助,这里是一个示例 Start.java 文件(这是来自我的一个应用程序 - 不确定它是否与快速入门中的相同,因为我现在没有可用的快速入门):

public class Start {

    public static void main(String[] args) throws Exception {
        Server server = new Server();
        SocketConnector connector = new SocketConnector();

        // Set some timeout options to make debugging easier.
        connector.setMaxIdleTime(1000 * 60 * 60);
        connector.setSoLingerTime(-1);
        connector.setPort(8080);
        server.setConnectors(new Connector[] { connector });

        WebAppContext bb = new WebAppContext();
        bb.setServer(server);
        bb.setContextPath("/");
        bb.setWar("src/main/webapp");

        // START JMX SERVER
        // MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
        // MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer);
        // server.getContainer().addEventListener(mBeanContainer);
        // mBeanContainer.start();

        server.addHandler(bb);

        try {
            System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP");
            server.start();
            System.in.read();
            System.out.println(">>> STOPPING EMBEDDED JETTY SERVER"); 
            // while (System.in.available() == 0) {
            //   Thread.sleep(5000);
            // }
            server.stop();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(100);
        }
    }
}

我使用的是 DLink 路由器,所以我不确定如何配置你的。但是,您还应该检查您的路由器是否打开了远程 Web 管理,以及是否在端口 8080 上。如果是,请将其关闭,因为它可能会干扰您的端口转发。

于 2010-06-21T06:16:36.193 回答
1

首先,尝试使用简单的 apache 或 woof。请务必将其绑定到 0.0.0.0(所有 IP)。A)如果你无法访问它,这是路由器配置问题。B)如果可行,您知道它不是码头/检票口配置。

案例A)我不知道那个路由器,但是寻找端口转发。我无法让 ASUS WL500gP 传递请求,所以我不适合在这里提出建议 :)

案例 B) Jetty 是否绑定到 0.0.0.0?您可以从本地网络上的其他机器访问它吗?

没有太多有用的答案,但我希望它有所帮助。

于 2010-06-20T23:37:47.187 回答