orber
orber
模块
orber
模块摘要
Orber应用程序的主要模块
描述
该模块包含启动和停止应用程序的功能。它还具有一些实用函数,可以从运行的应用程序中获取一些配置信息。
输出
start() -> okstart(Type) -> ok
类型
启动Orber应用程序(如果它未运行,它也启动mnesia)。提供哪个Type
参数决定了行为。如果没有提供Orber开始为temporary
。有关更多信息,请参阅参考手册应用程序(3)
。
jump_start(Attributes) -> ok | {'EXIT', Reason}
类型
使用配置参数安装并启动Orber和Mnesia应用程序,domain
并分别iiop_port
设置为"IP-number:Port"
和提供的端口。在大多数情况下,这些设置足以确保不会与任何其他Orber实例发生冲突。如果此操作失败,请检查侦听端口(iiop_port
)是否已被使用。该功能只能
在开发和测试过程中使用; 在使用此操作时如何配置Orber可能会在任何时候更改,恕不另行通知。
stop() -> ok
停止Orber应用程序。
info() -> okinfo(IoType) -> ok | {'EXIT', Reason} | string()
类型
生成一个信息报告,其中包含Orber的配置设置。如果否IoType
,info_msg
则使用(请参阅error_logger文档)。当提供原子字符串时,该函数将返回一个扁平列表。为io
和{io, IoDevice}
,io:format/1
并io:format/3
分别使用。
exception_info(Exception) -> {ok, string()} | {error, Reason}
返回可打印字符串,该字符串更详细地描述所提供的异常。注意,此函数主要用于系统异常。
is_system_exception(Exception) -> true | false
如果提供的异常是系统定义的异常,则返回true,否则返回false。
get_tables() -> [Tables]
返回特定于Orber的Mnesia表的列表。如果已分区,则需要此列表来恢复Mnesia。
get_ORBInitRef() -> string() | undefined
如果我们将在本地解析引用,则此函数返回undefined,否则,如果给定corba:resolve_initial_references/1
的Key与此配置变量中的Key相匹配,则描述我们将联系哪个主机的字符串。有关更多信息,请参阅用户指南。
get_ORBDefaultInitRef() -> string() | undefined
如果我们将在本地解析引用,那么这个函数返回undefined,否则返回描述哪个或哪些主机的字符串,我们将从中解析给出的Key corba:resolve_initial_references/1
。有关更多信息,请参阅用户指南。
domain() -> string()
此函数以字符串形式返回当前Orber域的域名。
iiop_port() -> int()
该函数返回由IIOP协议使用的端口号。它可以通过设置应用程序变量iiop_port
进行配置,如果未设置,它将具有默认编号4001。
iiop_out_ports() -> 0 | {Min, Max}
此操作的返回值是配置参数iiop_out_ports
已设置的值。
iiop_out_ports_random() -> true | false
返回配置参数的值iiop_out_ports_random
。
iiop_out_ports_attempts() -> int()
返回配置参数的值iiop_out_ports_attempts
。
iiop_ssl_port() -> int()
该函数返回由安全IIOP协议使用的端口号。它可以通过设置应用程序变量iiop_ssl_port
进行配置,如果未设置,它将具有默认的编号4002,如果Orber要配置为以安全模式运行。否则它返回-1。
iiop_timeout() -> int() (milliseconds)
此函数返回传出IIOP请求终止之后的超时
值。它可以通过设置应用程序变量iiop_timeout TimeVal(seconds)
进行配置,如果未设置,它将具有默认值infinity
。如果请求超时
,则引发系统异常,例如TIMEOUT
。
注意:iiop_timeout配置参数(TimeVal)的范围可能只在0到1000000秒之间。否则,使用默认值。
注意:早期的IC版本要求编译选项。{timeout,"module::interface"}
,允许用户添加额外的超时参数,例如,module_interface:function(ObjRef, Timeout, ... Arguments ...)
或module_interface:function(ObjRef, [{timeout, Timeout}], ... Arguments ...)
,而不是module_interface:function(ObjRef, ... Arguments ...)
不再是这种情况,如果使用额外的超时,参数将覆盖配置参数。iiop_timeout
然而,它是不可能使用的。infinity
若要重写超时参数,请执行以下操作。超时值选项对于驻留在同一Orber域中的对象也是有效的。
iiop_connection_timeout() -> int() (milliseconds)
此函数返回超时值,在此之后,传出的IIOP连接终止。它可以通过设置应用程序变量iiop_connection_timeout TimeVal(seconds)
进行配置,如果未设置,它将具有默认值infinity
。如果有未决请求,连接将不会终止。
注意:iiop_connection_timeout配置参数(TimeVal)的范围可能只有0到1000000秒。否则,使用默认值。
iiop_connections() -> Resultiiop_connections(Direction) -> Result
类型
此操作返回的列表包含Orber当前连接的远程主机/端口的元组。如果没有提供方向,则包括传入和传出连接。
如果为连接定义了一个特定的本地接口,它将被添加到返回的元组中。
iiop_connections_pending() -> Result
类型
在某些情况下,连接尝试(即尝试与另一个ORB进行通信)可能会因多种原因而阻塞。该操作允许用户检查是否是这种情况。返回的列表包含远程主机/端口的元组。通常情况下,列表是空的。
如果已经为连接定义了特定的本地接口,这将添加到返回的元组中。
iiop_in_connection_timeout() -> int() (milliseconds)
此函数返回超时值,在此之后传入的IIOP连接终止。它可以通过设置应用程序变量iiop_in_connection_timeout TimeVal(seconds)
进行配置,如果未设置,它将具有默认值infinity
。如果有未决请求,连接将不会终止。
注意:iiop_in_connection_timeout配置参数(TimeVal)的范围可能只有0到1000000秒。否则,使用默认值。
iiop_acl() -> Result
类型
返回ACL配置。在Filter
使用无类别域间路由(CIDR)的扩展格式。例如,"123.123.123.10"
限制与特定主机的连接,同时"123.123.123.10/17"
允许任何主机的连接等于17个最高有效位。Orber还允许用户指定某个端口或端口范围,例如,"123.123.123.10/17#4001"
和"123.123.123.10/17#4001/5001"
分别。IPv4或没有压缩的IPv6字符串被接受。
Interfaces
IPv4或IPv6字符串的列表当前仅用于传出连接,并且可能只包含一个
地址。如果授予设置和访问权限,Orber将在连接到另一个
ORB时使用该本地接口。该模块orber_acl
提供了评估过滤器和地址访问控制的操作。
activate_audit_trail() -> Resultactivate_audit_trail(Verbosity) -> Result
类型
为所有现有的传入和传出IIOP连接激活审计/跟踪。的Verbosity
参数,stealth
,normal
或verbose
,确定哪个内置的拦截器被使用(orber_iiop_tracer_stealth
,orber_iiop_tracer_silent
或orber_iiop_tracer
分别地)。如果没有提供详细级别,那么normal
将被使用。
如果Orber被配置为使用其他拦截器,审计/踪迹拦截器将被简单地添加到该列表中。
deactivate_audit_trail() -> Result
类型
关闭所有现有的传入和传出IIOP连接的审计/跟踪。如果Orber被配置为使用其他拦截器,则仍将使用这些拦截器。
add_listen_interface(IP, Type) -> Resultadd_listen_interface(IP, Type, Port) -> Resultadd_listen_interface(IP, Type, ConfigurationParameters) -> Result
类型
创建一个新的进程,处理通过给定接口和端口创建新的传入IIOP连接的请求。如果排除后者,Orber将使用iiop_port
或iiop_ssl_port
配置参数的值。该Type
参数确定它是否应该通过SSL进行IIOP或IIOP。如果成功,返回的信息#Ref
将orber:remove_listen_interface/1
在连接终止时传递。
也可以提供覆盖全局配置的配置参数。该iiop_in_connection_timeout
,iiop_max_fragments
,iiop_max_in_requests
和拦截器
参数只是覆盖了全球同行(请参阅Configuration
用户手册中的章节)。但对于以下参数有一些限制:
标志
- 目前只能覆盖Use Current Interface in IOR
和Exclude CodeSet Component
标志
的全局设置。
ip_family
- 可以设置为inet
或inet6
用于获取使用另一个IP版本的监听接口,而不是在启动时使用具有标志的默认设置。
iiop_port
-需要Use Current Interface in IOR
被激活,并且所提供的Type
是normal
。如果是这样,导出的IOR将包含由此配置参数定义的IIOP端口。否则,将使用全局设置。
iiop_ssl_port
- 几乎等同于iiop_port
。区别在于Type
应该是ssl
,并且导出的IOR:s将包含通过此配置参数定义的SSL端口的IIOP。
如果不能根据提供的接口和端口添加侦听器,则错误消息是在inet
和/或ssl
文档中描述的错误消息之一。
remove_listen_interface(Ref) -> ok
类型
终止与提供#Ref
的传入连接相关的监听过程。Ref参数是操作的返回值orber:add_listen_interface/2/3
。在终止连接时,所有关联的请求都不会向客户端发送回复。
close_connection(Connection) -> Resultclose_connection(Connection, Interface) -> Result
类型
将尝试关闭提供的对象引用或给定主机/端口列表中找到的主机/端口组合的所有传出连接。如果#'IOP_ServiceContext'{}
在与远程对象进行通信时使用了包含本地接口的接口(另请参见Module_Interface
),则该接口应作为第二个参数传递。否则,通过默认本地接口的连接将被终止。
注
由于多个客户端可能通过相同的连接进行通信,因此调用此操作时会受到影响。其他客户端可以通过调用目标对象上的操作来重新创建连接。
secure() -> no | ssl
此函数返回Orber运行的安全模式,如果它是不安全的
域或所使用的安全机制的类型,则该值为“否”。目前唯一的安全机制是SSL。这是通过设置应用程序变量配置安全的
。
ssl_server_options() -> list()
该函数返回为Orber域设置为服务器的SSL选项列表。这是通过设置应用程序变量ssl_server_options进行
配置的。
ssl_client_options() -> list()
此函数返回当前进程中用于传出呼叫的SSL选项列表。默认值是通过设置应用程序变量ssl_client_options进行
配置的。
set_ssl_client_options(Options) -> ok
类型
此函数以SSL选项列表作为参数,并为当前进程设置它。
objectkeys_gc_time() -> int() (seconds)
该函数返回超时值,之后{persistent, true}
将删除与配置参数启动的服务器相关的已终止对象密钥。它可以通过设置应用程序变量objectkeys_gc_time TimeVal(seconds)
进行配置,如果未设置,它将具有默认值infinity
。
自动移除以原因正常
或关闭
结束的对象。
注意:objectkeys_gc_time配置参数(TimeVal)的范围可能只有0到1000000秒。否则,使用默认值。
orber_nodes() -> RetVal
类型
此函数返回此orber域所包含的节点名称列表。
install(NodeList) -> okinstall(NodeList, Options) -> ok
类型
该函数安装所有必要的mnesia表,并在其中的一些中加载默认数据。如果一个或多个Orber表已经存在,则安装失败。如果安全的话,可以使用函数卸载
,即没有其他应用程序正在运行Orber。
先决条件:
- 安装前必须存在mnesia架构。
- 如果新安装应该是多节点域,则mnesia将在其他节点上运行。
如果该功能尚未在安装节点上运行,并且如果它已启动,则Mnesia将在此后停止。
可以发送到安装程序的选项是:
{install_timeout, Timeout}
- 这个超时是我们等待创建表格的时间。超时值可以是无限的
或以毫秒为单位的整数。默认是无限。
{ifr_storage_type, TableType}
- 该选项设置用于接口存储库的表的类型。TableType可以是disc_copies或ram_copies。默认是disc_copies。
{initialreferences_storage_type, TableType}
- 此选项设置用于存储初始引用的表的类型。TableType可以是disc_copies或ram_copies。默认是ram_copies。
{nameservice_storage_type, TableType}
- Orber的默认行为是将NameService安装为ram_copies。该选项可以将其更改为disc_copies。但用户应该知道,如果节点重新启动,则存储在NameService中的所有本地对象引用无效。因此,您不能切换到disc_copies,并期望与以前完全相同的行为。
{load_order, Priority}
- 默认情况下,优先级设置为0.使用此选项将改变Mnesia将加载Orber内部表的顺序的优先级。有关更多信息,请参阅Mnesia文档。
uninstall() -> ok
该功能停止Orber应用程序,终止所有服务器对象并删除所有Orber相关的mnesia表。
注意:由于其他应用程序可能使用mnesia在同一节点上运行,卸载
不会停止mnesia应用程序。
add_node(Node, Options) -> RetVal
类型
该功能将给定节点添加到现有的Orber节点组,并在新节点上启动Orber。orber:add_node
由Orber节点组中的成员调用。
新节点的先决条件:
- Erlang使用该选项在新节点上启动
-mnesia extra_db_nodes
,例如,erl -sname new_node_name -mnesia extra_db_nodes ConnectToNodes_List
- 新节点的
domain
名称与我们想要连接的节点相同。
- Mnesia正在新节点上运行(没有新的模式创建)。
- 如果新节点将使用
disc_copies
架构类型,则必须使用以下方法进行更改:mnesia:change_table_copy_type(schema, node(), disc_copies).
Orber将由新节点上的功能启动。
如果:
- Orber已经安装在给定的节点上。
- Mnesia没有像上面介绍的那样在新节点上启动。
- 不可能将Mnesia表中的数据复制到新节点。
- 无法在新节点上启动Orber,例如,由于
iiop_port
已在使用中。
该功能在故障发生后不会移除已复制的表格。使用orber:remove_node
删除这些表。
remove_node(Node) -> RetVal
类型
该功能从Orber节点组中删除给定的节点。Mnesia应用程序不会停止。
configure(Key, Value) -> ok | {'EXIT', Reason}
类型
这个函数允许用户在Orlang中配置Orber,例如Erlang shell。可以随时调用configure
上面指定的密钥。
在安装和启动Orber之前,必须设置其他任何键。
试图改变以任何其他方式的构造不
容许,因为它可能会影响Orber的行为。
有关允许值的更多信息,请参阅configuration settings
用户指南。
注意
配置IIOP超时值不会影响已有的连接。如果你想保证一致的行为,你必须从一开始就设置这些参数。