Search the FirstSpirit Knowledge Base
Hallo,
bei einem Zugriff auf FirstSpirit aus einer Webanwendung verwenden wir den ConnectionManager. Bei der Verbindungsherstellung tritt folgende Exception auf.
java.lang.SecurityException: class "de.espirit.common.NotAuthorized"'s signer information does not match signer information of other classes in the same package class
Das Problem liegt vermutlich darin, dass das fs-webrt.jar, welches in der Webanwendung eingebunden ist, signiert ist und das "verbindende" jar, indem das Servlet liegt nicht.
Die Frage ist: Was ist zu tun, damit die Verbindung hergestellt werden kann?
Muss da etwas auf der FirstSpirit Seite getan werden oder im jar des Servlets?
Der Code zum Herstellen der Verbindung:
...
connection = ConnectionManager.getConnection(FS_HOST, FS_PORT, FS_MODE,ConnectionManager.AUTH_DEFAULT, ConnectionManager.createLoginParams(FS_USER, FS_PASSWORD));
try{
connection.connect();
}
...
Die eingesetzte FirstSpirit Version ist 4.2 R4. (Ich denke allerdings, dass das Problem auch mit anderen FirstSpirit Versionen auftritt.)
Danke für Hinweise zur Lösung.
Das Problem wird entweder sein, das der Servlet-Container ein eigenes Class-Loading hat, das die Signaturinformation nicht berücksichtigt. Oder das die betroffene Klasse in verschiedenen Jars vorhanden ist. Sind alle Jars aus WARs oder aus WEB-INF/lib? Oder ist der Klassenpfad des Servlet-Containers modifiziert worden?
Das Problem wird entweder sein, das der Servlet-Container ein eigenes Class-Loading hat, das die Signaturinformation nicht berücksichtigt. Oder das die betroffene Klasse in verschiedenen Jars vorhanden ist. Sind alle Jars aus WARs oder aus WEB-INF/lib? Oder ist der Klassenpfad des Servlet-Containers modifiziert worden?
Wir benutzen Tomcat 6. Das Problem scheint tatsächlich der Classloader zu sein.
Wenn das fs-webrt.jar im tomcat\lib Verzeichnis liegt, dann tritt das Problem nicht mehr auf. Einziger Nachteil dieser Lösung ist, dass damit die Auslieferung als ein war-file nicht mehr funktioniert.