Como alterar a raiz de contexto de um projeto dinâmico da Web no Eclipse?

205

Eu desenvolvi um projeto web dinâmico no Eclipse. Posso acessar o aplicativo através do meu navegador usando o seguinte URL:

http://localhost:8080/MyDynamicWebApp

Quero alterar o URL de acesso para:

http://localhost:8080/app

Para fazer isso, alterei a raiz de contexto do projeto "Propriedades | Configurações do projeto da Web | Raiz de contexto". No entanto, o aplicativo Web ainda tem o mesmo URL de acesso. Reimplantei o aplicativo no Tomcat e reiniciei o Tomcat, mas o URL de acesso é o mesmo de antes.

Descobri que não havia nenhum server.xmlarquivo anexado ao WARarquivo. Sem o server.xmlarquivo anexado, como o Tomcat determina que a raiz de contexto do meu aplicativo Web é /MyDynamicWebAppe me permite acessar o aplicativo por meio desse URL da raiz de contexto?

Yatendra Goel
fonte

Respostas:

331

Tenho certeza que você já seguiu em frente, mas pensei em responder de qualquer maneira.

Algumas dessas respostas fornecem soluções alternativas. O que realmente deve acontecer é que você limpe e publique novamente seu projeto para "ativar" o novo URI. Isso é feito clicando com o botão direito do mouse no servidor (na visualização Servidores) e escolhendo Limpar. Então você inicia (ou reinicia). A maioria das outras respostas aqui sugerem que você faça coisas que efetivamente realizem isso.

O arquivo que está mudando é workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.dat, a menos que você tenha mais de um servidor no seu espaço de trabalho e, nesse caso, ele estará publishN.datno mesmo caminho.

Espero que isso ajude alguém.


Não tenho certeza se isso é etiqueta adequada ou não - estou editando esta resposta para fornecer as etapas exatas do Eclipse Indigo.

  1. Na do seu projeto Propriedades , escolha Configurações do projeto de Web .

  2. Altere a raiz de contexto para o aplicativo .

    captura de tela das propriedades do projeto Eclipse Web Project Settings

  3. Escolha Janela> Mostrar Visualização> Servidores .

  4. Pare o servidor clicando na caixa quadrada vermelha (dica "Parar o servidor") ou clique no contexto na lista de servidores para escolher "Parar".

  5. No servidor que você deseja usar, clique no contexto para escolher "Limpar ...".

    insira a descrição da imagem aqui

  6. Clique em OK nesta caixa de diálogo de confirmação.

    Captura de tela da caixa de diálogo solicitando atualização da configuração do servidor para corresponder à raiz de contexto alterada

Agora você pode executar seu aplicativo com o novo URL "app", como:

http://localhost:8080/app/

Fazer isso fora do Eclipse, em seu servidor de produção, é ainda mais fácil -> Renomeie o arquivo war. Exporte seu aplicativo Vaadin como um arquivo WAR ( Arquivo> Exportar> Web> arquivo WAR ). Mova o arquivo WAR para o contêiner de servlet do servidor da web, como o Tomcat. Renomeie seu arquivo WAR, neste caso, para app.war . Quando você inicia o contêiner de servlet, a maioria, como o Tomcat, implanta automaticamente o aplicativo, o que inclui a expansão do arquivo war para uma pasta. Nesse caso, devemos ver uma pasta chamada app . Você deve estar pronto para ir. Teste seu URL. Para um domínio como * example.com ", seria:

http://www.example.com/app/

Os programadores do Vaadin toolkit podem precisar reconstruir seu conjunto de widgets se estiverem usando complementos visuais.

Russ Bateman
fonte
Ótima resposta !!! Você salvar meu ost vida das outras respostas aqui sugiro que você faça coisas que de fato alcançar este objetivo
AndreaNobili
Aqui está o gênio desta resposta: eu procurei no Google o caminho para esta página e nem li as tags (estou criando um site ASP.NET usando o Visual Studio). Mas a solução funcionou de qualquer maneira!
Curt
Não tenho tais e opção "Configurações do projeto da Web"
IntoTheDeep
apenas dizendo que workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.daté um arquivo binário, eu não entendo por que você mencionou lá em cima, dá a impressão de que é a solução para o problema
aliopi
Mas e se não usarmos o Eclipse .. ou qualquer IDE .. Quero configurar programaticamente o caminho raiz do contexto do servlet. Como devo fazer isso? em web.xml provavelmente ..?
Giorgi Tsiklauri
32

Depois de alterar a raiz de contexto nas propriedades do projeto, você deve remover o aplicativo da Web do Tomcat (usando Adicionar e remover ... no menu de contexto do servidor), reimplemente, reinstale o aplicativo e reimplemente. Funcionou para mim.

Se você for atingido, terá outra opção: selecione o servidor Tomcat na visualização Servidores. Clicar duas vezes nesse servidor (ou selecionar Abrir no menu de contexto) traz um editor de várias páginas onde há uma página Módulos. Aqui você pode alterar o contexto raiz do seu módulo (chamado Caminho nesta página).

Csaba_H
fonte
Obrigado! Isso fez o truque para mim. no entanto, ele funciona mesmo sem alterar a raiz de contexto nas propriedades do projeto. Estou faltando alguma coisa aqui?
31411 Chris
Isso também costumava trabalhar para mim no Eclipse construções anteriores, mas na compilação atual (Luna) apenas a opção Limpar agora funciona
Griknok
namasety, dhanywaada :) quando eu mudei meu contexto, ele não funcionou mesmo após a reinicialização e limpeza do servidor. funcionou apenas post, tirei projeto e li.
Yogesh Sanchihar
24

Se você estiver executando o Tomcat no Eclipse, ele não usará a configuração da sua instalação real do Tomcat. Ele usa a configuração do Tomcat criada e armazenada no projeto "Servidores". Se você visualizar sua área de trabalho do Eclipse, deverá ver um projeto chamado "Servidores". Expanda o projeto "Servidores" e você encontrará o server.xml. Abra este arquivo e role até o fim, e você verá algo assim: -

<Context docBase="abc" path="/abc" reloadable="true" source="org.eclipse.jst.jee.server:abc"/>

Aqui, você pode simplesmente mudar o caminho do contexto do projeto para outra coisa.

Espero que isto ajude.

limc
fonte
Não sei se você deseja alterar todos os 3 valores. A solução da Csaba_H trabalhou para mim e que só muda o atributo "path" ...
Chris
Este não funcionou para mim - os arquivos nesse diretório são substituídos quando você reinicia o servidor. A versão dois do Csaba_H, guia Módulos no Tomcat Server, parece ser a abordagem "correta".
Idarwin 4/04/12
17

Eu tentei a solução sugerida por Russ Bateman Aqui no post

http://localhost:8080/Myapp para http://localhost:8080/somepath/Myapp

Mas não funcionou para mim, pois eu precisava ter um arquivo * .war que possa conter a configuração e não a instância individual do servidor na minha máquina local.

Referência

Para fazer isso, preciso do jboss-web.xml colocado no WEB-INF

<?xml version="1.0" encoding="UTF-8"?>
 <!--
Copyright (c) 2008 Object Computing, Inc.
All rights reserved.
-->
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

  <jboss-web>
  <context-root>somepath/Myapp</context-root>
  </jboss-web>
tosha Shah
fonte
Isso funcionou para mim. Ambiente = Eclipse + m2e + m2e-wtp + implementando no JBoss na visualização Servidores. Necessário para implantar o projeto principal da Web como ROOT e nenhuma configuração do Eclipse funcionou. Copiei o arquivo de Tosha (acima) e coloque "ROOT" sem aspas como o valor da raiz de contexto. Feito e feito. Obrigado, @Tosha!
Steven Francolla
Isso funciona, mas eu me pergunto por que ele ignora a configuração nas propriedades do projeto?
Vedran
4
Funciona com a final do JBoss WildFly 8.1.0
alexander
Migrei do MyEclipse 8.6 para o Eclipse e não consegui implantar com o contexto raiz '/'. A adição de jboss-web.xml funcionou com sucesso. servidor: Jboss AS 5.1 Eclipse Luna.
Sai
9

Definir o caminho para nada na caixa de diálogo de edição dos módulos da web do Eclipse me permitiu acessar o projeto sem nenhum componente de caminho na URL (ou seja, ROOT)

Você pode acessar a caixa de diálogo de edição de módulos da Web pressionando F3 se selecionar Tomcat na visualização "Servidores" ou clicando duas vezes nela.

Algumas capturas de tela:

Ray Hulha
fonte
Desculpe, mas você pode dar mais detalhes sobre isso?
smonff
ah obrigada! No Eclipse Luna no GNU / Linux, um /é necessário.
smonff
1
Eu usei o Eclipse Mars (4.5) no Win7.
Ray Hulha
6

O Apache tomcat mantém o caminho de contexto do projeto no caminho server.xml. Para cada projeto da web no Eclipse, existe uma tag a partir da qual você pode alterá-lo.
Suponha que haja dois ou três projetos implantados no servidor. Para cada caminho de contexto é armazenado. Essa tag está localizada no arquivo server.xml no Servidor criado no eclipse.

Eu tenho um projeto para lá no caminho da raiz de contexto no servidor é:

<Context docBase="Test" path="/test" reloadable="true" source="org.eclipse.jst.jee.server:Test1"/>

Esse caminho representa o caminho de contexto do seu aplicativo da web. Ao alterar esse caminho, o caminho de contexto do seu aplicativo da web será alterado.

Amar Poddar
fonte
6

Eu sei que a resposta já foi aceita. Mas, caso alguém que use o Maven deseje obter a mesma coisa, defina o finalName na compilação do maven com o nome que você deseja dar e faça um maven -> projeto de atualização

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>
Karthik
fonte
4

Se o projeto for finalizado, altere o "finalName" em pom.xml e atualize o projeto como Maven. Isso funcionou para mim.

Sudarshani Perera
fonte
2

No Glassfish, você também deve alterar o arquivo WEB-INF / glassfish-web.xml

<glassfish-web-app>
    <context-root>/myapp</context-root>
</glassfish-web-app>

Portanto, quando você clicar em "Executar como> Executar no servidor", ele será aberto corretamente.

Alan Weiss
fonte
Sim, precisamos. Boa partilha.
Dinath 18/08/19
2

Eu só queria acrescentar que, se você não deseja o nome do aplicativo no contexto raiz, basta colocar "/" (sem aspas, apenas a barra) no Eclipse -> Configurações do projeto da web -> Entrada de raiz de contexto

Isso implementará o aplicativo da web em apenas http: // localhost: 8080 /

Obviamente, isso causará problemas com outros aplicativos da web que você tenta executar no servidor, então lembre-se disso.

Levei uma eternidade para juntar tudo ... então, mesmo que este post tenha 8 anos, espero que isso ainda ajude alguém!

arcademonkey
fonte
0

No projeto java, abra a pasta .settings. lá localize o arquivo chamado "org.eclipse.wst.common.component". Altere a tag <wb-module deploy-name = "NEW_NAME">.

Você também pode alterar a raiz de contexto nas propriedades do projeto

user418836
fonte
tudo isso fica bem no meu projeto e funciona muito bem no eclipse. que é quando eu convertê-lo em um arquivo de guerra com o Maven que ele perde-lo do contexto de raiz e em vez de localhost / eventos / ele é executado no localhost / que quebra todas as minhas ligações
JesseBoyd
0

Se estiver usando o eclipse para implementar seu aplicativo. Podemos usar este plugin maven

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <wtpversion>2.0</wtpversion>
        <wtpContextName>newContextroot</wtpContextName>
    </configuration>
</plugin>

agora vá para a pasta raiz do projeto e abra o prompt do cmd nesse local, digite este comando:

mvn eclipse: eclipse -Dwtpversion = 2.0

Pode ser necessário reiniciar o eclipse ou, na visualização do servidor, exclua o servidor e crie um agian para ver o efeito. Eu me pergunto se esse exercício faz sentido na vida real, mas funciona.

Super Nova
fonte
0

Se estiver usando o aplicativo corporativo maven java ee 7/8, será necessário editar o pom.xml do projeto EAR

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>com.sample</groupId>
                        <artifactId>ProjectName-web</artifactId>
                        <contextRoot>/myproject</contextRoot>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>
John M
fonte