Estou tentando alterar o aplicativo padrão de um servidor da Web Tomcat 6 para um aplicativo diferente de "ROOT" (dentro da pasta webapps). Qual é a melhor maneira de fazer isso?
Estou tentando alterar o aplicativo padrão de um servidor da Web Tomcat 6 para um aplicativo diferente de "ROOT" (dentro da pasta webapps). Qual é a melhor maneira de fazer isso?
Respostas:
Existem três métodos:
Primeiro desligue o seu Tomcat a partir do bindiretório ( sh shutdown.sh). Em seguida, exclua todo o conteúdo da sua webappspasta Tomcat ( rm -fr *). Em seguida, renomeie seu arquivo WAR para ROOT.ware, finalmente, inicie o Tomcat a partir do bindiretório ( sh startup.sh).
Deixe seu arquivo de guerra $CATALINA_BASE/webappscom o nome original. Desative o
autoDeploy e deployOnStartup no seu elemento Host no server.xmlarquivo. Defina explicitamente todos os Contextos do aplicativo server.xml, especificando os atributos path
e docBase . Você deve fazer isso porque desabilitou todos os mecanismos de implantação automática do Tomcat e o Tomcat não implantará mais seus aplicativos, a menos que encontre seu Contexto no server.xml.
segundo método: para fazer alterações em qualquer aplicativo, você precisará parar e reiniciar o Tomcat.
Coloque seu arquivo WAR fora de $CATALINA_BASE/webapps(ele deve estar fora para impedir a implementação dupla). Coloque um arquivo de contexto chamado ROOT.xmlem $CATALINA_BASE/conf/. O único elemento neste arquivo de contexto DEVE ter um
atributo docBase apontando para o local do seu arquivo WAR. O elemento path não deve ser definido - é derivado do nome do .xmlarquivo, neste caso ROOT.xml. Consulte a documentação do contêiner de contexto para obter detalhes.
$CATALINA_BASE/conf/[enginename]/[hostname]diretório (que para minha configuração básica é $CATALINA_HOME/conf/Catalina/localhost). Consulte a documentação do Context Container .
sudo systemctl start tomcatxonde xrepresenta o número da versão
Adicionando uma <Context>tag na <Host>tag no server.xmlpara Tomcat 6 vai resolver o problema.
Se você usar path=""vazio, poderá usar um URL como http://localhost/first.do.
Na marca de contexto, defina os atributos docBase="E:\struts-ITRCbook\myStrutsbook"e reloadable="true", em seguida, termine a marca de contexto.
Deve ser algo como isto:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
</Context>
</Host>
No Tomcat 7 com essas alterações, eu posso acessar myAPPem /e ROOTem/ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
Adicione acima à <Host>seção em server.xml
/ROOTe tento fazer login na página do Gerenciador usando as credenciais corretas, o acesso é negado. Você saberia como consertar isso?
O aplicativo padrão ROOT geralmente é o Tomcat Manager - o que pode ser útil, então tive vontade de mantê-lo por perto.
Então, a maneira como eu criei meu aplicativo ROOT e mantive o TCmgr foi assim.
renomeou ROOT para outra coisa
mv ROOT TCmgr
então criei um link simbólico pelo qual o ROOT aponta para o aplicativo que eu quero usar como padrão.
ln -s <your app> ROOT
trabalhou para mim e parecia a abordagem mais fácil.
De acordo com os documentos do Apache Tomcat, você pode alterar o aplicativo criando um arquivo ROOT.xml. Veja isto para mais informações:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
"O aplicativo da web padrão pode ser definido usando um arquivo chamado ROOT.xml."
Você pode fazer isso de uma maneira um pouco hack-y:
Uma solução alternativa seria criar um servlet que envie um redirecionamento para o aplicativo da web padrão desejado e mapear esse servlet para todos os URLs no aplicativo da web ROOT.
package com.example.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RedirectServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendRedirect("/myRootWebapp");
}
}
Adicione a classe acima a
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet.
E adicione o seguinte a CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml:
<servlet>
<display-name>Redirect</display-name>
<servlet-name>Redirect</servlet-name>
<servlet-class>com.example.servlet.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
E, se desejado, você pode modificar facilmente o RedirectServlet para aceitar um parâmetro init para permitir que você defina o webapp padrão sem precisar modificar a fonte.
Não tenho certeza se fazer isso teria implicações negativas, mas testei isso e parece funcionar.
a configuração context.xml não funcionou para mim. O Tomcat 6.0.29 reclama que o docBase está dentro do appBase: ... Para o Tomcat 5, isso realmente funcionou.
Portanto, uma solução é colocar o aplicativo na pasta ROOT.
Outra solução muito simples é colocar um index.jsp no ROOT que redireciona para o meu aplicativo assim: response.sendRedirect ("/ MyApplicationXy");
Atenciosamente, Jan
Eu tenho um problema ao configurar o Tomcat ' server.xmle adicionar o elemento Context. Ele simplesmente não quer usar minha configuração:
http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.html
Se você estiver em um Unix-likesistema:
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOTln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOTFeito.
Funciona para mim.
A melhor maneira de alterar o aplicativo raiz do tomcat. Testado no Tomcat 7 e 8.
Mova para o diretório tomap webapps:
Exemplo na minha máquina: ~/stack/apache-tomcat/webapps
Renomeie, substitua ou exclua a pasta ROOT. Meu conselho é renomear ou criar uma cópia para backup. Exemplo de renomeação de ROOT para RENAMED_ROOT:
mv ROOT RENAMED_ROOT
Mova o arquivo war com seu aplicativo para o diretório tomcat webapps (é um diretório onde estava a pasta ROOT antiga, na minha máquina: ~ / stack / apache-tomcat / webapps)
O arquivo war deve ter um nome ROOT.war . Renomeie seu aplicativo, se necessário: yourApplicationName.war -> ROOT.war
Vou dar uma olhada nos meus documentos; existe uma maneira de especificar uma configuração para alterar o caminho do aplicativo Web raiz para longe do ROOT (ou ROOT.war), mas parece ter mudado entre o Tomcat 5 e 6.
Encontrou isto:
http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html
Portanto, parece que alterar o caminho raiz (no ROOT.xml) é possível, mas um pouco danificado - você precisa mover seu WAR para fora do diretório de implantação automática. Se importa se eu perguntar por que apenas renomear seu arquivo para ROOT.war não é uma solução viável?
Não é uma solução muito boa, mas uma maneira é redirecionar do aplicativo ROOT para o YourWebApp. Para isso, você precisa modificar o ROOT index.html.
<html>
<head>
<title>Redirecting to /YourWebApp</title>
</head>
<body onLoad="javascript:window.location='YourWebApp';">
</body>
</html>
OU
<html>
<head>
<title>Redirecting to /YourWebApp</title>
<meta http-equiv="refresh" content="0;url=YourWebApp" />
</head>
<body>
</body>
</html>
Referência: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html
No Tomcat 7 (no servidor Windows), não adicionei nem editei nada em nenhum arquivo de configuração. Acabei de renomear a pasta ROOT para outra coisa e renomeei minha pasta de aplicativos para ROOT e funcionou bem.