订阅所有JSP/Servlet的日志 订阅 | 这是最新一篇日志 上一篇 | 下一篇日志 下一篇 ]
Resin

让Resin HttpProxyServlet支持多域名

一般应用中有ajax进行跨子域代理调用时,通常需要设置HTTP代理,解决域的权限问题。
举例,blog.chinajavaworld.com中用ajax调search子系统的服务,Resin的HttpProxyServlet设置如下:
1
2
3
4
5
6
7
<servlet>
  <servlet-name>http-proxy</servlet-name>
  <servlet-class>com.caucho.servlets.HttpProxyServlet</servlet-class>
  <init host='search.chinajavaworld.com:80' />
</servlet> 
 
<servlet-mapping url-pattern="/ajax/search/*" servlet-name="http-proxy" />


在search.chinajavaworld.com/ajax/search/test.jsp中
1
<%out.print(request.getHeader("Host"));%>

现在访问:
http://blog.chinajavaworld.com/ajax/search/test.jsp,输出:
1
search.chinajavaworld.com


当应用要支持多域名访问时,问题来了:


如用 http://blog.chinajavaworld-bbb.com/ajax/search/test.jsp 进行访问,输出也是:

1
search.chinajavaworld.com

如果设置两个host
1
2
3
4
5
6
<servlet>
  <servlet-name>http-proxy</servlet-name>
  <servlet-class>com.caucho.servlets.HttpProxyServlet</servlet-class>
  <init host='search.chinajavaworld.com:80' />
  <init host='search.chinajavaworld-bbb.com:80' />
</servlet> 

则用两个域名访问的话,都将输出:
1
search.chinajavaworld-bbb.com


现在的需求是,用哪个主域名访问的,就必须返回与该主域名一致的子域

解决方法:修改 HttpProxyServlet 源码:
TcpPool.java加入以下方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  public Server nextServer(String mainHost) {
Server bestServer = null;
synchronized (this) {
String _URL = null;
for (int i = 0; i < _servers.length; i++) {
Server server = _servers[i];
if (server.getURL().indexOf(mainHost) != -1) {
//System.out.println("ok,found host.return server.");
bestServer = server;
break;
}
if (i == _servers.length - 1)
  _URL = server.getURL();
}
if (bestServer == null) {
//System.out.println(mainHost+" is not in server list. add now.");
String oldMainHost = getMainDomain(_URL);
_URL = _URL.replace(oldMainHost, mainHost);
String _host = getDomain(_URL);
bestServer = new Server(_host);
_hosts.add(_host);
Server[] servers = new Server[_servers.length + 1]; 
System.arraycopy(_servers, 0, servers, 0, _servers.length);
servers[_servers.length] = bestServer;
_servers = servers;
}
return bestServer;
}
}


HttpProxyServlet中加入:

String host = req.getHeader("Host");
String mainHost = TcpPool.getMainDomain(host);


然后将

TcpPool.Server server = _tcpPool.nextServer();

替换为

TcpPool.Server server = _tcpPool.nextServer(mainHost);

平均得分
(0 次评分)





文章来自: 本站原创
标签: Resin 多域名 HttpProxyServlet 
评论: 38 | 查看次数: 4485
  • 共有 38 条评论
  • <<
  • |
  • 1
  • 2
  • 3
  • |
  • >>
游客 [2009-01-22 10:45:20]
游客 [2009-01-09 08:37:34]
游客 [2009-01-08 09:56:13]
出会い系オンリー出会い-Loversピンクの恋人メル友を探そう不倫人妻秘密サークル素敵な恋人探しご近所の人妻探しメル友ちぇき!不倫ありませんか!セフレPlaySpot女子高生出会い探し人妻がハマる出会い系出会いの森セックスフレンド大陸出会い系サーチご近所のメル友探しセフレステーション出会い系サイトFreedomセフレ伝説セックスフレンド無料サイト-プレミアムスタビLuxuryメル友無料募集サイト素敵なメル友探しご近所のアイシテル!人妻Magic!!プチ家出掲示板NO.1!リターンズ人妻DX出会い探し出会い放題出会い系
游客 [2008-12-31 15:27:24]
术+术:可能是唯一有可能冲上2300的同职业组合,天赋一般选用双恶魔法+贼:控制+爆发型,法师的爆发力略胜术士,不过容错性非常小,游戏相似组合还有法+野D,法+暗牧法+法:双冰法控制,综合来说还不错,续战力也存活能力也很强。双奥法的秒杀流一经提出就被喷的面目全非,我本人其实尝试过这个组合,可惜装备只有S2,法伤最多也只能撑到102X(现在能高不少),魔兽队友情况也差不多。这样的组合容错性低的离谱,虽然有10000+HP 400+韧性,但是感觉一被打就瞬间死,而且跑还跑不掉,所以这个打法还是更适合高端副本装,反正一样死很快。组合上还是克死战士队,别和我提盾反,网络游戏那么明显的动画效果能吸到个火冲不错了。网游基本上能够硬顶过我们5秒的职业只有骑士,冰法,盗贼和恶魔SS了。打盗贼队伍,如果是盗贼+看的见,一律先把看的见的OOXX了,双盗贼很难打,2斗篷我们免费网络游戏直接去一人。最后被一个队恶魔SS+骑士卡住了,因为奥法的后续爆发几乎没有,开局秒恶魔SS和骑士都不成功。感觉装备足够猛的话,2000是没问题的,2000以后看能否连好沉默来秒SS了。法伤最好是NOBUFF 1200+以上,最新网游保证秒杀的成功率,可以不用考虑血和韧性,建议装备牛B的法师们平时娱乐使用,非常畅快的战斗贼+暗牧:爆发力非常强的组合,而且他们的视频里很不厚道的最新免费网络游戏吃了金童3场贼+野D:第一赛季闷+盲+消失补闷+飓风的完美控制秒杀型队伍,不过在徽章能解所有控制技能之后容错性大大降低了。
游客 [2008-12-13 10:37:16]
游客 [2008-12-11 21:42:10]
游客 [2008-12-10 17:53:30]
术+术:可能是唯一有可能冲上2300的同职业组合,天赋一般选用双恶魔法+贼:控制+爆发型,法师的爆发力略胜术士,不过容错性非常小,游戏相似组合还有法+野D,法+暗牧法+法:双冰法控制,综合来说还不错,续战力也存活能力也很强。双奥法的秒杀流一经提出就被喷的面目全非,我本人其实尝试过这个组合,可惜装备只有S2,法伤最多也只能撑到102X(现在能高不少),魔兽队友情况也差不多。这样的组合容错性低的离谱,虽然有10000+HP 400+韧性,但是感觉一被打就瞬间死,而且跑还跑不掉,所以这个打法还是更适合高端副本装,反正一样死很快。组合上还是克死战士队,别和我提盾反,网络游戏那么明显的动画效果能吸到个火冲不错了。网游基本上能够硬顶过我们5秒的职业只有骑士,冰法,盗贼和恶魔SS了。打盗贼队伍,如果是盗贼+看的见,一律先把看的见的OOXX了,双盗贼很难打,2斗篷我们免费网络游戏直接去一人。最后被一个队恶魔SS+骑士卡住了,因为奥法的后续爆发几乎没有,开局秒恶魔SS和骑士都不成功。感觉装备足够猛的话,2000是没问题的,2000以后看能否连好沉默来秒SS了。法伤最好是NOBUFF 1200+以上,最新网游保证秒杀的成功率,可以不用考虑血和韧性,建议装备牛B的法师们平时娱乐使用,非常畅快的战斗贼+暗牧:爆发力非常强的组合,而且他们的视频里很不厚道的最新免费网络游戏吃了金童3场贼+野D:第一赛季闷+盲+消失补闷+飓风的完美控制秒杀型队伍,不过在徽章能解所有控制技能之后容错性大大降低了。
游客 [2008-12-05 15:33:40]
东大主打产品板链流水线、仪器仪表装配生产线设备;也可根据客户的实际需要进行对口适应性的设计制造。
游客 [2008-11-28 10:09:54]
游客 [2008-11-23 19:37:24]
游客 [2008-11-23 15:22:30]
游客 [2008-11-19 17:31:29]
游客 [2008-11-19 10:39:39]
游客 [2008-11-18 19:16:09]
游客 [2008-11-17 22:46:18]
  • 共有 38 条评论
  • <<
  • |
  • 1
  • 2
  • 3
  • |
  • >>
发表评论
昵 称:  登录
内 容:
选 项:
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启