Программно создавать субдомены с JBOSS и Java - PullRequest
3 голосов
/ 25 марта 2012

Сейчас я занимаюсь разработкой приложения на JBOSS 7.1 с использованием JSF, SEAM и Primefaces.Приложение обеспечивает регистрацию пользователя.Что мне нужно, так это то, что когда пользователь регистрирует учетную запись для псевдонима, например, «andrew», к его профилю будет открыт доступ как andrew.mysite.com.

Как я могу реализовать это программно.

Заранее спасибо,

Илья Сидорович

1 Ответ

4 голосов
/ 26 марта 2012

Это просто процесс сопоставления вашего субдомена с URL-адресами, к которым может обращаться сервер приложений, и использование чего-то вроде REST для сопоставления URL-адреса с параметрами запроса.

В вашем примере вам, вероятно, понадобится веб-сервер, такой как веб-сервер Apache, для обработки входящих запросов, который может выполнить некоторую перезапись 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]

Затем вы можете пересылать свои запросы с веб-сервера на сервер приложений. При использовании 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();

    }

}
...