#java #spring #ssl #xsd
Вопрос:
Я создал веб-приложение с Spring 3.2.18.RELEASE, JDK7 и Tomcat7 ранее.
Недавно я развернул несколько файлов jsp и перезапустил Tomcat, и он показал мне это сообщение об ошибке.
Caused by: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 130; cvc-elt.1: Cannot find the declaration of element 'beans'.
Оказалось, что я установил xsi:schemaLocation в ‘https://www.springframework.org/schema/beans/spring-beans.xsd‘
и не было возможности загрузить xml из-за версии JDK TLS.
Поэтому я погуглил, когда xml-схема перестала поддерживать TLS 1.0 и 1.1.
но я не смог их найти.
Я уже узнал, что мне нужно обновить Spring, JDK и Tomcat, прочитав десятки статей.
Я надеюсь, что кто-нибудь сможет сказать мне, КОГДА это произошло или
было бы благодарно, если бы вы хотя бы дали мне знать, где его найти.
пс. Я не мог найти ответ на www.springframework.org. Я пометил здесь «весенний ботинок», потому что там написано, что я могу получить помощь с помощью этого.
обновленный
Мне жаль, что мой вопрос был двусмысленным.
Благодаря ряду статей и комментариев здесь я узнал, как решить свою проблему, и это отлично сработало.
Причина, по которой я опубликовал этот вопрос, заключается в том, что
если я добавлю опцию-Dhttps.protocols=TLSv1.2, мое веб-приложение будет работать нормально, как и раньше.
Если я изменю его на TLSv1.0 или v1.1, я увижу точно такое же сообщение об ошибке.
Веб-приложение прекрасно работало без него раньше, и теперь для него требуется опция, по крайней мере, на JDK7.
Моя коллега сказала,что 20 октября она в последний раз перезапускала Tomcat, и все было в порядке.
Поэтому я верю,что что-то произошло между 20 октября и вчерашним днем.
Комментарии:
1. Проблема с этим URL-адресом заключается в том, что он не заменяется в Spring 3.2 и, следовательно, выходит в Интернет. Вместо этого используйте http, и он разрешит его из файла (он включен в файл jar), и ему не требуется подключение к Интернету.
2. @M. Deinum Вы правы. Я уже видел spring-beans-3.2.xsd в spring jar. Поэтому я выделил жирным шрифтом «https». Я также знаю, что TLS1.0 и 1.1 гораздо менее безопасны, чем 1.2, поэтому я могу понять, что они больше не поддерживаются. Вопрос в ТОМ, ПОЧЕМУ версия TLS стала проблемой СЕЙЧАС и с тех ПОР, как они начали не поддерживаться.
3. Пожалуйста, прочтите мой комментарий. Поддержка TLS здесь не имеет значения. Дело в том, что Spring 3.2 еще не поддерживает разрешение файла для https (их нет в файле spring.schemas), поэтому он отправляется в Интернет вместо разрешения из jar. Последнее-это то, чего не должно происходить (но это потому, что в файле spring.schemas нет псевдонима https). С более новыми версиями Spring не имеет значения, является ли это http или https, они разрешаются из jar, а не из Интернета.
4. @M. Deinum Если URL-адрес начинается с «https» весной 3.2.x, он его не разрешает. Я знаю. Чтобы запустить веб-приложение в текущих обстоятельствах, я должен изменить его на http, а TLS, как вы сказали, не имеет значения. С этим абсолютно не поспоришь. Но подумай вот о чем. Если я добавлю опцию «- Dhttps.protocols=TLSv1.2 » и перезапущу Tomcat, он снова будет работать нормально, даже если это все еще https. Вот почему я задал этот вопрос. Веб-приложение работало нормально, пока я вчера не перезапустил Tomcat, даже без опции JVM. И я слышал от своего коллеги, что 20 октября все было в порядке. Я полагаю, что что-то произошло между 20 октября и вчерашним днем.
5. Нет, вам не нужно менять его на https… Что заставляет вас думать, что вам нужно/необходимо изменить его на https… Это не URL-адрес, это пространство имен.
Ответ №1:
Я не знаю точно, когда www.springframework.org перестала поддерживать TLSv1.0, 1.1
но я уверен, что это может быть между 20 октября и 10 ноября.
В последнее время многие браузеры начинают прекращать поддержку TLSv1.0 и 1.1 из-за мер безопасности.
И я думаю, что именно поэтому www.springframework.org сделал это.
Люди.
Пожалуйста, обновите свой JDK или, по крайней мере, TLS заранее. ( Т^Т)