【问题标题】:Java Security ExceptionJava 安全异常
【发布时间】:2009-05-25 10:40:11
【问题描述】:

我正在尝试将 Hibernate 应用程序集成到专有框架中。我的问题是这个框架以某种方式检查包的签名。当我尝试调用我的 Hibernate 应用程序时,我收到以下错误:

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

补充说明:Hibernate工作的数据库是Oracle 10g,所以这个类是必填的。

“同一个包”是指哪个包?是“org.hibernate.dialect”吗?

我真正的问题是我不知道从哪里开始。 “org.hibernate.dialect”包包含在“hibernate3.jar”中,取自Hibernate Core 3.3.1GA。他们是否错误地签署了他们的课程?还是应该责怪框架的提供者,因为他使用的是同一个 jar(我没有这方面的任何信息)。

有没有办法显示签名信息?

谢谢

【问题讨论】:

  • 您是否指定了任何额外的安全策略?这段代码是在 Web 容器中执行的,还是一个独立的应用程序?你能提供更多关于你的类路径的信息吗?是否有 cglib.jar 或类似的签名版本?
  • @Harry:请参阅下面的解决方案 ;-) 这个问题应该结束吗?

标签: java security exception


【解决方案1】:

好的,我想我解决了。 框架的提供者将所有使用的库重新打包到“thirdparty.jar”中。访问此 JAR 后,我意识到他们也在使用“org.hibernate.dialect”,但他们的不包含“Oracle10gDialect”。 因此,每当我调用我的 Hibernate 应用程序时,它都会使用框架的库,并且在找不到“org.hibernate.dialect.Oracle10gDialect”时回退到我提供的“org.hibernate.dialect”包。 我想我终于发现了相当于 DLLhell 的 Java ;-)

我的下一个问题是如何正确管理这些依赖关系。

【讨论】:

  • 据我所知,只要蓝图导入正确,也就是packagename.classname完整,不会出现DLLhell的问题。
  • @Karlp:做到了。到目前为止,只使用他们的包并将 Hibernate 配置为使用“OracleDialect”就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 2017-03-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 2016-03-03
相关资源
最近更新 更多