Galera,
Estou abstraindo uma forma de utilizar alguns serviços web especialmente para operações CRUD com AJAX, mais precisamente EXTJS.
Ai bolei um esquema de WebProxy e gostaria de saber a opinião de vocês. Como é um projeto prova de conceito, pode evoluir ou não.
Princípio:
- Você cria suas Entidades e SesssionBean (EJB3 por enquanto) para manipular essas entidades da forma que você gosta de fazer;
- Mapeia esse SessionBean em uma arquivo de configuração, dando um nome para a “Sessão” e configura um Serializer, que é responsável por transportar os get/set do Bean (Entity) em valores.
- Acessar os métodos do SessionBean via REST.
Eu sei que tem muito o que fazer: segurança, validação, etc etc. Mas quero um feedback sobre o conceito.
Exemplo:
SessionBean
[code]@Local
public interface IFinanceLocal {
public void addAsset(Asset asset) throws FinancialException;
public void removeAsset(Asset asset) throws FinancialException;
public List<?> getAssets();
public void addAccount(Account account) throws FinancialException;
public void removeAccount(Account account) throws FinancialException;
public void updateAccount(Account account) throws FinancialException;
public List<?> getAccounts();
public Account getAccount(Integer id);
}[/code]
Arquivo XML de configuração
<session-proxy>
<session name="finance">
<alias name="fin"/>
<entity class="com.sarbarian.finance.entity.Account"/>
<serializer class="com.sarbarian.webproxy.serializer.JsonSerializer"/>
<factory>
<param name="session.class" value="com.sarbarian.finance.IFinanceLocal"/>
<param name="factory.class" value="com.sarbarian.webproxy.EJB3StatelessFactory"/>
<param name="ejb3.interface.type" value="local"/>
<param name="ejb3.interface.name" value="jboss5-dev/FinanceSession/local"/>
</factory>
</session>
</session-proxy>
Resultado
http://localhost:8080/com.sarbarian.webproxy/wp/finance/getAssets
[
{id:1, description:"description1", name:"nameasset", class:"com.sarbarian.finance.entity.Asset", code:"code1"},
{id:2, description:"description1", name:"nameasset", class:"com.sarbarian.finance.entity.Asset", code:"code1"}
]
Entenderam? - Muita coisa pode ser feita com WebService etc. Mas o lance aqui é LESS CODING, ou seja, faça apenas o SessionBean, mapeie minimamente, e deixe o Proxy conectar a lógica na sua camada de apresentação.
O que me dizem? Estou reinventando a roda ou isso é inovação (usar velhos conceitos para coisas novas).
PS: O código fonte é apenas para vocês verem a mecânica…
Abraços,
Davi.