2009-05-25 4 views
2

Я пытаюсь интегрировать приложение Hibernate в проприетарную структуру. Моя проблема в том, что эта структура как-то проверяет подпись пакетов. Когда я пытаюсь вызвать мою гибернацию приложение я получаю следующее сообщение об ошибке:Исключение безопасности Java

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. Они неправильно подписывают свои классы? Или провайдер фреймворка виноват, потому что он использует ту же самую банку (у меня нет никакой информации об этом).

Есть ли способ отображения информации подписи?

Thanks

+0

Вы указали какую-либо дополнительную политику безопасности? Этот код выполняется в веб-контейнере или это автономное приложение? Можете ли вы дать больше информации о том, как выглядит ваш класс? Может ли быть подписанная версия cglib.jar или что-то в этом роде? –

+0

@ Харри: см. Мое решение ниже ;-) Если этот вопрос будет закрыт? – sebastiangeiger

ответ

1

Хорошо, я решил, что решил. Поставщик инфраструктуры переупаковал все использованные библиотеки в «thirdparty.jar». Получив доступ к этому JAR, я понял, что они также используют «org.hibernate.dialect», но их не содержит «Oracle10gDialect». Итак, всякий раз, когда я вызывал свое приложение Hibernate, он использовал библиотеки фреймворка и не обнаруживая, что «org.hibernate.dialect.Oracle10gDialect» возвращается к пакету «org.hibernate.dialect», который был предоставлен мной. Я, наверное, обнаружил эквивалент Java для DLLhell ;-)

Мой следующий вопрос будет состоять в том, как правильно управлять такими зависимостями.

+0

Насколько я знаю, до тех пор, пока чертежи будут импортированы правильно, то есть с полным именем packagename.class, DLLhell-подобных проблем не произойдет. – Joset

+0

... возможно, вы могли бы попросить их включить Oracle10gDialect ... – KarlP

+0

@Karlp: Сделал это. До сих пор было достаточно использовать только свой пакет и настроить Hibernate для использования «OracleDialect». – sebastiangeiger

Смежные вопросы