"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Java Webservices + Apache Axis 1.4

Geigerzeiger 22.06.2007 - 01:58 864 6
Posts

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Hallo!

Ich muss einen JAVA Webclient bauen (Noteninformationssystem), der auf einen ASP.NET Webservice zugreifen kann. Ich habe Axis 1.4 installiert, classpaths gesetz und kann mit folgendem Codestück auf das Service zugreifen:

Code:
try {
		 Service srv = new ServiceLocator();
		 ServiceSoap s = srv.getServiceSoap();
		 
		 Student st = (s.login("user", "password"));
		 System.out.println(st.getNachname());
		} catch(Exception ex) {
... }

Dieser Code gibt mir ein gültiges Student Objekt zurück, das mir weitere Details liefert. (Vor-, Nachname, MatrNr,...)

Dieses Student Objekt brauche ich, um auf weitere Methoden des Webservice zuzugreifen zb. GetMyMarks(student);

Das haut prima hin, nur das Service legt intern eine Session an, ob sich der User erfolgreich authentifiziert hat oder nicht. Demzufolge prüft er die Session an bei jedem weiteren Methodenaufruf.

Das Problem ist nun, wo sollen die Sessions gesetz werden? In einem .NET CLient muss man ihm einen CookieContainer anlegen, sodasss der Client die Session speichern kann, aber wie mache ich das in Java bzw. mit dem Axis Framework?

ICh habe daweil nix gscheits gefunden, hoffe ihr könnt mir helfen bzw, hat jemand sowas schon gemacht?

tia,
Schöne Grüße

sensei

die Küstenwache?
Avatar
Registered: Dec 2000
Location: Bad Schlotterbac..
Posts: 709
wenn ich das jetzt nicht falsch verstanden habe:

es gibt 3 möglichkeiten zu speichern:
page, session und application

session legt die objekte in der HttpSession ab.
also:
HttpSession session = request.getSession();
session.setAttribute("student", st);
...
Student st= (Student) session.getAttribute("student");

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Thx, aber das weiß ich schon.

Es geht darum, wohin das Webservice die angelegte Session speichert. Also das WS legt intern ne eigene Session an, um sich Logindaten zu merken. Diese müssen aber irgendwie am Client gespeichert werden. Wie geht das?

DKCH

...
Registered: Aug 2002
Location: #
Posts: 3279
wozu brauchst die? :confused:

sensei

die Küstenwache?
Avatar
Registered: Dec 2000
Location: Bad Schlotterbac..
Posts: 709
am einfachsten mit cookies?

Cookie studentCookie = new Cookie("Student", "123456");
studentCookie.setMaxAge(60*60*24*365); // 1 jahr halt
response.addCookie(studentCookie);

lesen dann mit:
Cookie[] cookies = request.getCookies();

hoff ich lieg nicht wieder daneben ;)


edit:
ein objekt kannst halt in cookies nicht direkt ablegen, is aber ja auch nicht der sinn des ganzen

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
service.setMaintainSession(true) ?


@alle anderen: Es geht hier um einen SOAP-Client, keinen HTTP-Server.

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Fesch! ;)

werd mir das mal ansehen.

thx

Es geht um einen SOAP Client, korrekt.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz