У меня возникает следующая проблема при запуске Tomcat 6:
[INFO] [talledLocalContainer] Caused by: java.io.IOException: Invalid keystore format
[INFO] [talledLocalContainer] at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
[INFO] [talledLocalContainer] at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
[INFO] [talledLocalContainer] at java.security.KeyStore.load(KeyStore.java:1185)
[INFO] [talledLocalContainer] at org.springframework.ws.soap.security.support.KeyStoreFactoryBean.afterPropertiesSet(KeyStoreFactoryBean.java:123)
Я настроил KeyStoreFactoryBean для загрузки хранилища ключей в моем classpath, который я сделал сам, используя Java 1.6.0_05.
Странная вещь, когда я запускаю тот же Tomcat, используя Eclipse, хранилище ключей загружается без каких-либо проблем. Если я запускаю Tomcat с помощью плагина Cargo Maven, я получаю это исключение. Если я устанавливаю приложение в только что загруженный Tomcat 6, я получаю исключение. И, к сожалению, я получаю то же исключение при развертывании приложения в наших средах Unix.
Единственными версиями jdk, которые я установил, являются 1.6.0_05 и 1.6.0_23, однако я пробовал обе версии, и это, похоже, не имеет значения. Я также попробовал это на другой машине только с 1.6.0_05, тоже не работал.
У коллеги, который использует одно и то же хранилище ключей в своих приложениях, проблем нет, и его конфигурация Spring точно такая же (хотя и не думаю, что проблема лежит там).
При просмотре исходного кода JavaKeyStore ( исходный код ) вы можете увидеть, как он проверяет первые два целых числа, которые он читает из хранилища ключей, чтобы проверить его формат и выдать исключение. Я не могу представить, какая разница при запуске Tomcat с использованием Eclipse может привести к тому, что этот фрагмент кода будет выполняться иначе и не выбрасывать исключение.
Googling мне тоже не помог, многие люди, похоже, получают это исключение, но обычно потому, что они сделали хранилище ключей с более старой версией jdk.
Редактировать: поставщик "SUN версия 1.6" и тип JKS. Это одинаково для обоих случаев, работающих и не работающих.