Mensagens enviadas por: gfronza
Índice dos Fóruns » Perfil de gfronza » Mensagens enviadas por gfronza
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/
 
Índice dos Fóruns » Perfil de gfronza » Mensagens enviadas por gfronza
Ir para:   
Powered by JForum 2.1.8 © JForum Team