我使用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中實現此目的。
非常感謝。
如果要針對碼頭9或寫這個新的代碼Servlet 3.1,那麼*強烈建議*使用'AsyncProxyServlet'(正常的ProxyServlet僅適用於來自servlet 2.5的遷移代碼) – 2014-09-02 13:34:54