Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
cheires

JEE

Recommended Posts

cheires

Olá a todos.

Comecei recentemente um projecto em JEE.

Não sou muito experiente em JEE, mas o mesmo tem que ser escrito em JEE.

A dúvida propriamente dita é que para cada ficheiro JSP tenho um servlet a "apoiar" (executam operações em BD).

Num dos servlets tudo corre normalmente, é um servlet para escrever na BD e essa escrita ocorre normelmente.

Em outro dos servlets há uma outra escrita na mesma BD numa tabela diferente, só que na realidade não escreve nada na tabela.  (não dá qualquer erro ou warning)

Ambos os servlets são quase uma cópia um do outro (apenas muda os que tenho que escrever na BD), alguém me sabe dizer porque não funciona?

Será necessário fazer algum termino de ligação à BD no servlet que funciona para além do "con.close()"?

Mas mesmo que inicie o servidor e execute logo o servlet que não funciona o resultado é o mesmo.

Todos os campos a escrever na tabela estão bem escritos e mais que verificados.

Obrigado a todos.

Share this post


Link to post
Share on other sites
magician

Eu no teu lugar tentava separar isso, faz uma classe que faz a comunicação com a BD e depois da JSP usas essas classe, para além disso é mais fácil controlar a concorrência.

Pesquisa sobre o Pattern DAO, adaptasse exactamente ao que precisas isso de casa JSP ou Servlet fazer uma ligação à BD não é muito boa ideia.


I haven’t lost my mind; it’s backed up on DVD somewhere!

Share this post


Link to post
Share on other sites
cheires

Obrigado magician pela dica.

Depois de ter implementado toda a estrutura DAO, surgiu um problema.

Tenho um ficheiro jsp para o utilizador preencher umas caixas de texto, e em seguida uso um servlet para ler as informações da caixa de texto e as modificar para os tipos dos dados respectivos. Eu utilizo em primeiro lugar objectos. e depois insiro o objecto na tabela, através do DAO.

No servlet criei o objecto e o respectivo TableDAO, onde vou inserir o objecto na tabela SQL.

Quando criei um programa local era assim que procedia.

A minha dúvida é a seguinte, como estou a usar servlets e jsp, a forma de proceder é a mesma?

Obrigado a todos

Share this post


Link to post
Share on other sites
magician

Normalmente faço uma classe DAOManager com métodos static género Singleton que tem lá os DAOs todos e assim posso aceder de qq lado.


I haven’t lost my mind; it’s backed up on DVD somewhere!

Share this post


Link to post
Share on other sites
cheires

Eu no servlet também tenho acesso aos DAOs.

O problema é que me já um erro Java null poiter exception, precisamente na chamada do método inserir do DAO.

Por estar a dar esse erro, pensei que não seria essa a forma mais correcta de chamar o método.

Share this post


Link to post
Share on other sites
magician

Ao fazeres new DAO na servlet cada vez que é criada uma servlet é criado um objecto desses não me parece a forma mais correcta realente. Tenta fazer com disso uma classe manager que tem métodos static para cada DAO

depois basta fazer DAOManager.getTableDAO().insert(x)


I haven’t lost my mind; it’s backed up on DVD somewhere!

Share this post


Link to post
Share on other sites
cheires

Consegui resolver esse problema, mas agora aparece outro.

Ao executar o código no servidor (estou a usar o glassfish) não me faz a conecção.

Quando se usa servlets (sem recorrer ao DAO) para a conecção usa-se

@Resource (name = "jdbc/db")
DataSource dbDS;
...
con=dbDS.getConnection ();

e está a conecção resolvida.

Mas ao usar DAO, não estou a conseguir a conecção.

dá-me sempre java null pointer exception devia à conecção estar a null.

Como se usa a conecção para o DAO?

Mais uma vez, obrigado.

Share this post


Link to post
Share on other sites
magician

Pois isso só funciona nas classes executadas pelo glassfish se não me engano :\

Um solução não muito bonita é fazer um setConnection na Classe DAO Manager em que mandas esse con.


I haven’t lost my mind; it’s backed up on DVD somewhere!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.