2014-08-29 75 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庫,我只是通過這個今天做了: ​​