Portal > Foren > Java > Enterprise Java > Oracle-DB-Zugriff via JSP macht Probleme
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 08.11.2005, 13:26 Nach oben    #1
bene23
Gast
 
Beiträge: n/a
Standard Oracle-DB-Zugriff via JSP macht Probleme

Hallo, habe ein 'komisches' Problem...

Möchte von einer JSP-Seite eine Verbindung zu einer Oracle-DB herstellen. Die Methoden hierfür habe ich in eine Klasse 'ConnectToDB' ausgelagert. Wenn ich die DB-Verbindung mit der 'main'-Methode der Klasse herstelle, dann funktioniert alles ohne Probleme. Nur wenn ich von der JSP aus auf die einzelnen Funktionen zugreife, dann bekomm ich jedesmal eine Java.lang.NullPointerException...

Hier erstmal der Code der Klasse ConnectToDB:

Code:
package database;
 
import java.sql.Connection;
import java.sql.DriverManager;
import oracle.jdbc.*;
 
public class ConnectToDB {
 
	private static Connection conn;
	private static String host = "blablabla";
	private static String user = "user";
	private static String pwd = "pwd";
	private static boolean code = false;
 
	/** Creates a new instance of ConnectToDB */
	public ConnectToDB (){
	}
 
	public static void main (String args[]){
		code = loadDriver();
		conn = getDBConnection();
		code = closeDBConnection();
	} // main
 
	/**
	 * läd den Treiber
	 *
	 * @return <code>true</code> bei Erfolg, sonst <code>false</code>
	 */
	public static boolean loadDriver (){
		try{
			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
		}
		catch(Exception ex){
			System.out.println("Fehler beim Laden des Datenbank-Treibers (ConnectToDB.loadDriver():( " + ex);
			return false;
		} // catch
		catch(NoClassDefFoundError er){
			System.out.println("Klasse nicht gefunden (ConnectToDB().loadDriver())! " + er);
			return false;
		} // catch
		System.out.println("Treiber wurde erfolgreich geladen!");
		return true;
	} // loadDriver
 
	/**
	 * Stellt die Verbindung zur Datenbank her
	 *
	 * @return <code>Connection</code> bei Erfolg, sonst <code>null</code>
	 */ 
	public static Connection getDBConnection(){
		try{
			// HIER TRITT DER FEHLER AUF
			conn = DriverManager.getConnection("jdbc:oracle:thin:@" + host, user, pwd);
		} // try
		catch (Exception ex){
			System.out.println("Fehler beim Verbindungsaufbau zur Datenbank (ConnectToDB().getDBConnection())! " + ex);
			return null;
		} // catch
		catch (NoClassDefFoundError er){
			System.out.println("Es ist ein unbekannter Fehler aufgetreten (ConnectToDB().getDBConnection())! " + er);
			return null;
		} // catch
		return conn;
	} // getConnection()
 
	/**
	 * Trennt die Datenbankverbindung
	 *
	 * @return <code>true</code> bei Erfolg, sonst <code>false</code>
	 */
	public static boolean closeDBConnection(){
		try{
			conn.close();
		} // try
		catch (Exception ex){
			System.out.println("Fehler beim Trennen der Datenbankverbindung (ConnectToDB().closeDBConnection())! " + ex);
			return false;
		} // catch
		return true;
	} // closeDBConnection()
} // class
Wie gesagt, wenn ich ConnectToDB alleine ausführe, dann funktioniert alles. Rufe ich jetzt das Ganze aber aus der JSP auf, dann gibts einen Fehler.

Hier der Code der JSP:
Code:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="database.ConnectToDB, java.sql.Connection, java.sql.DriverManager, oracle.jdbc.*"%>
<%!
	ConnectToDB db;
	boolean driverLoad = false;
	boolean closeConn = false;
	Connection conn = null;
%>
 
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>JSP Page</title>
	</head>
	<body>
 
	<h1>JSP Page</h1>
 
<%
	db = new ConnectToDB();
	driverLoad = db.loadDriver();
 
	if (driverLoad == false){
		out.println("Fehler beim Laden des DB-Treibers!\n");
	} // if
	else{
		// HIER GIBTS DEN FEHLER
		conn = db.getDBConnection();
	} // else
 
	if (conn != null){
		out.println("DB-Verbindung erfolgreich aufgebaut!\n");
	} // if
 
	closeConn = db.closeDBConnection();
	if (closeConn == true){
		out.println("DB-Verbingund erfolgreich getrennt!\n");
	} // if
	else{
		out.println("Fehler beim Trennen der DB-Verbindung aufgetreten!\n");
	} // else
%>
 
	</body>
</html>
So, ich hoffe irgendjemand kann mir weiterhelfen... sitze schon ewig an diesem Problem und ich komme einfach auf keinen grünen Zweig...

Vielen Dank im Voraus!
MfG bene
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 13:39 Nach oben    #2
Benutzer
 
Registriert seit: 15.11.2005
Beiträge: 75
Standard

Hast Du den Stack-Trace der NullPointerException?
Murray ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 13:48 Nach oben    #3
bene23
Gast
 
Beiträge: n/a
Standard

Ja, hier ist er:

Code:
java.lang.NullPointerException
		at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:345)
		at java.sql.DriverManager.getConnection(DriverManager.java:512)
		at java.sql.DriverManager.getConnection(DriverManager.java:171)
		at database.ConnectToDB.getDBConnection(ConnectToDB.java:112)
		at database.ConnectToDB.main(ConnectToDB.java:48)
		at org.apache.jsp.dbTestFile_jsp._jspService(dbTestFile_jsp.java:142)
		at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
		at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
		at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
		at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
		at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
		at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
		at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
		at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
		at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738)
		at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
		at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
		at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
		at java.lang.Thread.run(Thread.java:534)
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 14:19 Nach oben    #4
Benutzer
 
Registriert seit: 15.11.2005
Beiträge: 75
Standard

Ich meine mich dunkel zu erinnern, dass im Oracle-JDBC-Treiber Security-Issues - freudlich formuliert - eher suboptimal behandelt werden. Im Falle fehlender Permissions gibt es nicht etwa eine entsprechende Security-Exception; diese wird vielmehr intern einfach verschluckt und führt dann in der Folge zu einer NullPointerException.

Das würde evtl. erklären, warum es mit einer Application, nicht aber mit einem Servlet geht. Versuch doch mal, dem Servlet mehr Rechte einzuräumen.
Beim Tomcat 4 geht das so.
Murray ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 14:37 Nach oben    #5
bene23
Gast
 
Beiträge: n/a
Standard

So, das Problem ist gelöst... habe die 'richtige' Version der Datei 'classes12.jar' (enthält die Oracle-Klassen) als Library eingebunden... Hatte davor eine ältere Version (classes12.zip), die wohl der Grund für den Fehler war.
Komisch ist allerdings, dass es innerhalb der Klasse funktioniert hat Eventuell wurde in der älteren Version JSP noch nicht unterstützt...

Naja, denke man muss auch nicht alles wissen


Danke aber trotzdem an Dich Murray!

MfG
bene
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Tomcat, JSP und IntelliJ Idea 7 M1 Ben Tools, Server, Betriebssysteme 1 08.07.2007 11:41
[VBScript] Probleme mit Zugriff auf Argument der Kommandozeile WarrenFaith Sonstige Programmiersprachen 2 13.02.2006 13:57


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45