![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Gast
Beiträge: n/a
|
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
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>
Vielen Dank im Voraus! MfG bene |
|
|
|
Nach oben #3 |
|
Gast
Beiträge: n/a
|
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) |
|
|
|
Nach oben #4 |
|
Benutzer
Registriert seit: 15.11.2005
Beiträge: 75
|
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. |
|
|
|
|
|
Nach oben #5 |
|
Gast
Beiträge: n/a
|
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 |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ä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 |