2009-05-25 9 views
2

J'essaie d'intégrer une application Hibernate dans un framework propriétaire. Mon problème est que ce framework vérifie en quelque sorte la signature des paquets. Quand je tente d'appeler mon application Hibernate je reçois l'erreur suivante:Java Security Exception

Caused by: java.lang.SecurityException: class "org.hibernate.dialect.Oracle10gDialect"'s signer information does not match signer information of other classes in the same package 

Informations complémentaires: La base de données sur laquelle Hibernate fonctionne est Oracle 10g, cette classe est obligatoire.

Quel paquet est signifié par "même paquet"? Est-ce "org.hibernate.dialect"?

Mon vrai problème est que je ne sais pas par où commencer. Le paquet "org.hibernate.dialect" est contenu dans "hibernate3.jar" pris de Hibernate Core 3.3.1GA. Signent-ils leurs cours incorrectement? Ou est le fournisseur du cadre à blâmer, parce qu'il utilise le même pot (je n'ai aucune information à ce sujet).

Existe-t-il un moyen d'afficher les informations de signature?

Merci

+0

Avez-vous spécifié une politique de sécurité supplémentaire? Ce code s'exécute-t-il dans un conteneur Web ou s'agit-il d'une application autonome? Pouvez-vous donner plus d'informations sur ce que votre chemin de classe est? Pourrait-il y avoir une version signée de cglib.jar ou quelque chose comme ça? –

+0

@Harry: Voir ma solution ci-dessous ;-) Cette question doit être fermée? – sebastiangeiger

Répondre

1

Ok, je pense que je l'ai résolu. Le fournisseur de l'infrastructure a reconditionné toutes les bibliothèques utilisées dans un fichier "thirdparty.jar". Après avoir accédé à ce JAR, j'ai réalisé qu'ils utilisaient aussi "org.hibernate.dialect", mais le leur ne contient pas "Oracle10gDialect". Donc, chaque fois que j'appelais mon application Hibernate, j'utilisais les librairies du framework et, en ne trouvant pas "org.hibernate.dialect.Oracle10gDialect", je revenais au paquet "org.hibernate.dialect" fourni par moi. Je suppose que j'ai finalement découvert l'équivalent Java à la DLLhell ;-)

Ma prochaine question va être de savoir comment gérer correctement ces dépendances.

+0

Autant que je sache, tant que les plans sont importés correctement, c'est-à-dire avec packagename.classname complet, les problèmes de type DLLhell ne se produiront pas. – Joset

+0

... peut-être que vous pourriez leur demander d'inclure le Oracle10gDialect ... – KarlP

+0

@Karlp: A fait cela. Jusqu'à présent, il suffisait de n'utiliser que leur paquet et de configurer Hibernate pour utiliser "OracleDialect" à la place. – sebastiangeiger