java rmi注册表中远程对象的可能名称是什么?
java rmi注册表中远程对象的可能名称是什么?有禁止使用的字符吗 我尝试调用类命名的rebind方法来绑定rmi注册表中的对象,结果得到了java rmi注册表中远程对象的可能名称是什么?,java,rmi,Java,Rmi,java rmi注册表中远程对象的可能名称是什么?有禁止使用的字符吗 我尝试调用类命名的rebind方法来绑定rmi注册表中的对象,结果得到了MalformedUrlException。我知道问题在于对象的名称,因为当我使用像abc这样的名称时,它会起作用,所以您可能不需要堆栈跟踪来回答 问题是名称是伪随机生成的。例如,导致问题的名称之一是[B@f3d6a5。有没有办法使用您喜欢的任何名称?如果没有,允许使用什么名称 这很奇怪,因为api没有说明关于名称的任何规则,您可以看到它。可能是名称中出现
MalformedUrlException
。我知道问题在于对象的名称,因为当我使用像abc
这样的名称时,它会起作用,所以您可能不需要堆栈跟踪来回答
问题是名称是伪随机生成的。例如,导致问题的名称之一是[B@f3d6a5
。有没有办法使用您喜欢的任何名称?如果没有,允许使用什么名称
这很奇怪,因为api没有说明关于名称的任何规则,您可以看到它。可能是名称中出现的一些字符,如
[
,必须使用\
进行转义。可能不是关于java,而是关于url规范,如果有的话,在这种情况下,我可能不得不使用其他名称。API当然没有说明任何限制,但是如果您得到格式错误的异常
,我会尝试使用随机生成的名称.该州:
名称-URL格式的名称(不带
(计划部分)
如果查看命名
的源代码,您将看到它将传入的名称转换为URI
,并在某些情况下抛出畸形异常
private static ParsedNamingURL intParseURL(String str)
throws MalformedURLException, URISyntaxException
{
URI uri = new URI(str);
if (uri.isOpaque()) {
throw new MalformedURLException(
"not a hierarchical URL: " + str);
}
if (uri.getFragment() != null) {
throw new MalformedURLException(
"invalid character, '#', in URL name: " + str);
} else if (uri.getQuery() != null) {
throw new MalformedURLException(
"invalid character, '?', in URL name: " + str);
} else if (uri.getUserInfo() != null) {
throw new MalformedURLException(
"invalid character, '@', in URL host: " + str);
}
这意味着名称必须是有效的URI
,并且不能包含#
、?
或@
请亲自查看代码以了解更多详细信息。我刚刚在堆栈跟踪中注意到非法字符确实是“[”。不过,如果您知道解决此问题的方法或其他方法,我希望看到一些答案。为什么要使用
toString()
结果为绑定名?客户端将如何发现生成的绑定名?谢谢!它起作用了,我通过检索列表检查了注册表中的名称,发现注册表中引用对象的名称是编码之前在开始时生成的伪随机名,因此ing解决了这个问题,但没有弄乱最终使用的名称。