I've tried hard to get my proof of concept to work, but am stuck. Tomcat is throwing the exception as noted below. Where am I going wrong? Any help would be appreciated! Cheers - Randy Troppmann
Hibernate ver 2.1
Database: Postgresql 7.4
Container: Tomcat 5.0.16
Servlet code:
Code:
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx;
tx = session.beginTransaction();
Athlete athlete = new Athlete();
athlete.setUserName("SteveTroppmann");
athlete.setFirstName("Stevie");
session.save(athlete);
tx.commit();
session.close();
}
catch (Throwable ex) {
System.out.println("Randy: Error in servlet");
throw new ExceptionInInitializerError(ex);
}
Athlete.hbm.xmlCode:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.1//EN "
"http://hibernate.sourceforge.net/hibernate-mapping-2.1.dtd">
<hibernate-mapping>
<class
name="ca.spintechnologies.runningmap.Athlete"
table = "ATHLETE">
<id
name="id"
column="uid">
type="long">
<generator class="increment"/>
</id>
<property name="username" column="username"/>
<property name="firstname" column="firstname"/>
<property name="athlete_id" column="athlete_id"/>
<property name="lastname" column="lastname"/>
<property name="email" column="email"/>
<property name="userpassword" column="userpassword"/>
<property name="userlevel" column="userlevel"/>
</class>
</hibernate-mapping>
hibernate.cfg.xmlCode:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/runningmap</property>
<property name="show_sql">false</property>
<property name="dialect">net.sf.hibernate.dialect.PostgreSQLDialect</property>
<!-- Mapping files -->
<mapping resource="ca/spintechnologies/runningmap/Athlete.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Tomcat trace:2004-08-24 23:56:17 StandardWrapperValve[invoker]: Servlet.service() for servlet invoker threw exception
java.lang.ExceptionInInitializerError
at ca.spintechnologies.runningmap.TestServlet.doGet(TestServlet.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:466)
at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:180)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
at java.lang.Thread.run(Thread.java:534)
Caused by: net.sf.hibernate.MappingException: Error reading resource: ca/spintechnologies/runningmap/Athlete.hbm.xml
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:307)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:957)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:909)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:845)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:831)
at ca.spintechnologies.runningmap.TestServlet.doGet(TestServlet.java:21)
... 30 more
Caused by: net.sf.hibernate.MappingException: duplicate import: Athlete
at net.sf.hibernate.cfg.Mappings.addImport(Mappings.java:82)
at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:126)
at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:217)
at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1204)
at net.sf.hibernate.cfg.Configuration.add(Configuration.java:247)
at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:281)
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:304)
... 35 more
Athlete POJO:Code:
package ca.spintechnologies.runningmap;
import java.util.HashSet;
import java.util.Set;
public class Athlete{
private Long id;
private String userName;
private String firstName;
private String lastName;
private Set cities = new HashSet();
private Set routes = new HashSet();
private Set results = new HashSet();
public Athlete(){}
public Long getId(){
return id;
}
public void setId(Long myId){
this.id = myId;
}
public String getUserName(){
return userName;
}
public void setUserName(String myUserName){
this.userName = myUserName;
}
public String getFirstName(){
return firstName;
}
public void setFirstName(String myFirstName){
this.firstName = myFirstName;
}
public String getLastName(){
return lastName;
}
public void setLastName(String myLastName){
this.lastName = myLastName;
}
public Set getCities(){
return this.cities;
}
public boolean removeCity(City myCity){
if(this.cities.contains(myCity)){
this.cities.remove(myCity);
return true;
}
else{
return false;
}
}
public void addCity(City myCity){
this.cities.add(myCity);
}
public Set getRoutes(){
return this.routes;
}
public void addRoute(Route myRoute){
this.routes.add(myRoute);
}
public Set getResults(){
return this.results;
}
public void addResult(Result myResult){
this.results.add(myResult);
}
}