URISyntaxException在Weblogic中部署WAR文件时出现非法字符

时间:2010-09-07 16:52:59

标签: java deployment

我们在同一个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),有问题的字符“[”应该是有效字符,保留但有效。我们通过删除括号解决了这个问题,但我很想知道这个问题的原因。

由于

2 个答案:

答案 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有效。


资源: