Troubleshooting Resolve OutOfMemory no Jetty c/ o Sonar

 

 

Olá Pessoal,,

O troubleshooting de hoje é para quem tentou fazer o deploy do sonar.war localmente no jJtty e recebeu o velho e famoso OutOfMemory permgen. Chato né?

 

E como resolver?

No windows, vá até a pasta onde está o jetty e procure o arquivo start.ini e adicione no final do arquivo:

 –exec

-Xmx512m

-XX:MaxPermSize=256m

No linux: 

Você precisa alterar o arquivo jetty.sh que está dentro da pasta bin. Adicione o trecho abaixo na linha 81, removendo o #.

export JAVA_OPTIONS=”-Xmx512m -XX:MaxPermSize=265m”

Pronto, isso já resolverá o problema. Agora basta executar o start.bat ou jetty.sh, depende do seu OS.

Abracos, see ya!!

Série CI: Rodando o Jenkins a partir do Jetty no Windows 7

Olá Pessoal,

Estarei começando uma pequena série de posts de Integração contínua usando o Jenkins. Em um dos posts vamos conectar o jenkins com o github e qualquer alteração no repositório o build começa. Mas antes de chegar lá vamos passar por outros posts importantes também : )  keep calm and develop.

No post de hoje veremos como rodar o Jenkins dentro do Jetty. Algo super simples.

Lets go..

Starting…

Essa é uma opção de termos o jenkins rodando, mas você pode fazer o download do package de acordo com o seu sistema operacional e instalar o jenkins diretamente. Não sei se há muitas vantagens entre as duas opções, mas particularmente prefiro ter um servidor e fazer o deploy do .war do jenkins.

Requisitos

Faça o download de uma versão do jetty. Vou usar o jetty 7.x porque é o que tenho aqui na máquina, porém há versões mais recentes: http://jetty.codehaus.org/jetty/

Após o download do jetty, descompate o arquivo:

 

jettydescompactadao

Abra o prompt de comando do Windows e vá até o local onde está a pasta do jetty:

 

cijettycmd

Podemos iniciar o Jetty só para ver se está tudo ok com ele, então digite:

java –jar  start.jar

 

cijettyjavajarstart

E aguarde o jetty iniciar. Após a inicialização do jetty acesse HTTP://localhost:8080

Você verá o seguinte:

 

cijettyrunning

Pronto, temos o jetty rodando. Isso é bom.

Agora vamos parar o jetty para fazer o deploy do Jenkins. Pare a aplicação com ctrl + C.

Vá no site do jenkins e baixe a versão .war.  (estou usando a última versão)

Após ter baixado o .war coloque o mesmo na pasta webapps, dentro do diretório do jetty que você descompactou ainda pouco:

No meu caso:

jetty-distribution-7.0.0.v20091005\jetty-distribution-7.0.0.v20091005\webapps

Agora, inicie o servidor Jetty novamente java  -jar start.jar

E precisamos aguardar o jetty fazer o deploy do jenkins. Na primeira vez será um pouco demorado. Após o jetty concluir o trabalho dele, vamos ver se o jenkins realmente foi deployed. Acesse http://localhost:8080/jenkins/ e verá:

cijenkinsdeployed

No meu caso, tenho um job criado no jenkins, mas não se preocupe, pois faremos um no próximo post.

Por hoje é isso apenas.

Abracos, see ya!! 

Rodando o Jenkins a partir do Jetty no Windows 7

Olá Pessoal,

Estarei começando uma pequena série de post de Integração contínua usando o Jenkins. Em um dos posts vamos conectar o jenkins com o github e qualquer alteração no repositório o build começa. Mas antes de chegar lá vamos passar por outros posts importantes também : )  keep calm and develop.

No post de hoje veremos como rodar o Jenkins dentro do Jetty. Algo super simples.

Lets go..

Starting…

Essa é uma opção de termos o jenkins rodando, mas você pode fazer o download do package de acordo com o seu sistema operacional e instalar o jenkins diretamente. Não sei se há muitas vantagens entre as duas opções, mas particularmente prefiro ter um servidor e fazer o deploy do .war do jenkins.

Requisitos

Faça o download de uma versão do jetty. Vou usar o jetty 7.x porque é que tenho aqui na máquina, porém há versões mais recentes: http://jetty.codehaus.org/jetty/

Após o download do jetty, descompate o arquivo:



Abra o prompt de comando do Windows e vá até o local onde está a pasta do jetty:

Podemos iniciar o Jetty só para ver se está tudo ok com ele, então digite:

java –jar  start.jar

E aguarde o jetty iniciar. Após a inicialização do jetty acesse HTTP://localhost:8080

Você verá o seguinte:

Pronto, então temos o jetty rodando. Isso é bom.

Agora vamos parar o jetty para fazer o deploy do Jenkins. Pare a aplicação com ctrl + C.

Vá no site do jenkins e baixe a versão .war.  (estou usando a última versão)

Após ter baixado o .war coloque o mesmo na pasta webapps, dentro do diretório do jetty que você descompactou ainda pouco:

No meu caso:

jetty-distribution-7.0.0.v20091005\jetty-distribution-7.0.0.v20091005\webapps

Agora, inicie o jetty novamente

java  -jar start.jar

E precisamos aguardar o jetty fazer o deploy do jenkins. Na primeira vez será um pouco demorado. Após o jetty concluir o trabalho dele, vamos ver se o jenkins realmente foi deployed, acesse http://localhost:8080/jenkins/

E teremos:

No meu caso eu tenho um job criado no jenkins, mas não se preocupe, pois faremos um no próximo post.

Por hoje é isso apenas.

Abracos, see ya!! 

Criando projeto JSF com Maven no Eclipse

Olá Pessoal,

No post de hoje vamos ver como criar um projeto JSF no Eclipse já suportando o Maven. Parece algo simples,  concorda? Mas pode dar uma dor de cabeça, e veremos o motivo.

Lets GO…

Starting…

Antes de mais nada instale o Jboss tools, conforme este post. Após a instalação, vamos ver o cenário que temos.

  • Maven 3.x
  • Eclipse Helios

Cenário 1

Você pode adicionar o maven ao seu projeto manualmente, ou seja, basta adicionar o pom.xml ao projeto e fazer as devidas configurações. Ideal é quando você já tem um projeto e no inicio não usava o maven, mas resolveu adotar agora, daí você não vai querer deletar o projeto e criar um novo “maven Project” certo. Mas sabemos que fazer configuração manualmente sempre é chato. Porém essa é uma forma de você adicionar o Maven ao seu projeto.

Cenário 2

Você está querendo começar um projeto do zero, tipo JSF Project. Mas, ao criar, vê que ele não está na estrutura do maven. E o que fazer? Podemos ir pelo cenário 1. Mas e se eu quiser já criar automático?  Há uma opção usando o File  New  Maven Project.



Quando escolhemos Maven Project há varias opções de criar um projeto, desde um simple maven Project, até um Project webapp.  Na imagem a seguir você pode ver as opções de maven Project disponíveis, porém muitos deles estão com bugs críticos que não cria o projeto ou dá umas exceções e trava tudo. Um exemplo é a appfuse para jsf + hibernate + Spring. Se tivesse funcionando seria muito show, mas infelizmente não está.  E o que fazer ir para o cenário 1?

É o que fiquei pensando. Apesar de podermos criar a nossa própria estrutura archetypes http://maven.apache.org/guides/mini/guide-creating-archetypes.html e ser fácil e rápido, mesmo assim ainda fiquei incomodado pelo fato de não conseguir gerar um projeto JSF, já com o Maven consegui com apenas alguns cliques.

Solução?

Sim, depois de muitas horas tentando entender o motivo e quebrando a cara com alguns plugins, achei um workaround. Vamos lá:

Crie um Maven Project (File è new è Project è maven project)

Na próxima tela deixe assim:

Clica em next e na tela seguinte vamos escolher maven-achetype-webapp

Clica em next

E agora vamos preencher. Estou presumindo que você já conhece o maven, então não irei explicar o que significa cada campo. Veja como ficou a minha:

Clique em finish.

Como você percebeu, o workaround foi criar um projeto do tipo webapp, mas ainda o projeto não tem suporte JSF, podemos fazer isso manualmente ou automaticamente. Clique com o botão direito no projeto e escolha configure >> add jsf capabilities:

Escolha o Servlet version 2.5

Clique em finish, no warning que aparecer clique em Yes

O projeto vai ficar “quebrado”, pois a versão do web.xml está diferente. Abra o web.xml e altere o version para 2.5

Agora precisamos adicionar as libs para JSF no pom.xml. Abra o pom.xml e clique na aba dependencies

E adicione:

com.sun.faces jsf-api

com.sun.faces jsf-impl

Não esqueça de adicionar também:

javax.servlet javax.servlet-api

javax.servlet jstl

Feito isso seu projeto deve tá assim:

Workaround para Windows 7

Quem tem Windows 7 pode se deparar com o problema de não conseguir executar “cmd” e para resolver o problema basta adicionar ao path do sistema o seguinte valor:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

O Maven não está atualizando no eclipse

Passei por esse problema de alterar o pom.xml e o maven não fazer o download das libs e a modificação não refletir no eclipse, daí basta forçar o download:

mvn eclipse:eclipse -DdownloadSources=true

Vou ficando por aqui, espero que tenham gostado do post.

See ya!

Rodando Jetty a partir do Maven

Olá Pessoal,

No post de hoje vamos ver como rodar o Jetty a partir do maven. Confesso que é a forma mais fácil e rápida. Já tentei de plugins no Eclipse etc, mas tem alguns plugins que dão muito trabalho, fora os bugs existentes.

Jetty no Maven

Para rodar o Jetty no maven é mais simples que tirar doce de criança. Caso não tenha nenhum projeto web com maven criado, siga os passos a seguir, caso contrário pule essa parte e veja só configuração do seu pom.xml e execute o maven.

Criando Projeto Maven Eclipse

File >> New >> Project

Maven  >> Maven Project

Clique em next e next

E na tela de Archetype escolha o projeto web, conforme a imagem a seguir:

A seguir o meu projeto:

Abra o arquivo pom.xml e vá na aba pom.xml.Dentro da tag build vamos adicionar o plugin para o Jetty e o maven vai se encarregar de fazer o restante:

<plugins>

<!– setup JETTY –>

<plugin>

<groupId>org.mortbay.jetty</groupId>

<artifactId>mavenjettyplugin</artifactId>

<version>6.1.26</version>

<configuration>

<!– uncomment this block if you want to change the default port jetty –>

<!– <connectors> <connector implementation=”org.mortbay.jetty.nio.SelectChannelConnector”>

<port>9090</port> </connector>

</connectors> –>

<!– force friendly name instead of artifact name + version –>              <contextPath>${project.build.finalName}</contextPath>

<!– You can save changes in a file or class and refresh your browser

to view the changes. –>

<scanIntervalSeconds>3</scanIntervalSeconds>

</configuration>

</plugin>

</plugins>

</build>

Feito isso, salve o arquivo e vamos rodar o jetty e ver  o resultado. Você pode rodar pelo Eclipse ou por fora via command line (eu gosto de rodar por fora).

Rodando pelo Eclipse

Clique com o botão direito no projeto >> Run As >> RunConfigurations

Escolha maven build e deixe conforme a tela a seguir:

Aqui não tem nada demais, apenas roda o comando mvn jetty:run e em base directory informamos o projeto que queremos.

Feito isso, o console do Eclipse deve estar assim:

Então podemos ver que o Jetty subiu normalmente.

Rodando via command line Windows

É bem simples. Abra o prompt do  Windows e vá até o diretório onde está o seu projeto. Ao chegar lá, execute o seguinte comando : mvn jetty:run  e veja que o Jetty será started. Na primeira vez que você fizer isso, o maven vai baixar os .jars  que são requeridos e deve demorar um pouco.

Testando aplicação

Para testar a aplicação é bem simples, com o Jetty rodando apenas digite no browser http://localhost:8080/   vai dar erro 404, não se preocupe, clique no link que está nessa página e certamente você vai ver a página index da sua aplicação, conforme a imagem a seguir:

Vou ficando por aqui!! Espero que tenham gostado do post.

See ya!! Abraços