默认的配置有四个文件,都在WEB-INF/Flex目录下,分别为:web.xml,services.xml和remoting-config.xml.配置文件加载的顺序为web.xml -> service-config.xml -> remoting-config.xml.
1).web.xml配置文件
web.xml是部署描述文件,Web应用服务器(Tomcat or Websphere)启动后首先加载该文件.关键代码如下:
配置项<listener>用于将HttpFlexSession类作为监听器注册到web.xml中,这样系统就可以检测到J2EE HttpSession属性和代理属性的变化,进而通知FlexSession属性和目前绑定的listener做相应处理.
BlazeDS提供了一个Servlet作为它和Servlet容器之间的桥.MessageBrokerServlet的Servlet将负责对对所有URL符合/messagebroker/*模式的请求进行处理,它会在Servlet容器启动时启动,并在启动时读取配置文件/WEB-INF/flex/services-config.xml.
2). 服务配置文件services-config.xml
MessgaeBrokerServlet在启动时需要services-config.xml提供的信息对BlazeDS的组件进行配置,services-config.xml包含BlazedDS引用的服务文件,安全设置,通道定义,系统参数.
其中<target class>为日志信息的目标,默认的目标是控制台输出,即System.out(Java).若要使用Servlet日志文件作为目标,将class属性改为"flex.messaging.log.ServletLogTarget".
其中level="Error"为日志的记录级别.有None,Error,Warn,Info,Debug,All六种选择.
其中<properties>为日志信息的显示格式.包括信息前缀(prefix)以及是否包含时间(includeTime),日期(includeDate),级别(includeLevel)或者类别.
其中<filters>为信息的过滤条件,只有匹配的类别才会被记录到指定的目标中.
其中redeploy为将services-config.xml配置成重新部署的模式,即当BlazeDS发现配置文件被修改后,会通知web应用容器重新部署Web应用.由于这样会降低应用的性能,建议开发时使用.
其中watch-interval为每隔20秒检测watch-file标签包含的文件的状态.
其中security为配置安全性选项,然而,为remoting-config.xml或message-config.xml中的service添加安全性选项也是可以的.目的是只有通过身份验证,并具有某些role的用户才可以访问相应的destination.
其中security-constraint为安全约束.可以为destination应用安全约束.定义的方式有两种:一种是引用,一种是在destination定义的内部声明安全约束.
其中channel-definition定义了Channel的标识及其实现类.
其中endpoint定义了endpoint的实现类和Channel和Endpoint通信的url.
Channel的作用就是帮助我们传输消息.Channel使用URL与Endpoint通信.Endpoint就是消息传输的接收器,它并不真正处理消息,它将处理过程委托给service.这样就分离了协议和消息类型这两个正交的关注点.Endpoint在接收到消息时会根据消息的destination获得合适的service,然后调用service.service.Message方法处理消息.BlazeDS定义了RemotingService,HttpProxyService,MessageService三类service,分别处理前端RemoteObject,HTTPService和WebService等组件发起的请求.
Service有两种配置方式,第一种是在service-config.xml的services标签下,即内部配置;另一种是将service配置如上,配置独立文件的方式,并使用service-include将此文件包含进来.
3). 远程服务配置文件remoting-config.xml
其中根元素service指定远程服务的id和对应的类.
其中adapters为用户设置设配器.
其中子标签channel的ref属性表明引用了信息通道.
其中destination设置服务终端的目的地,属性id为客户端组件RemoteObject的destination
总结:BlazeDS需要配置有,MessageBrokerServlet,service-config.xml,Channel和Endpoint,Service,Adaper和Destination,Logging,Security.