Beiträge von maciek

    Zitat von Usher

    Ich würde das Session-Objekt ganz normal an das Objekt, das damit hantieren soll, als Parameter übergeben. Problem gelöst.


    aber genau das will ich vermeiden, denn da stimm ich mit a9bejo überein:

    Zitat von a9bejo

    Noch als anmerkung: wenn du variablen wie ein request object ueber mehrere ebenen hinweg benoetigst, ist das meistens ein zeichen fuer einen fehler im design.


    ich hab dann 50 Objekte, die verschiedenen Verkettungen von dem Servlet aufgerufen werden. Sagen wir dass 10 die Sessioninformationen wirklich benötigen ... die anderen 40 reichen sie nur für die 10 weiter. Das kann kein (zufriedenstellend) gutes Design sein, oder?

    Andere Frage: Was würde passieren wenn ich versuchen würde doGet und doPost synchronized zu machen? Oder geht dieser Gedanke völlig in die falsche Richtung?

    Zitat von Usher

    a) du rufst setTest() auf (und setzt damit den Wert einer statischen Variable)
    b) mit getTest() fragst Du diesen Wert innerhalb desselben Requests ab.

    Solange ein User einen Request, der nächste User dennächsten Request macht, geht das gut. Aber nicht, wenn die requests gleichzeitig eintreffen. (siehe mein obiges Posting).


    erm ... soweit ich das richtig verstanden habe, wird bei einem Servlet pro Request ein Thread gestartet, richtig? D.h. Du meinst, die Sessions könnten durcheinanderkommen wenn

    1) UserA schickt Request ab -> sessionA
    2) UserB schickt Request ab -> sessionB
    3) UserA fordert an -> sessionB
    4) UserB fordert an -> sessionB

    richtig? Das wäre wirklich nicht optimal. Wie kann man das umgehen? Bzw. wie würdest Du es implementieren, dass ein Objekt, das kein Servlet ist, auf die Sessiondaten zugreifen kann?

    Zitat von Usher

    Du hast einen schweren Denkfehler drinnen, wenn ich das richtig verstanden habe.
    Sobald 2 requests gleichzeitig eintreffen (eventuell von 2 verschiedenen Sessions) werden die Session-Daten gemixed, da Du eine static Variable zur Speicherung verwendest. Sämtliche requests greifen bei Dir auf dieselbe Variable zu.


    eben nicht. Die SessionIDs sind verschieden! Ich kann das zwar nicht 100% begründen, aber ich hab das einerseits über den Browser und andererseits über den JBuilder getestet: Ich kriege zwei verschiedene sessionIDs, die aber beim Reload der Seite jeweils gleich bleiben. :)

    Zitat von a9bejo

    Nein, denn das wuerde dem gedanken der modularitaet wiedersprechen: Du willst ja, das Objekte unabhaengig arbeiten, damit du sie ihn verschiedenen kontexten verwenden kannst. Wenn du den erzeuger doch merken willst, musst du das schon explizit machen:


    ich hab mittlerweile eine andere Möglichkeit gefunden, wie man "globale" Variablen "dynamisch" definieren kann. Und zwar definiere ich mir in einer Klasse eine Variable als

    Code
    private static Test test;


    setze sie das erste Mal im doPost vom Servlet. Wenn ich dann im ObjectB eine weitere Instanz mache

    Code
    ... 
    Test test = new Test();
    value = Test->GetTest();


    hab ich den Wert, den ich im Servlet gesetzt habe. Falls Ihr Euch fragt, wozu ich diese Gehirnakrobatik aufführe: Ich möchte im ObjectB auf die Sessiondaten zugreifen können. Für die brauch in den Request und den krieg ich nur im Servlet.

    Zitat von a9bejo


    Noch als anmerkung: wenn du variablen wie ein request object ueber mehrere ebenen hinweg benoetigst, ist das meistens ein zeichen fuer einen fehler im design.


    das Design ist leider nicht von mir. Ich versuche gerade krampfhaft das Konfusum das mir mein Vorgänger in der Firma überlassen hat zu verstehen und möglicherweise umzuändern.

    Zitat von KeinWunder

    so wie du es hier machst, musst du es immer übergeben

    etwas anderes wäre es wenn dein ObjectB von ObjectA abgeleitet ist und ObjectA von deiner Servletklasse abgeleitet ist, dann kannst du immer darauf zugreifen, wenn du den Request als Instanzvariable abspeicherst (Instanzvariable als protected deklarieren oder eine getMethode schreiben)


    mit der Lösung würde ich aber nur die Weitergabe von Parametern durch die Vererbung umgehen. Gibt es in Java keine Möglichkeit, das Objekt zu finden, das ursprünglich den Aufruf durchgeführt hat?

    Die Kette schaut ja so aus:
    Servlet -> ObjectA -> ObjectB

    Gibt es keine Möglichkeit diese Kette ausgehend vom ObjectB umzukehren? Ich hab in der Zwischenzeit folgendes Beispiel gefunden:

    Das liefert allerdings nur den Namen der Klasse zurück, was mich in dem Fall nicht wirklich glücklich macht.

    Hi Zusammen,

    ich hätte eine Frage - keines Javaprofis wie man gleich sehen wird. ;) Ich hab folgendes Konstrukt:

    Gibt es irgendeine Möglichkeit in der Funktion XYZ auf den Request (damit die Sessiondaten usw.) des Servlets zuzugreifen, das ursprünglich (aber nicht direkt) das ObjektB aufgerufen hat? Oder muss ich dazu immer den Request weitergeben? D.h.

    Code
    ...
    ObjectA a = new ObjectA(req);
    ...
    ObjectB b = new ObjectB(req);
    ...

    Wenn ich nämlich nicht zwei Klassen hab, sondern 50 mit einer Tiefe größeren Tiefe, dann wird das weitergeben ziemlich mühsam.

    Grüße, Maciek.

    Zitat von beefy

    Also laut SELFHTML sollte das schon einfach so mit resizeTo() funktionieren... Aber wie sie ganz richtig sagen:


    Ich weiss ... ich hab das ja von SELFHTML. ;) Was mich nur irritiert: Es ist ja nicht so, dass der IE das gar nicht macht. Er macht einen Teil ... er dürfte den Content anpassen, aber nicht das Fenster.

    Hi Zusammen!

    Ich sitz jetzt seit gut 1h an einem wirklich depperten Problem: Ich möchte im IE ein Fenster resizen (genauer gesagt: Ein popup-Fenster an die Breite einer Tabelle anpassen). Im Firefox geht das ohne Probleme:

    window.resizeBy(dif+40, 0); (genauen Zahlen seien jetzt ausser acht gelassen)

    Im IE hab ich schon einiges versucht, aber nix will so richtig funken. Was dem gewünschten ergebnis am nähesten kommt ist:

    self.resizeTo(newWidth+40, winHeight);

    Was aber dabei macht, ist: Er verändert die grösse des Fenster nicht, sonder nur den Anzeigebereich innerhalb des Fensters. D.h. was zuviel ist "graut" er aus, was mehr sein sollte ignoriert er einfach. Mit window.resizeBy() macht er rein gar nix.

    Hat jemand Ideen?

    Thanx.

    Danke für das Feedback. Die Probleme mit dem "extra Code" sehe ich auch, nur sehe ich bei den Java ZPT Engines ein gravierendes Problem: Beide Projekte scheinen mehr oder minder tot zu sein, soweit ich das von den Datumsangaben sehen kann. Jetzt kann man sagen, dass es dafür zwei prinzipielle Möglichkeiten geben könnte:

    1) Die Implementierung ist so genial, dass es nix zu ändern gibt und alles sind superglücklich damit.
    2) Da hat sich jemand ein bissi rumgespielt und es aufgegeben. Irgendwenn anderen interessiert es offensichtlich auch nicht genug, dass er da weitermachen würde.

    Danke für die Links. Diese Art der Syntax hätte den Vorteil, dass man den HTML-Code ohne Probleme z.B. mit dem DreamWeaver WYSIWYG bearbeiten kann. Das kann man bei mit dem Code in der Syntax vom FreeMarker leider nicht machen. Das wäre deswegen von Vorteile, weil sich dann auch "Nicht-Programmierer" ohne Probleme den Code anpassen könnten.

    Auf der anderen Seite macht es mich aber ein bissi nachdenklich, dass bei beiden Projekten "Java ZPT" und "JPT" sich die Aktivität (sowohl was neue Releases als auch die Aktivität in den Foren) sehr in Grenzen hält. Es macht nicht den Eindruck als ob das wirklich noch "lebende" Projekte wären ...

    EDIT: Hab gerade noch eine Template Engine auf GNU Lizenz gefunden: http://www.webmacro.org/ Kennt die jemand vielleicht?

    Zitat von Wings-of-Glory

    reicht dir jsp 2.0 nicht aus?


    die Vorgabe ist Java ... ich mach an einem Projekt weiter, das schon in Java implementiert ist ... da gibt's also nicht viel Demokratie.

    Zitat von a9bejo

    Wenn Du mich fragst, wurde Java generell als Kanone entwickelt und ist fuer Spatzen eher nicht so gut geeignet. Das betrifft nicht nur, aber auch, die Template Engines. Die meisten Java Frameworks sind halt fuer sehr grosse Applikationen ausgelegt. Daher sind die vorhandenen Loesungen generell fuer kleine - mittelgrosse Programme relativ umstaendlich zu implementieren.

    Wenn es bei dir Java sein muss, magst du es vielleicht mal mit FreeMarker versuchen? Kann ich aber nicht wirklich empfehlen, habs grad erst gefunden :)


    auf FreeMarker sind wir in der Zwischenzeit auch gestossen. ;) Wir sind gerade am Testen, ob das für uns passt. Ich halte Java auch nicht für die optimale Lösung für die Größe dieses Projekts, aber die firmeninternen Auflagen sind die, dass wir nicht PHP benützen dürfen ...

    Hallo,

    ich komme eher aus der PHP-Ecke und habe gute Erfahrungen mit Template-Engines (genauer gesagt mit der Sigma Template Engine) gemacht. Jetzt wollte ich die Java-Spezialisten mal fragen, ob jemand von Euch Erfahrungen mit Template Engines in Java gemacht hat?

    Wünschenswert wäre es, wenn die Template Engine eigentlich nur aus einer Klasse bestehen würde, so wie es die Sigma tut, und keine umfangreiche Installation nötig wäre. D.h. einfach die Klasse einbinden und benutzen wäre ein Hit. Ich hab mir nämlich die Velocity Engine vom Jakarta Project angeschaut. Die scheint zwar sehr "mächtig" zu sein, nur ist das glaub ich in dem Fall, für den ich es brauchen würde, eine Kanone auf einen Spatz.

    Thanx, Maciek.

    Zitat von AntiBit

    Soll das ganze ein Webservice werden? Also wegen PHP.


    yup. Das ganze ist teil einer WebApplikation. Mittlerweile haben wir die Idee mit PS aufgegeben. Ich hab jetzt die Seite in HTML nachgebaut und sie wird von HTMLDOC in PHP umgewandelt. Der einzige, aber dafür wirklich mühsame Nachteil dieser Variante: Die letzte aktuelle HTMLDOC Version 1.8.x checkt kein CSS, d.h. wir haben alles mit verschachtelten Tabellen und reinen HTML-Attributen lösen müssen.

    Hi Zusammen!

    Der untenstehende Plan wäre zwar ein Hit gewesen, aber nach noch längerem Nachforschen, bin ich zwar auf eine Möglichkeit gestossen, wie man die .xls Files lesen kann, nur mit dem Schreiben wird's nix mehr.

    Das Problem, das ich habe ist folgendes: Ich habe eine sehr strikte Vorlage eine Rapports in .xls und soll das Ding mit Daten aus einer Datenbank befüllen. Der Lösungsansatz schaut nun so aus: .xls -> .pdf -> .ps Damit kann ich mir die Platzhalter im .ps durch die Daten aus der DB austauschen. Funkt eigentlich im Großen und Ganzen (special chars und Zeilenumbrüche sind noch ein Problem, aber das sollte sich lösen lassen).

    Woran ich aber scheitere ist folgendes: Wenn ich einen Platzhalter durch einen Text ersetze, der sich in der Länge (der tatsächlichen, nicht der Länge der Chars) unterscheidet - was er ja leider im Allgmeinen tut - dann passiert da irgendwas Komisches. Die Zeichen werden teilweise zamgeschoben, dann wieder auseinander gezogen. Auf jeden Fall schaut's grauslich aus (obwohl zumindest mal die richtige Informationen drinnen steht).

    Mein Lösungsansatz für das Problem wäre, den eingesetzten String mit einem Padding zu versehen, sodass der Platzhalter und der eingesetzte Wert von der Länge her genauso lang sind.
    Das Problem: Wie weiss ich wie lang ein String tatsächlich ist? Ist wohl schwierig oder? Nachdem ja die Zeichen unterschiedlich breit sind ... Hat jemand Ideen dazu?


    Hätte folgende "sportliche" Aufgabe zu lösen: Eine .xls Datei mittels PHP lesen, etwas drinnen ändern und zurück in eine andere .xls Datei schreiben. .xls ist zwar ein binäres Format, dennoch hab ich schon paar Anwendungen im Netz gefunden, die es schaffen den Content zu lesen und z.B. in HTML-Code umzuwandeln (die Ergebnisse sind meist aber seeehr dürftig). Allerdings konnte ich bisher nicht rausfinden, was der Trick ist, das .xls zu lesen.

    Hat jemand Tipps für mich, wie das gehen könnte? Bitte, bitte, bitte.

    Hab die Lösung gefunden:

    SQL
    SELECT md.idmessdaten AS id,
    CONVERT(md.wert USING latin1) AS wert
    FROM messdaten AS md

    Man muss nur aufpassen, dass man die richtige Codierung nimmt. D.h. das erste SELECT kann nicht latin1 und das andere utf-8 beim gleichen Feld zurückliefern. Aber das schreibt er dann eh hin.

    Hi Zusammen!

    Ich habe eine Query, die folgendes tut:

    SQL
    SELECT md.idmessdaten AS id,
    md.wert AS wert
    FROM messdaten AS md

    wobei hier wert vom Typ FLOAT(10,4) ist. Und weiters eine 2. Query:

    SQL
    SELECT ae.idarbeitsergebnisse AS id,
    ae.ergebnis AS wert
    FROM arbeitsergebnisse AS ae

    So weit, so gut. Die erste Query liefert z.B. 3.4000 und die zweite "alles richtig". Das Problem beginnt, wenn ich ein UNION der beiden Queries mache. Dann liefert die UNION-Query nämlich 3.400000095367431640625 statt 3.4000. Ich glaub, dass das irgendwie mit dem Casting zu tun haben könnte, aber wie man das Problem lösen könnte, weiss ich nicht so wirklich. Hat jemand Ideen?

    Thanx 4 help.

    Zitat von Venefica

    Wenn du dir die DBS Angabe durchliest, wirst du auch feststellen, dass so etwas gar nicht gefragt ist :)


    ich muss gestehen, dass DBS schon so lange zurückliegt, dass ich mich nicht mehr so genau daran erinnern kann, was da gefragt ist. ;)