Pinhead Geschrieben 20. September 2006 Geschrieben 20. September 2006 Hallo, ich beschäftige mich zur Zeit ein wenig mit CMP Entity Beans. Dazu habe ich auf einer Oracle 9i Datenbank eine Tabelle mit 3 Spalten angelegt. Benutzernummer Primary Key (Dieser wird beim Anlegen eines Datensatzes automatisch aus einer Sequence gefüllt) Benutzername String Passwort String Auf diese Tabelle greife ich mit Hilfe einer DataSource zu. Diese DataSource wurde auch schon im Websphere Application Server eingerichtet und erfolgreich getestet. Mir ist es auch schon gelungen mit Hilfe der Entity Bean einen neuen Datensatz anzulegen und mit Hilfe der generierten findByPrimaryKey Methode auszulesen. Im nächsten Schritt habe ich im Deployment Deskriptor der EntityBean eine neue Methode eingetragen die einen Benutzer anhand des Namens finden soll. Wenn ich diese Methode aufrufe bekomme ich jedoch folgende Exception: 19.09.06 15:17:15:438 CEST] 00000168 DataAccessReq E PMGR0000E: Aufruf-Stack: com.ibm.ws.ejbpersistence.utilpm.PersistenceManagerException: PMGR6022E: Bei der Verwendung des Adapters für das Erstellen oder Ausführen einer Interaktion ist ein Fehler aufgetreten. ??? at com.ibm.ws.ejbpersistence.dataaccess.DataAccessRequestImpl.execute(Unknown Source) at com.ibm.ws.ejbpersistence.beanextensions.ConcreteBeanStatefulInstanceExtensionImpl.executeQuery(Unknown Source) at com.ibm.ws.ejbpersistence.beanextensions.ConcreteBeanStatefulInstanceExtensionImpl.executeFind(Unknown Source) at sample.ConcreteTbl_benutzer_4d762f35.ejbFindByName_Local(ConcreteTbl_benutzer_4d762f35.java:104) at sample.EJSCMPTbl_benutzerHomeBean_4d762f35.findByName_Local(EJSCMPTbl_benutzerHomeBean_4d762f35.java:25) at sample.EJSLocalCMPTbl_benutzerHome_4d762f35.findByName(EJSLocalCMPTbl_benutzerHome_4d762f35.java:106) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code)) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code)) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code)) at java.lang.reflect.Method.invoke(Method.java(Compiled Code)) at com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65) at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111) at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:367) at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code)) at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code)) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java(Compiled Code)) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java(Compiled Code)) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java(Compiled Code)) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java(Compiled Code)) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java(Compiled Code)) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java(Compiled Code)) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java(Compiled Code)) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java(Compiled Code)) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code)) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code)) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java(Compiled Code)) at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java(Compiled Code)) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code)) Caused by: java.lang.NullPointerException at sample.websphere_deploy.ORACLE_V9_1.Tbl_benutzerBeanFunctionSet_4d762f35.execute(Tbl_benutzerBeanFunctionSet_4d762f35.java:326) at com.ibm.ws.rsadapter.cci.WSInteractionImpl.execute(WSInteractionImpl.java:486) at com.ibm.wsspi.ejbpersistence.WSEJBToRAAdapter.executeFinder(WSEJBToRAAdapter.java:212) at com.ibm.ws.rsadapter.cci.WSRelationalRAAdapter.executeFinder(WSRelationalRAAdapter.java:371) ... 29 more [19.09.06 15:17:15:438 CEST] 00000168 ExceptionUtil E CNTR0019E: EJB hat eine unerwartete (nicht deklarierte) Ausnahme beim Aufruf der Methode "findByName" ausgelöst. Ausnahmedaten: com.ibm.ws.exception.WsEJBException at com.ibm.ws.ejbpersistence.beanextensions.ConcreteBeanStatefulInstanceExtensionImpl.executeFind(Unknown Source) at sample.ConcreteTbl_benutzer_4d762f35.ejbFindByName_Local(ConcreteTbl_benutzer_4d762f35.java:104) at sample.EJSCMPTbl_benutzerHomeBean_4d762f35.findByName_Local(EJSCMPTbl_benutzerHomeBean_4d762f35.java:25) at sample.EJSLocalCMPTbl_benutzerHome_4d762f35.findByName(EJSLocalCMPTbl_benutzerHome_4d762f35.java:106) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code)) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code)) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code)) at java.lang.reflect.Method.invoke(Method.java(Compiled Code)) at com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65) at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111) at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:367) at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code)) at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code)) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java(Compiled Code)) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java(Compiled Code)) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java(Compiled Code)) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java(Compiled Code)) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java(Compiled Code)) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java(Compiled Code)) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java(Compiled Code)) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java(Compiled Code)) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code)) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code)) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java(Compiled Code)) at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java(Compiled Code)) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code)) Caused by: com.ibm.ws.ejbpersistence.utilpm.PersistenceManagerException: PMGR6022E: Bei der Verwendung des Adapters für das Erstellen oder Ausführen einer Interaktion ist ein Fehler aufgetreten. ??? at com.ibm.ws.ejbpersistence.dataaccess.DataAccessRequestImpl.execute(Unknown Source) at com.ibm.ws.ejbpersistence.beanextensions.ConcreteBeanStatefulInstanceExtensionImpl.executeQuery(Unknown Source) ... 27 more Caused by: java.lang.NullPointerException at sample.websphere_deploy.ORACLE_V9_1.Tbl_benutzerBeanFunctionSet_4d762f35.execute(Tbl_benutzerBeanFunctionSet_4d762f35.java:326) at com.ibm.ws.rsadapter.cci.WSInteractionImpl.execute(WSInteractionImpl.java:486) at com.ibm.wsspi.ejbpersistence.WSEJBToRAAdapter.executeFinder(WSEJBToRAAdapter.java:212) at com.ibm.ws.rsadapter.cci.WSRelationalRAAdapter.executeFinder(WSRelationalRAAdapter.java:371) ... 29 more Hat jemand Erfahrung mit diesem Fehler und kann mir erklären wie er zu stande kommt. Als Entwicklungsumgebung nutze ich den Rational Application Developer 6.0 Ich hoffe die Angaben sind ausführlich genug und jemand hat eine Lösung für dieses Problem. Zitieren
kingofbrain Geschrieben 20. September 2006 Geschrieben 20. September 2006 Servus, mit dem RAD habe ich zwar keine Erfahrungen, aber Du könntest mal die generierte Klasse durchschauen, in der die NullPointerException auftritt. Die ist der eigentliche Grund für den Fehler. Vielleicht findest Du da was. Peter Zitieren
Pinhead Geschrieben 20. September 2006 Autor Geschrieben 20. September 2006 Super Danke für den Tipp. Hab eine generierte Methode anpassen müssen und jetzt funktioniert es Zitieren
kingofbrain Geschrieben 20. September 2006 Geschrieben 20. September 2006 Servus, was hast Du denn anpassen müssen? Eigentlich würde ich zunächst auf einen Fehler in der Konfiguration tippen, wenn eine NPE in einer generierten Methode auftreten kann. Sonst wäre der Generator Mist. So hast Du beim nächsten Erzeugen der Klassen wieder das gleiche Problem. Peter Zitieren
Pinhead Geschrieben 20. September 2006 Autor Geschrieben 20. September 2006 Servus, was hast Du denn anpassen müssen? Das erzeugte PreparedStatement war Murks. Der Tabellenname wurde mit eine \q vor den Feldnamen gesetzt. Nachdem ich das Statement so umgeschrieben habe wie es bei findByPrimaryKey stand funktioniert es einwandfrei. Freitag kann ich den merkwürdigen Code mal posten vielleicht kann mich jemand auf meinen Konfigfehler hinweisen Zitieren
Pinhead Geschrieben 22. September 2006 Autor Geschrieben 22. September 2006 So sah der generierte Code aus select q1.\"BENUTZERNUMMER\", q1.\"BENUTZERNAME\", q1.\"PASSWORT\" from TVRB0.TBL_BENUTZER q1 where ( q1.\"BENUTZERNAME\" = ?) und dieses q1 musste ich entfernen. Hat jemand eine Idee was da beim generieren falsch gelaufen ist ? Zitieren
ksg9-sebastian Geschrieben 26. September 2006 Geschrieben 26. September 2006 Hm..soll das evtl. ein Prefix oder so sein? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.