JSF + 64 bits

Caros,

tenho uma aplicação com jsf + richfaces + hibernate que funciona tranquilamente em arquitetura 32 bits.

Instalei o fedora 13 64 bits com a maquina virtual também 64 bits o sistema passou a apresentar vários erros.

Tem algo a ver com a arquitetura?

Alguem sabe como resolver?

Sem mais,

Que tipo de erro?

JSF usa lib da JEE que por sua vez usa lib da JSE que só então tem contato com o SO.

Dependendo do erro no máximo acreditou eu que pode ser alguma versão da JVM.
Mas como disse, dependendo do erro.

Segue erro. Acontece ao executar os métodos do managed bean.

 java.lang.NullPointerException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

Essa pilha de erro não diz muita coisa, cole mais.

Obs: o ambiente da máquina virtual é o mesmo da física? Digo versões da jdk/jre , libs do projeto?
o erro acontece durante ou após a execuçaõ de um método da managed bean?
e outra, você ta rodando isso em qual browser e versão? (apenas por garantia, pergunta para pouco provável falha no processamento de requisição do jsf devido a parâmetros errôneos sei la :S)

Segue pilha de erro completa:

type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
javax.servlet.ServletException: #{loginFormBean.execute}: java.lang.NullPointerException
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
        org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
        org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

root cause 
javax.faces.FacesException: #{loginFormBean.execute}: java.lang.NullPointerException
        com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
        javax.faces.component.UICommand.broadcast(UICommand.java:387)
        org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
        org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
        org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
        org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
        com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
        org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

root cause 
javax.faces.el.EvaluationException: java.lang.NullPointerException
        javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
        com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
        javax.faces.component.UICommand.broadcast(UICommand.java:387)
        org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
        org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
        org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
        org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
        com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
        org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

root cause 
java.lang.NullPointerException
        br.com.luminar.forms.LoginFormBean.execute(LoginFormBean.java:102)
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:597)
        org.apache.el.parser.AstValue.invoke(AstValue.java:191)
        org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
        javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
        com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
        javax.faces.component.UICommand.broadcast(UICommand.java:387)
        org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
        org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
        org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
        org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
        com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
        org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
  • O erro acontece após a execução do managed bean.
  • Estou rodando no firefox 3 e no kongeror (antes minha maquina era 32 bits e rodava tudo)

ola, desculpa a pergunta besta mas só por garantia

VocÊ debugou a execução do método(na exata versão que roda neste ambiente virtual) até a última linha para ver se nada está errado em algum comando?
Estou perguntano porque lendo a stack parece mais é falha no próprio código mesmo.

Cara, o estranho é que em 32 bits funciona tudo ok. Ao debugar realmente aparecem algumas referências nulas. Mas para mim não faz sentido já que em 32 bits funciona. Inclusive no campo login em vez de aparecer em branco aparece o value #{nomedoBean.login}.

Cara seguinte, você não respondeu a pergunta sobre JDK utilizada no seu ambiente 64 bits.

Caso a resposta for sim, ou seja você esta utilizando a mesma JVM é bem provável que erros possam acontecer.
Pois existe uma compilação da mesma para cada arquitetura 32/64.

Um ambiente 64 consegue simular um ambiente 32, mas pelo que você me disse você não ta usando nenhum emulador, não é?

Não, o ambiente da máquina virtual não é o mesmo. Baixei a versão especifica para 64 bits, antes era 32. Como faço para simular 32 bits então?

Eu não sei exatamente como emula um ambiente 32 bits em um linux fedora. Você deveria pesquisar.

Mas me responde no seu ambiente de 32 bits você tava utilizando uma VM de fedora tb?

Se sim e se agora você realmente estiver utilizando a JVM 64 bits para linux daí receio que não sei como te ajudar. Porque pode ser fatores relacionados a JNI dessa versão que nem tenho idéia.
Daí nesse caso é só com bastante pesquisa na net mesmo :?

Em 32 bits estava utilizando o Windows 7. vou tentar mudar a JVM pra ver.

Abração e obrigado!

[quote=arquiris]Em 32 bits estava utilizando o Windows 7. vou tentar mudar a JVM pra ver.

Abração e obrigado![/quote]

Nossa estou com o mesmo problema que o seu. Tenho também uma aplicação com JSF + Hibernate + Richfaces Funcionando perfeitamente em 32 bits, após mudar de computador e utilizar o windows 7 64 bits, a aplicação ficou “maluca…” (desculpa a palavra). Instalei a jvm com jdk de 64 bits e também o tomcat 64 bits, mais não deu resultado. Alguém tem alguma idéia do que está acontecendo?

Cara, não funciona de jeito nenhum, os campos de texto ficam aparecendo #{loginFormBean.usuario.login}. Era para aparecer em branco como no windows. este valor é do campo value. Não sei mais o que fazer… já tentei de tudo.

FINALMENTE! - Resolvido.

A todos que tiverem problemas com aplicações 32 bits para 64 bits ou vice versa.

Pra quem tinha uma máquina com 32 bits e migrou para 64 bits.
1 - Instalar o Netbeans ou Eclipse.
2 - Instalar o JEE 5 ou superior.
3 - No JEE já vem com o jdk.
4 - Baixar o JKD para 64 bits.
5 - Substituir a pasta jdk completa do diretório Sun instalado pela nova do jdk 64 bits. Incluindo JRE.
6 - Baixar o tomcat para 64 bits ou outro servidor de aplicação 64 bits.
7 - Após instalado, adicionar o servidor no IDE.
8 - Abra sua aplicação no IDE, porém, não a execute.
9 - Crie uma nova aplicação com os mesmos frameworks que sua aplicação possui.
10 - Copie os arquivos src, web, xml e etc, da aplicação antiga para a nova criada.
11 - Execute a nova aplicação.
12 - Enjoy…