[jboss-dev-forums] [EJB3 Development] - EJB reference always null.Jboss 6

Andrei Karzhou do-not-reply at jboss.com
Mon Jul 8 02:34:47 EDT 2013


Andrei Karzhou [https://community.jboss.org/people/rfe.cook] created the discussion

"EJB reference always null.Jboss 6"

To view the discussion, visit: https://community.jboss.org/message/826801#826801

--------------------------------------------------------------
I am deleveloping web project EJB,JPA - Hibernate as provider, JBoss 6,MySql.
I new in EJB, JPA.I have problems with load ejb bean in servlet.


**persistence.xml**


<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns=" http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence" version="2.0">


    <persistence-unit name="LibraryPersistenceUnit" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/MySqlDS</jta-data-source>
        <class>library.entity.User</class>
        <class>library.entity.Book</class>
        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        </properties>


    </persistence-unit>
</persistence>


**UserFacade.java**





    @Local
    public interface UserFacade {
        User findUserByLoginAndPassword(String login, String password);

       /* List<User> getClients();

        void returnBooks(long userId, long[] ids);

        void takeBooks(long userId, long[] ids);*/
    }






**UserFacadeImpl.java**



    package library.facades.impl;

    import library.dao.impl.UserDAO;
    import library.entity.User;
    import library.facades.interfaces.UserFacade;

    import javax.ejb.EJB;
    import javax.ejb.Stateless;

    @Stateless
    public class UserFacadeImpl implements UserFacade {

        @EJB
        private UserDAO userDAO;

        public UserFacadeImpl() {
        }

        public User findUserByLoginAndPassword(String login, String password) {
            User user = userDAO.selectUserByLoginAndPassword(login, password);
            return user;
        }

     /*   public List<User> getListClients() {
            List<User> userList = userDAO.getClients();
            return userList;
        }

        public void returnBooks(long userId, long[] ids) {
            userDAO.returnBooks(userId, ids);
        }

        public void takeBooks(long userId, long[] ids) {
            userDAO.takeBooks(userId, ids);
        }*/
    }


**UserDAO.java** 


    package library.dao.impl;


    import library.dao.interfaces.GenericDAO;
    import library.entity.User;

    import javax.ejb.Local;
    import javax.ejb.Stateless;
    import java.util.HashMap;
    import java.util.Map;


    @Stateless
    public class UserDAO extends GenericDAO {


        public UserDAO() {
            super(User.class);
        }

        public User selectUserByLoginAndPassword(String login, String password) {
            Map<String, Object> parameters = new HashMap<String, Object>();
            parameters.put("login", login);
            parameters.put("password", password);
            return (User) super.findOneResult(User.SELECT_USER_BY_LOGIN_AND_PASSWORD, parameters);
        }

        /*public List<User> getClients() {
            Query namedQuery = entityManager.createNamedQuery(User.ALL_CLIENTS, User.class);
            List<User> clientsList = namedQuery.getResultList();
            return clientsList;
        }

        @Override
        public void returnBooks(long userId, long[] ids) {
            User user = entityManager.find(User.class, userId);
            for (long id : ids) {
                Book book = entityManager.find(Book.class, id);
                user.getTakenBooks().remove(book);
            }
            entityManager.merge(user);
        }

        @Override
        public void takeBooks(long userId, long[] ids) {
            User user = entityManager.find(User.class, userId);
            for (long id : ids) {
                Book book = entityManager.find(Book.class, id);
                user.getTakenBooks().add(book);
            }
            entityManager.merge(user);
        }*/
    }


**GenericDAO.java**
    package library.dao.interfaces;

    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
    import java.util.List;
    import java.util.Map;

    public abstract class GenericDAO<T> {
        private static final String LIBRARY_PERSISTENCE_UNIT = "LibraryPersistenceUnit";

        @PersistenceContext(unitName = LIBRARY_PERSISTENCE_UNIT)
        private EntityManager entityManager;

        private Class<T> entityClass;

        public GenericDAO() {
        }

        public GenericDAO(Class<T> entityClass) {
            this.entityClass = entityClass;
        }

        public void save(T entity) {
            entityManager.persist(entity);
        }

        protected void delete(Object id, Class<T> classe) {
            T entityToBeRemoved = entityManager.getReference(classe, id);
            entityManager.remove(entityToBeRemoved);
        }

        public T update(T entity) {
            return entityManager.merge(entity);
        }

        public T find(int entityID) {
            return entityManager.find(entityClass, entityID);
        }

        // Using the unchecked because JPA does not have a
        // entityManager.getCriteriaBuilder().createQuery()<T> method
        @SuppressWarnings({"unchecked", "rawtypes"})
        public List<T> findAll() {
           /* CriteriaQuery cq = entityManager.getCriteriaBuilder().createQuery();
            cq.select(cq.from(entityClass));*/
            return null;//entityManager.createQuery(cq).getResultList();
        }

        // Using the unchecked because JPA does not have a
        // ery.getSingleResult()<T> method
        @SuppressWarnings("unchecked")
        protected T findOneResult(String namedQuery, Map<String, Object> parameters) {
            T result = null;

            try {
                Query query = entityManager.createNamedQuery(namedQuery);

                // Method that will populate parameters if they are passed not null and empty
                if (parameters != null && !parameters.isEmpty()) {
                    populateQueryParameters(query, parameters);
                }

                result = (T) query.getSingleResult();

            } catch (Exception e) {
                System.out.println("Error while running query: " + e.getMessage());
                e.printStackTrace();
            }

            return result;
        }

        private void populateQueryParameters(Query query, Map<String, Object> parameters) {

            for (Map.Entry<String, Object> entry : parameters.entrySet()) {
                query.setParameter(entry.getKey(), entry.getValue());
            }
        }

        public EntityManager getEntityManager() {
            return entityManager;
        }

        public void setEntityManager(EntityManager entityManager) {
            this.entityManager = entityManager;
        }
    }


**LibraryController**





    package library.controller;

    import library.entity.User;
    import library.facades.interfaces.UserFacade;
    import library.resourses.constants.Constants;
    import library.resourses.enums.Role;

    import javax.ejb.EJB;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;


    public class LibraryController extends HttpServlet {

        @EJB
        private UserFacade userFacade;

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            performAction(request, response);
        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            performAction(request, response);
        }

        private void performAction(HttpServletRequest request, HttpServletResponse response) {
            String pageType = request.getParameter(Constants.PAGE_TYPE);
            if (pageType != null) {
                try {
                    String page = null;
                    String login = request.getParameter(Constants.USER_LOGIN);
                    String password = request.getParameter(Constants.USER_PASSWORD);
                    User user = userFacade.findUserByLoginAndPassword(login, password);
                    if (user == null) {
                        request.getSession().setAttribute(Constants.ERROR,
                                Constants.ERROR_MESSAGE_7);
                        page = Constants.MAIN_PAGE;
                    } else {
                        String namePage = user.getRole().toString().toLowerCase();
                        if (isClient(user)) {
                            request.getSession().setAttribute(Constants.CLIENT,
                                    user);
                            request.getSession().setAttribute(Constants.ERROR, null);
                        } else if (isAdministrator(user)) {
                            request.getSession().setAttribute(Constants.ADMINISTRATOR,
                                    user);
                            request.getSession().setAttribute(Constants.ERROR, null);
                        }
                        page = Constants.START_PAGES + namePage + Constants.END_PAGES;
                    }
                    RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher(page);
                    requestDispatcher.forward(request, response);
                } catch (ServletException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        private boolean isAdministrator(User user) {
            return user.getRole().equals(Role.ADMINISTRATOR);
        }

        private boolean isClient(User user) {
            return user.getRole().equals(Role.CLIENT);
        }
    }



I get null for userFacade.Can you explain me what I do wrong.
Thanks.
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/826801#826801]

Start a new discussion in EJB3 Development at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2030]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-dev-forums/attachments/20130708/62b96e95/attachment-0001.html 


More information about the jboss-dev-forums mailing list