Caros amigos, venho aqui expor um pouco do que tenho aprendido para montar um servidor de aplicações e obter assim uma opinião de como melhorar o trabalho ja que sou muito “noob” como dizem os gamers.
Bom a história, meio comum é que preciso montar um webservices que ira se comunicar com clientes iPad. Nossa empresa já trabalha a muito tempo com aplicações desktop feitas em Delphi e a plataforma aqui é Microsoft total. No entanto ultimamente a empresa responsável pela nossa ferramenta não tem um futuro estabelecido e o ultimo grande filho de pascal esta se tornando uma plataforma de nicho. Testamos por alguns meses o .net mas não gostamos da plataforma, ai cogitamos varias tecnologias e por fim como é de se prever escolhemos o Java.
Lindo mas o fato é que todos aqui são programadores procedurais desde sempre (Basic, Clipper, Delphi, PHP) e por necessidade fomos com tudo para a orientação de objetos. Meio que um choque cultural, ainda mais tento de realizar um projeto como esse do webservice.
Não há instituições em centenas de KM desse fim de mundo para estudarmos, e mesmo as mais longe só iniciam turmas em 2013. Tenho lido muito este forum e os amigos tem sido de grande ajuda, bem como o Youtube e os livros (que alias recomendo):
[list]Core Java 1 e 2 de Cay S. Horstmann e Gary Cornell[/list]
[list]Use a Cabeça Servelets e JSP[/list]
[list]Padrões de Projeto[/list]
[list]Introdução a Plataforma Java EE6 com Glassfish 3 de Antonio Gonçalves[/list]
[list]Java Web Services Implementando[/list]
Apesar de atualmente compreender muito parcialmente ja montei um webservice que faz determinadas tarefas como buscar no banco de dados, geral XML em uma String e outras tarefas mais simples.
Configurando Glassfish 3 com MS SQL Server 200
O primeiro desafio foi implementar uma comunicação entre o SQL Server 2000, uma vez que o driver padrão disponível no site da microsoft por alguma razão não funcionava corretamente com o Glassfish. Depois de muitas tentativas e pesquisa consegui criar o JNDI no servidor usando os seguintes passos:
::::::::::::::::::::::::::::::::::::::::::::::::::::::
::Notas de configuração SQL Server 2000 no Glassfish::
::::::::::::::::::::::::::::::::::::::::::::::::::::::
1 - Nome do Driver baixado no site da Microsoft.
nome: sqljdbc.jar
http://msdn.microsoft.com/pt-br/sqlserver/aa937724.aspx
2 - Diretório de instação no Glasssfish (Local onde o arquivo sqljdbc.jar devera ser copiado).
glassfish3\glassfish\domains\DOMINIO\lib\ext
3 - Acesse a configuração do seu Glassfish (geralmente http:\SeuServidor:4848), va em Recursos/JDBC/Pools de Conexão JDBC.
- Definições gerais do Pool
Tipo de Recurso: javax.sql.DataSource
Nome de Classe da Fonte de Dados (os nomes padrão do sqlserver não funcionam com a versão 2000): com.microsoft.jdbcx.sqlserver.SQLServerDataSource
4 - Agora em Recursos/JDBC/Recurso JDBC, crie um recurso com base no pool criado acima.
5 - Chamar a referência ao recurso no web.xml do projeto.
<resource-ref>
<res-ref-name>jdbc/RECURSO</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
6 - Uma Classe para criar o chamado do recurso.
[code]public class CriarConexoes {
public Connection getConnection() {
try {
InitialContext initialContext = new InitialContext();
DataSource dataSource = (DataSource) initialContext.lookup("jdbc/NTServer");
return dataSource.getConnection();
} catch (NamingException ex) {
Logger.getLogger(CriarConexoes.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(CriarConexoes.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public Statement getStatement() {
Connection con = getConnection();
try {
Statement stmt = con.createStatement();
return stmt;
} catch (SQLException ex) {
Logger.getLogger(CriarConexoes.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public ResultSet getResultset(String sql) {
try {
ResultSet rs = getStatement().executeQuery(sql);
return rs;
} catch (SQLException ex) {
Logger.getLogger(CriarConexoes.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
}[/code]
Com isso em qualquer lugar que eu precisar fazer uma consulta por exemplo uso:
CriarConexoes con = new CriarConexoes();
ResultSet rs = con.getResultset("SELECT coluna1, coluna2 FROM tabela_qualquer");
List<ClasseDescreveTabela> lista = new ArrayList();
try {
while (rs.next()) {
ClasseDescreveTabela tab = new ClasseDescreveTabela();
tab.setColuna1(rs.getInt("coluna1"));
tab.setColuna2(rs.getString("coluna2"));
lista.add(tab);
}
} catch (SQLException ex) {
Logger.getLogger(ClasseAtual.class.getName()).log(Level.SEVERE, null, ex);
}
Bem simples né? Mas pra chegar nisso eu ralei… Não reclamo não, meu chefe ta pior já que ele esta estudando o Objective C para criar os clientes no iPad.
Esse foi o inicio e a partir dai consegui criar tarefas mais “reais” e praticas com o Java.