2013-03-14 92 views
1

我是jetty的新用户并开发了一个将所有http请求重定向到ssl端口的码头服务器。我在码头教程中找到了机密端口的概念,但它不起作用。我正在添加代码快照plz纠正我在哪里我错了。请求不能重定向到Jetty机密端口

public class ServerMain { 

    public static void main(String[] args) throws Exception { 

     Server server = new Server(); 
     SslContextFactory con = new SslContextFactory(); 
     con.setKeyStorePath("D:/.keystore"); 
     con.setKeyStorePassword("password"); 
     con.setTrustStore("D:/jssecacerts"); 
     con.setTrustStorePassword("changeit"); 

     SslSelectChannelConnector connector = new SslSelectChannelConnector(con); 
     connector.setHost("10.10.10.10"); 
     connector.setPort(8443); 
     connector.setMaxIdleTime(30000); 

     SelectChannelConnector connector1 = new SelectChannelConnector(); 
     connector1.setHost("10.10.10.10"); 
     connector1.setPort(8080); 


     //connector1.setConfidentialPort(443); 
     connector1.setConfidentialPort(8443); 

     server.setConnectors(new Connector[] {connector, connector1}); 

     QueuedThreadPool threadPool = new QueuedThreadPool(); 

     threadPool.setMaxThreads(24); 
     threadPool.setMinThreads(12); 

     server.setThreadPool(threadPool);  

     ContextHandlerCollection contexts = new ContextHandlerCollection(); 

     ContextHandler mycontext = new ContextHandler(); 
     mycontext.setContextPath("/test"); 

     Handler handler = new MyHandler(); 
     mycontext.setHandler(handler); 

     contexts.addHandler(mycontext); 

     HandlerCollection handlers = new HandlerCollection(); 
     handlers.setHandlers(new Handler[] { contexts, new DefaultHandler() }); 

     server.setHandler(handlers); 

     server.start(); 
     server.join(); 

    } 
} 

MyHandler也被添加在我处理请求和发送200好的地方。

请帮帮我。

+0

什么错误你好吗,什么错误到底是什么? – emecas 2013-03-14 07:53:15

+0

我没有收到任何错误。但是这些请求不会在ssl端口上重定向。案例1:当我点击一个url(http://10.10.10.10:8080/test)时,它没有在我的浏览器上显示任何ssl异常,并且只是与服务器连接。在这种情况下,它应该在浏览器上抛出异常。案例2:当我打(https://10.10.10.10:8443/test)时显示ssl异常。 – Nandan 2013-03-14 09:07:56

回答

0

为什么要将jetty重定向到使用当前设置的https连接器?要实现这样的事情,你必须为你的webapp添加一个安全约束,如这里所描述的(第一个链接,我在谷歌找到了,只需搜索webapp安全约束机密以查找更多示例):http://docs.oracle.com/javaee/6/tutorial/doc/gkbaa.html

或add从http连接器重定向到https连接器或类似的处理程序。

+0

我使用嵌入式Jetty,但在这里我找到了所有的示例和设置与web.xml和注释形式。所以,如果你有嵌入式码头的任何例子,请提供给我,因为我没有得到如何设置嵌入式码头中的安全约束。提前致谢。 – Nandan 2013-03-15 08:00:11

0

您可能需要在web.xml中配置transport-guarantee元素才能使其工作。

请参见: http://docs.oracle.com/cd/E19226-01/820-7627/bncbk/index.html

+0

请不要发布链接只有答案,因为链接可能会中断。 – NathanOliver 2015-05-21 19:42:52

+1

这不完全是一个链接的答案。它仍然说没有链接的东西。尽管如此,将更多的信息编辑到答案本身也是一件好事。 – 2015-12-12 06:57:49