让Resin HttpProxyServlet支持多域名
作者:anotherbug 日期:2008-06-09 00:39:38
一般应用中有ajax进行跨子域代理调用时,通常需要设置HTTP代理,解决域的权限问题。
举例,blog.chinajavaworld.com中用ajax调search子系统的服务,Resin的HttpProxyServlet设置如下:
在search.chinajavaworld.com/ajax/search/test.jsp中
现在访问:
http://blog.chinajavaworld.com/ajax/search/test.jsp,输出:
当应用要支持多域名访问时,问题来了:
如用 http://blog.chinajavaworld-bbb.com/ajax/search/test.jsp 进行访问,输出也是:
如果设置两个host
则用两个域名访问的话,都将输出:
现在的需求是,用哪个主域名访问的,就必须返回与该主域名一致的子域
解决方法:修改 HttpProxyServlet 源码:
TcpPool.java加入以下方法:
HttpProxyServlet中加入:
String host = req.getHeader("Host");
String mainHost = TcpPool.getMainDomain(host);
然后将
TcpPool.Server server = _tcpPool.nextServer();
替换为
TcpPool.Server server = _tcpPool.nextServer(mainHost);
举例,blog.chinajavaworld.com中用ajax调search子系统的服务,Resin的HttpProxyServlet设置如下:
1 | <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 | <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 | 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 次评分)
评论: 38 | 查看次数: 4485
发表评论
订阅
上一篇
|

文章来自:
标签: 





网站优化
google优化
品牌搜索网
生物灭螂 网站建设
google优化
防水卷材
北京google优化
上海google优化
上海装饰建材网
网站优化
google优化
品牌搜索网
生物灭螂
网站建设
google优化
防水卷材
防水卷材
防水卷材
防水卷材
防水卷材
防水卷材
防水卷材
防水卷材
防水卷材
防水卷材
上海装饰建材网
网站优化
google优化
品牌搜索网
生物灭螂
网站建设
google优化
鸿阳装潢
上海装饰
东方股票网
东方股票网东方股票网东方股票网东方股票网财经财经股票入门股票入门
beijing massage
beijing massage
beijing massage
泵
泵
水泵
水泵
齿轮输油泵
齿轮输油泵
离心泵
离心泵
磁力泵
磁力泵
化工泵
化工泵
隔膜泵
隔膜泵
转子泵
转子泵
螺杆泵
螺杆泵
潜水泵
潜水泵
多级泵
多级泵
循环泵
循环泵
排污泵
排污泵
自吸泵
自吸泵
液下泵
液下泵
管道泵
管道泵
wow account
wow accounts
buy wow account
buy wow accounts
world of warcraft account
法国留学签证
法国留学申请
法国大学排名
澳洲留学网
法国留学网
留学韩国
澳洲留学论坛
韩国签证
加拿大签证
苏州朗阁
mobile Games
Java Games
cell phone games
phone games
窃听器
手机监听器
监听器
手机窃听器
窃听器
手机监听器
监听器
手机窃听器
窃听器
手机窃听器
窃听器
手机监听器
监听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
手机窃听器
窃听器
wrath of the lich king key
lich king cd key
buy wrath of the lich king CD Key
wrath of the lich king key generator
wrath of the lich king cd keys
WOTLK cd key
buy wotlk cd key
wrath of lich king cd key
buy wrath of the lich king key
wotlk cd key
wrath of the lich king CD key
buy wotlk CD key
buy wotlk key
wrath of the lich king key
wotlk cd keys
wrath of lich king cd key
lich king cd key
wotlk gold
wotlk gold
wotlk power leveling
wotlk power leveling
wrath of the lich king gold
wrath of the lich king gold
wrath of the lich king power leveling
wrath of the lich king power leveling
wow power leveling
wow power leveling
Air Jordan Shoes
wow gold
wow power leveling
CAD软件下载
CAD软件下载
CAD软件
CAD软件
CAD
CAD
Java Games
mobile Games
cell phone games
phone games
age of conan gold
age of conan gold
修鞋设备
修鞋设备
烘干机
烘干机
加盟连锁干洗
加盟连锁干洗
专业洗鞋店
专业洗鞋店
洗涤机械
洗涤机械
洗衣技术培训学校
洗衣技术培训学校
洗衣技术培训
洗衣技术培训
洗衣培训
洗衣培训
洗涤设备
洗涤设备
洗染店
意大利留学论坛
意大利留学网
意大利大学排名
意大利留学申请
意大利留学费用
意大利留学签证
意大利留学中介