Problem Verbindung Weblogic 10.3 zu MSSQL2005

Status
Nicht offen für weitere Antworten.

cwerner

Mitglied
Hallo, ich versuche eine bestehende Appliktion von Weblogic 6.5 nach Weblogic 10.3 zu migrieren.
Mein Problem ist die Verbindung zum MS SQL-Server 2005.
(Mein weiteres Problem ist die mangelnde Erfahrung in Java und Weblogic ;-) )

Java:
  public void connect(String user, String passwd, String server, String database)
    throws LetServerException {
    log.getLog().debug("DBManager try to connect user:" + user + " server:" + server + " db:" + database);
    if(dbConnection != null)
      disconnect();
    dbUser = user;
    try {
      java.util.Properties props = new java.util.Properties();
      props.put("user",     user);
      props.put("password", passwd);
      props.put("server",   server);
      //props.put("db", database);               //weblogic 6.5
      props.put("DatabaseName", database);   //weblogic 10.3
      props.put("appname",  "myapp");
      try {
        props.put("hostname", InetAddress.getByName(InetAddress.getLocalHost().getHostAddress()).getHostName());
      } catch (Exception ex) {
        // nothing
      }
   //cc  Class.forName("weblogic.jdbc.mssqlserver4.Driver");                                // weblogic 6.5
      //cc  dbConnection = DriverManager.getConnection("jdbc:weblogic:mssqlserver4", props);   // weblogic 6.5
   Class.forName("weblogic.jdbc.sqlserver.SQLServerDriver");                                //weblogic 10.3  
      dbConnection = DriverManager.getConnection("jdbc:bea:sqlserver", props);                 //weblogic 10.3 
      pStatements = new StatementCache (dbConnection);
    }
    catch(Exception dbe) {
      handleDBException(dbe);
    }
  }
Nach Ersetzen des weblogic-jdbc-Treibes erhalte ich den Laufzeitfehler:
"java.lang.StringIndexOutOfBoundsException: String index out of range: 0"
Ich vermute den Fehler bei den übergebenen Parametern, komme aber nicht weiter.
Ich hoffe, es gibt hier jemanden, der mir helfen kann
Danke vorab
Christian
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
Poste mal bitte den gesamten Stacktrace der Exception .

Ps: Java Code in
Java:
 Tags setzen, Stacktraces in [code] Tags ;)
 

cwerner

Mitglied
Hallo maki,

erst mal sorry für die fehlenden Tags :oops:.

Einen Stacktrace bekomme ich nicht zu sehen, die Meldung
"Server Laufzeitfehler: java.lang.StringIndexOutOfBoundsException: String index out of range: 0"
wird über handleDBException(dbe) in einem Meldungsfenster beim Client angezeigt, das Programm läuft weiter.
 

cwerner

Mitglied
Beim Debuggen mit Eclipse kann ich feststellen, das die Exception beim abarbeiten der Zeile
Java:
dbConnection = DriverManager.getConnection("jdbc:bea:sqlserver", props);
auftritt.
Beim weiteren Verfolgen des Codes in java.sql.DriverManager.class komme ich bis zum Auruf
Java:
Connection result = di.driver.connect(url, info);
,also dem direkten Aufruf des ODBC-Treibers.
Daher meine Vermutung, dass mit übergebenen Parametern etwa nicht in Ordnung ist.
 
M

maki

Gast
Meinst wohl JDBC Treiber ;)

Daher meine Vermutung, dass mit übergebenen Parametern etwa nicht in Ordnung ist.
Würde mir an deiner Stelle die Doku zu dem MS-SQL JDBC Treiber von BEA ansehen.
 
M

maki

Gast
Laut Doku gibt es keinen Parameter "server", dafür aber "servername".

Dasselbe gilt für "appname, sollte owlh "ProgramName" heissen, "databasename" gibt es anscheinend gar nicht mehr, wird wohl über die url gesetzt.

Alle Angaben ohne Gewähr ;)
 
Zuletzt bearbeitet von einem Moderator:

cwerner

Mitglied
Hallo maki,

hast du dir jetzt extra die Doku reingezogen? Respekt.

Nach deiner letzten Empfehlung hatte ich mir die Doku nochmals vorgenommen und appname/programname auch entdeckt, bei servername warst du schneller :applaus:.
Databasename gibt es in der aktuellen Version 10.3.

Änderungen leider bisher ohne Erfolg.
 
M

maki

Gast
Ach, ans Doku lesen/überfliegen gewöhnt man sich irgendwann.

Denke dass deine URL ""jdbc:bea:sqlserver"" nicht stimmt, laut Doku ist es eher "jdbc:bea:sqlserver://dbserver1:1433".

Wenn Intern nämlich ein subString auf den Port/Servernamen gemacht wird, könnte dass auch deine schräge Fehlermeldung erklären.
 

void

Mitglied
Hm, mal ganz allgemein, Datenbankverbindungen sollten in einem Applikationsserver wie Weblogic eigentlich nicht "per Hand" aufgebaut werden sondern als DataSources konfiguriert werden. Ist zwar schon etwas her das ich mit Weblogic gearbeitet habe aber da gibt es doch so eine schöne Administrationsoberfläche in der man das alles einstellen kann.
 

cwerner

Mitglied
Hallo void,
mit den Datasources hatte ich auch schon rumgespielt. Das Problem ist, dass sich User und Passwort erst zur Laufzeit ergeben (Eigenes Datenbank-Login je Nutzer). Bei den Datasources, die über die Weblog-Console eingerichtet werden, sind diese Parameter fix (oder habe ich da etwas falsch verstanden?).

@maik:
"jdbc:bea:sqlserver://dbserver1:1433"
und "jdbc:bea:sqlserver://dbserver1:1433;User=xxx;Password=yyy"
habe ich schon probiert. Dann ist zwar die Fehlermeldung weg, aber die Applikation hängt. :(
 
M

maki

Gast
Du ersetzt aber schon "dbserver1" durch den richtigen Servernamen, oder? ;)
 
M

maki

Gast
Kannst du denn mit Telnet von der Maschine von der du arbeitest eine Verbidnung zum Server bekommen?

Code:
telnet server port
 

cwerner

Mitglied
ich entwickle direkt auf dem Server :D

bin aber einen kleinen Schritt weiter (dabei stand ich vorhin noch vor einem Abgrund...)

"jdbc:bea:sqlserver://dbserver1:1433;User=xxx;Password=yyy"
scheint ein Verbindung zur Datenbank aufzubauen, ich kann den User xxx dort angemeldet sehen, der scheinbare Abbruch scheint eher ein Timeout von Weblogic beim Verarbeiten der Antwort zu sein..


P.S. Ich habe gerade durch klick auf den falschen Link in der Benachtigungsmail dieses Thema abbestellt, kann ich das irgendwie rückgängig machen? ???:L
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben