Hi there
I created a very simple JPA Entity Project (BiddingTest) involving one bid entity
(Bidder.java) and one bid client (BidClient.java) from the JPA Project Wizard in Eclipse
Ganymede and JBoss 4.2.2.GA. I use Hibernate 3.3.1, Hibernate Annotations 3.4 and
Hibernate Entity Manager 3.4.
My BiddingTestEAR was built and deployed succesfully by the JBoss Server and I checked in
my OracleXE db and found out that it had successfully managed to create the BIDDER table.
However my problem occurs when I try to populate this BIDDER table from a JPA Test Client.
The JPA Test Client keeps giving me the exception :
javax.persistence.PersistenceException: [PersistenceUnit: BiddingTest] Unable to build
EntityManagerFactory
and
Caused by: org.hibernate.HibernateException: Could not find datasource
and
Caused by: 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.
Here is my console output:
| [BidClient] : creating EntityManagerFactory...
| log4j:WARN No appenders could be found for logger
(org.hibernate.cfg.annotations.Version).
| log4j:WARN Please initialize the log4j system properly.
| javax.persistence.PersistenceException: [PersistenceUnit: BiddingTest] Unable to build
EntityManagerFactory
| at
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
| at
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
| at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
| at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
| at Main.main(Main.java:43)
| Caused by: org.hibernate.HibernateException: Could not find datasource
| at
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:79)
| at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
| at
org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
| at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89)
| at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
| at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
| at
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
| at
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
| ... 4 more
| Caused by: 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:75)
| ... 11 more
| [BidClient] : closing entity manager and factory...
| Exception in thread "main" java.lang.NullPointerException
| at Main.main(Main.java:88)
|
This is my persistence.xml file :
| <?xml version="1.0" encoding="UTF-8"?>
| <persistence>
| <persistence-unit name="BiddingTest">
| <jta-data-source>java:/OracleXE1_DS</jta-data-source>
| <properties>
| <property name="hibernate.hbm2ddl.auto"
value="create-drop"/>
| <property name="hibernate.dialect"
value="org.hibernate.dialect.Oracle10gDialect"/>
| </properties>
| </persistence-unit>
| </persistence>
|
This is my oracle-ds.xml file :
| <?xml version="1.0" encoding="UTF-8"?>
| <datasources>
| <local-tx-datasource>
| <jndi-name>OracleXE1_DS</jndi-name>
|
<connection-url>jdbc:oracle:thin:system/system@localhost:1521:XE</connection-url>
| <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
| <user-name>system</user-name>
| <password>system</password>
|
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
| <metadata>
| <type-mapping>Oracle10g</type-mapping>
| </metadata>
| </local-tx-datasource>
| </datasources>
|
This is my BidClient.java file:
|
| package my.com.eperolehan.client;
|
|
| import javax.persistence.EntityManager;
| //import javax.persistence.EntityTransaction;
| import javax.persistence.EntityManagerFactory;
| import javax.persistence.Persistence;
| //import javax.persistence.PersistenceContext;
|
| import my.com.eperolehan.entities.Bidder;
|
| import org.apache.log4j.Level;
| import org.apache.log4j.Logger;
| import org.apache.log4j.ConsoleAppender;
| import org.apache.log4j.SimpleLayout;
|
|
| public class BidClient {
|
|
| private static EntityManagerFactory f;
|
| //@PersistenceContext(unitName="BiddingTest")
| private static EntityManager em;
|
|
| public static void main(String[] args) {
|
|
| Logger log = Logger.getLogger(BidClient.class);
| log.setLevel(Level.WARN);
|
| SimpleLayout layout = new SimpleLayout();
| ConsoleAppender appender = new ConsoleAppender(layout);
|
|
| log.addAppender(appender);
|
|
| try {
|
|
| System.out.println("[BidClient] : creating
EntityManagerFactory...");
| log.debug("[BidClient] : creating EntityManagerFactory...");
| f = Persistence.createEntityManagerFactory("BiddingTest");
| System.out.println("[BidClient] : Created.");
| log.debug("[BidClient] : Created.");
| System.out.println("[BidClient] : creating EntityManager...");
| em = f.createEntityManager();
| System.out.println("[BidClient] : Created.");
| log.debug("[BidClient] : Created.");
|
|
| em.getTransaction().begin();
|
|
| try {
| System.out.println("[BidClient] : creating a Bidder...");
| Bidder bidder = new Bidder();
|
| bidder.setBidderName("Bidder No 1");
| bidder.setBidSessionId(1);
|
|
| em.persist(bidder);
| em.getTransaction().commit();
| System.out.println("[BidClient] : Bidder created and
commited.");
| log.debug("[BidClient] : Bidder created and commited.");
|
| } catch (Exception ex) {
| em.getTransaction().rollback();
| }
|
| System.out.println("[BidClient] : Bidder person created and persisted
successfully.");
| log.debug("[BidClient] : Bidder person created and persisted
successfully.");
|
| } catch (RuntimeException e) {
|
| e.printStackTrace();
|
| } finally {
|
|
|
| }
|
|
| System.out.println("[BidClient] : closing entity manager and
factory...");
| log.debug("[BidClient] : closing entity manager and factory...");
| em.close();
| //f.close();
| System.out.println("[BidClient] : Closed.");
| log.debug("[BidClient] : Closed.");
|
| }
|
|
| }
|
Please can help me. Thank you very much in advance!
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4198398#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...