[RESOLVIDO]Utilizando DataSource

3 respostas
jeverson

Estou estudando JSF pelo livro CoreJFS. Porém me deparei com o seguinte erro:

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: /index.jsp(13,12) ‘#{customer.all}’ Error reading ‘all’ on type com.corejsf.CustomerBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)

root cause

org.apache.jasper.el.JspELException: /index.jsp(13,12) ‘#{customer.all} Error reading all on type com.corejsf.CustomerBean

org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107)

javax.faces.component.UIData.getValue(UIData.java:614)

javax.faces.component.UIData.getDataModel(UIData.java:1129)

javax.faces.component.UIData.setRowIndex(UIData.java:451)

com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:77)

javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:813)

javax.faces.component.UIData.encodeBegin(UIData.java:967)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:928 )

javax.faces.render.Renderer.encodeChildren(Renderer.java:148 )

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)

com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)

com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)

com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)

com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)

com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

root cause

javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

org.apache.naming.NamingContext.lookup(NamingContext.java:770)

org.apache.naming.NamingContext.lookup(NamingContext.java:140)

org.apache.naming.NamingContext.lookup(NamingContext.java:781)

org.apache.naming.NamingContext.lookup(NamingContext.java:140)

org.apache.naming.NamingContext.lookup(NamingContext.java:781)

org.apache.naming.NamingContext.lookup(NamingContext.java:153)

org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)

javax.naming.InitialContext.lookup(Unknown Source)

com.corejsf.CustomerBean.open(CustomerBean.java:20)

com.corejsf.CustomerBean.getAll(CustomerBean.java:26)

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:54)

com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)

org.apache.el.parser.AstValue.getValue(AstValue.java:118 )

org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)

org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)

javax.faces.component.UIData.getValue(UIData.java:614)

javax.faces.component.UIData.getDataModel(UIData.java:1129)

javax.faces.component.UIData.setRowIndex(UIData.java:451)

com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:77)

javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:813)

javax.faces.component.UIData.encodeBegin(UIData.java:967)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:928 )

javax.faces.render.Renderer.encodeChildren(Renderer.java:148 )

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)

com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)

com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)

com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)

com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)

com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.


Apache Tomcat/6.0.20

Minha index.jsp:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

meu bean:

package com.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:comp/env/jdbc/mydb);

conn = ds.getConnection();

}
public Result getAll() throws SQLException, NamingException {

try {

open();

Statement stmt = conn.createStatement();

ResultSet result = stmt.executeQuery(“SELECT * FROM Customers”);

return ResultSupport.toResult(result);

} finally {

close();

}

}
public void close() throws SQLException {

if (conn == null) return;

conn.close();

conn = null;

}

}

faces-config.xml:

<?xml version="1.0" encoding="UTF-8"?>




com.corejsf.messages
msgs

<managed-bean>
	<managed-bean-name>customer</managed-bean-name>
	<managed-bean-class>com.corejsf.CustomerBean</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

customer.sql:

CREATE TABLE Customers (
Cust_ID INT,
Name CHAR(30),
Phone_Number CHAR(15),
Street_Address CHAR(30),
City CHAR(30),
State CHAR(15)
)

INSERT INTO Customers VALUES (1, ‘William Dupont’, ‘(652)488-9931’,
‘801 Oak Street’, ‘Eugene’, ‘Nebraska’)

Desde já agradeço a atenção!

3 Respostas

jeverson

Problema parcialmente resolvido! O problema estava na conectividade com o BD. Porém minha aplicação está rodando apenas no Chrome, no IE não roda.... :( fica na index.html e tentando se conectar...

Acredito que seja alguma configuração no pool de conexões. Estou utilizando MySql 5.0 e TomCat 6, no server.xml adicionei à tag o seguinte código:

<Context docBase="05f_database" path="/05f_database" 
				reloadable="true"	
				source="org.eclipse.jst.jee.server:05f_database">  
				
				<Resource name="jdbc/mydb" auth="Container" 
					type="javax.sql.DataSource" maxActive="8" maxIdle="4" 
					maxWait="10000" username="myUser" password="myPass"
					driverClassName="com.mysql.jdbc.Driver"  
					url="jdbc:mysql://localhost:3306/test_jsf?autoReconnect=true"/>  
           </Context>

Na pasta lib do TomCat coloquei o mysql-connector-java-5.0.8-bin.jar e ao web.xml acrescentei a seguinte tag

<resource-ref>
      <res-ref-name>jdbc/mydb</res-ref-name>  
      <res-type>javax.sql.DataSource</res-type>  
      <res-auth>Container</res-auth>  
  </resource-ref>

Alguém poderia ajudar-me!?!?

Desde já agradeço!!!

jeverson

Alguém tem alguma dica???

jeverson

Problema resolvido! :smiley:

o lance era no redirecionamento que a index.html fazia.
antes estava assim:

<meta http-equiv="Refresh" content="0; index.faces">

o correto é assim:

<meta http-equiv="Refresh" content="0; URL=index.faces">

Sem o URL o IE não redireciona, jah o Chrome aceita numa boa!

Abraço a todos

Criado 16 de outubro de 2009
Ultima resposta 3 de nov. de 2009
Respostas 3
Participantes 1