maven - How to get data from the database? -
i having problem getting data database (javadb). exactly, think error in userbean class in method getallusersfromtable. maybe bc entities incorrectly database. have tried write method getallusersfromtable in few different ways doesn't work well.
my project works until don't try data database. index page displayed correctly, usersform display correctly , when click submit button display error. on page error displayed should see table users.
i use glassfish 4.0 , javadb build in. don't use ide's eclipse or netbeans. project managed maven.i use jsf cdi managedbeans , jpa.
please ask me question. love solve issue.
i error:
javax.faces.el.evaluationexception: java.lang.nullpointerexception @ javax.faces.component.methodbindingmethodexpressionadapter.invoke (methodbindingmethodexpressionadapter.java:101) @ com.sun.faces.application.actionlistenerimpl.processaction(actionlistenerimpl.java:102) @ javax.faces.component.uicommand.broadcast(uicommand.java:315) @ javax.faces.component.uiviewroot.broadcastevents(uiviewroot.java:790) @ javax.faces.component.uiviewroot.processapplication(uiviewroot.java:1282) @ com.sun.faces.lifecycle.invokeapplicationphase.execute(invokeapplicationphase.java:81) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198) @ javax.faces.webapp.facesservlet.service(facesservlet.java:646) @ org.apache.catalina.core.standardwrapper.service(standardwrapper.java:1682) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:318) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:160) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:734) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:673) @ com.sun.enterprise.web.webpipeline.invoke(webpipeline.java:99) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:174) @ org.apache.catalina.connector.coyoteadapter.doservice(coyoteadapter.java:357) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:260) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:188) @ org.glassfish.grizzly.http.server.httphandler.runservice(httphandler.java:191) @ org.glassfish.grizzly.http.server.httphandler.dohandle(httphandler.java:168) @ org.glassfish.grizzly.http.server.httpserverfilter.handleread(httpserverfilter.java:189) @ org.glassfish.grizzly.filterchain.executorresolver$9.execute(executorresolver.java:119) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executefilter(defaultfilterchain.java:288) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executechainpart(defaultfilterchain.java:206) @ org.glassfish.grizzly.filterchain.defaultfilterchain.execute(defaultfilterchain.java:136) @ org.glassfish.grizzly.filterchain.defaultfilterchain.process(defaultfilterchain.java:114) @ org.glassfish.grizzly.processorexecutor.execute(processorexecutor.java:77) @ org.glassfish.grizzly.nio.transport.tcpniotransport.fireioevent(tcpniotransport.java:838) @ org.glassfish.grizzly.strategies.abstractiostrategy.fireioevent(abstractiostrategy.java:113) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.run0(workerthreadiostrategy.java:115) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.access$100(workerthreadiostrategy.java:55) @ org.glassfish.grizzly.strategies.workerthreadiostrategy$workerthreadrunnable. run(workerthreadiostrategy.java:135) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker. dowork(abstractthreadpool.java:564) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.run(abstractthreadpool.java:544) @ java.lang.thread.run(thread.java:744) caused by: java.lang.nullpointerexception @ com.test.userbean.getallusersfromtable(userbean.java:119) @ com.test.userbean$proxy$_$$_weldclientproxy.getallusersfromtable(unknown source) @ com.test.allusersbean.add(allusersbean.java:43) @ com.test.allusersbean$proxy$_$$_weldclientproxy.add(unknown source) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ javax.el.elutil.invokemethod(elutil.java:326) @ javax.el.beanelresolver.invoke(beanelresolver.java:536) @ javax.el.compositeelresolver.invoke(compositeelresolver.java:256) @ com.sun.el.parser.astvalue.invoke(astvalue.java:269) @ com.sun.el.methodexpressionimpl.invoke(methodexpressionimpl.java:304) @ org.jboss.weld.util.el.forwardingmethodexpression.invoke(forwardingmethodexpression.java:40) @ org.jboss.weld.el.weldmethodexpression.invoke(weldmethodexpression.java:50) @ com.sun.faces.facelets.el.tagmethodexpression.invoke(tagmethodexpression.java:105) @ javax.faces.component.methodbindingmethodexpressionadapter.invoke (methodbindingmethodexpressionadapter.java:87) ... 35 more line 119 in userbean.java file
user.setid(v.getid()); package com.test; /*importing required java libraries */ import java.io.serializable; import javax.inject.named; import javax.inject.inject; import javax.enterprise.context.applicationscoped; import java.util.arraylist; import java.util.list; @named("appbean") @applicationscoped public class alluserssbean implements serializable { private list<userbean> users; private int id; @inject private userbean subbean; public allusersbean(){ users = new arraylist<userbean>(); id = 0; } public string add() throws exception { subbean.addusertotable(); ++id; users.add(subbean.getallusersfromtable(id)); subbean.reset(); return "submit"; } /*get total number of users */ public int gettotal(){ return users.size(); } public list<userbean> getusers() { return users; } public void setusers(list<userbean> users) { this.users = users; } } package com.test; /*importing required java libraries */ import java.io.serializable; import javax.inject.named; import javax.enterprise.context.sessionscoped; import java.sql.*; import javax.annotation.resource; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; import javax.persistence.persistenceunit; import javax.transaction.usertransaction; import javax.transaction.rollbackexception; import javax.persistence.*; import java.util.list; import java.util.*; @named("subbean") @sessionscoped public class userbean implements serializable{ @persistenceunit(unitname="testme") private entitymanagerfactory emf; @resource private usertransaction transaction; private int id; private string fname; private string lname; public userbean() { this.fname = ""; this.lname = ""; } public int getid() { return id; } public void setid(int id) { this.id = id; } public string getfname() { return fname; } public void setfname(string fname) { this.fname = fname; } public string getlname() { return lname; } public void setlname(string lname) { this.lname = lname; } public usertransaction gettransaction() { return transaction; } public void settransaction(usertransaction transaction) { this.transaction = transaction; } public void addusertotable() throws exception { entitymanager manager = emf.createentitymanager(); boolean commit; try{ transaction.begin(); manager.jointransaction(); commit = false; try { user v = null; v.setfname(fname); v.setlname(lname); manager.persist(v); transaction.commit(); commit = true; }finally { if(commit==false){ transaction.rollback(); } } } catch(exception e) { e.printstacktrace(); }finally { manager.close(); } } public userbean getallusersfromtable(int id) { entitymanager manager = emf.createentitymanager(); user v = null; userbean user = new userbean(); try { v = manager.find(user.class, id); user.setid(v.getid()); user.setfname(v.getfname()); user.setlname(v.getlname()); }finally { manager.close(); } return user; } /* public list getallusersfromtable() throws javax.transaction.systemexception, javax.transaction.notsupportedexception { entitymanager manager = emf.createentitymanager(); user v = null; list<user> results; try { typedquery<user> query = manager.createquery("select * user", user.class); results = query.getresultlist(); }finally { manager.close(); } return results; } */ /*reset method used set parameters null , 0. method called after user added list of users */ public void reset(){ setfname(""); setlname(""); } } package com.test; /*importing required java libraries */ import java.io.serializable; import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; import javax.persistence.entitymanager; import javax.persistence.entity; import javax.persistence.column; import javax.persistence.id; import javax.persistence.generatedvalue; import javax.persistence.generationtype; @entity public class user implements serializable{ @id @generatedvalue private int id; private string fname; private string lname; public user() {} public int getid() { return id; } public void setid(int id) { this.id = id; } public string getfname() { return fname; } public void setfname(string fname) { this.fname = fname; } public string getlname() { return lname; } public void setlname(string lname) { this.lname = lname;} } index.xhtml
<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head><title></title></h:head> <h:body> <div style="text-align:center"> <h1>hello</h1> <p><h:link value="user form" outcome="userform"/></p> <p><h:link value="all users list" outcome="alluserslist"/></p> </div> </h:body> </html> userform.xhtml
<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head> <h:outputstylesheet library="css" name="template.css"/> <title>user form page</title> </h:head> <h:body> <h:form id="submissionform"> <table border="0"> <tr> <td><h:outputlabel for="fname" value="first name:"></h:outputlabel></td> <td><h:inputtext id="firstname" value="#{subbean.fname}" maxlength="30" requiredmessage="please enter first name!" validatormessage="first name can include letters. can't live empty!" > <f:validateregex pattern="[a-za-z]{1,30}"></f:validateregex> </h:inputtext></td> <td><h:message for="firstname" style="color:red;"></h:message></td> </tr> <tr> <td><h:outputlabel for="lname" value="last name:"></h:outputlabel></td> <td><h:inputtext id="lastname" value="#{subbean.lname}" maxlength="30" requiredmessage="please enter last name!" validatormessage="last name can include letters. can't live empty!" > <f:validateregex pattern="[a-za-z]{1,60}"></f:validateregex> </h:inputtext></td> <td><h:message for="lastname" style="color:red;"></h:message></td> </tr> <tr> <td colspan="3"> <h:commandbutton id="submit" value="submit" action="#{appbean.add()}" style="float:right;margin-right:10px;"/> </td> </tr> </table> </h:form> </h:body> </html> allusersform.xhtml
<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head> <title>list of users page</title> </h:head> <h:body> <h:form id="alluserslistform"> <h2><h:outputtext value="the next election date: #{msgs.date}"/></h2><p></p> <h:datatable value="#{appbean.users}" var="v"> <h:column> <f:facet name="header"><h:outputtext value="id"></h:outputtext></f:facet> <h:outputtext value="#{v.id}"></h:outputtext> </h:column> <h:column> <f:facet name="header"><h:outputtext value="first name"></h:outputtext></f:facet> <h:outputtext value="#{v.fname}"></h:outputtext> </h:column> <h:column> <f:facet name="header"><h:outputtext value="last name"></h:outputtext></f:facet> <h:outputtext value="#{v.lname}"></h:outputtext> </h:column> <f:facet name="footer"><h:outputtext value="the total number of users: #{appbean.gettotal()}"></h:outputtext> </f:facet> </h:datatable> <p></p> <p><h:link value="home page" outcome="index"/></p> </h:form> </h:body> </html> persistence.xml (it placed under main/resources/meta-inf/perssitence.xml)
<?xml version="1.0" encoding="utf-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="test1" transaction-type="jta"> <provider>org.eclipse.persistence.jpa.persistenceprovider</provider> <jta-data-source>jdbc/username</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/> <property name="javax.persistence.schema-generation.create-source" value="metadata"/> <property name="javax.persistence.schema-generation.drop-source" value="metadata"/> <property name="javax.persistence.jdbc.user" value="us"/> <property name="javax.persistence.jdbc.password" value="us"/> </properties> </persistence-unit> </persistence> when go (localhost:4848/common/index.jsf) create jdbc connection pool , correct. when ping success response create jdbc connection resource , set correctly
this use example add data database
public class addingdatabase { @persistenceunit(unitname="test_db”) private entitymanagerfactory emf; @resource private usertransaction utx; void dodml(myentity e) throws systemexception, notsupportedexception, javax.transaction.rollbackexception,heuristicmixedexception,heuristicrollbackexception { entitymanager em = emf.createentitymanager(); utx.begin(); em.jointransaction(); try { boolean committed = false; try { em.persist(e); utx.commit(); committed = true; } { if (!committed) utx.rollback(); } } { em.close(); } } }
this might not answer, need full formatting.
what doing in following code?
user v = null; v.setfname(fname); v.setlname(lname); manager.persist(v); how can possibly not produce npe?
Comments
Post a Comment