SqlStatement Ausgabe per Webservice

fenerli23

Erfahrenes Mitglied
Hallo,

wollte gerne mal Wissen, wie ich nach einem Return im Webservice, der das SqlStatement enthält die Tabelle in dem Client anzeigen kann... hier ist auch noch keine Verbindung zur Datenbank hergestellt wie könnte man das ganze Realisieren?
Im moment wird im Client ein beliebiger Statementname eingegeben dieser wiederum vom Webservice das dazugehörige SqlStatement auf dem Bildschirm ausgibt.
Code:
public class Sql
{
	public String getSql(String sSql) {
		ApplicationContext appCtx = new ClassPathXmlApplicationContext(new String[] {"meinpackage/applicationContext.xml"});
		SqlStatements statm = (SqlStatements)appCtx.getBean(sSql);
		sSql = statm.getStatement();
		return sSql;
		
	}
}]
 
Frage: Habe in meinem Client folgende SOAP Syntax Source geschrieben:
Code:
getSql( "<%= Sql %>" ) --&gt;
<% out.flush(); %>
<io:soap url="<%= url %>" SOAPAction="" >
	<io:body>
		<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
			<SOAP-ENV:Body>
				<m:getSql xmlns:m="http://meinpackage">
					<in0><%= Sql %></in0> 
				</m:getSql>
			</SOAP-ENV:Body>
		</SOAP-ENV:Envelope>
	</io:body>
</io:soap>

was ich jetzt gerne wissen würde, wo wird denn das Return vom Webservice hier hinterlegt steht es dann in Sql ?!
 
Versteh ich das richtig? Du rufst einen Webservice auf und dieser liefert dir eine SQL-Anfrage zurück? Und du willst jetzt
a) diese Anfrage an eine Datenbank stellen
und
b) das Ergebnis der Anfrage ausgeben?

Klingt erstmal merkwürdig, weil du dann ja auch Zugriff auf die Datenbank brauchst, die ja vermutlich irgendwo auf nem entfernten Rechner liegt, auf den du nur per Webservice kommst? Also irgendwie versteh ich das nicht.

Das Ergebnis ausgeben ... naja, gibt viele Möglichkeiten. Entweder einfach in der Konsole als eine Art CSV-Datei oder richtig schön als JTable oder ... hängt halt auch davon ab was/wieviel du ausgeben willst.
 
genau ich will das ausgeben, ich habe in meiner Konfigurationsdatei z.B

Select * from employees d.h es soll den ganzen Inhalt der Tabelle ausgeben..

Wie du es auch schon sagst das Ziel ist eigentlich das die Datenebank und der Service auf einem entfernten Rechner liegen sollen und der Client darauf zugreift und es ausführt...

Das Problem ist nun ich weiss nicht wie ich die Ausgabe auf dem Bildschirm realisieren soll, d.h die Ausgabe..? JTable was kann ich mir darunter vorstellen ?!

Bin in Java erst seit 6 - 7 Wochen dabei und vorher hatte ich auch nicht die großen Programmierkenntnisse das ist schon ein Problem ...;(
Und diese ganze Webservice geschichte ist auch schon ganz komplex... Soll das aber hier im Praktikum mal lernen ...
 
Zuletzt bearbeitet:
Also: Es gibt in Java verschiedene Möglichkeiten grafische Benutzeroberflächen zu erzeugen. Eine dieser Möglichkeiten ist die Benutzung von Swing. (Gehört zu Java.)
In einem Fenster (in diesem Fall einem JFrame) kannst du verschiedene Komponenten grafisch darstellen. Eine dieser Komponenten ist halt die JTable. Sieht einer Excel-Tabelle recht ähnlich. Allerdings muss man seine Daten ein wenig zurechtbiegen, bis man die angezeigt kriegt, aber das Problem wirst du immer haben.

Der Datenbankenzugriff kann mittels JDBC erfolgen (gehört auch zu Java). (Einfach mal Googeln oder hier im Forum suchen, gibt bestimmt zig tausend Beispiele.) Problem könnte nur werden, dass dein Zielrechner zu "entfernt" ist, also Firewalls dazwischen oder so wären recht problematisch. Ich bin so verwundert, weil man so Webservices halt hauptsächlich benutzt, wenn man Firewalls überbrücken will, weil die über Port 80 gehen und der fast immer offen ist.
Hat mich halt gewundert, dass du dir den Anfragestring zurückgeben lässt und nicht direkt das Ergebnis der Anfrage. Geht auch. Man muss sich nur ne Methode basteln, die das entsprechende Objekt in XML übersetzt und dann wieder zurück in das Objekt (nachdem man es empfangen hat).

Mit deiner SOAP-Nachricht kann ich dir allerdings leider nicht weiterhelfen. Ich benutz zwar ab und zu Webservices, hab aber trotzdem noch nie eine SOAP-Nachricht selbst zusammen gesetzt oder auseinander genommen :)
 
Hat mich halt gewundert, dass du dir den Anfragestring zurückgeben lässt und nicht direkt das Ergebnis der Anfrage. Geht auch. Man muss sich nur ne Methode basteln, die das entsprechende Objekt in XML übersetzt und dann wieder zurück in das Objekt (nachdem man es empfangen hat).

Ich wollte damit erstmal nur kontrollieren, ob das richtige Statement ausgegeben wird, das klappt ja auch , mit JDBC habe ich auch schon ein wenig gearbeitet habe auch eine Verbindung hinbekommen aber halt nur mit der Java Console an sich ...

Als Webservice Server/ Client das ganze zu realisieren ist schon etwas anspruchsvoller bzw. ein ganz neue baustelle ..

Meinst du mit Methode basteln die eine schöne Ausgabe der Tablle erzeugt?
 
Zuletzt bearbeitet:
Nein, das war mehr drauf bezogen was wäre wenn du die Datenbankabfrage als Webserviceaufruf baust, weil da ja dann alles als XML verschickt wird.

Aber für die Ausgabe musst du dir auf jeden Fall auch selbst was basteln (eine Methode). Der Datenbankaufruf gibt dir (je nachdem wie die Anfrage gemacht wird) nur eine unspezifiezierte List zurück. Da musst du dann natürlich schauen, wie du die weiterverarbeitet kriegst. Einfach ein List.anzeigen() gibt's glaub ich nicht :)

Du kannst das Ergebnis der Abfrage, da du ja eh schon JSP zu benutzen scheinst, auch als Webseite anzeigen. Wäre für den Anfang vielleicht sogar noch einfacher als sich mit der GUI von Java rumzuschlagen, aber auch hier muss man natürlich schauen, dass alles an der richtigen Stelle landet (also die Tabelle z.B. über ne Schleife füllen oder sowas).
 
Wie du das jetzt dargstellt hast, hat dass aber nichts mit Webservice zu tun oder irre ich mich gerade?
Denn das Ziel ist es, dass nach der Eingabe des Clients, im Service an sich der Statement aus der xml Datei rausgeladen wird, eine Datenbankverbindung erzeugt wird und somit das Ergebnis, beim Client auf dem Bildschirm zu sehen ist...

Und ich habe das Problem mit dem darstellen der Tabelle auf der Client (Benutzer) Seite, wie ich das realisieren kann?!
 
Also nochmal langsam. Du möchtest eine Datenbankanfrage machen. Eine Datenbankanfrage unter Java liefert dir immer ein Objekt zurück. Das kann im Falle von z.B. Hibernate was sehr spezifisches sein oder im Falle von einfachem JDBC auch eine normale List(e). Die kriegst du auf jeden Fall von der Datenbank zurück, egal ob du mit Webservices oder sonst wie arbeitest (nur das im Fall von Webservices diese evtl. auf der Serverseite umgewandelt werden muss) und genau die ist es auch, die du darstellen willst. Wobei das "sonst wie" gerade einfacher ist, da die Datenbankverbindung bei dir ja schon klappt obwohl sie nicht lokal ist.

Diese List bietet erstmal keine Möglichkeit der Darstellung. Diese Darstellung musst du dir selbst zusammenbauen und das kann halt auf der JSP-Seite in Form eines [ table ]-Blocks gehen oder als richtiges Java-Programm mit grafischer Benutzeroberfläche oder in der Konsole mit Komma getrennt oder sonst wie, aber an dieser Stelle hat das nichts mehr mit Webservices zu tun. In dem Moment, wo du dir überlegst, wie du die Daten darstellen kannst, sollte es dir egal sein, wie du drangekommen bist. (Und nein, ich fang jetzt nicht mit MVC an *g*).

Wobei ich jetzt halt nicht weiß, wie deine Client-Seite aussieht. Wenn es eine Webseite ist, bleibt halt entweder die Tabelle über ein JSP/Servlet anzuzeigen oder als (J)Applet.
 
Also die Client Seite wird im Browser aufgerufen, es ist eine JSP...

Mmh, also ich realisiere die Datenbankanbindung mit JDBC dazu kann ich auch eine Methode schreiben das ist alles kein Problem.
Wie ich dich verstehe wäre es am besten, die Darstellung der Tabelle auch auf dem Service an sich zu programmieren und an den Client, danach weiter zu leiten..?!

Ich stelle mir das so vor:
1. Client gibt gewünschten Statementnamen ein
2. Im Service wird der gewünschte SqlStatement rausgeholt
3. Darstellung der Tabelle auf der ClientSeite

Die ersten zwei Punkte habe ich schon abgearbeitet im 3. Punkt liegt das Problem wie ich die Tabelle auf der Client Seite sichtbar machen kann?
 
Zurück