使用JBOSS和java以编程方式创建子域

时间:2012-03-25 18:02:07

标签: java jboss subdomain registration

目前我正在使用JSF,SEAM和Primefaces在JBOSS 7.1上开发应用程序。该应用程序提供用户注册。我需要的是当用户注册昵称的帐户时,例如“andrew”,他的个人资料将被公开访问为andrew.mysite.com。

如何以编程方式实现此功能。

提前致谢,

Ilya Sidorovich

1 个答案:

答案 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_jkmod_proxymod_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();

    }

}