Ajuda com ExtJ4.1 com Java Server Side

Bom dia Pessoal

Estou avaliando o uso de ExtJ - http://www.sencha.com/products/extjs/ com arquitetura REST.
Pelo que venho vendo é possivel usa-lo com SpringMVC, VRaptor, DWR e conectores do padrões do proprio ExtJ chamados de directjngine, extdirectspring e extdirect4java.
Gostaria de saber se alguem ja tem usado algum deles? Comentários? Dicas problemas?
Alguma soluções em produção?

Estou utilizando EXTJS com Jersey.
Os mediatypes estão divididos entre json e xml.
Configurei os modelos no extjs e tudo vai bem.

Ola Ivan, prazer falar contigo denovo :smiley:

Eu pensei nisso mesmo…usar diretamente com um REST puro.
Vc poderia explicar em nivel de componentes sua arquitetura?

O prazer é todo meu Fernando.

Fiz um esboço para você.
Qualquer questão estou a disposição.

fiz o fluxo de listagem, porém o fluxo de criação e alterção de entidades segue o mesmo modelo.

Acho que aqui vc deve achar todas as respostas http://www.loiane.com/

Estou me baseando no trabalho da loiane, com certeza.
Achei muito interessante a estrutura que ela recomenda no extJS.

Oi Ivan !! Muito bom!!
É exatamente que eu estava pensando…
Segue algumas duvidas…

Vc integrou o Jersey com Spring? Usou aquele integrador do jersey para spring?
Vc recomenda o livro da Loiane?
Os widget como grid consegue automaticamente popular a grid visual com JSON de um objeto java diretamente?

Fernando,

Integrei o Jersey com Spring, somente adicionei a dependencia jersey-spring (estou usando maven),
dessa forma, a minha camada de acesso aos recursos, implementada pelo jersey vira bean do Spring.

Quanto ao livro da loiane, eu apenas li os artigos dela e as video aulas, e ja consegui montar minha arquitetura, mas o livro dela é inconstestavelmente recomendado.

A grid do extJs, consegue ser populada por meio do json/xml retornado pelo server-side automaticamente, obedecendo a estrutura do modelo associado ao componente, como descrito pela arquitetura que mostrei.
O formulario e demais componentes do extJs seguem o mesmo principio.

Com isso ficou facil…

Puxa vida…que maravilha!!! To bem empolgado com essa nova arquitetura…os componentes do exjt são de muita qualidade…o skin etc.
Ja estou vendo as videos aulas…
Vc usa a versão open?
Como vc resolveu os relatórios nesse modelo desktop web?

Alguns pilotos foram open,
mas em produção tem versões com licença,

Como vc resolveu os relatórios nesse modelo desktop web?

Eu adotei o principio que o server-side nao mantem estado, 100% stateless,
A camada de acesso aos recursos deve ser bem desenhada para possibilitar o acesso aos dados de todos os recursos,
os relatorios sao sempre retornados via xml ou json, mediante parametros informados, ou em pathParam ou queryParam.
O retorno eu capturo na aplicação cliente e realizo a formatação e apresentação.
Não tive problemas com relatorios, pois encaro como acesso a recursos.

O problema foi a autenticação, uma vez que nao eh recomendado manter sessão no Rest.
Dessa forma, cada solicitação deve ser autenticada, utilizo headerParams.
Funciona bem por aqui.

  • Cada chamada rest vc faz validação de credencialidade então?
  • Tem recursos para emitir relatorio no extj ou vc fez na pagina simples mesmo?

exatamente, cada chamada, eu faço validação de credencialidade.

Os relatórios eu mesmo fiz a composição dos componentes na minha propria pagina, foi suficiente.
Essa é a forma que tenho feito.

E validação? ta usando algo tipo Bean Validator?

O próprio,
Usuo Bean Validation, juntamente com messageResources do Spring para centralizar/internacionalizar as mensagens.
As possíveis exceções são tratadas com http response com respectivos http codes, e a mensagem é inserida no entity do response.

Faço o tratamento de exceções via @provider, que possibilita ótimo exceptionHandler.

As mensagem de erros vindouras do Bean Validação são automaticamente mostradas no extjs?

voce pode configurar os retornos das chamadas feitas pelos componentes do ExtJS.

é que o fluxo não eh Bean Validation -> extJS.

Na verdade as msg vindas do Bean Validation são encapsuladas em httpResponse pelo Rest e ai sim são capturadas pelo extJs.

Exemplo

success : function(result, request) {
			Ext.Msg.alert("Sucesso", result.responseText);
		},
failure : function(result, request) {
			Ext.Msg.alert("Falha", result.responseText);
		}

Caso ocorra alguma ConstraintViolationException, o Jersey irá enviar a response com a msg da exception no seu corpo e o ext irá capturar por meio do

 failure : function(result, request) {
		Ext.Msg.alert("Falha", result.responseText);
}

ficou claro?

Ficou sim…
Estou no forum oficial do ExtJS brasil e to vendo o pessoal falar muito mal da performace dele.
Vc tem alguma critica ai?

Outra coisa…vc ja pensou sobre as evoluções das versões? Tipo…vc usa a versão 3 do ExJs e sai a versão 4. Dai para o suporte e vc é forçado a migrar tudo para 4, sendo que elas não são compatíveis entre si…isso que eu acho péssimo. Ou seja, a nova versão quebra todo seu codigo…e se falando de JavaScript afff…ja me da até arrepios…kkkkk

Entendi, essa é uma preocupação muita válida.

Quanto ao desempenho, ele se mostrou suficiente.
Na verdade, não tive problemas com isso.

Eu já atualizei a versão do framework algumas vezes e nao tive grandes impactos.
O mecanismo pricipal foi respeitado, a parte de modelos/loads/post nao foi alterada.
Eu acredito muito que o fator predominante é a arquitetura da aplicação.

Nos meus designersm ele se encaixou para fazer a interface grafica de acesso a alguns recursos de um Rest.
Esse Rest não possui outra forma de acesso, a não ser pela camada de acesso a recursos.

É mais comum vc ver aplicações Web com uma api Rest, mas não é o caso das minhas aplicações distribuídas.

Eu acredito que dentro dessa arquitetura, o ExtJs é uma boa opção.

Porém eu utilizo “também” outros meios para fazer interface com meus “WebServices Rest”, tenho por exemplo uma aplicação Web com Wicket do qual a fonte de dados é o Rest.
A comunicação é feita via httpCliente, e tudo vai bem.

A melhor parte é ter opções.