Hallo!
Sorry für den Titel, mir ist nichts sinnvolleres eingefallen.
Ich arbeite grad mit an einem Semesterprojekt, bei dem wir EJB zum 1. Mal verwenden. Wir haben jsp-Dateien für die grafische Oberfläche, die über ne lookuptable auf die ControllerBeans zugreifen, welche per Entitymanager auf die MySQL-Datenbank zugreifen. Der Server ist JBoss.
Jetzt bin ich erst mal auf folgendes Problem gestoßen (Problem 1):
Objekte aus java.awt (z.B: BufferedImage oder Graphics) kann meine ControllerBean nicht zurückgeben, weil dann der Server sagt, dass das Objekt nicht serialisierbar ist. Jetzt würde ich gerne wissen:
1. Wie kann man eine ControllerBean so ein nicht-serialisierbares Objekt zurückgeben lassen?
2. Was ist Serialisierbarkeit überhaupt?
Ich hab dann das Problem umgangen, indem ich alles in eine Utilityklasse gepackt habe, die sich die jsp-Leute nicht über ne Lookuptable holen müssen, sondern direkt in der jsp einfach importieren und mit new anlegen können. Dann war wieder alles super, so lange bis ich in einer Methode meiner Utilityklasse einen DB-Zugriff gebraucht habe. Ich dachte erst "naja, leg ich einfach in der Methode der Utilityklasse ein Objekt von der Controllerbean an, die diesen Zugriff bereits realisiert hat und ruf dann ihre Methode auf". Denkste. Es gab ne NullPointerException, weil der EntityManager (die Variable "private EntityManager manager" in der ControllerBean) nicht initialisiert wurde (Problem 2). Jetzt zu meinen Fragen:
1. Warum wird der EntityManager nicht inititalisiert? Ich dachte das geschieht immer automatisch über Annotations und wenn man in ner jsp sich von der Bean ein Objekt anlegt, geschieht das auch und die DB-Zugriffe klappen alle.
2. Kann man von einer Utilityklasse aus überhaupt irgendwie auf eine DB zugreifen, ohne die EJB-Architektur zu brechen?
Fazit:
Ich möchte eine Methode, die ein BufferedImage zurück geben und auf die DB zugreifen kann im Rahmen der EJB-Architektur und hab keinen Plan, wie so was geht.
Viele Grüße,
Squall83
Sorry für den Titel, mir ist nichts sinnvolleres eingefallen.
Ich arbeite grad mit an einem Semesterprojekt, bei dem wir EJB zum 1. Mal verwenden. Wir haben jsp-Dateien für die grafische Oberfläche, die über ne lookuptable auf die ControllerBeans zugreifen, welche per Entitymanager auf die MySQL-Datenbank zugreifen. Der Server ist JBoss.
Jetzt bin ich erst mal auf folgendes Problem gestoßen (Problem 1):
Objekte aus java.awt (z.B: BufferedImage oder Graphics) kann meine ControllerBean nicht zurückgeben, weil dann der Server sagt, dass das Objekt nicht serialisierbar ist. Jetzt würde ich gerne wissen:
1. Wie kann man eine ControllerBean so ein nicht-serialisierbares Objekt zurückgeben lassen?
2. Was ist Serialisierbarkeit überhaupt?
Ich hab dann das Problem umgangen, indem ich alles in eine Utilityklasse gepackt habe, die sich die jsp-Leute nicht über ne Lookuptable holen müssen, sondern direkt in der jsp einfach importieren und mit new anlegen können. Dann war wieder alles super, so lange bis ich in einer Methode meiner Utilityklasse einen DB-Zugriff gebraucht habe. Ich dachte erst "naja, leg ich einfach in der Methode der Utilityklasse ein Objekt von der Controllerbean an, die diesen Zugriff bereits realisiert hat und ruf dann ihre Methode auf". Denkste. Es gab ne NullPointerException, weil der EntityManager (die Variable "private EntityManager manager" in der ControllerBean) nicht initialisiert wurde (Problem 2). Jetzt zu meinen Fragen:
1. Warum wird der EntityManager nicht inititalisiert? Ich dachte das geschieht immer automatisch über Annotations und wenn man in ner jsp sich von der Bean ein Objekt anlegt, geschieht das auch und die DB-Zugriffe klappen alle.
2. Kann man von einer Utilityklasse aus überhaupt irgendwie auf eine DB zugreifen, ohne die EJB-Architektur zu brechen?
Fazit:
Ich möchte eine Methode, die ein BufferedImage zurück geben und auf die DB zugreifen kann im Rahmen der EJB-Architektur und hab keinen Plan, wie so was geht.
Viele Grüße,
Squall83