Oracle DB-Connection in .jar file ändern

samuel_Mumm

Neues Mitglied
Hallo zusammen, ich habe bisher keine Lösung gefunden, daher versuche ich mein Glück hier:

ich habe ein Java Programm , welches ein Kollege geschrieben hat, dass Daten von einer oracle SQL Db holt und weiter verarbeitet. Vor kurzem ist aber unser Schema auf der DB umgezogen. D.h. ich muss den DB Link im .jar File ändern. Ich habe aber eben nur dieses file und der Kollege ist nicht mehr erreichbar. Ich habe nur minimale Java Grundlagen und versuche gerade die entsprechende class zu finden. Die .jar Datei kann ich ja entpacken und die classes muss ich decompilen richtig? Dann den Eintrag ändern und alles wieder compilieren?

Und in welcher class findet sich der link?

Ich hoffe Ihr könnt aushelfen 🙂
 
Wenn du Glück hast, steht die JDBC URL vielleicht sogar nicht hardcoded in einer .class Datei sondern in einer Classpath-Ressource (*.properties Datei oder .yaml Datei?)
 
JD-GUI und Luyten sind die beiden Decompiler die ich gut kenne. Das aendern selbst koennte kompliziert werden, ich weisz nicht ob Java Bytecode mit absoluten Addressen in einer class Datei arbeitet. Eventuell kommst du aber auch schon damit durch einfach den betreffenden String in Hex-Editor zu aendern. Ansonsten einen Bytecode Editor verwenden, zum Beispiel Recaf.
 
ich weisz nicht ob Java Bytecode mit absoluten Addressen in einer class Datei arbeitet.
Nein, tut es nicht. Das sind alles symbolische Referenzen (mit Index) in eine Tabelle (Constant Pool). Man muss nur alle Bytes weiter nach hinten verschieben, wenn der konkrete Constant Pool Eintrag größer als vorher ist, oder zusammenstauchen, wenn er kleiner als vorher ist.
 
du kannst mal die jar umbennen auf xyz.zip und dann die dateien durchschauen, wenn du glück hast stehen diese werte in einer datei .. zb .properties oder yaml oder sonst was, diese ganzen dateien kannst du auch mit dem ganz normalen editor aufmachen
 
du kannst mal die jar umbennen auf xyz.zip und dann die dateien durchschauen, wenn du glück hast stehen diese werte in einer datei .. zb .properties oder yaml oder sonst was, diese ganzen dateien kannst du auch mit dem ganz normalen editor aufmachen
Liest du eigentlich auch die Nachrichten, die bereits in einem Thread geschrieben wurden, bevor du selbst antwortest? 🙂
Erstens hat der OP bereits gesagt, dass er weiß, dass ein .jar eigentlich nur ein .zip ist und er da schon reingucken kann und dann habe ich gesagt, dass die Config evtl. in einer .properties oder .yaml Datei (literally!) stehen könnte.
 
Wow hier wird einem geholfen 😀 Es findet sich in dem jar nur 2 properties Dateien :defaultConnectionProperties.properties und Message.properties (in allen Sprachen)
der Inhalt der 1.:
# This properties file sets the default value for connection properties.
# Entries in this file override the predefined defaults as specified
# in the JavaDoc for oracle.jdbc.OracleConnection. These defaults are
# themselves overridden by any values set via -D which are overridden
# by values passed in the Properties argument to getConnection.
#
# Controls whether getObject returns the Java standard type java.sql.SQLXML
# or the Oracle proprietary type oracle.xdb.XMLType.
#oracle.jdbc.getObjectReturnsXMLType=false


Kann ich jetzt also den Link hier einfügen und der alte wird damit überschrieben? Aber es wird wahrscheinlich einen getconnection Befehl irgendwo in einer class geben oder?
Eine .yaml Datei ist nicht vorhanden
 
Um mal einen anderen Ansatz zu nennen, ohne dass ich jetzt konkrete Ahnung davon habe. Lässt sich vielleicht die Verbindung irgendwie umleiten, so dass einfach weiter über die alte Verbindung zugegriffen werden kann? So eine Art Proxy.
 

Neue Themen


Zurück
Oben