Autor |
Mensagem |
|
Oi Rogel, obrigado por responder.
Olha, consegui resolver todos os problemas (não me pergunte como, ahauhauh), inclusive inclui um botão de limpar formulário com um código do plugin form do jQuery. Baixei e estou fazendo builds em cima da versão 3.4.0... assim que tiver alguma coisa legal eu te passo.
Algumas coisas podiam ser melhoradas, como por exemplo a obrigatoriedade de se anotar os métodos das entidades ao invés das propriedades. Percebi isso no Crud, quando ele busca pela anotação @Id nos métodos.
Mas.... esse problema é dos menores, o pior mesmo é que eu já tinha um projeto JPA rodando num projeto Enterprise, ou seja, o meu deploy de JPA acessado por um projeto EJB... agora não sei nem por onde começar para integrar o meu projeto JPA dentro do Neo.
Também tive que criar ServiceLocator para injetar os EJBs visto que ele não aceitou a anotação @EJB, mas essa foi fácil contornar. Complicado mesmo vai ser injetar @PersistenceContext e usá-lo ao invés do HibernateTemplate.
Vc tem alguma idéia se isso é possível ?
Seria tão bom se o Neo me deixasse indicar o contexto de persistência !!!
Agora to eu aqui, passando todos os meus mapeamentos que antes estavam no projeto JPA para dentro do Neo. Na verdade eu estou fazendo uma duplicata, já que o original eu não posso nem pensar em mexer.
Se tiver alguma idéia, me dá um toque.
Att.
Edson.
|
 |
|
Olá pessoal, por algum motivo usando o neo 3.4.0 na aplicação de exemplo dentro da classe AutorizacaoDAO o hibernateTemplate não estava sendo injetado automáticamente. Ao anotar com @Bean, por debug consegui detectar que a injeção está ocorrendo sem problemas, porém logo depois de injetar, em algum método que não parei pra ver.... está dando uma mensagem estranha do spring:
Code:
12:40:07,162 INFO [DefaultListableBeanFactory] Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [autorizacaoDAO,arquivoService,autorizacaoService,loginController,logoutController,municipioCrud,pessoaCrud,ufCrud,municipioService,pessoaService,ufService,arquivoDAO,municipioDAO,pessoaDAO,ufDAO]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [dataSource,config,sqlErrorCodesTranslator,neoImageResolver,neoFormater,authorizationDAO,jdbcTemplate,sessionFactory,hibernateTemplate,hibernateTransactionManager,transactionTemplate,multipartResolver]; root of BeanFactory hierarchy]
12:40:53,499 INFO [DefaultListableBeanFactory] Destroying singletons in factory {org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [autorizacaoDAO,arquivoService,autorizacaoService,loginController,logoutController,municipioCrud,pessoaCrud,ufCrud,municipioService,pessoaService,ufService,arquivoDAO,municipioDAO,pessoaDAO,ufDAO]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [dataSource,config,sqlErrorCodesTranslator,neoImageResolver,neoFormater,authorizationDAO,jdbcTemplate,sessionFactory,hibernateTemplate,hibernateTransactionManager,transactionTemplate,multipartResolver]; root of BeanFactory hierarchy}
12:40:53,500 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'autorizacaoService' defined in null: Unsatisfied dependency expressed through bean property 'autorizacaoDAO': There are 2 beans of type [class dao.AutorizacaoDAO] for autowire by type. There should have been 1 to be able to autowire property 'autorizacaoDAO' of bean 'autorizacaoService'.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:897)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:817)
Alguém sabe o que poderia ser ?
Ahh, fiz uma pequena mudança no controller de login, eu coloquei a parte de código que fazia acesso ao DAO dentro de uma classe de serviço nova que criei específicamente para tratar de autorização, dessa forma ficamos com o MVC mais completo.
AutorizacaoDAO:
Code:
@Bean
public class AutorizacaoDAO implements AuthorizationDAO{
public HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
AutorizacaoService:
Code:
@ServiceBean
public class AutorizacaoService extends GenericService<AutorizacaoDAO> {
public AutorizacaoDAO autorizacaoDAO;
public void setAutorizacaoDAO(AutorizacaoDAO autorizacaoDAO) {
this.autorizacaoDAO = autorizacaoDAO;
}
public User usuarioValido(Usuario usuario) {
if (usuario != null && usuario.getLogin() != null
&& !usuario.getLogin().isEmpty()) {
User userByLogin = autorizacaoDAO.findUserByLogin(usuario
.getLogin());
if (userByLogin != null
&& userByLogin.getPassword().equals(usuario.getPassword())) {
return userByLogin;
}
}
return null;
}
}
LoginController:
Code:
@Controller(path = "/modulo/login")
public class LoginController extends MultiActionController {
private static final String AFTER_LOGIN_GO_TO = "/secured/crud/pessoa";
public AutorizacaoService autorizacaoService;
public void setAutorizacaoService(AutorizacaoService autorizacaoService) {
this.autorizacaoService = autorizacaoService;
}
@DefaultAction
public ModelAndView doPage(WebRequestContext request, Usuario usuario) {
return new ModelAndView("login", "usuario", usuario);
}
public ModelAndView doLogin(WebRequestContext request, Usuario usuario) {
User userByLogin = autorizacaoService.usuarioValido(usuario);
if (userByLogin != null) {
request.setUserAttribute("USER", userByLogin);
request.setUserAttribute(MenuTag.MENU_CACHE_MAP, null);
return new ModelAndView("redirect:" + AFTER_LOGIN_GO_TO);
} else {
request.addMessage("Login e/ou senha inválidos", MessageType.ERROR);
}
usuario.setSenha(null);
return doPage(request, usuario);
}
}
Att.
Edson.
|
 |
|
Pessoal, já postei em um outro tópico, mas acredito que vale comentar aqui tbm.
Existe alguma incompatibilidade com a nova versão 3.4.0 e o JBoss 5 ?
Usando as bibliotecas que vem junto da distribuição do Neo eu tenho um problema de ClassCastException com o Hibernate. Ao remover as 3 bibliotecas relacionadas ao Hibernate (que já existem no JBoss em versão mais atual) o problema desaparece, no entanto aparece um outro problema (deve ser injeção de dependência):
Code:
java.lang.NullPointerException: O construtor do QueryBuilder foi chamado com hibernateTemplate igual a null!
br.com.linkcom.neo.persistence.QueryBuilder.<init>(QueryBuilder.java:135)
dao.AutorizacaoDAO.findUserByLogin(AutorizacaoDAO.java:45)
controller.LoginController.doLogin(LoginController.java:34)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
br.com.linkcom.neo.controller.MultiActionController.invokeNamedMethod(MultiActionController.java:505)
br.com.linkcom.neo.controller.MultiActionController.handleRequestInternal(MultiActionController.java:367)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:717)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:658)
br.com.linkcom.neo.controller.DispatcherServlet.doService(DispatcherServlet.java:59)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:357)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
br.com.linkcom.neo.core.web.NeoFilter.doFilter(NeoFilter.java:97)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Foi utilizado o demo que pode ser baixado no site e o problema ocorre logo quando clica em login, ele não encontra o objeto HibernateTemplate devidamente instanciado:
Code:
public class AutorizacaoDAO implements AuthorizationDAO{
private HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
Att.
Edson.
|
 |
|
Bom, removi as bibliotecas do hibernate em WEB-INF\lib, visto que as que estão no JBoss 5 são bem mais atuais.
O Sistema carrega sem erros, porém ao iniciar o processo de login, ocorre o seguinte:
Code:
java.lang.NullPointerException: O construtor do QueryBuilder foi chamado com hibernateTemplate igual a null!
br.com.linkcom.neo.persistence.QueryBuilder.<init>(QueryBuilder.java:135)
dao.AutorizacaoDAO.findUserByLogin(AutorizacaoDAO.java:45)
controller.LoginController.doLogin(LoginController.java:34)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
br.com.linkcom.neo.controller.MultiActionController.invokeNamedMethod(MultiActionController.java:505)
br.com.linkcom.neo.controller.MultiActionController.handleRequestInternal(MultiActionController.java:367)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:717)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:658)
br.com.linkcom.neo.controller.DispatcherServlet.doService(DispatcherServlet.java:59)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:357)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
br.com.linkcom.neo.core.web.NeoFilter.doFilter(NeoFilter.java:97)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Parece que o hibernateTemplate não está mais sendo instanciado corretamente:
Code:
public class AutorizacaoDAO implements AuthorizationDAO{
private HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
|
 |
|
Olá Pessoal, eu utilizo JBoss 5 em produção. Estou migrando a nossa aplicação para o NEO, alguém sabe como poderiamos resover esse problema de ClassCastException ?
Parece que o grande vilão é o Hibernate mesmo:
java.lang.ClassCastException: org.hibernate.validator.event.ValidateEventListener cannot be cast to org.hibernate.event.PreInsertEventListener
Se eu não conseguir resolver este problema vou ter que abandonar a versão 3.4 e usar a versão 3.3.16 mesmo.
Att.
Edson.
|
 |
|
|
|