jboss 7 не сканирует ext папку jre

у меня есть программное обеспечение, которое работает на jboss, и для него требуется криптобиблиотека, которая находится в jre/lib/ext. Я получаю следующее исключение:

Caused by: java.lang.ClassNotFoundException: com.sun.crypto.provider.SunJCE from [Module "deployment.myatrium-intranet-ear.ear.myatrium_intranet.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)

Я пробовал следующее решение по этой ссылке:

http://www.liferay.com/it/community/wiki/-/wiki/Main/JBoss+AS7+tips/maximized#section-JBoss+AS7+tips-sunjce_provider.jar

но не удалось отсканировать папку ext.

Действительно в безвыходном положении. Помощь действительно приветствуется.

заранее спасибо


person Ikthiander    schedule 14.09.2012    source источник
comment
вы уверены? Может быть, вы просто запускаете jboss с другим jdk (без jce)? Или проблема может быть в настройках безопасности (java.policy, java, security, local_policy.jar). Но я не верю, что jboss должен «сканировать» папку ext в jdk.   -  person user1516873    schedule 14.09.2012
comment
@user1516873 user1516873 Конечно, jboss не должен сканировать, если вы не заставите его найти его, но я не уверен, как это сделать, нет хорошего примера.   -  person Ikthiander    schedule 14.09.2012
comment
@dcernahoschi ссылка не сломана.   -  person Ikthiander    schedule 14.09.2012
comment
я нашел еще одну ссылку, которая говорит об этом, но не работает для меня: community.jboss.org /поток/196781   -  person Ikthiander    schedule 14.09.2012
comment
Второй в порядке, но я не могу получить доступ к первому, чтобы увидеть, что вы пытаетесь сделать. Вы получаете какие-либо исключения?   -  person dcernahoschi    schedule 14.09.2012
comment
хорошо, исключение добавлено в основной пост. поверьте мне, первая ссылка тоже хороша, но вторая даст вам представление о том, что я пытаюсь сделать.   -  person Ikthiander    schedule 14.09.2012
comment
@Ikthiander, можете ли вы создать простую тестовую программу, используя только Security.addProvider(new com.sun.crypto.provider.SunJCE());, и запустить ее с той же jre, что и jboss?   -  person user1516873    schedule 14.09.2012
comment
@ user1516873 jre/lib/ext не включен в путь к классам jboss. и да, тест прошел нормально вне jboss.   -  person Ikthiander    schedule 14.09.2012


Ответы (4)


У меня была очень похожая проблема несколько месяцев назад, и кажется, что стандартный подход не работает.

Эта ссылка решила мою проблему: https://community.jboss.org/thread/175395

Он говорит о провайдере bouncycastle, но должен работать и с sunjce_provider.

person dcernahoschi    schedule 14.09.2012
comment
sun jce не может быть достигнуто от maven, парень просто показывает, как получить провайдера с помощью maven. проблема заключается в том, чтобы получить солнце jce! - person Ikthiander; 14.09.2012
comment
Нет. Это не имеет ничего общего с maven. Вы должны скопировать банку sunjce из вашего каталога lib/ext в каталог, который вы создали вручную в каталоге modules. - person dcernahoschi; 14.09.2012
comment
я не хочу копировать банку из jre. скорее я хочу, чтобы все jre jar вместе с этим jar были доступны, так как он доступен для всех остальных приложений за пределами jboss. я чувствовал, что ваше предложение было бесполезным, и это не ответ. - person Ikthiander; 14.09.2012
comment
вам решать, хотите ли вы копировать банку или нет, но это не причина для отрицательного голосования. ответ может быть полезен для кого-то еще. или вы могли указать в вопросе, что вам не нужен такой ответ, чтобы никто не терял время, чтобы ответить на отрицательный голос. это нечестно - person dcernahoschi; 14.09.2012

Вы поняли это неправильно. JBoss 7 перешел на полную версию OSGi. Вам нужно добавить их в загрузочные делегации.

Он действительно загружает ext в путь к классам. Проблема в том, что он применяет фильтр класса (чтобы вы не использовали нестандартный класс).

Та же проблема возникает при использовании драйвера ODBC (sun.jdbc.odbc.*) и других классов sun.*. Вы должны добавить его в пакет делегирования загрузки / системы. (это неправильный путь. Но вы, кажется, ненавидите правильный путь, так что....)

Подробнее см. на этих страницах:

person J-16 SDiZ    schedule 15.09.2012
comment
Ваш ответ действительно информативен, спасибо. какой правильный способ сделать это вы предложите тогда? я имею в виду, что это выглядело очень странно, что мне пришлось бы добавить библиотеку, которая была упакована с jre, скопировав ее и создав из нее модуль (я полагаю, это то, что вы имели в виду как правильный способ, не так ли?). еще раз спасибо - person Ikthiander; 17.09.2012
comment
правильный способ - создать модуль, как это делает dcernahoschi. Но ты, кажется, ненавидишь это. - person J-16 SDiZ; 17.09.2012

Попробуйте поставить следующее:

Extension-List: crypto
crypto-Extension-Name: javax.crypto

внутри WAR/classes/META-INF/MANIFEST.MF

Обычно в файле войны META-INF находится внутри корня войны, как в

WAR
├── WEB-INF
│   └── classes
└── META-INF   
    └── MANIFEST.MF 

Следующее, похоже, работает для liferay 6.1 на jboss 7.1.1.

WAR
└── WEB-INF
    └── classes
         └── META-INF
              └── MANIFEST.MF
person feniix    schedule 15.09.2012
comment
на самом деле я пробовал, но безуспешно. одна из ссылок, которые я разместил, имеет этот пример. мне интересно, почему это не сработало для меня. - person Ikthiander; 17.09.2012
comment
Честно говоря, я понятия не имею, вы можете спросить (если вы еще этого не сделали) на форумах сообщества jboss. - person feniix; 17.09.2012

он будет работать в Jboss 7, просто указав на банку, используя jboss-deployment-strcuture.xml или запись манифеста.

person engineer    schedule 06.01.2014