Boa tarde galera, estou com problemas em estabelecer conexão com um banco mySQL através do jboss…
estou usando jboss 4.2 e minha aplicação é em jsf.
O erro acontece na chamada de um método na minha classe Bean que executa um código sql.
Segue os códigos…
mysql-ds.xml
<jndi-name>thiago</jndi-name>
<connection-url>jdbc:mysql://localhost/thiago?autoReconnect=true</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
CustomerBean
package br.com.thiago.corejsf;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;
import javax.sql.DataSource;
public class CustomerBean {
private Connection conn;
public void open() throws SQLException, NamingException {
if (conn != null)
return;
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:jdbc/thiago");
conn = ds.getConnection();
}
public Result getAll() throws SQLException, NamingException {
try {
open();
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM contatos");
return ResultSupport.toResult(result);
} finally {
close();
}
}
private void close() throws SQLException {
if (conn == null)
return;
conn.close();
conn = null;
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>
<head>
<f:loadBundle basename="br.com.thiago.corejsf.messages" var="msgs"/>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title><h:outputText value="#{msgs.pageDataBaseTitle}"/></title>
</head>
<body>
<h:form>
<h:dataTable value="#{customer.all}" var="customer">
<h:column>
<f:facet name="header">
<h:outputText value="#{msgs.customerIdHeader}"/>
</f:facet>
<h:outputText value="#{customer.id}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{msgs.nameHeader}"/>
</f:facet>
<h:outputText value="#{customer.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{msgs.emailHeader}"/>
</f:facet>
<h:outputText value="#{customer.email}"/>
</h:column>
</h:dataTable>
</h:form>
</body>
</f:view>
</html>
error
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: /database/index.jsp(15,1) '#{customer.all}' Error reading 'all' on type br.com.thiago.corejsf.CustomerBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
org.apache.jasper.el.JspELException: /database/index.jsp(15,1) '#{customer.all}' Error reading 'all' on type br.com.thiago.corejsf.CustomerBean
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107)
javax.faces.component.UIData.getValue(UIData.java:582)
javax.faces.component.UIData.getDataModel(UIData.java:1063)
javax.faces.component.UIData.setRowIndex(UIData.java:417)
com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:85)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:785)
javax.faces.component.UIData.encodeBegin(UIData.java:879)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:244)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:175)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
javax.naming.NameNotFoundException: jdbc not bound
org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
org.jnp.server.NamingServer.getObject(NamingServer.java:543)
org.jnp.server.NamingServer.lookup(NamingServer.java:267)
org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
javax.naming.InitialContext.lookup(Unknown Source)
br.com.thiago.corejsf.CustomerBean.open(CustomerBean.java:22)
br.com.thiago.corejsf.CustomerBean.getAll(CustomerBean.java:28)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
org.apache.el.parser.AstValue.getValue(AstValue.java:97)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
javax.faces.component.UIData.getValue(UIData.java:582)
javax.faces.component.UIData.getDataModel(UIData.java:1063)
javax.faces.component.UIData.setRowIndex(UIData.java:417)
com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:85)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:785)
javax.faces.component.UIData.encodeBegin(UIData.java:879)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:244)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:175)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
note The full stack trace of the root cause is available in the JBossWeb/2.0.0.GA logs.