ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1287
1287
EMPFEHLEN
-
22.05.05 18:51 #1StefGe Tutorials.de Gastzugang
Hallo,
ich habe folgendes Problem:
Ich habe zwei Tabellen:
kunde (kunden_id, name, vorname, strasse, hausnummer, ort_id)
ort (ort_id, plz, ortsname, land) - plz. ortsname und land sind eindeutig
Diese Beziehung der EntityBeans habe ich über CMR beschrieben und funktioniert auch einwandfrei. Ich ändere die Daten eines Kunden, kommentiere ich den Teil mit der Änderung des Ortes aus, funktioniert alles einwandfrei! So, komme ich zum Ort: ich schaue als erstes, ob der Ort bereits existiert, ja, dann hole ich mir die ID, ansonsten lege ich den Ort an und lasse mir dann die neue ID geben. Diese wird dann in der Tabelle Kunde upgedatet. Jetzt bekomme ich von meinem Webcontainer eine SecurityException geworfen, wenn mein Servlet versucht, sich eine Instanz vom SessionBean zu holen:
(nur ein Auszug)
java.rmi.AccessException: SecurityException; nested exception is:
javax.security.auth.login.LoginException: java.lang.NullPointerException
at org.jboss.security.Util.createPasswordHash(Util.java:356)
at org.jboss.security.auth.spi.UsernamePasswordLoginModule.createPasswordHash(UsernamePasswordLoginModu le.java:298)
at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
at org.jboss.security.plugins.JaasSecurityManager.defaultLogin(JaasSecurityManager.java:483)
at org.jboss.security.plugins.JaasSecurityManager.authenticate(JaasSecurityManager.java:425)
at org.jboss.security.plugins.JaasSecurityManager.isValid(JaasSecurityManager.java:251)
Ich habe schon bei meiner SessionBean folgendes eingestellt: @ejb.permission unchecked="true", hilft aber nichts. Wenn ich die SecurityDomain aus meiner EJB-Anwendung entferne, dann klappt es aber. Ach übrigens, in der Datenhbank wird alles richtig eingetragen. Starte ich mein entsprechendes Servlet per Hand mit dem Aufruf Controller?action=login nach der Exception, dann klappt es auch wieder. Ich vermute, es ist die Art und Weise, wie ich meine OrtID update, daher hier der Quellcode:
// Ort in der Datenbank ablegen
PlaceLocal pl = null;
try {
// sucht den Ort in der Datenbank
pl = plh.findByPlace(user.getPostalCode(), user.getTown(), user.getCountry());
} catch (FinderException e) {
// Ort nicht gefunden
try {
// Ort wird in der Datenbank neu angelegt
pl = plh.create(user.getPostalCode(), user.getTown(), user.getCountry());
} catch (CreateException e1) {
e1.printStackTrace();
}
}
cl.setPlaceId(pl.getPlaceId());
Über Hilfe wäre ich sehr dankbar, ich hänge hier schon seit einigen Tagen.
Viele Grüße
Stefan
-
22.05.05 19:05 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Kannst du dazu vielleicht mal ein minimales (Lauffähiges) Beispiel aufsetzen?
Am besten mit MySQL als DS. Dann schau ichs mir mal an.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
22.05.05 19:16 #3StefGe Tutorials.de Gastzugang
Hier ist mein Projekt: http://www.gericke-web.de/eclipse.rar.
Bei der EJB-Anwendung ist die Klasse AdministrationFacade, die Methode editUser() entscheidend, und bei der Servlet-Seite editUser.jsp.
Meine Passwörter liegen mit MD5 verschlüsselt auf MySQL. Sowohl Servlets als auch EJBs kennen die entsprechende SecurityDomain, und der Login läuft einwandfrei bei mir. Ich vermute, es liegt daran, wie ich die Ort_ID bei der Tabelle Kunde update. Das darf wohl so nicht sein.
Danke für deine Hilfe, bin echt am verzweifeln.
Stefan
-
22.05.05 20:18 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Aber die ExceptionIch vermute, es liegt daran, wie ich die Ort_ID bei der Tabelle Kunde update. Das darf wohl so nicht sein.
lässt doch eher auf etwas anderes schließen. -> Kann es sein, dass das Passwort des User's nicht ausgelesen wird? Liegt der Principal bzw. das Subject in der Session?Code :1 2 3 4 5
... java.rmi.AccessException: SecurityException; nested exception is: javax.security.auth.login.LoginException: java.lang.NullPointerException at org.jboss.security.Util.createPasswordHash(Util.java:356) ...
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
22.05.05 20:56 #5StefGe Tutorials.de GastzugangWas ist das?Liegt der Principal bzw. das Subject in der Session?
Das seltsame ist, kommentiere ich die Zeile mit dem Update des Fremdschlüssels (cl.setPlaceId(user.getPlaceId()) ) aus, dann funktioniert alles einwandfrei! Der Login funktioniert ja auch einwandfrei, sonst käme ich ja nicht zum editieren. Beim Servlet EditUser gehen die Daten zum EJB-Container, das Servlet schickt die anfrage weiter zum Servlet Login, in dieser dann die User-Tabelle neu ausgelesen werden soll, nur er kann nicht auf die entsprechende SessionBean zugreifen. Gebe ich jetzt nach dieser Exception gleich in der URL Controller?action=login ein, geht es wieder einwandfrei, und die aktualisierten Daten sind auch in der Datenbank.
Vielleicht ist einfach die Datenbank noch nicht soweit, und das Servlet bekommt einfach noch nicht die Berechtigung, auf die SessionBean zuzugreifen, weil der EJB-Container nicht den Benutzer authentifizieren kann. Ich habe dann Thread.sleep(10000) vor die Weiterleitung gesetzt, aber es hat auch nicht geholfen.
Ich weiß also einfach nicht, wo ich nach dem Fehler suchen muss.
Stefan
-
27.05.05 09:40 #6StefGe Tutorials.de Gastzugang
Hallo Tom,
hast du mittlerweile eine Idee, woran diese SecurityException liegen? Also ich bin mir mitterweile sicher, das et doch etwas mit der Security zu tun hat, denn sobald ich bei meiner EJB-Anwendung die SecurityDomain nicht angebe, geht die Anwendung einwandfrei. Ich habe aber die Berechtigung korrekt vergeben, finde einfach nicht den Fehler.
Ähnliche Themen
-
SecurityException: sealing violation
Von Skrolan im Forum JavaAntworten: 2Letzter Beitrag: 04.02.10, 15:35 -
SecurityException bei c# und Infopath
Von zioProduct im Forum .NET CaféAntworten: 6Letzter Beitrag: 30.08.06, 14:02 -
Java Applet - XML - SecurityException
Von flashray im Forum JavaAntworten: 14Letzter Beitrag: 14.01.06, 02:03 -
System.Security.SecurityException
Von Tharmy im Forum .NET ArchivAntworten: 1Letzter Beitrag: 28.02.05, 09:37 -
SecurityException nur bei Java 1.4.2
Von Beanpole im Forum JavaAntworten: 2Letzter Beitrag: 08.11.04, 18:31





Zitieren

Login





