I've searched a lot about this exception, and although posts with the similar title exists this is a different scenario.
I've two projects in my eclipse 1) One JPA project 2) One Web project which consumes the entities from the JPA project. Both are OSGi and Maven enabled. I'm using the latest SpringFramework (3.1.1) for creating RESTful webservices in the Web project.
The project layouts are as follows:
1) JPA Project
Code:com.demo.persistence |-src |-com.demo.persistence |-User |-META-INF |-MANIFEST.MF |-persistence.xml |-pom.xml
2) Web Project
com.demo.web
----------Code:|-src |-com.demo.web.controller |-Controller.java |-com.demo.web.dao |-UserDAO.java |-UserListDAO.java |-com.demo.web.model |-UserBean.java |-com.demo.web.interfaces |-UserDAOIntf.java |-WebContent |-META-INF |-MANIFEST.MF |-WEB-INF |-classes |-log4j.properties |-rest-context.xml |-rest-context-osgi.xml |-rest-servlet.xml |-web.xml |-pom.xml
com.demo.persistence.User.java
----------Code:@Entity @XmlRootElement(name="user") @Table(name = "T_USER") @NamedQuery(name = "AllUsers", query = "select u from User u") public class User { @Id @GeneratedValue @Column(nullable = false) private long id; @Basic @Column(nullable = false) private String userName; public void setUserName(String param) { this.userName = param; } public String getUserName() { return userName; } }
com.demo.web.dao.UserDAO
Code:public class UserDAO implements UserDAOInterface { @PersistenceContext private EntityManager em; public User getUser(Long id) { try{ return em.find(User.class, id); } finally { if(em != null) em.close(); } } public List<User> getAllUsers() { try { List<User> users = em.createNamedQuery("AllUsers", User.class).getResultList(); return users; } finally { if(em != null) em.close(); } } @Transactional public User addUser(User user) { try { em.persist(user); em.flush(); return user; } finally { if(em != null) em.close(); } } }
----------
com.demo.web.model
----------Code:public class UserBean { private UserDAO userDAO; public void addUserDetails( String userName ) { User user = new User(); user.setUserName(userName); this.userDAO.addUser(user); } public List<User> getAllUsers() { return this.userDAO.getAllUsers(); } public User getUser(Long id) { return this.userDAO.getUser(id); } public User addUser(User user) { return this.userDAO.addUser(user); } }
com.demo.web.controller.Controller
----------Code:@Controller public class Controller { private Jaxb2Marshaller jaxb2Marshaller; private UserBean userBean; public Jaxb2Marshaller getJaxb2Mashaller() { return jaxb2Marshaller; } public void setJaxb2Mashaller(Jaxb2Marshaller jaxb2Marshaller) { this.jaxb2Marshaller = jaxb2Marshaller; } @RequestMapping(method=RequestMethod.GET, value="/rest/users", headers="Accept=application/xml, application/json") public @ResponseBody UserListDAO getUserList() { return new UserListDAO(userBean.getAllUsers()); } @RequestMapping(method=RequestMethod.GET, value="rest/user/{id}", headers="Accept=application/xml, application/json") public @ResponseBody User getUser(@PathVariable Long id) { return userBean.getUser(id); } @RequestMapping(method=RequestMethod.POST, value="rest/user/add", headers="Accept=application/xml, application/json") public @ResponseBody User addUser(@RequestBody String userString) { Source source = new StreamSource(new StringReader(userString)); User user = (User) jaxb2Marshaller.unmarshal(source); return userBean.addUser(user); }
web.xml
Code:<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>com.demo.web</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <context-param> <param-name>log4jConfigLocation</param-name> <param-value> /WEB-INF/classes/log4j.properties </param-value> </context-param> <listener> <listener-class> org.springframework.web.util.Log4jConfigListener </listener-class> </listener> <!-- The context params that read by ContextLoaderListener --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/rest-context.xml </param-value> </context-param> <!-- This listener will load other application context file in addition to springweb-servlet.xml --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>rest</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>rest</servlet-name> <url-pattern>/service/*</url-pattern> </servlet-mapping> </web-app>
----------
Continued in post #2


Reply With Quote
Please help.
