GK的设置范型是Gatekeeper 参考手册的 方案 3.2:防火墙执行 NAT ,● 使用服务器的防火墙组件,在115,116 页.其中3,4,5 的用法,没有找到明确的用法,有可能是这几步中的问题。详细内容如下,我主要是参考的GateKeeper 的手册。我的环境BCB6+visibroker 4.5+windows xp,需要注意的是这个例子在局域网中运行是成功的,如果主机直接暴露在 internet 中也是成功功的。(没有路由器,不使用GK)主机暴露的用法和下面基本一样只是缺少GK的相关内容。AppClient.exe -Dvbroker.agent.addr=101.1.1.1 -Dvbroker.agent.port=14000 这是客户端在调用远程服务器的方法。1、定义IDL文件并且用向导的方式进行接口的实现,并且客户端是用静态的方式进行调用。
//idl
interface Client{
string GetOrderMaster(in boolean metadata);
};//服务器实现代码
char* ClientImpl::GetOrderMaster(CORBA::Boolean _metadata)
{
Server->Memo1->Lines->Add("CORBA Client Request...");
return "abc123999";
}//客户端代码
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(client->GetOrderMaster(true));
}
//---------------------------------------------------------------------------
*这几步都是用向导做的,所以系统自动生成的代码就不加了。2、设置Gatekeeper 的若干属性
//Gatekeeper 属性,我理解应该是对此文件的设置
//gatekeeper.properties 文件
vbroker.gatekeeper.name=myGK
vbroker.orb.exportFirewallPath=true
vbroker.se.exterior.host=192.168.1.83
vbroker.se.exterior.scm.ex-iiop.listener.port=683
vbroker.se.exterior.scm.ex-hiop.listener.port=80883、设置Server.exe 的服务器属性
//服务器 属性,我理解应该是为Server.exe 设置一个属性文件或以命令行参数的形式带入(这个理解有可能是错的)
//server.ini 
vbroker.orb.dynamicLibs=com.inprise.vbroker.firewall.Init
vbroker.se.iiop_tp.firewallPaths=p
vbroker.firewall-path.p=fw,gk
vbroker.firewall.fw.type=TCP
vbroker.firewall.fw.host=101.1.1.1 //internet IP 外部
vbroker.firewall.fw.iiop_port=683
vbroker.firewall.fw.hiop_port=8088
vbroker.firewall.gk.type=PROXY
vbroker.firewall.gk.ior=http://192.168.1.83:8088/GateKeeper.ior4、运行GK和服务器程序
GK:
gatekeeper //默认为加载当前目录的gatekeeper.properties ,运行正常
服务程序:
AppServer.exe -Dvbroker.orb.propStorage server.properties
//vbroker.orb.propStorage null 指定包含属性值的属性文件。
//这个用法也不能确定肯定是正确的5、运行客户程序
AppClient.exe -ORBagentAddr 101.1.1.1 -ORBagentPort 683//这个用法不能保证完全正确,只是我的理解GateKeeper 与 VisiBroker ORB 通过充当客户端和服务器之间的网关或代理,提供了处理这些基于 OMG CORBA 防火墙规范限制的机制。当某些限制阻止客户端直接连接至服务器时,客户端可选择连接至 GateKeeper,将消息发送至GateKeeper,再由 GateKeeper 将消息转发至服务器。6、完成。(还是不成功啊)强调:其中 3,4,5 步的用法我没有找到任何明确的使用方法,所有只能是参考手册的内容去理解。有可能就是这几步的用法是错误的。网络结构:路由器->GK主机
GK主机(服务器主机,其中运行Server.exe和OSAGENT)它在路由器的里面.
路由器端口映射:683,8088,14000 其中14000 是实验性的打开,理论上好像不需要它也可以。
我的[email protected]有愿意讨论的网友可以直接联系,欢迎高手指点一下。