Chamar a url da aplicacao de 2 formas VRaptor 3.5

ola galera
tenho esse metodo que carrega minha aplicacao no browse

@Path("/")
public void index(){
return

onde é carregada http://:8080/meusistema

gostaria tb de carregar meu sistema da sequinte forma
http://:8080/meusistema/0
http://:8080/meusistema/1
etc…
como eu faria no meu controlller???

e qual seria o uso disso?

Oi Lucas eu iria controlar o aplicativo por empresa (configuracao personalizada por empresa ), entao eu queria saber para qual empresa o sistema iria trabalhar.

resolvi isso dessa forma

   @Pach("/")
   public void index(){  // padrao no sistemas para usar em demonstracoes etc
          sessao.setEmpresa(Empresa.DEFAULT);
   }
   @Patch("/{empresa}"
   public void index(String empresa){
      if (empresa.equals("1"){sessao.setEmpresa(Empresa.EMPRESA1);}
      if (empresa.equals("2"){sessao.setEmpresa(Empresa.EMPRESA2);}
   {

E no meu JPAFactory fiz assin

public class JPAFactory{
   private static EntityManagerFactory factory;
   private static EntityManagerFactory empresa1;
   private static EntityManagerFactory empresa2;

   public static EntityManager getEntityManager(UserSession sessao){
    Map meuconfig = new HashMap();

    if (sessao.getEmpresa()==Empresa.DEFAULT &&  factory==null){
         meuconfig.put("hibernate.connection.url","jdbc:postgresql://localhost:5432/demonstra");
         factory = Persistence.createEntityManagerFactory("sistemaPU",meuconfig);
        sessao.setMyfactory(factory);
    }  
     if (sessao.getEmpresa()==Empresa.EMPRESA1 &&  empresa1==null){
         meuconfig.put("hibernate.connection.url","jdbc:postgresql://localhost:5432/empresa1");
         empresa1 = Persistence.createEntityManagerFactory("sistemaPU",meuconfig);
        sessao.setMyfactory(empresa1);
    }  
       if (sessao.getEmpresa()==Empresa.EMPRESA2 &&  empresa2==null){
         meuconfig.put("hibernate.connection.url","jdbc:postgresql://localhost:5432/empresa2");
         empresa2 = Persistence.createEntityManagerFactory("sistemaPU",meuconfig);
        sessao.setMyfactory(empresa2);
    }  
    if (sessao.getEmpresa()==Empresa.DEFAULT){
        return factory.createEntityManager();
    }else if(sessao.getEmpresa()==Empresa.EMPRESA1){
      return empresa1.createEntityManager();
    }else if(sessao.getEmpresa()==Empresa.EMPRESA2){
      return empresa2.createEntityManager();
    }else{
      return sessao.getMyfactory().createEntityManager();
   }

  }
}

Meu dao ficou assim

@Component
public class ProdutoDAO{
    private EntityManager manager;
    public ProdutoDAO(UserSession sessao){
        manager = JPAFactory.getEntityManager(sessao);
    }
}

Meu Controller

@Resource
public class ProdutoController{
     private Result result;
     private Validator validator;
     private ProodutoDAO produtodao;
     public ProdutoController(Result result, Validator validator,ProdutoDAO produtodao){
       this.result = result;
       this.validator = validator;
       this.produtodao = produtodao;
     }
}

Foi a unica maneira que conseguir.
Não achei maneira melhor de fazer isso!!!

só cuidado que vc não está fechando o EntityManager… isso pode segurar todas as conexões disponíveis com o banco de dados…

o ideal é vc criar uma factory:

@Component
public class ManagerFactory implements ComponentFactory<EntityManager> {
   //recebe no construtor o userSession
   //salva a entityManager num atributo

   //retorna o entityManager no getInstance()

   @PreDestroy
   public void fecha() {
       manager.close()
   }

}

parecido com esse cara, só vai mudar o construtor:

https://github.com/caelum/vraptor-jpa/blob/master/src/main/java/br/com/caelum/vraptor/util/jpa/EntityManagerCreator.java

daí vc recebe apenas EntityManager no construtor dos daos.