Troubleshooting Alterando o context-root no Jboss AS 7

 

Olá  Pessoal,

No troubleshooting de hoje veremos como alterar o nome do context quando estamos rodando uma app com JBoss AS 7. By default o jboss pega o nome do projeto + version do maven e faz o war. Algo assim:

ecommerce-1.0.0.0.0.1-SNAPSHOT.war

Feio chamar aplicação assim no browser né: http://localhost:8080/ecommerce-1.0.0.0.0.1-SNAPSHOT

Solução:

1. Crie um arquivo chamado jboss-web.xml em WEB-INF

2. E adiciona o código assim com o nome do contexto que deseja

 <jboss-web>

  <context-root>ecommerce</context-root>

</jboss-web>

Pronto, resolvido agora, mas gastei uns minutos para descobrir que era essa a forma.

Abracos, see ya!! 

Troubleshooting maven war plugin failure com JSF Project

Olá Pessoal,

Hoje veremos um troubleshooting com maven. Se você já criou um projeto maven e depois adicionou funcionalidade do JSF ao projeto e ao realizar  mvn install teve a mensagem a seguir…

BUILD FAILURE

[INFO] ————————————————————————

[INFO] Total time: 2.321s

[INFO] Finished at: Sat Feb 02 16:34:52 BRST 2013

[INFO] Final Memory: 6M/15M

[INFO] ————————————————————————

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war (default-war)

 

…Certamente você ficou muito irritado. Na primeira vez eu não fiquei, mas  depois de um tempo sim. Bem, a questão é que ao adicionar as funcionalidade do JSF ao seu maven project,  a estrutura do seu projeto fica diferente do que é esperado por default pelo plugin do maven que gera o war.

O que ele espera: suapp\web-inf\web.xml

Mas o que é na realidade: \suapp\WebContent\WEB-INF\web.xml

Então, o que fazer?

Simples, adicione o plugin a seguir ao seu pom.xml

<plugin>

                    <groupId>org.apache.maven.plugins</groupId>

                    <artifactId>maven-war-plugin</artifactId>

                    <configuration>

                    <webXml>..\suapp\WebContent\WEB-INF\web.xml</webXml>

                    </configuration>

             </plugin>

 

O caminho do web.xml pode variar de acordo como está seu projeto, na dúvida clique com o botão direito no web.xml do projeto e vá na opção copy qualified name  e cole no bloco de notas e assim você obtém o caminho completo.

Bom, é isso ai. Vou ficando por aqui.

Abraços, see ya!! 

TroubleShooting: Fazendo deploy via Maven + JSF Project

 

 

Olá Pessoal,

O troubleshooting de hoje é um problema que descobri ao tentar usar Maven + JSF Project  +  qualquer Server APP. Você deve tá se perguntando: Como assim? Não entendi. Calma que vou explicar.

Lets go…

O problema

Se você criou projetos no Eclipse usando o Jboss tools e decidiu criar um projeto JSF Project  que temos no Jboss tools, vai ter um problema na hora que precisar fazer um quick start deplostart deploy usando algum plugin dos servidores de aplicação a seguir: jetty, jboss e tomcat. Mas, qual o problema?

Simples. Quando criamos um JSF Project todo o conteúdo para web vai ficar na pasta WebContent e ai que começa o problema, pois esta pasta não é padrão do maven e quando fazemos um deploy usando algum plugin dos app servers, simplesmente vamos ver que  suas páginas (.jsp, .xhtml etc) não serão copiadas junto com .war gerado pelo maven e ao acessar sua aplicação verá o error 404. E agora, como resolver?

A solução

Para resolver o problema não encontrei outra solução senão copiar tudo que tinha dentro de WebContent e colocar dentro de webapps, deixando assim:

 mavenwebapps

Execute o seguinte comando:

mvn eclipse:clean

Em seguida

 mvn eclipse:eclipse –Dwtpversion=2.0

No Eclipse, dê um refresh no projeto.

Clique com o botão direito no projeto e vá em properties e verique se está conforme a imagem a seguir. Caso tenha referência para WebContent, basta remover.

mavendeploymentassembly

Agora é só fazer o deploy com o seu servidor de preferência. Claro, é preciso ter o plugin do servidor adicionado ao pom.xml.

Vou ficando por aqui. Ah, há uma solução mais elegante, porém deixarei para o próximo post J

See ya!!

Abraços,

 

Troubleshooting: Maven HSQLDB Exception Hibernate 4

 

Olá pessoal,

O troubleshooting de hoje é bem simples, pelo menos nesse aqui não levei mais que 20 min para achar a solução. Migrando de Hibernate 3.x para  4.x  tive um problema com os testes que rodam com HSQLDB ao executar mvn test. Vamos ver o problema.

Lets go…

O problema

Ao executar os testes localmente fora do maven pelo Eclipse, funcionava normalmente, claro tinham as libs corretas no meu classpath, mas ao rodar pelo maven, os testes que usavam HSQLDB falhavam e com a seguinte exceção:

org.hibernate.exception.GenericJDBCException: This function is not supported

Caused by: java.sql.SQLException: This function is not supported

 

O motivo

A dependência para o HSQLDB deve ser:

<dependency>

<groupId>org.hsqldb</groupId>

<artifactId>hsqldb</artifactId>

<version>2.2.8</version>

</dependency>

 

Porém é comum declararmos:

<dependency>

<groupId>hsqldb</groupId>

<artifactId>hsqldb</artifactId>

<version>1.8.0.10</version>

</dependency>

 

Não use essa última, pois ela não dá suporte ao Hibernate 4. Não cheguei a testar se no Hibernate 3 há o mesmo problema.

Feita a alteração, rode mvn test e veja que seus testes passarão normalmente.

É isso ai, vivendo e aprendendo. Vou ficando por aqui…

Abraços, see ya!! 

ThroubleShooting: Resolvendo .OutputLabelRenderer.encodeEnd PrimeFaces

Olá Pessoal,

O throubleshooting de hoje, é algo muito bobo,mas chato que acontece ao usarmos o <p:outputLabel />do Primefaces. Se vc faz isso:

<p:outputLabel value=”Tipo da Conta” />

Simplesmente verá algo assim:

The error is the following:

java.lang.NullPointerException     at org.primefaces.component.outputlabel.OutputLabelRenderer.encodeEnd(OutputLabelRenderer.java:38)

Mas, por que isso acontece?

Simplesmente, pq esse componente requer  que o atributo for esteja associado a um id no input. E dai para resolver basta fazer isso:

<p:outputLabel for=”accountType” value=”Tipo da Conta” />

<h:inputText id=”accountType” value=”#{accountBean.account.type}”/>

Ou seja, nós temos um for para o id.

Simples assim. Não? Mas, muito chato de resolver. :).

abracos vou ficando por aqui.

See ya!!