Boa tarde/noite/dia pessoal…
No link http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=53
Tenho um exemplo de código para acesso ao banco de dados utilizando JNDI, porém não estou conseguindo criar a “conexão” atrvés do método “getConnection()”. A dúvida é extremamente fácil e boba mas se alguém puder me dar uma ajuda agradeço muito.
Meu cérebro parou a mais ou menos 12 hrs atrás e estou meio por instinto…
Opa,
bem provavelmente o problema deve estar no teu xml de configuração ou falta de alguma lib, ou coisa assim. Poste os erros para darmos uma olhadinha.
:okok:
Não sou conhecedor deste tipo de tecnologia por isso naum sei se tenho q configurar algo ou o q!!!!!
Se caso esteja faltando alguma configuração no web.xml ou no struts-config ou se falta algum ".jar"....
Qualquer ajuda é mais do q bem vinda!
obrigado!
Não sou conhecedor deste tipo de tecnologia por isso naum sei se tenho q configurar algo ou o q!!!
Se caso esteja faltando alguma configuração no web.xml ou no struts-config ou se falta algum “.jar”…
Qualquer ajuda é mais do q bem vinda!
obrigado!
Excelente é web!
Qual é o teu banco, e qual é teu servidor?
:pensativo:
PostgreSQL - Tomcat 5.5.9 (netbeans)
Opa:
teu xml de configuração seria: neste caso meuApp.xml
<Context path="/meuApp" docBase="/meuApp"
debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/MeuDataSource"
auth="Container"
type="javax.sql.DataSource"
maxActive="300"
maxIdle="5"
maxWait="-1"
removeAbandoned="true"
removeAbandonedTimeout="5"
username="sa"
password="sa"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/bd"/>
</Context>
Nota: o driver deve estar no classpath do tomcat. Neste caso tua aplicação está dentro da pasta webapps.
:okok:
Bom tentei fazer uma modularização da seguinte maneira…
Peguei esse exemplo em uma aplicação que achei na net e lá não comentava nada de configuração de xml…
Porém me retorna o seguinte erro
[color=“black”]“Name jdbc is not bound in this Context”[/color]
DBAccessLogin.java
package struts;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import modelo.Usuario;
import struts.DBAccess;
import struts.DBAccessException;
public class DBAccessLogin {
//Método usado na tela consultaUsuario.jsp, para consultar todos os dados do usuário
public static ArrayList consultar(String usuario, String nome)
{
String where = "";
//Verifica quais campos foram informados
if (nome=="" && usuario!=""){
where = "WHERE usuario LIKE '"+usuario+"%'";
}else if((nome!="") && (usuario=="")){
where = "WHERE nome LIKE '"+nome+"%'";
}else if((nome!="") && (usuario!="")){
where = "WHERE nome LIKE '"+nome+"%' AND usuario LIKE '"+usuario+"%'";
}
//Guarda na variável "sql" o comando select a ser excutado
String sql = "SELECT * FROM \"Usuario\" "
+ where;
Connection conexao = null;
PreparedStatement statement = null;
ResultSet rs = null;
try {
//Cria objeto to tipo ArrayList
ArrayList usuarios = new ArrayList();
Usuario usu;
//Pega a conecão
conexao = DBAccess.getConexao();
statement = conexao.prepareStatement(sql);
rs = statement.executeQuery();
while (rs.next())
{
usu = new Usuario();
usu.setUsuario(rs.getString("usuario"));
usu.setNome(rs.getString("nome"));
usu.setSenha(rs.getString("senha"));
usu.setTipoUsuario(rs.getString("tipo_usuario"));
if (rs.getLong("tipo_usuario") == 1){
usu.setTipoUsuario("ADMINISTRADOR");
}else{
usu.setTipoUsuario("USUÁRIO");}
usuarios.add(usu);
}
//Retorna para o action objeto do tipo ArrayList
return usuarios;
} catch (SQLException e) {
throw new DBAccessException("SQLException: " + e.getMessage());
} catch (Exception e) {
throw new DBAccessException("Exception: " + e.getMessage());
} finally {
fecharTudo(conexao, statement, null);
}
}
}
LoginAction.java
package struts;
import struts.DBAccessException;
import struts.DBAccessLogin;
import modelo.Usuario;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.SQLException;
import struts.DBAccess;
import struts.LoginActionBean;
import java.sql.ResultSet;
import java.sql.SQLException;
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
{
if (isCancelled(request))
{
request.getSession().invalidate();
return mapping.findForward("welcome");
}
else
{
try
{
//UsuarioForm UsuarioForm = (UsuarioForm)form;
LoginActionBean LoginActionBean = (LoginActionBean)(form);
ArrayList usuarios = DBAccessLogin.consultar(LoginActionBean.getNome(),LoginActionBean.getSenha());
//ArrayList usuarios = dados.UsuarioDAO.consultar(UsuarioForm.getUsuario(),UsuarioForm.getNome());
}
catch (Exception e)
{
throw new DBAccessException(" " + e.getMessage() + "!! ");
}
return mapping.findForward("success");
}
}
}
DBAccess.java
package struts;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import struts.DBAccessException;
public class DBAccess {
public static Connection getConexao() throws DBAccessException {
try {
//serviço de nomes
InitialContext cxt = new InitialContext();
DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/Teste");
return ds.getConnection();
} catch (NamingException e) {
throw new DBAccessException("NamingException: " + e.getMessage());
} catch (SQLException e) {
throw new DBAccessException("SQLException: " + e.getMessage());
}
}
}
LoginActionBean.java
package struts;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class LoginActionBean extends org.apache.struts.action.ActionForm {
private String nome;
private String senha;
//
public void setNome(String nome)
{
this.nome=nome;
}
//
public String getNome()
{
return this.nome;
}
//
public void setSenha(String senha)
{
this.senha = senha;
}
//
public String getSenha()
{
return this.senha;
}
public LoginActionBean()
{
super();
}
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
{
ActionErrors errors = new ActionErrors();
if((getNome().equals("")) || (getNome().length()<1))
{
errors.add("nome",new ActionMessage("error.nome.required"));
}
if((getSenha().equals("")) || (getSenha().length()<1))
{
errors.add("nome",new ActionMessage("error.senha.required"));
}
return errors;
}
public void reset(ActionMapping mapping, ServletRequest request)
{
this.nome=null;
this.senha=null;
}
}
DBAccessException.java
package struts;
public class DBAccessException extends RuntimeException
{
public DBAccessException(String mensagem)
{
super(mensagem);
}
public DBAccessException ()
{
super();
}
}
Oi amigo. Td bem?
Ja fazia um tempo que eu tb estava com um problema de criar um Pool de Conexões.
No proprio manual do TOMCAT tem um tutorial bem bacaninha.
Qdo vc iniciar o TOMCAT digite no seu browser: http://localhost:8080
aí ele ira para a pagina inicial do conteiner…
Aí vc vai na parte da documentação e depois no JNDI Resources.
La explica diretitinho como proceder…vc vai ter que montar um Resource JDBC.
Abraços
Alguém mais pode me ajudar nessa?
