URISyntaxException Недопустимый символ при развертывании файла WAR в Weblogic - PullRequest
1 голос
/ 07 сентября 2010

Мы развертываем одно и то же веб-приложение несколько раз в одном домене weblogic для нескольких сред тестирования.

Несмотря на то, что мы используем разные серверы и порты, нам удобно использовать разные имена, чтобы легко идентифицировать развернутое приложение. Пока что мы поместили имя среды в имя приложения в квадратных скобках, например:

Applic[DEV]
Applic[SIT1]
Applic[SIT2]

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

Исключение, которое мы получаем:

java.net.URISyntaxException: Illegal character in path at index 65: file:/APPLICdev1/applicDomain/servers/SIT2/tmp/_WL_user/ApplicWeb[Sit2]/gp8nae/war/WEB-INF/lib/applicCommons-RELEASE.jar

Согласно W3C ( здесь ) рассматриваемый символ "[" должен быть допустимым символом, зарезервированным, но допустимым. Мы решили проблему, сняв скобки, но мне любопытно понять причину этой проблемы.

Спасибо

Ответы [ 2 ]

1 голос
/ 07 сентября 2010

Ваш контент не соответствует требуемому контенту блока '[' ']'.

IPv6-адреса разрешены для хост-компонента. Адрес IPv6 должен быть заключен в квадратные скобки ('[' и ']'), как указано в RFC 2732 . Сам IPv6-адрес должен анализироваться в соответствии с RFC 2373 . Адреса IPv6 дополнительно ограничены, чтобы описывать не более шестнадцати байтов адресной информации, ограничение, неявное в RFC 2373, но не выражаемое в грамматике.

И как говорится в RFC:

Хост, идентифицируемый литеральным адресом Интернет-протокола версии 6 [ RFC3513 ] или более поздней версии, различается заключением литерала IP в квадратные скобки ("[" и "]"). Это единственное место, где разрешены символы в квадратных скобках в синтаксисе URI. В ожидании будущих пока еще не определенных форматов буквенных IP-адресов реализация может использовать дополнительный флаг версии, чтобы явно указывать такой формат, а не полагаться на эвристическое определение.

IP-literal = "[" ( IPv6address / IPvFuture  ) "]"
IPvFuture  = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )

Реализация java.net.URI считает "[]" действительным только для IPV6.


Ресурсы:

1 голос
/ 07 сентября 2010

Как указано в RFC3986 , [ и ] являются зарезервированными символами, которые действительны только в представлении адреса IPv6:

3.2.2. Хост
...
Хост, идентифицируемый буквенным адресом интернет-протокола, версия 6 [RFC3513] или более поздняя отличается включением IP буквально в квадратных скобках ("[" а также "]"). Это единственное место где символы в квадратных скобках разрешено в синтаксисе URI.

Итак, в других местах их следует избегать.

Однако это не объясняет поведение Weblogic в отношении имен файлов. Возможно, это ошибка, вызванная использованием new URI(...) вместо new File(...).toURI() для создания file:/ URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...