Java Webservices + Apache Axis 1.4

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/java_webservices_apache_axis_1_4_181538/page_1 - zur Vollversion wechseln!


Geigerzeiger schrieb am 22.06.2007 um 01:58

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 schrieb am 22.06.2007 um 08:57

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 schrieb am 22.06.2007 um 09:28

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 schrieb am 22.06.2007 um 09:34

wozu brauchst die? :confused:


sensei schrieb am 22.06.2007 um 09:36

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 schrieb am 22.06.2007 um 09:46

service.setMaintainSession(true) ?


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


Geigerzeiger schrieb am 23.06.2007 um 09:24

Fesch! ;)

werd mir das mal ansehen.

thx

Es geht um einen SOAP Client, korrekt.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026