我们在同一个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),有问题的字符“[”应该是有效字符,保留但有效。我们通过删除括号解决了这个问题,但我很想知道这个问题的原因。
由于
答案 0 :(得分:1)
如RFC3986中所述,[
和]
是保留字符,仅在IPv6地址表示中有效:
3.2.2。主机
...
由Internet协议字面地址标识的主机, 版本6 [RFC3513]或更高版本,是 通过附上知识产权来区分 方括号内的字面值(“[” 和“]”)。这是唯一的地方 方括号字符是哪里 允许使用URI语法。
所以,在其他地方,他们应该逃脱。
但是,它没有解释Weblogic关于文件名的行为。
也许这是因使用new URI(...)
而不是new File(...).toURI()
来创建file:/
URI而导致的错误。
答案 1 :(得分:1)
您的内容与'['']'块所需的内容不符。
主机组件允许使用IPv6地址。 IPv6地址必须用RFC 2732指定的方括号('['和']')括起来。 IPv6地址本身必须根据RFC 2373进行解析。 IPv6地址进一步受限于描述不超过16个字节的地址信息,这是RFC 2373中隐含但在语法中无法表达的约束。
正如RFC所述:
由Internet协议文字地址(版本6 [RFC3513]或更高版本)标识的主机通过将IP文字括在方括号(“[”和“]”)中来区分。这是URI语法中唯一允许使用方括号字符的位置。在预期未来,尚未定义的IP文字地址格式时,实现可以使用可选的版本标志来明确指示这种格式,而不是依赖于启发式确定。
IP-literal = "[" ( IPv6address / IPvFuture ) "]" IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
java.net.URI实现认为“[]”仅对IPV6有效。
资源: