我们在同一个 weblogic 域上多次部署同一个 Web 应用程序,用于多个测试环境。
尽管我们使用不同的服务器和端口,但我们发现使用不同的名称可以方便地轻松识别已部署的应用程序。到目前为止,我们已将环境名称放在应用程序名称中的括号之间,如下所示:
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 ( here ),有问题的字符“[”应该是有效字符,保留但有效。我们通过删除括号解决了这个问题,但我很想了解这个问题的原因。
谢谢
最佳答案
如 RFC3986 中所述、[
和 ]
是保留字符,仅在 IPv6 地址表示中有效:
3.2.2. Host
...
A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets ("[" and "]"). This is the only place where square bracket characters are allowed in the URI syntax.
所以,在其他地方他们应该被转义。
但是,它没有解释 Weblogic 关于文件名的行为。
也许这是由于使用 new URI(...)
而不是 new File(...).toURI()
创建 file:/
URI。
关于java - URISyntaxException 在 Weblogic 中部署 WAR 文件时出现非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660797/