2010-11-25 2 views
1

У меня есть JWS (Java Web Start) развертывается апплет, который использует следующие библиотеки/банки:JNLP + Applet + Надувной замок

red5.jar весна-beans.jar весна-context.jar весна -core.jar апач-mina.jar

bcprov-доб-jdk16-145 (Надувной замок)

причина я положил все эти библиотеки в апплет, что red5.jar требует у вас также есть другие. Однако BouncyCastle каким-то образом не загружается ClassLoader и не подписывается Netbeans во время компиляции проекта WebStart. Любые указатели, как я могу это разрешить?

Вот что я получу, если я включаю Надувной замок в моем архиве:

basic: exception: JAR resources in JNLP file are not signed by same certificate. 
exception: JAR resources in JNLP file are not signed by same certificate. 
JNLPException[category: Launch File Error : Exception: null : LaunchDesc 

А вот то, что я получаю, когда я даже не включайте его в проекте:

com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/JNA/dist/lib/bcprov-ext-jdk16-145.jar 

I не знаю, какая из фляг требует банку Bouncy Castle, поскольку она не указала это в моей среде IDE. Кроме того, даже если я включил Bouncy Castle.jar в свой проект, Netbeans СЛЕДУЕТ подписывать его по умолчанию, но это не так, хотя он подписывает ВСЕ другие баночки в моем проекте Web Start. Однако быстрая проверка с помощью jarsigner указывает на то, что все банки, включая Bouncy Castle, подписаны, поэтому я уверен, что все они подписаны, за исключением того, что Bouncy Castle подписан другим сертификатом.

И вот мой вопрос: должен ли я попытаться подписать все файлы вручную (так что все они имеют один и тот же сертификат) или проблема в другом месте (например, BouncyCastle не может быть подписан в апплете или что-то в этом роде)?

Все указатели будут высоко оценены

EDIT:

я в основном два подхода, как не удалось до сих пор:

подход 1. Извлечение дерева каталогов каждую баночку и складывать их вместе в общий каталог, затем создайте банку этого каталога, так что все файлы в нем подписаны одним и тем же сертификатом (одна банка, один сертификат, правый ..) Однако весна STILL ожидает, что файлы будут организованы следующим образом: dist \ libs \ bcProv.jar, а не dist \ libs \ allLibs.jar, где все библиотеки сбрасываются i nto allLibs.jar. Этот подход терпит неудачу, потому что весна не может найти ни одну из библиотек при развертывании через JWS.

Подход 2. Подпишите все банки вручную С ТОЧНЫМ сертификатом. Проведя 10 минут вручную, подписывая баннеры, этот подход также терпит неудачу И имеет смелость выдать ошибку, что bcProv.jar НЕ подписан с тем же сертификатом, что и другие.

Я озадачен, озадачен и растерян. Есть идеи? Можно ли вообще иметь вместе в JWS апплета те банки:

red5.jar

весна-beans.jar

весна-context.jar

весна-ядро.баночка

APACHE-mina.jar

bcprov-доб-jdk16-145

ответ

4

Итак, вот ответ:

Прежде всего, как это было предложено Bloodboiler, вы в беде, если ваш апплет использует банки, подписанные разными сертификатами. Итак, ваше решение должно заключаться в подписании их всех с тем же сертификатом.

У вас есть некоторые возможности здесь:

один это извлечь все банки вашего проекта, а затем объединить их в одну банку и подписать его. По какой-то причине это не работает с Spring-context и BouncyCastle. Я уверен, что если бы у меня хватило сил поиграть с ним, это сработало бы.

другой способ, как и М.Joanis, использовать FatJar, но по какой-то причине он также не работал. Что касается метода, описанного выше, у меня не было желания или желания тратить на него слишком много времени.

Третий способ, тот, который РАБОТАЕТ, - это просто проверить банки в сертификатах каталога dist. Если они отличаются друг от друга, вы, как предложил Bloodboiler, находятся в беде. Решение состоит в том, чтобы выровнять банки (извлечь, удалить META-INF), а затем подписать их ВСЕ с САМЫМ сертификатом (сделать банку предпочтительным способом, а затем подписать его предпочтительным способом и убедиться, что все банки, которые вы используете, подписываются вами (используя jarsigner -verify -cert и т. д.)). Тогда весь этот беспорядок должен работать.

2

У меня была точно такая же проблема, только с разных баночек. Если я правильно помню, у webstart есть ошибка, из-за которой он терпит неудачу, если все банки не подписаны с тем же сертификатом/только с одним сертификатом.

Одним из решений является извлечение библиотечных банок и включение их содержимого в вашу прикладную банку, а затем подпишите только эту банку.

+0

Я попробую это сейчас. Спасибо вам за помощь. – 2010-11-25 09:30:29

+0

Кажется, что Spring ищет в C: \ Project \ dist \ lib \ Apache-Mina.jar, BcProv.jar, и все, что у меня сейчас есть, - это Jar, который состоит из Mina + BcProv + группы Commons, называемой : allDeps.jar. Как сообщить JWS или Spring, что spring.jars может использовать файл allDeps.jar вместо этого для поиска явных имен зависимостей? Или это способ, которым red5 является тем, кто ищет эти зависимости? – 2010-11-25 09:59:49

1

также с той же проблемой ...

Если вы когда-либо используете Eclipse в качестве IDE, есть мысль для FatJar ... Действительно облегчает процесс упаковки. Я публикую JWS JAR с более чем 40 зависимостями JAR, включенными в них. I FatJar их, а затем подпишите полученный JAR. Работает как шарм.

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