Ajuda com ExtJ4.1 com Java Server Side

27 respostas
F

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?

27 Respostas

I

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

F

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?

I

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.

P

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

I

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

F

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?

I

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…

F

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?

I

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

F

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

I

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.

F
  • 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?
I

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.

F

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

I

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.

F

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

I

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?

F

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

I

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.

F

Legal

Eu estava pensando em criar classes próprias para encapsular GUI e os widget de sistemas já pre prontas usando Exjs. Como se fosse swing mesmo. Assim teria pontos de manutenções específicos ou invés de duplicados em todas as GUI da solução.

I

È uma otima ideia, tento fazer isso também.

F

Na video aula da Loiane sobre a conexão REST do ExtJs… foi essa q vc usou?
A conversão do JSON para JAXB no jersey tb foi automática vindouras do uma cadastro ExtJS?

I

A sim, o post proveniente do extJS é diretamente convertido em objeto pelo Jersey.

F

Estou vendo aqui…fazer autenticação e autorização a cada chamada REST não vai ser bom para meu projetos.
Vc fez isso? Usou filtro?

I

Utilizo a autenticação diretamente na camada de acesso.
Obtenho a credential via headerParam e invoco serviços de negocio que fazem a autenticação.

F

Bom dia Ivan…

Continuando com sua opção de usar jersey…
Como ficou na questão de upload de arquivo? Tipico caso de ter um processo GUI no qual o usuário vai subir um arquivo de importação para a solução.
Vc teve o caso? Como pensou em resolver?

I

a camada de acesso aos recursos aceita um InputStream

@FormDataParam(“file”) InputStream uploadedInputStream,

e na view, a forma mais simples, na minha opiniao é:

Upload :

Criado 16 de julho de 2012
Ultima resposta 19 de jul. de 2012
Respostas 27
Participantes 3