java-forum.org
JBoss Seam
Alter Preis: 39,95 €
Jetzt: 0,00 €

zzgl. Versandkosten

Zurück   java-forum.org > Enterprise Java > SOA

SOA Webservices, JAX-WS, BPEL

Antwort    
Themen-Optionen Thema durchsuchen Ansicht
Alt 02.03.2010, 09:16   #1 (permalink)
Neuer Benutzer
Bit
 
Registriert seit: 01.03.2010
Beiträge: 1
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Probleme mit Session Management unter AXIS2

Hallo zusammen,

ich habe eine Frage zum Session Management von AXIS2. Vielleicht kann mir ja hier jemand weiterhelfen.

Zusammenfassung
Das Speichern einer Variable in den Properties des ServiceContext funktioniert in der einen Methode, aber nicht in einer weiteren (troz identischem Codes).




Ich fange gerade an mich mit AXIS2 und Webservices zu beschäftigen und habe mir ein kleines Mini-Beispiel zusammengestrickt um das zu testen.

Ich hatte vor folgende Methoden anzubieten:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
LoginResponseElemnt login(LoginRequestElement e);
SearchResponseElement search(SearchRequestElement e);
void logout(LogoutRequestElement e);

Idee: Ich möchte mir im ServiceContext eine Varaible speichern, die beim login() einen Wert setzt, bei search() den Wert ausliesst und bei logout den Wert zurücksetzt. Nur bei gesetztem Wert darf ein search() durchgeführt werden.

Bevor ich das aber versuche, mißbrauche ich die Methode login(), indem ich einfach mal eine Varaible hineinschreibe, um diese anschliessend wieder auszulesen.

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public LoginResponseElement login(LoginRequestElement e) throws MyException {
    MessageContext mc = MessageContext.getCurrentMessageContext();
    ServiceContext sc = mc.getServiceContext();
    String value = (String) sc.getProperty("xxx");
    System.out.println("Wert: " + value);
    if(value==null) {
        sc.setProperty("xxx", "Hallo Welt");
    }
    else {
        sc.setProperty("xxx", sc.getProperty("xxx") + " ein weiteres Mal");
    }
}
public void init(ServiceContext s) throws AxisException {
    System.out.oprintln("==>init()");
}
public void destroy(ServiceContext s) throws AxisException {
    System.out.oprintln("==>destroy()");
}

Mit meinem Main-Programm funktioniert das alles wunderbar.

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
stub._getServiceClient().getOptions().setManageSessin(true);
stub._getServiceClient().engageModule(Constants.MODULE_ADDRESSING):
LoginRequestElement lr = createLoginRequestElement();
stub.login(lr);
stub.login(lr);
stub.login(lr);

Ausgabe wie erwartet:
Code:
==>init()
Wert: null
Wert: Hallo Welt
Wert: Hallo Welt ein weiteres Mal
==>destroy()
So weit so gut. Jetzt habe ich spaßeshalber im Skeleton einfach mal den selben Quellcode in die logout-Methode kopiert:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
public void logout(LoginRequestElement e) {
    MessageContext mc = MessageContext.getCurrentMessageContext();
    ServiceContext sc = mc.getServiceContext();
    String value = (String) sc.getProperty("xxx");
    System.out.println("Wert: " + value);
    if(value==null) {
        sc.setProperty("xxx", "Hallo Welt");
    }
    else {
        sc.setProperty("xxx", sc.getProperty("xxx") + " ein weiteres Mal");
    }
}

Und siehe da, nichts klappt mehr.
Mein Main-Programm
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
LogoutRequestElement lo = createLogoutRequest();
stub.logout(lo);
stub.logout(lo);
stub.logout(lo);

liefert eine andere Ausgabe als vorher nämlich:
Code:
==>init()
Wert: null
==>init()
Wert: null
==>init()
Wert: null
==>destroy()
==>destroy()
==>destroy()
Wenn ich jetzt aber meine beiden Main-Programme hintereinander laufen lassen, dann funktioniert es wieder tadellos. Dann kommt folgende ausgabe heraus:
Code:
==>init()
Wert: null
Wert: Hallo Welt
Wert: Hallo Welt ein weiteres Mal
Wert: Hallo Welt ein weiteres Mal ein weiteres Mal
Wert: Hallo Welt ein weiteres Mal ein weiteres Mal ein weiteres Mal
Wert: Hallo Welt ein weiteres Mal ein weiteres Mal ein weiteres Mal ein weiteres Mal

Der einzige Unterschied den ich erkennen kann, ist der Fehlende Rückgabetyp und die deklarierte Exception. Kann es damit zu tun haben, dass die Sessionverwaltung im zweiten Beispiel nicht eingeleitet wird, oder habe ich einen Fehler gemacht? Ich komme da im Moment nicht weiter.

Ich freue mich wenn jemand einen Tip hat.

MFG euboss

[edit]
hab eben noch ein Fehler in den Codebeispielen oben entdeckt. Für die Methode logout() ist gar keine MyException deklariert, die muss weg, hab ich gerade entfernt.

Und ich hab den Code auch mal in die search()-Methode hineinkopiert (hier wird auch die MyException deklariert). Dort funktioniert es wiederum tadellos (was meine Annahme stützt, dass es etwas mit dem Rückgabetyp oder der Exception zu tun hat).

Geändert von euboss (02.03.2010 um 16:15 Uhr)
euboss ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort    

Lesezeichen

Latex Maths & Physics Editor ...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit der Schnittstelle H1bernate/Eclipse Datenbankprogrammierung 1 12.01.2009 12:16
Probleme mit der axis2 Sessionsverwaltung commander SOA 0 24.07.2008 12:21
Fehler beim Starten von Eclipse ide? IDEs und Tools 5 15.04.2008 19:56
Tomcat Session Management the_alien Allgemeines EE 1 26.03.2007 14:04
Suche ein Hibernate-DAO-Gerüst zum lernen Hyperhyper Datenbankprogrammierung 9 25.07.2006 20:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:45 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de