I am developing a gwt application that should have a rest service to access the database, both its own database and other remote ones. I use Spring to work better with the database (objectdb), and not with practice with Jersey. Here is the code that sets the problem:
User.java
@Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) @XmlRootElement public class User implements java.io.Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private long id; private String name; private String surname; private int age; ... }
Customer.java
@Entity @XmlRootElement public class Customer extends User implements java.io.Serializable{ private static final long serialVersionUID = 1L; @Column(unique=true) private String fiscalCode; @Column(unique=true) private String docNumber; ... }
CustomerDAO.java
@Repository("customerDAO") public class CustomerDAO extends JpaDAO<Customer> { ... }
JpaDAO.java
public abstract class JpaDAO<E> { protected Class<E> entityClass; @PersistenceContext(unitName = "MyPersistenceUnit") protected EntityManager em; @SuppressWarnings("unchecked") public JpaDAO() { ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass(); this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[0]; } public List<E> findAll() { TypedQuery<E> q = em.createQuery( "SELECT h FROM " + entityClass.getName() + " h", entityClass); return q.getResultList(); }
and finally CustomerServiceImpl.java
@Service("customerService") @Path("/customers") public class CustomerServiceImpl implements CustomerService { @Autowired private CustomerDAO customerDAO; @Override @GET @Produces({MediaType.APPLICATION_XML}) public List<Customer> findAll() { return customerDAO.findAll(); } }
web.xml is spelled correctly. When i do
http:
CustomerDAO seems to be null and raises this exception ...
You can help?
here is web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> <welcome-file-list> <welcome-file>RONF.html</welcome-file> </welcome-file-list> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springGwtRemoteServiceServlet</servlet-name> <servlet-class>org.spring4gwt.server.SpringGwtRemoteServiceServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springGwtRemoteServiceServlet</servlet-name> <url-pattern>/ronf/ronfServices/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>Jersey</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>it.unibo.ronf.server.services</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> <dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-spring</artifactId> <version>${jersey.version}</version> </dependency> </web-app>
and here is applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <context:component-scan base-package="it.unibo.ronf"/> <context:annotation-config/> <task:annotation-driven executor="myExecutor" scheduler="myScheduler"/> <task:executor id="myExecutor" pool-size="5"/> <task:scheduler id="myScheduler" pool-size="10"/> <tx:annotation-driven/> <bean class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" id="entityManagerFactory"> <property name="persistenceUnitName" value="MyPersistenceUnit"/> </bean> <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> </beans>