views:

145

answers:

1

Hello!

I am trying to integrate a Hibernate application into a proprietary framework. My problem is that this framework somehow checks the signature of packages. When I try to call my Hibernate application I get the following error:

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

Additional information: The database on which Hibernate works is Oracle 10g, so this class is mandatory.

Which package is meant by "same package"? Is it "org.hibernate.dialect"?

My real problem is that I don't know where to start. The "org.hibernate.dialect" package is contained in "hibernate3.jar" taken from Hibernate Core 3.3.1GA. Are they signing their classes incorrectly? Or is the provider of the framework to blame, because he is using the same jar (I don't have any information on that).

Is there a way to display the signature information?

Thanks

+1  A: 

Ok, I think I solved it. The provider of the framework repackaged all used libraries into a "thirdparty.jar". After getting access to this JAR, I realized that they are using "org.hibernate.dialect" as well, but theirs does not contain "Oracle10gDialect". So whenever I called my Hibernate application it would use the libraries of the framework and upon not finding "org.hibernate.dialect.Oracle10gDialect" fall back to the "org.hibernate.dialect" package which was provided by me. I guess I finally discovered the Java equivalent to the DLLhell ;-)

My next question is going to be how to manage such dependencies properly.

sebastiangeiger
As far as I know, as long as the blueprints are imported correctly, i.e. with complete packagename.classname, DLLhell-like problems will not occur.
Joset
...perhaps you could ask them to include the Oracle10gDialect...
KarlP
@Karlp: Did this. So far it was enough to only use their package and configure Hibernate to use "OracleDialect" instead.
sebastiangeiger