Почему Tomcat выдает ошибку при изменении хранилища ключей?
-
11-09-2019 - |
Вопрос
У меня проблема с клиентом axis2 внутри веб-службы JAX-WS.Этот веб-сервис JAX-WS находится внутри контейнера Tomcat.Файл хранилища ключей извлекается динамически из базы данных.Когда я запускаю Tomcat, я могу нормально использовать ws-client, и он работает нормально, но если я изменю хранилище ключей, произойдет сбой с трассировкой стека, как показано ниже.Если я перезапущу Tomcat, он будет работать нормально.Есть ли в Rampart или Tomcat статические переменные, которые не сбрасываются до перезапуска Tomcat?Я использую Rampart-Module 1.3 для подписи сообщений для безопасного веб-сервиса.Я думаю, что конфигурации притока и оттока верны, поскольку я печатал их в журнале.
Stacktrace в журнале Tomcat Catalina:
org.apache.axis2.AxisFault: Error during Signature: ; nested exception is:
org.apache.ws.security.WSSecurityException: General security error (No certificates for user user1 were found for signature)
at org.apache.rampart.handler.WSDoAllSender.processMessage(WSDoAllSender.java:67)
at org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72)
at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:251)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:416)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
Решение
Хорошо, я нашел решение.Хитрость заключалась в использовании конфигурации PolicyBased.Я использовал старую конфигурацию на основе параметров.Вот ссылка на отличный блог Thilina:
Как программно собрать Rampart-config..
Не забудьте определить файл policy.xml при работе с этим руководством.Это было то, что я сначала забыл сделать :)