1

BLUF:尝试将独立客户端连接到 WebSphere 中的 Extreme Scale 缓存时,我收到了一个异常,这有点误导,所以我在这里提供了解决方案。

我在 WebSphere Application Server (WAS) v8.5 中成功安装了 WebSphere Extreme Scale (WXS) v8.5(注意:不要尝试在 Installation Manager 中同时这样做,否则文件将会丢失——单独安装它们)。我还成功安装了客户端和服务器 EAR,因此我可以对客户端使用 REST 服务,而客户端又会连接到服务器以访问缓存。但是,当我尝试从 java 命令行(或从 Eclipse 中)运行独立客户端时,我遇到了以下异常:

java.lang.Throwable: org.omg.CORBA.TRANSIENT: initial and forwarded IOR inaccessible  vmcid: IBM  minor code: E07  completed: No
at com.ibm.rmi.corba.ClientDelegate.createRequest(ClientDelegate.java:1272)
...
Caused by: java.lang.Throwable: connect: Address is invalid on local machine, or port is not valid on remote machine
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:381)

在 ObjectGridManager 上调用 connect 时:

_client = _ogManager.connect(hostport, null, clientObjectGridURL);

首先要检查的是 objectGridClient.properties 文件中的主机和端口号是否正确(例如,端口号将与应用程序服务器的端口列表中的 BOOTSTRAP 端口匹配)。就我而言,这是正确的。使用 netstat -an |grep 查看是否有人在监听端口,或者 telnet 到主机端口。

接下来要检查的是防火墙没有妨碍到端口的连接。服务器也有对客户端的回调,因此您需要检查这是否没有造成问题。就我而言,这不是问题。

4

2 回答 2

7

问题出在我配置 WAS 时启用了一般安全性,因此管理控制台需要用户 ID 和密码。但是,当我调用 ObjectGridManager 进行连接时,我传递了一个 null 作为第二个参数,而不是传递正确的 ClientSecurityConfiguration 对象。显然,如果您已经保护了 WAS,那么尝试连接到 WAS 中的缓存的外部客户端需要提供安全信息来验证它们是否被允许连接。

我选择使用管理控制台/安全性/全局安全性关闭 WAS 安全性并取消选中启用管理安全性。这允许我通过传递 null 来继续测试,并推迟打开安全性并添加适当的安全配置设置并在连接调用中提供适当的对象,直到我们准备好在共享环境中进行测试(我的开发环境是自包含的我的笔记本电脑没有连接到公共网络)。

我已经包含了这个解释,希望其他寻找这个问题的解决方案的人可以在这里找到它,因为我没有成功找到这个替代方案的解释。

于 2012-11-05T16:44:39.060 回答
0

始终仔细检查您的存根类是否真的到位并且在部署中可用。听起来很简单,但这就是我遇到的问题......

所以这个错误的原因可能是多种多样的。

于 2013-07-11T11:27:57.663 回答