Tentando rodar o tutorial Hibernate 2.1.x - problema JNDI

2 respostas
E

Ola,

Estou tentando executar o tutorial em:
http://www.hibernate.org/hib_docs/reference/en/html/quickstart.html
mas naquela parte de JNDI, ele poe um endereco:
java:comp/env/jdbc/quickstart
mas da a seguinte excecao:

SEVERE: Could not find datasource: java:comp/env/jdbc/quickstart

javax.naming.NamingException: Cannot create resource instance

at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:167)

at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)

at org.apache.naming.NamingContext.lookup(NamingContext.java:834)

at org.apache.naming.NamingContext.lookup(NamingContext.java:181)

at org.apache.naming.NamingContext.lookup(NamingContext.java:822)

at org.apache.naming.NamingContext.lookup(NamingContext.java:181)

at org.apache.naming.NamingContext.lookup(NamingContext.java:822)

at org.apache.naming.NamingContext.lookup(NamingContext.java:181)

at org.apache.naming.NamingContext.lookup(NamingContext.java:822)

at org.apache.naming.NamingContext.lookup(NamingContext.java:194)

at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)

at javax.naming.InitialContext.lookup(InitialContext.java:347)


Sera que tem mais alguma config para eu fazer.
Eu nunca usei JNDI e nao sei se tem algo que “eu deveria saber” antes de
rodar o tutorial.

2 Respostas

C

Este exemplo vc. precisa fazer "dentro" do Tomcat...

O seu datasource no Tomcat esta funcionando ?

Experimenta fazer um teste de servlet chamando este teu datasource. Parece que o
problema eh este.

]

public class Postos extends HttpServlet {


    Connection connection;
    PreparedStatement pstmt;
    ResultSet rset;

    public void init(ServletConfig config) throws ServletException {
        super.init(config);

        try {
            InitialContext ctx = new InitialContext();
            DataSource ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/jdbc/Nl"); // mude o seu DS
            if ( !(ds == null)) {
                connection = ds.getConnection();
                String query = "select....";
                pstmt = connection.prepareStatement(query);
            }
        } catch (SQLException e) {
            throw new UnavailableException("Nao foi possivel conectar no banco de dados.");
        } catch (NamingException e) {
            throw new UnavailableException("Nao foi possivel estabelecer conexao.");
        }

    }
[/code]
E

Realmente é problema de Datasource.
Eu nunca usei este esquema de Datasource e JNDI.
O que pode estar errado?

Eu coloquei no server.xml:

<Context path="/hibernate" docBase="/home/edilmar/sistemas/javauml/hibernate/servlet">
<Valve className=“org.netbeans.modules.web.monitor.catalina.MonitorValve”/> org.netbeans.modules.web.monitor.catalina.DispatchListener
<Logger className=“org.apache.catalina.logger.FileLogger” prefix=“localhost_hibernate_log.” suffix=".txt" timestamp=“true”/>
<Resource name=“jdbc/hibernate” scope=“Shareable” type=“javax.sql.DataSource”/>
<ResourceParams name=“jdbc/hibernate”>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>

&lt;!-- DBCP database connection settings --&gt;
    &lt;parameter&gt;
        &lt;name&gt;url&lt;/name&gt;           &lt;value&gt;jdbc:firebirdsql:localhost/3050:/home/edilmar/sistemas/javauml/bd/javauml.fdb&lt;/value&gt;
    &lt;/parameter&gt;
    &lt;parameter&gt;
        &lt;name&gt;driverClassName&lt;/name&gt;&lt;value&gt;org.firebirdsql.jdbc.FBDriver&lt;/value&gt;
    &lt;/parameter&gt;
    &lt;parameter&gt;
        &lt;name&gt;username&lt;/name&gt;
        &lt;value&gt;SYSDBA&lt;/value&gt;
    &lt;/parameter&gt;
    &lt;parameter&gt;
        &lt;name&gt;password&lt;/name&gt;
        &lt;value&gt;masterkey&lt;/value&gt;
    &lt;/parameter&gt;
                                                                                                                         
    &lt;!-- DBCP connection pooling options --&gt;
    &lt;parameter&gt;
        &lt;name&gt;maxWait&lt;/name&gt;
        &lt;value&gt;3000&lt;/value&gt;
    &lt;/parameter&gt;
    &lt;parameter&gt;
        &lt;name&gt;maxIdle&lt;/name&gt;
        &lt;value&gt;100&lt;/value&gt;
    &lt;/parameter&gt;
    &lt;parameter&gt;
        &lt;name&gt;maxActive&lt;/name&gt;
        &lt;value&gt;10&lt;/value&gt;
    &lt;/parameter&gt;
&lt;/ResourceParams&gt;

</Context>

Abaixo esta a excecao completa

javax.naming.NamingException: Cannot create resource instance

at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:167)

at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)

at org.apache.naming.NamingContext.lookup(NamingContext.java:834)

at org.apache.naming.NamingContext.lookup(NamingContext.java:181)

at org.apache.naming.NamingContext.lookup(NamingContext.java:822)

at org.apache.naming.NamingContext.lookup(NamingContext.java:181)

at org.apache.naming.NamingContext.lookup(NamingContext.java:822)

at org.apache.naming.NamingContext.lookup(NamingContext.java:181)

at org.apache.naming.NamingContext.lookup(NamingContext.java:822)

at org.apache.naming.NamingContext.lookup(NamingContext.java:194)

at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)

at javax.naming.InitialContext.lookup(InitialContext.java:347)

at ServletCadastros.init(ServletCadastros.java:40)

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:918)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:810)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3279)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3421)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:638)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)

at org.apache.catalina.core.StandardService.start(StandardService.java:388)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)

at org.apache.catalina.startup.Catalina.start(Catalina.java:781)

at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)

at org.apache.catalina.startup.Catalina.process(Catalina.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

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

at org.apache.naming.NamingContext.lookup(NamingContext.java:811)

at org.apache.naming.NamingContext.lookup(NamingContext.java:181)

at org.apache.naming.NamingContext.lookup(NamingContext.java:822)

at org.apache.naming.NamingContext.lookup(NamingContext.java:181)

at org.apache.naming.NamingContext.lookup(NamingContext.java:822)

at org.apache.naming.NamingContext.lookup(NamingContext.java:194)

at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)

at javax.naming.InitialContext.lookup(InitialContext.java:347)

at ServletCadastros.init(ServletCadastros.java:40)

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:918)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:810)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3279)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3421)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:638)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)

at org.apache.catalina.core.StandardService.start(StandardService.java:388)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)

at org.apache.catalina.startup.Catalina.start(Catalina.java:781)

at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)

at org.apache.catalina.startup.Catalina.process(Catalina.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)
Criado 1 de junho de 2004
Ultima resposta 2 de jun. de 2004
Respostas 2
Participantes 2