2014-08-29 214 views
4

我使用Jetty ProxyServlet制作了一个简单的代理服务器。它适用于http协议。下面是我的代码(常规):Jetty ProxyServlet:如何添加HTTPS支持?

MyProxyServlet

class MyProxyServlet extends ProxyServlet { 
    static final Logger logger = LoggerFactory.getLogger(this) 

    @Override 
    void init(ServletConfig config) throws ServletException { 
     super.init(config) 
     logger.info('>>> init done!') 
    } 

    @Override 
    void service(HttpServletRequest request, HttpServletResponse response) { 
     logger.info('>>> got a request') 
     super.service(request, response) 
     response.addHeader('foo', 'bar') 
    } 
} 

的web.xml

<servlet> 
    <servlet-name>MyProxyServlet</servlet-name> 
    <servlet-class>com.foobar.MyProxyServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    <async-supported>true</async-supported> 
</servlet> 

<servlet-mapping> 
    <servlet-name>MyProxyServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

的代码被包裹成一场战争,root.war,并部署到在我的Mac上使用端口8080的Jetty服务器。然后在我的Mac的系统偏好设置中启用Web Proxy (HTTP)Secure Web Proxy (HTTPS)。如前所述,它适用于http。但是,对于HTTPS,它不起作用。那么,我怎样才能使它与HTTPS协同工作呢?

顺便说一句,根据此示例(Jetty ProxyServlet with SSL support),似乎我需要添加ConnectHandler,但我不知道如何在web.xml中实现此目的。

非常感谢。

+1

如果要针对码头9或写这个新的代码Servlet 3.1,那么*强烈建议*使用'AsyncProxyServlet'(正常的ProxyServlet仅适用于来自servlet 2.5的迁移代码) – 2014-09-02 13:34:54

回答

3

我不能评论这个,因为我没有足够的声望点。但我只是回答了另一篇文章的重复问题。

见我的答案在这里: Jetty ProxyServlet with SSL support

我添加了一些示例代码在这个公共GitHub库,我只是通过这个今天做了: ​​