[jboss-user] [Beginners Corner] - Could not find datasource: jdbc/jndi-name

jhannoy do-not-reply at jboss.com
Sun Dec 23 06:10:13 EST 2007


Hi,

 I'm new to JBoss and facing this problem presently.

 I've created a simple EJB3/JPA app and using jboss-4.2.2.GA and Derby embedded. Here is what I have in the following files:

persistence.xml:


  | <?xml version="1.0" encoding="UTF-8"?>
  | <persistence version="1.0"
  | 	xmlns="http://java.sun.com/xml/ns/persistence"
  | 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  | 	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  | 
  | 
  | 	<persistence-unit name="Monitor">
  | 		<provider>org.hibernate.ejb.HibernatePersistence</provider>
  | 		<jta-data-source>jdbc/jndi-name</jta-data-source>
  | 		<mapping-file>/META-INF/orm.xml</mapping-file>
  | 
  | 				
  | 		<properties>
  | 			<property name="hibernate.show_sql" value="true" />
  | 			<property name="hibernate.format_sql" value="true" />
  | 			
  | 			<property name="hibernate.dialect"
  | 			value="org.hibernate.dialect.DerbyDialect" />
  | 			<property name="hibernate.hbm2ddl.auto" value="create" />
  | 		</properties>
  | 
  | 	</persistence-unit>
  | </persistence>
  | 

I have the following TestClient

  | 
  | package testcases;
  | 
  | import java.util.Properties;
  | 
  | import javax.naming.InitialContext;
  | 
  | import session.Monitor;
  | 
  | 
  | public class TestClient {
  | 
  | 	Monitor bean = null;
  | 
  | public void runTest() throws Exception {
  | 		InitialContext ctx = new InitialContext();
  | 		bean = (Monitor) ctx.lookup("OSMonitorSateless/remote");
  | 
  | 		System.out.println("Searching ejb/OSMonitorSateless...");
  | 
  | 		<some other initialization code goes here.....
  |                                  ..........................
  | .............................................>
  | 
  | 		System.out.println("Creating ejb/OSMonitorSateless...");
  | 		bean.create(snmp.getId(), o, c, i, m, s, snmp.getIn(), snmp.getR(),
  | 				snmp.getB());
  | 		bean.toString();
  | 	}
  | 
  | 	public static void main(String[] args) {
  | 		try {
  | 			TestClient cli = new TestClient();
  | 			System.out.println("Created Class...");
  | 			cli.runTest();
  | 
  | 		} catch (Exception e) {
  | 			e.printStackTrace();
  | 		}
  | 	}
  | 
  | }
  | 

Now whenever I try to run the example, I get the following error:


  | - Could not find datasource: jdbc/jndi-name
  | javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
  | 	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
  | 	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
  | 	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
  | 	at javax.naming.InitialContext.lookup(InitialContext.java:351)
  | 	at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
  | 	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
  | 	at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
  | 	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
  | 	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
  | 	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
  | 	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:713)
  | 	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
  | 	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
  | 	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
  | 	at testcases.EntityManagerBasedTest.initEmfAndEm(EntityManagerBasedTest.java:46)
  | 	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:585)
  | 	at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74)
  | 	at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50)
  | 	at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33)
  | 	at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
  | 	at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
  | 	at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
  | 	at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
  | 	at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
  | 	at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
  | 	at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
  | 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
  | 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  | 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
  | 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
  | 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
  | 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
  | 0 [main] FATAL org.hibernate.connection.DatasourceConnectionProvider  - Could not find datasource: jdbc/jndi-name
  | javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
  | 	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
  | 	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
  | 	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
  | 	at javax.naming.InitialContext.lookup(InitialContext.java:351)
  | 	at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
  | 	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
  | 	at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
  | 	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
  | 	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
  | 	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
  | 	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:713)
  | 	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
  | 	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
  | 	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
  | 	at testcases.EntityManagerBasedTest.initEmfAndEm(EntityManagerBasedTest.java:46)
  | 	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:585)
  | 	at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74)
  | 	at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50)
  | 	at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33)
  | 	at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
  | 	at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
  | 	at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
  | 	at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
  | 	at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
  | 	at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
  | 	at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
  | 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
  | 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
  | 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
  | 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
  | 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
  | 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
  | 

I have also defined the derby-ds.xml, and it looks like the following:


  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <datasources>
  | 	<local-tx-datasource>
  | 		<jndi-name>jndi-name</jndi-name>
  | 		<use-java-context>false</use-java-context>
  | 		<connection-url>
  | 			jdbc:derby:C:/JPATest/dataDB
  | 		</connection-url>
  | 		<driver-class>
  | 			org.apache.derby.jdbc.EmbeddedDriver
  | 		</driver-class>
  | 		<user-name>xyzzz</user-name>
  | 		<password>xyzzz</password>
  | 		<exception-sorter-class-name>
  | 			org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
  | 		</exception-sorter-class-name>
  | 	</local-tx-datasource>	
  | </datasources>
  | 

Do I need to add need some more xml files in the project? 
 Will appreciate a lot if somebody can help.

-Thanks,
James.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4115239#4115239

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4115239



More information about the jboss-user mailing list