Estou com dois projetos que utilizam 80% das bibliotecas iguais, ambos estão rodando no mesmo servidor e gostaria de mover as libs equivalentes para o Servidor e não deixar na aplicação. Sugestão de como posso estar configurando?
Você não usa maven ? caso não utilize e esteja carregando tudo no classpath da aplicação não faço isso brother de jogar elas no server, isso não é legal, use o maven.
O tomcat cria um classloader por webapp, então ele faria load de todas bibliotecas que antes estariam no classpath mais as bibliotecas que ele disponibiliza depois iria fazer tudo denovo para a segunda app, o correto é usar o maven.
Utilizo Maven! As aplicações ficam com tamanho maior por levarem as libs juntas então eu fiquei pensando se não teria como o tomcat carregas as libs e ficar carregadas para as 2 aplicações, em contra partida teria war menores.
Perdoa brother, estava envolvido em um deploy aqui enquanto respondia fórum, sim, quando você empacota vai tudo mesmo, no meu caso eu uso o jenkins então só subo os fontes para o SVN e ele se encarrega de empacotar e fazer o deploy nos servidores, no seu caso você deve estar enviando via FTP, mesmo assim é uma má pratica brother adicionar elas la no tomcat mas acho que tem como configurar isso, você cria um diretório lá e mapea em algum lugar no tomcat para ler deste local compartilhado, vou ver se encontro nas docs porque eu não uso tomcat a bastante tempo.
Então o problema esta quando eu executo empacotamento. estou executando o clean package e então o war é gerado. Preciso fazer mais algum procedimento? Pois o arquivo que esta sendo gerado esta levando libs juntas que deixa o war com tamanho grande.
Então @jeroqueiroz,
encontrei esse post no stack falando exatemente sobre isso, eu só vejo problemas pela frente fazendo isso, aqui esta a definição do classloader do tomcat8
Eu não tenho certeza mas na resposta número 4 ele diz:
We are using tomcat6 and find a good way to have tomcat stuffed with common libraries all our webapps need.
Edit in conf/catalina.properties the entry common.loader. E.g. append an additional folder with jars you like to share ‘mylibs’
common.loader=${catalina.base}/lib,${catalina.base}/lib/.jar,
${catalina.home}/lib,${catalina.home}/lib/.jar,
{catalina.home}/mylibs/*.jar
Then put all the common libraries there. Done.
agora teria que testar porque eu acho que isso só era possível no tomcat6, tem que ver os files de configuração, mas mesmo assim brother não tem como usar uma integração contínua ? a alguns anos eu venho utilizando o jenkins e fica tudo muito simples, claro temos todo um cenário de testes etc… mas nosso grupo de dev’s apenas comita seus fontes, você tem a opção de deixar automático ou não a geração dos builds, mas os testes rodam e qualquer erro o deploy não é realizado, estando tudo ok, um hotdeploy ocorre, simples assim, acho que vale pensar na idéia.
Vou dar uma olhada. Obrigado a atenção.
Esta sendo gerado um WAR com 42MB sendo um projeto JSF 2.2 + PrimeFaces + JPA/Hibernate. O que acha deste tamanho do arquivo gerado?
normal @jeroqueiroz, é como falei acima, como você envia o package por FTP para deploy tem que ir tudo mesmo, se você configurar como falamos acima no tomcat adicionando tudo na lib dele eu não vejo isso com bons olhos, imagina amanhã vc subir uma aplicação pequena que tem umas 2 ou 3 libs e ter todas aquelas libs compartilhadas pelo container, ou pior que isso, imagina começar os conflitos de bibliotecas, e isso indiferente de utilizar o modo shared ou não, certamente vai ter problemas, como os de memory leak e outros, lembra que ele cria um loader para cada webapp, então baseado nisso tudo eu penso que continous integration é o melhor para você.
Esse ambiente que você ira realizar o deploy é uma VPS? onde você pode instalar o server que desejar? ou é uma instância comprada do Tomcat? porque se for uma instância do Tomcat acredito que você não tenha acesso a essas configurações mas ai já desconheço, porque vai depender da empresa que te fornece o serviço, acho que faria mais sentido utilizar esta feature do Tomcat se fosse apenas para jar’s como connectors de banco de dados etc… veja mais nas doc´s do Tomcat na parte de deploy.
Ok. Vou olhar. É uma instancia comprada pra rodar somente uma aplicação pequena para um cliente especifico. Também não haverá atualizações constantes não. A partir do escopo definido tera somente alguns ajustes, como falei é pra uma necessidade muito especifica de um cliente, mas vou dar uma olhada neste cenário que voce informou. Muito obrigado pela atenção.
Achei aqui uma instalação bem facil de fazer, é pelo .war do jenkins então acredito que basta publicar na sua instância do tomcat, veja:
https://wiki.jenkins-ci.org/display/JENKINS/Tomcat
aqui o download
https://updates.jenkins-ci.org/download/war/
abraços.
Excelente. Vou olhar!