Okay, mal ganz auf die Schnelle… wer hat auch dieses Projekt und weiss wie man den Applicationserver per Konsole neustartet? Unserer hat sich gerade sang- und klanglos verabschiedet.
per Konsole Mail an Supporter schicken? ;)
Nächste Frage… und bevor ich noch ganz verzeifel:
Wie zum Teufel krieg ich das Blob aus der $}!&#%&*§ Datenbank? Ich hab mittlerweile x verschiedene Varianten (getBinaryStream, getBlob, getClob, getBytes) ausprobiert, aber alle liefern mir null.
Und apropos… demjenigen, der mir jetzt erzählt, ich möge das Ding via getObject aus der DB ziehen und dann nach javax.swing.ImageIcon casten… [img]
http://www.fb18.de/gfx/wand.gif[/img]
Hey,
ich bin der relativ festen Überzeugung, dass wir das letztes Jahr per getBinaryStream gemacht haben. Bist du dir sicher, dass da auch wirklich Daten drin liegen?
Ein paar Zeilen Beispielcode von dir wären vielleicht auch noch schön.
In den Blobs ist was drin… zumindest fördert eine manuelle Anfrage genügend Steuerungszeichen auf die Konsole.
public byte[] getMediumImage(String id) {
byte[] data = null;
PreparedStatement pstm = getPreparedStatement("SELECT BILD FROM medium WHERE mediumid=?");
try {
pstm.setString(1, id);
ResultSet rs = pstm.executeQuery();
if (rs != null && rs.next()) {
Blob b = rs.getBlob("BILD");
data = b.getBytes(1, (int) b.length());
}
} catch (SQLException e) {
_log.log(Level.WARNING, "Unknown SQL error: "+pstm.toString(), e);
}
return data;
Wie schon gesagt… alle meiner Meinung nach sinnvollen Methoden, die ich an dem ResultSet aufruf, liefern mir null zurück… und damit kann man leider nicht sooo viel anfangen.
das ganze funktioniert jedenfalls mit
byte[] bild = rs.getBytes ( "bild") und beim Speichern
if (bild != null ) {
p.setBytes( 3, bild );
} else {
p.setNull( 3, java.sql.Types.BINARY );
}
die drei vorgegebenen Medien in der DB enthalten kein Bild,
du must also zuerst mal eins abspeichern
um Probleme mit Buchstabierung und Groß-/Kleinschreibung auszuschließen würde ich erst mal allgemeine Tabellenausgaben versuchen:
public static void gibAus(ResultSet r) throws SQLException {
ResultSetMetaData rm = r.getMetaData();
int anz = rm.getColumnCount();
String s = "";
for (int i=0;i<anz; i++) {
s += rm.getColumnName(i+1)+ " - ";
}
Log.add("Spalten: "+s);
while (r.next()) {
s = "";
for (int i=0;i<anz; i++) {
s += r.getString(i+1)+ " - ";
}
Log.add("Eintrag: "+s);
}
}
public static void gibAusTable(String name, Connection con) throws SQLException {
Log.add("gibAusTabelle: "+name);
String get = "SELECT * FROM "+name;
PreparedStatement p = con.prepareStatement(get);
ResultSet r = p.executeQuery();
gibAus(r);
}
edit (temopräre Textspeicherung)
Interface implementieren,
Log laden speichern prüfen
javax.ejb.EJBException: SessionBean is executing another request …
(eine Internet-Forum-Seite dazu:
http://forum.java.sun.com/thread.jspa?threadID=300683&messageID=1191984#1191984)
zum Thema Eclipse:
..@vsispool23:~> eclipse21
ParserFactory(init) count: 1 iptr=139137392
ParserFactory(fin) try internal=0
clr:ParserFactory finalize iptr:0
clr:BaseEditor init: 1
clr:BaseEditor finalize: 0
A fatal error happened while logging a fatal error.
java.lang.OutOfMemoryError
New exception.
java.lang.OutOfMemoryError
A fatal error happened while informing the user about a fatal error.
java.lang.OutOfMemoryError
New exception.
java.lang.OutOfMemoryError
Slater
Hehe, also so schlimm war's bei mir noch nie…
<ejb>
<ejb-name>WSController</ejb-name>
<jndi-name>ejb/WSController</jndi-name>
<webservice-endpoint>
<port-component-name>AdminService</port-component-name>
<endpoint-address-uri>/dbms/admin</endpoint-address-uri>
</webservice-endpoint>
<ejb-ref>
<ejb-ref-name>ejb/WSLogin</ejb-ref-name>
<jndi-name>ejb/WSLogin</jndi-name>
</ejb-ref>
<ejb-ref>
<ejb-ref-name>ejb/WSUserList</ejb-ref-name>
<jndi-name>ejb/WSUserList</jndi-name>
</ejb-ref>
<ejb-ref>
<ejb-ref-name>ejb/WSUser</ejb-ref-name>
<jndi-name>ejb/WSUser</jndi-name>
</ejb-ref>
<ejb-ref>
<ejb-ref-name>ejb/WSBalancingService</ejb-ref-name>
<jndi-name>ejb/WSBalancingService</jndi-name>
</ejb-ref>
<ejb-ref>
<ejb-ref-name>ejb/SessionTimer</ejb-ref-name>
<jndi-name>ejb/SessionTimer</jndi-name>
</ejb-ref>
</ejb>