| Autor |
Mensagem |
|
|
Lucas Cavalcanti wrote:é possível sim, crie uma classe que implementa Deserializer, anotada com @Deserializes("application/json").
a partir do InputStream que veio na request vc tem que criar os parâmetros. resourceMethod.getMethod() é a assinatura do método do controller.
Funcionou Lucas! Show. Com o FlexJSON consegui fazer o parse 100%. Ficou muito power esta implementação de Deserializers no VRaptor3. Parabéns!
|
 |
|
|
Lucas Cavalcanti wrote:é possível sim... vc pode anotar o método com:
não precisa ter a propriedade class, mas precisa ter um root com o mesmo nome do parâmetro:
e o cliente tem que mandar o content-type correto
Valeu Lucas! Eu tinha chego até o Consumes, mas não tinha visto que passava o parâmetro.
Mas ainda tá dando problema pois a estrutura JSON que estou passando é um tanto complexa, é tipo uma árvore com subelementos que também são tipos complexos (classes). Neste caso ele não está se virando no parser. Eu to gerando o JSON usando o flex-json em outra aplicação, portanto estou pensando em fazer a deserialização usando a mesma biblioteca. Ainda assim seria legal continuar usando o Consumes. É possível eu trocar a implementação que deserializa o content-type application-json? ou eu tenho que inventar um outro content-type?
Valeu!!
|
 |
|
|
Bom dia,
Vocês sabem se é possível fazer uma lógica do VRaptor que recebe um parâmetro (objeto, ex: Cliente) consumir JSON enviado do cliente via ajax. Se sim, deve ser obrigatório que o JSON tenha as propriedades 'class' definidas am I right (para o parser)?
|
 |
|
|
Olá,
Alguém aí sabe se é possível eu criar uma implementação de InterceptorSequence que seja direcionada apenas para uma (ou mais) classe anotada com @Resource?
Se não tiver como, eu vou ter que implementar o método accepts de cada interceptador. O código vai ficar bem poluído.
Valeu!
|
 |
|
|
garcia-jj wrote:Eu uso vraptor com GF 3.1 e não tenho esse problema. Quais são as propriedades do teu datasource?
No persistence.xml você está usando um jta-data-source ou um local-datasource?
Valeu pela resposta,
No persistence.xml eu estou usando um non-jta-data-source, buscando a conexão através do JDBC Resource criado no GF.
Não tenho nenhuma configuração adicional no persistence.xml, apenas indico o nome do JNDI do pool. Nas propriedades específicas do hibernate eu estou sentando apenas para exibir as SQLs a serem executadas (acho que é show_sql). Talvez esteja faltando alguma configuração no persistence.xml, vc conhece alguma possível?
Obrigado
|
 |
|
|
Bom, consegui fazer com que a exceção não seja mais lançada. Fiz testes pela aplicação e tudo parece estar sendo persistido de forma correta no DB.
O que eu fiz foi adicionar o parâmetro relaxAutoCommit na url de conexão (como o Lucas deu a dica acima). Mas agora eu não sei se esse parâmetro pode ter alguma outra implicação que eu desconheço, vou continuar pesquisando sobre ele, mas a principio resolveu o meu problema.
Achei sobre este parâmetro no seguinte link:
http://stackoverflow.com/questions/5262327/jdbc-commit-failed-calling-commit-when-autocommit-true-multithreaded-hibernate
|
 |
|
|
Lucas Cavalcanti wrote:tenta achar qual é o parâmetro padrão da jpa para setar o autocommit... talvez tenha algo na url do banco que faça isso também...
de qqer forma, isso não tem mto a ver com VRaptor, se vc mudar o título do tópico para "Setando autocommit na JPA" as pessoas que sabem isso podem te ajudar.
Abraços
Verdade Lucas, thnks!
|
 |
|
|
Pessoal,
Tenho um aplicação que usa JPA (hibernate), deixando o VRaptor controlar as transações, colocando:
Eu começei a desenvolver esta aplicação no Glassfish 3.0.x, e estava tudo ok. Mas agora na versão 3.1 estou visualizando no server.log que a cada requisição à uma lógica do VRaptor a seguinte exceção ocorre:
Tentei setar o hibernate.connection.autocommit para false, mas este é ignorado devido à "hibernate.connection.autocommit = false break the EJB3 specification".
Alguém tem idéia de como eu desativar o auto-commit do JPA para parar de dar esta exceção?
PS: tudo funciona, grava no DB tudo ok. Só fica lançando a exceção...
|
 |
|
|
Tentei anotar o atributo id da classe abstrata com @GeneratedValue(strategy=GenerationType.AUTO) mas não funcionou.
O que eu fiz foi colocar @GeneratedValue(strategy=GenerationType.TABLE). Desta forma o Hibernate criou uma tabela de "sequencias", só que tá estranho, pois a cada nova transação ele gera um id com + 65535...
Não acho nenhuma documentação de como trabalhar com id sequencial com mapeamentos de herança TablePerClass, complicado!
|
 |
|
|
Olá...
Estou tentando fazer um mapeamento de herança cujo tipo será TablePerClass.
Minha dúvida é quanto ao atributo ID e o seu respectivo GeneratedValue.
Na classe genérica que quero herdar (classe abstrata) eu tenho um atributo:
E nas classes que herdam dela eu tenho um override do atributo id para determinar o generatedValue:
Problemas:
1º - Não é legal ter o override do atributo id... sai da OO.
2º - Mesmo colocando o GeneratedValue nas classes concretas que herdam da classe generica não está sendo setado o "Auto-Increment" nas tabelas que representam as classes concretas. (usando mysql)
Pensei na solução do override também porque assim, se estivesse usando um banco que utilizasse sequences, eu teria que determinar qual o nome da sequence em cada classe concreta que herda da genérica que possui o atributo ID.
Se tiverem alguma idéia..
Agradeço...
|
 |
|
|
A comparação de string no c:if tem de ser feita com == e não =.
Valeus
|
 |
|
|
Sobre o que o furutani falou, cópia com serialização, tem artigo na Mundo Java deste mês! só adquiri-la
Valeu!
|
 |
|
|
Eu também optaria pela idéia do Aldrin, mas se queres usar reflection também é legal para praticar...
Bom reflection é simples de usar, a base dela esta na class Class do java, um exemplo de reflection para obter os métodos de uma classe:
TuaClasse.class.getDeclaredMethods()
se deres um control + espaço depois de escrever TuaClasse.class. vais ver o que podes fazer sobre essa sua classe...
Valeu!
|
 |
|
|
Olá colega,
Bom, eu não concordo muito com a idéia de TODAS as chamadas da interface invoquem serviços. Acho que sua interface poderia chamar diretamente os métodos da sua camada de aplicação que então delega para a camada de domínio. Modelando desta forma, poderias estar expondo sua camada de domínio (com as regras de negócio -> persistência) via serviços para serem integrados com outros sistemas. Outra abordagem que eu acho interessante é que uma aplicação pode ser dividida em módulos, onde cada módulo só pode acessar classes e métodos contidas do seu módulo, e se precisar integrar os módulos então farias a chamada de serviços, desta forma sua aplicação teria um baixo acoplamento entre os módulos.
Espero ter ajudado em algo, vou ficar atendo aos posts aqui para aprender mais!
|
 |
|
|
|
Achei uma forma de fazer isso que eu queria, coloquei a solução no meu blog, se alguem quiser ver fique a vontade: http://gfronza.blogspot.com/
|
 |
|
|