1. As tarefas cronometradas da mola são executadas duas vezes
Reprodução de problemas e análise
Recentemente, usei a estrutura de tarefas de tempo de quartzo e descobri que não havia problema com a execução do ambiente de desenvolvimento. Depois de implantá -lo no servidor, descobri que a tarefa foi executada várias vezes ao mesmo tempo. Depois de pesquisar, descobri que havia um problema com o arquivo de configuração do TomCat no servidor.
O arquivo de configuração original - Server.xml é o seguinte:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t %r %s %b" /></Host><Host name = "www.xxx.com" appbase = "webApps" Unpackwars = "true" AutodelaPlay = "true" xmlvalidation = "false" xmlnamespaceaware = "false"> <contexto "" "DocBase ="/usr/local/Tomcat/Apache-Tomcat-8.5.5 </dost>
Um host representa um contêiner que pode conter vários contextos (aplicativos). O arquivo de configuração acima significa: dois contêineres estão configurados no tomcat, um nome = localhost, o diretório raiz do aplicativo é o webApps e o pacote de guerra será automaticamente descomprimido e implantado automaticamente. Se o contexto não for especificado, todos os aplicativos da Web no diretório raiz serão implantados. Depois que a implantação for bem -sucedida, a rede externa pode ser acessada através do nome do projeto IP + do servidor; O outro nome = www.xxx.com, que é diferente do primeiro host, é configurado com o aplicativo da web da página inicial e não precisa ser acessado com o nome do projeto. Depois que a implantação for bem -sucedida, você pode acessá -lo através do nome de domínio + nome do projeto e o projeto em que a página inicial está localizada pode ser acessada diretamente através do nome do domínio raiz.
Neste momento, surge o problema. O projeto que contém as tarefas de tempo é implantado no diretório WebApps. Dois contêineres independentes no Tomcat são implantados uma vez, o que é equivalente ao projeto do projeto duas vezes no tomcat no servidor. Ambos os lados executarão tarefas de tempo ao mesmo tempo e o mesmo banco de dados é especificado.
Resolução de problemas
Portanto, para não afetar o acesso normal de outros projetos o máximo possível, fiz um compromisso e disse que o projeto que precisa executar tarefas de tempo é implantado separadamente em outra pasta, como o Webroot e, em seguida, usa apenas o host de nome de domínio. Depois que o arquivo de configuração é modificado, o seguinte é o seguinte:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t %r %s %b" /></Host><Host name = "www.xxx.com" appbase = "" unpackwars = "true" AutodelaPlanei = "true" xmlValidation = "false" xmlNamespaceAware = "false"> <contexto de contexto = "" DocBase = "/usr/local/tomcat/apache-tomcat-8.5.9/WebAps/xx/xx/xxiNDINDINDEX/xx/webApTex/xxiNDEX/xxiNDEX/xxiNDEX/webApts/xxiNDEX/xxiNDEX/webApTex/xxern/xxiNDINDEX/webApTex/xxiMerB) Path = "/Projecta" docBase = "/usr/local/tomcat/apache-tomcat-8.5.9/webapps/projeca" Reloadable = "true"> </context> <context path = "/ProjectB" docbase = "/usr/local/tomcat/apache-tomcat-8.5.9/WebApps/ProjectB"/Local/Tomcat/Apachead) Path = "/Projectc" docBase = "/usr/local/tomcat/apache-tomcat-8.5.9/webroot/Projectc" Reloadable = "true"> </xectent> </dost>
Você pode ver que o ProjectC é um projeto que contém tarefas de tempo. Após a implantação bem -sucedida, exceto o projeto que só pode ser acessado através do nome de domínio, o método de acesso dos outros projetos permanece inalterado antes. Ao mesmo tempo, o problema é resolvido e a tarefa de tempo é executada apenas uma vez.
Outro ditado online
<Host name = "localhost" appbase = "webApps" Unppackwars = "true" AutodelaPlay = "true"> <contexto docbase = "Projecta" path = "" Reloadable = "true" /> </dost>
Existe apenas um host. Quando o Tomcat for iniciado, todos os projetos no diretório raiz serão implantados uma vez e, em seguida, o contexto será implantado mais uma vez, o que também fará com que a tarefa de tempo seja executada duas vezes.
Existem muitas soluções para esse problema:
2. O problema da implantação lenta do tomcat
O Alibaba Cloud Server que usei foi muito lento ao implantar o Tomcat, mas a nova nuvem do Alibaba que comprei mais tarde não teve esse problema. Depois que o projeto for implantado, será
Info [localhost-startstop-1] org.apache.catalina.startup.hostconfig.deployDirectory implantando diretório de aplicativos da web /opt/apache-tomcat-8.0.15-sever/webapps/root
Leva alguns minutos para continuar aqui. Eu costumava pensar que era o motivo da configuração do servidor, mas depois descobri acidentalmente que era o motivo da configuração do JRE. Depois de me referir a vários blogs, descobri que o Oracle dava motivos e soluções sob a documentação da WebLogic.
A biblioteca usada para geração de números aleatórios na JVM da Sun depende de /dev /aleatória por padrão para plataformas UNIX. Isso pode potencialmente bloquear o processo do WebLogic SIP Server, porque em alguns sistemas operacionais /dev /aleatório aguardam que uma certa quantidade de "ruído" seja gerada na máquina host antes de retornar um resultado. Embora /dev /aleatório seja mais seguro, a BEA recomenda usar /dev /urandom se a configuração JVM padrão atrasar o WebLogic SIP Server Startup.
Significado:
Método de modificação:
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.