Hallo...
Ich habe wahrscheinlich nun ein grundsätzliches Problem mit dem EJB konzept
beim aufruf in meinen page klassen, die zur kommunikation mit den jsp seiten da sind, bekomme ich eine nullpointerexception hier ausschnittsweise code, um das problem zu verstehen
den aufruf hab ich nur als beispiel gegeben, wo es probleme gibt.
das mit der bean, also mit dem db zugriff funktioniert. jedoch in dieser zeile
return customerManagement.getAllCustomers();
wird eine nullpointerexception geworfen...
ich denke hier liegt der fehler...
@EJB(name = "customerManagement")
private CustomerManagement customerManagement;
weil es nicht instantiiert wurde....
die fehlermeldung vom server ist:
[#|2010-01-12T16:03:01.926+0100|WARNING|glassfishv3.0|javax.e nterprise.system.container.web.com.sun.enterprise. web|_ThreadID=30;_ThreadName=http-thread-pool-8080-(2);|StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at sellManagement.ui.CustomerPage.getAllCustomers(Cus tomerPage.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.getValue(BeanELResolver.ja va:302)
at javax.el.CompositeELResolver.getValue(CompositeELR esolver.java:175)
at com.sun.faces.el.FacesCompositeELResolver.getValue (FacesCompositeELResolver.java:72)
at com.sun.el.parser.AstValue.getValue(AstValue.java: 116)
at com.sun.el.parser.AstValue.getValue(AstValue.java: 163)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpre ssionImpl.java:219)
at javax.faces.component.ComponentStateHelper.eval(Co mponentStateHelper.java:190)
at javax.faces.component.ComponentStateHelper.eval(Co mponentStateHelper.java:178)
at javax.faces.component.UIData.getValue(UIData.java: 554)
at javax.faces.component.UIData.getDataModel(UIData.j ava:1248)
at javax.faces.component.UIData.setRowIndex(UIData.ja va:447)
at com.sun.faces.renderkit.html_basic.TableRenderer.e ncodeBegin(TableRenderer.java:81)
at javax.faces.component.UIComponentBase.encodeBegin( UIComponentBase.java:823)
at javax.faces.component.UIData.encodeBegin(UIData.ja va:937)
at javax.faces.component.UIComponent.encodeAll(UIComp onent.java:1611)
at javax.faces.component.UIComponent.encodeAll(UIComp onent.java:1616)
at javax.faces.render.Renderer.encodeChildren(Rendere r.java:168)
at javax.faces.component.UIComponentBase.encodeChildr en(UIComponentBase.java:848)
at javax.faces.component.UIComponent.encodeAll(UIComp onent.java:1613)
at javax.faces.component.UIComponent.encodeAll(UIComp onent.java:1616)
at com.sun.faces.application.view.JspViewHandlingStra tegy.doRenderView(JspViewHandlingStrategy.java:420 )
at com.sun.faces.application.view.JspViewHandlingStra tegy.renderView(JspViewHandlingStrategy.java:209)
at com.sun.faces.application.view.MultiViewHandler.re nderView(MultiViewHandler.java:126)
at com.sun.faces.lifecycle.RenderResponsePhase.execut e(RenderResponsePhase.java:127)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:1 01)
at com.sun.faces.lifecycle.LifecycleImpl.render(Lifec ycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServl et.java:313)
at org.apache.catalina.core.StandardWrapper.service(S tandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipel ine.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPip eline.invoke(PESessionLockingStandardPipeline.java :85)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doServ ice(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMappe r.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(P rocessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(Proce ssorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(Process orTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute (DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtoc olFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(Defau ltProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(Defau ltProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(Htt pProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(Pr otocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(Selec tionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:6 9)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doW ork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run (AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
|#]
hat jemand eine idee?
vielen dank schonmal im voraus...
grüße dom
Ich habe wahrscheinlich nun ein grundsätzliches Problem mit dem EJB konzept
beim aufruf in meinen page klassen, die zur kommunikation mit den jsp seiten da sind, bekomme ich eine nullpointerexception hier ausschnittsweise code, um das problem zu verstehen
Code:
//Interface package sellManagement.ejbs; import javax.ejb.Remote; import javax.faces.model.SelectItem; import sellManagement.data.Customer; @Remote public interface CustomerManagement { Customer[] getAllCustomers() throws CustomerException; [.....] } //Bean package sellManagement.ejbs; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.LinkedList; import java.util.List; import javax.ejb.Stateless; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.model.SelectItem; import sellManagement.data.Customer; @Stateless(name = "customerManagement") public class CustomerManagementBean implements CustomerManagement { public Customer[] getAllCustomers() throws CustomerException { Connection connection = null; Statement statement = null; ResultSet resultSet = null; List<Customer> allCustomers = new LinkedList<Customer>(); try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); connection = DriverManager.getConnection(url, user, pass); statement = connection.createStatement(); resultSet = statement.executeQuery("SELECT * FROM customers"); while (resultSet.next()) { allCustomers.add(new Customer(resultSet.getInt("id"), resultSet .getString("firstname"), resultSet .getString("lastname"), resultSet.getInt("school"), resultSet.getString("emailadress"))); } } catch (SQLException e) { throw new CustomerException("retrieving customer list", e); } catch (Exception e) { System.err.println("Unable to load drivers"); } finally { if (resultSet != null) { try { resultSet.close(); } catch (SQLException exception) { } } if (statement != null) { try { statement.close(); } catch (SQLException exception) { } } if (connection != null) { try { connection.close(); } catch (SQLException exception) { } } } return allCustomers.toArray(new Customer[allCustomers.size()]); } [.....] } //Page package sellManagement.ui; import javax.ejb.EJB; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import javax.faces.model.SelectItem; import sellManagement.data.Customer; import sellManagement.data.School; import sellManagement.ejbs.CustomerException; import sellManagement.ejbs.CustomerManagement; import sellManagement.ejbs.CustomerManagementBean; import sellManagement.ejbs.SchoolException; import sellManagement.ejbs.SchoolManagement; public class CustomerPage { private static final String CUSTOMER_LIST_PAGE_TITLE = "Customer Management"; private static final String NEW_CUSTOMER_PAGE_TITLE = "Create New Customer"; private static final String EDIT_CUSTOMER_PAGE_TITLE = "Edit Customer"; @EJB(name = "customerManagement") private CustomerManagement customerManagement; private String pageTitle; private Customer currentCustomer; private boolean showingList; private int id; private String firstName; private String lastName; private int school; private String emailAdress; private Boolean deleteCustomer; private Boolean editCustomer; private Boolean newCustomer; public Customer[] getAllCustomers() { try { return customerManagement.getAllCustomers(); } catch (CustomerException exception) { addExceptionMessage(exception); return new Customer[0]; } } //Aufruf CustomerPage cp = new CustomerPage(); cp.getAllCustomers();
das mit der bean, also mit dem db zugriff funktioniert. jedoch in dieser zeile
return customerManagement.getAllCustomers();
wird eine nullpointerexception geworfen...
ich denke hier liegt der fehler...
@EJB(name = "customerManagement")
private CustomerManagement customerManagement;
weil es nicht instantiiert wurde....
die fehlermeldung vom server ist:
[#|2010-01-12T16:03:01.926+0100|WARNING|glassfishv3.0|javax.e nterprise.system.container.web.com.sun.enterprise. web|_ThreadID=30;_ThreadName=http-thread-pool-8080-(2);|StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at sellManagement.ui.CustomerPage.getAllCustomers(Cus tomerPage.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.getValue(BeanELResolver.ja va:302)
at javax.el.CompositeELResolver.getValue(CompositeELR esolver.java:175)
at com.sun.faces.el.FacesCompositeELResolver.getValue (FacesCompositeELResolver.java:72)
at com.sun.el.parser.AstValue.getValue(AstValue.java: 116)
at com.sun.el.parser.AstValue.getValue(AstValue.java: 163)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpre ssionImpl.java:219)
at javax.faces.component.ComponentStateHelper.eval(Co mponentStateHelper.java:190)
at javax.faces.component.ComponentStateHelper.eval(Co mponentStateHelper.java:178)
at javax.faces.component.UIData.getValue(UIData.java: 554)
at javax.faces.component.UIData.getDataModel(UIData.j ava:1248)
at javax.faces.component.UIData.setRowIndex(UIData.ja va:447)
at com.sun.faces.renderkit.html_basic.TableRenderer.e ncodeBegin(TableRenderer.java:81)
at javax.faces.component.UIComponentBase.encodeBegin( UIComponentBase.java:823)
at javax.faces.component.UIData.encodeBegin(UIData.ja va:937)
at javax.faces.component.UIComponent.encodeAll(UIComp onent.java:1611)
at javax.faces.component.UIComponent.encodeAll(UIComp onent.java:1616)
at javax.faces.render.Renderer.encodeChildren(Rendere r.java:168)
at javax.faces.component.UIComponentBase.encodeChildr en(UIComponentBase.java:848)
at javax.faces.component.UIComponent.encodeAll(UIComp onent.java:1613)
at javax.faces.component.UIComponent.encodeAll(UIComp onent.java:1616)
at com.sun.faces.application.view.JspViewHandlingStra tegy.doRenderView(JspViewHandlingStrategy.java:420 )
at com.sun.faces.application.view.JspViewHandlingStra tegy.renderView(JspViewHandlingStrategy.java:209)
at com.sun.faces.application.view.MultiViewHandler.re nderView(MultiViewHandler.java:126)
at com.sun.faces.lifecycle.RenderResponsePhase.execut e(RenderResponsePhase.java:127)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:1 01)
at com.sun.faces.lifecycle.LifecycleImpl.render(Lifec ycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServl et.java:313)
at org.apache.catalina.core.StandardWrapper.service(S tandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipel ine.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPip eline.invoke(PESessionLockingStandardPipeline.java :85)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doServ ice(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMappe r.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(P rocessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(Proce ssorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(Process orTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute (DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtoc olFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(Defau ltProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(Defau ltProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(Htt pProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(Pr otocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(Selec tionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:6 9)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doW ork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run (AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
|#]
hat jemand eine idee?
vielen dank schonmal im voraus...
grüße dom
Comment