JSP kein Datenbankzugriff möglich

golden_wing

Neues Mitglied
Hallo,

ich versuche gerade eine Webanwendung mit JSF2 aufzusetzen. Habe dazu eine Entity-Klasse "Plant", eine zugehörige

SessionFacade "PlantFacade" und eine JSFManaged Bean "PlantView", wobei ich

Getting Started with Java EE 6 Applications als Vorlage genommen habe. Nun möchte ich ExtJS in

meine Anwendung einbauen um zb. bessere Darstellungsmöglichkeiten wie Charts zu haben. Mein JavaScript macht

hierbei einen Ajax-Call an eine JSP Datei, die nun aus der Datenbank Informationen holen soll und via JSON

zurücksendet.

Mein Problem ist derzeit das Erhalten von Informationen aus der Datenbank. Die JSP-Datei sieht so aus:
Code:
<%@page contentType="text/html" pageEncoding="UTF-8"
        import="my.presentation.PlantView, java.util.List, entities.Plant, java.util.HashMap, org.json.* "%>
<%
	
	PlantView pv = new PlantView();
	String func = request.getParameter("func");
	if(func.compareTo("createPlant")==0){
		pv.getPlant().setName(request.getParameter("name"));
		pv.createPlant();
	}

	if(func.compareTo("getColorsChart")==0){
	     List<Plant> list = pv.getAllMyPlants();
		 HashMap<String,Integer> map = new HashMap<String,Integer>();
		 for(Plant p : list){
			Integer i = map.get(p.getColor());
			if(i!=null)
				i++;
			map.put(p.getColor(),i);
		}
		out.write(new JSONObject(map).toString());
	}
%>

PlantView.getAllMyPlants() sieht folgendermaßen aus

Java:
public List<Plant> getAllMyPlants() {
	return plantFacade.findAll();
}

und PlantFacade.findAll() so:

Java:
public List<Plant> findAll() {
        CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
        cq.select(cq.from(Plant.class));
        return em.createQuery(cq).getResultList();
    }

Wenn ich in einer JSF-Datei diese Daten holen möchte ist dies kein Problem über #{PlantView.allMyPlants} aber so

bzgl. der JSP Datei erhalten ich folgende Fehlermeldung:


WARNUNG: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at my.presentation.PlantView.getAllMyPlants(PlantView.java:47)
at org.apache.jsp.switch_jsp._jspService(switch_jsp.java from :61)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:406)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:483)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:373)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)

Kann mir jemand sagen wo das Problem liegen könnte? Danke im Voraus
 

golden_wing

Neues Mitglied
Jop das stimmt, da wird "null" zurückgegeben.

Was wäre denn nun der eleganteste Ansatz um das Problem zu lösen? In der PlantView eine get und SetMethode für die Facade machen und in der JSPDatei dann entsprechend eine neue FacadeErstellen falls keine Vorhanden? Oder gibt es eine schickere Lösung?

Nach Erstellen einer Get/Set Methode erhalte ich immer noch die entsprechende Fehlermeldung

WARNUNG: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException

obwohl die Facade nun nicht null ist. Fehlt da noch eine Verknüpfung?
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben