App auf EJB Stateless Beans umstellen - NPE

Diskutiere App auf EJB Stateless Beans umstellen - NPE im Application Tier Forum; Hallo, ich versuche gerade mein funktionierendes App auf EJB + SessionBeans umzustellen, mit Hilfe von Annotations. Beim Programmstart wird...

  1. membersound
    membersound Neues Mitglied
    Hallo,

    ich versuche gerade mein funktionierendes App auf EJB + SessionBeans umzustellen, mit Hilfe von Annotations.
    Beim Programmstart wird eine bestehende Database mit findAll() ausgelesen. Und dort tritt dann eine NPE auf.
    Habe ich etwas vergessen bei der Umstellung?
    Im Grunde muss ich doch nur die Annotations @EJB und @Stateless setzen?

    Danke

    Code (Java):
    public class Controller {

        @EJB
        private PersonDao personDao;

    //business methods
    }

    @Stateless
    public class PersonDao {
        @PersistenceContext
        private EntityManager em;

        public List<Person> findAll() {
            return em.createQuery("select p from Person p").getResultList(); //<- NPE
        }

        /* not needed anymore if EJB implemented
        public HolidayModelDao() {
                emf = Persistence.createEntityManagerFactory("TestDB");
            em = emf.createEntityManager();
        }*/


    }

     
    Code (Java):
     
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. nocturne
    nocturne Neues Mitglied
    Zuletzt bearbeitet: 25. Jan. 2012
  4. membersound
    membersound Neues Mitglied
    Ändert sich nichts, gibt exakt die selbe Fehlermeldung.
    Auch wenn ich HibernateEntityManager statt EntityManager verwende. Keine Chance.
     
  5. membersound
    membersound Neues Mitglied
    Ich glaube, dass meine Dao im Controller null ist und die EX auslöst. Zumindest schlägt der Unit test fehlt, wenn ich die Dao versuche über get() auszulesen.


    Code (Java):
    @JpaEntityManagerFactory(persistenceUnit = "TestDB")
    public class ControllerTest extends UnitilsJUnit4 {
       
        @TestedObject
        Controller ctrService;
       
        @Test
        public void shouldCheckCRUD() {
            assertNotNull(ctrService.getPersonDao()); //NPE
        }
    }
     
    Vielleicht fehlt mir ja noch etwas grundsetzliches, im Hinblick auf meinen Code im Eingangsposting?

    Im Controller habe ich halt nur die Dao mit @EJB annotiert.
    Reicht das vielleicht nicht, um mit dieser zu arbeiten?

    Code (Java):
    public class Controller {
     
        @EJB
        private PersonDao personDao;

        public PersonDao getPersonDao() {
            return personDao;
        }
     
        public List<Person> getPersons() {
        return personDao.findAll(); //Ex
        }
    }


    Oder funktioniert mein Ansatz gar nicht mit einer Desktop Application, und die Sachen die ich mache sind WebApps vorbehalten?
    Ich möchte halt primär DependencyInjection und Transactional für meine Desktop App nutzen, um die nervigen Sachen etwas zu vereinfachen...
     
    Zuletzt bearbeitet: 25. Jan. 2012
  6. reNur
    reNur Guest
    Die Klasse Kontrolle ist ja nur ein POJO, das nicht im Container verwaltet wird. Deshalb funktioniert die EJB-Annotation auch nicht. Du müsstest das also mit einem JNDI lookup machen, um an das Dao zu kommen. Oder du annotierst den Controller auch als Stateless Bean. (zumindest soweit ich das beurteilen kann, aber bin selbst recht neu in der Thematik :))
     
Die Seite wird geladen...

App auf EJB Stateless Beans umstellen - NPE - Ähnliche Themen

URL-Mapping mit Stateless Beans
URL-Mapping mit Stateless Beans im Forum Web Tier
Frage zu Stateless Session Beans
Frage zu Stateless Session Beans im Forum Allgemeine Java-Themen
RollesAllowed und Stateless kombinieren
RollesAllowed und Stateless kombinieren im Forum Allgemeines EE
Hello World mit Stateless Session Bean - Was mache ich falsch?
Hello World mit Stateless Session Bean - Was mache ich falsch? im Forum Allgemeines EE
Empfehlung für stateless Webframework
Empfehlung für stateless Webframework im Forum Web Tier
Thema: App auf EJB Stateless Beans umstellen - NPE