目前我正在使用JSF,SEAM和Primefaces在JBOSS 7.1上开发应用程序。该应用程序提供用户注册。我需要的是当用户注册昵称的帐户时,例如“andrew”,他的个人资料将被公开访问为andrew.mysite.com。
如何以编程方式实现此功能。
提前致谢,
Ilya Sidorovich
答案 0 :(得分:4)
这只是将您的子域映射到可由appserver访问的URL的过程,并使用REST之类的东西将URL映射到请求参数。
在您的示例中,您可能需要像Apache Web服务器这样的Web服务器来处理可以执行某些URL重写的传入请求。像这样的东西
user.mysite.com --> www.mysite.com/user
在Apache中,这可以通过创建虚拟主机并使用RewriteCond和RewriteRule来实现。这是一个例子
RewriteCond %{HTTP_HOST} ^([^.]+)\.mysite\.com$
RewriteRule ^/(.*)$ http://www.mysite.com/%1/$1 [L,R]
然后,您可以将请求从Web服务器转发到应用程序服务器。如果使用Apache,可以使用mod_jk,mod_proxy或mod_cluster来完成。
完成后,您可以创建一个RESTFul服务(jboss支持REST),可以将URL映射到您的应用程序代码。这是一个例子
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/")
public class UserService {
@GET
@Path("/{param}")
public Response printMessage(@PathParam("param") String user) {
String result = "User : " + user;
return Response.status(200).entity(result).build();
}
}