Resin是一款功能非常强大的Web Server,在我们的日常开发中经常应用到,但是其负责的配置却有点让人迷糊。希望这个介绍能给大家一个简单的了解。
Resin的标准配置中标准的四个文件:resin.conf,app-default.xml,web.xml和resin-web.xml,这些文件是Resin的核心配置文件,让我们看看这些文件之间的关系。
在resin.conf文件得“resin->server”元素下,我们导入了app-default.xml文件,在app-default.xml文件的“web-app-default”元素下我们导入了web.xml和resin-web.xml文件。
通过以上的图示,我们可以了解这四个文件的层次关系,Resin也是依据这些层次关系加载这些文件。Resin的配置选项特别多,如果你看一下reson.conf文件你一定会被其众多的xml元素搞的不知所措。简单地说,Resin的配置选项可以分为三类:global(全局),default(缺省)和special(特定)。
全局:这些选项通常是唯一的,我们只需设置一次即可。如线程池、日志格式等。
缺省:当某一选项在多个地方出现时,我们需要设置这个选项的缺省行为。如缺省主机设置,缺省web应用设置等。
特定:设置一个选项的在特定地方的特定行为,即在缺省的行为上作一些修改。如设置某主机的特定参数,为某Web应用配置单独的数据库连接池等。
理解了这三种配置选项类型,再回头来看resin.conf文件,你的思路就会清晰多啦。
下面我们看看resin-web.xml和web.xml文件之间的区别。这两个文件如果在Resin下你可以合而为一,Resin完全能识别,最好还是分开。Web.xml的内容应该是符合J2EE规范内容,不应该包含任何容器特定的东西;而resin-web.xml则包含容器相关的内容,如提供数据库连接池服务、设置resin相关的资源服务、JMX、IoC等,这和EJB的形式完全一样,ejb-jar.xml是标准,各个应用服务器又有自己特定规范文件,如jboss.xml、weblogic.xml等等,这样做的目的很明显,方便移植。Tomcat同样也这么做,如我们经常编写一个特定的xml(和webapp名称相同),包含一些资源的声明(数据库连接池),放在%TOMCAT_HOME%\conf\Catalina\localhost目录下,做法和目的都是一样的。
我们讲述了这些标准的配置文件,其实Resin允许你将一些选项设置提取出来,形成单个文件,其他的配置文件可以引用该文件。你只需在需要引入其他文件的xml配置文件中,添加xmlns:resin=http://caucho.com/ns/resin/core空间声明,然后调用<resin:import path="filename.xml"/>元素进行引入即可。通过这种引入机制,将负责的配置文件进行分解,你可以让配置文件的管理更轻松。
最后我们讲一下如何去修改这些配置文件。如果配置文件的格式不正确,你将无法启动Resin,尽管这些配置文件都是xml格式的,但是Resin采用Relax-NG方式来验证xml的,好多工具无法根据Relax-NG进行xml代码的自动提示和校验。如果将Relax-NG转换为xml 的schema文件,那么修改xml配置文件将非常便利。
这里提供了一个Resin配置文件的XML Schema文件,这是从relax-ng转换而来的,你只需打开IDEA的Resources配置窗口,将“http://caucho.com/ns/resin”和附件中的resin.xsd关联,“http://caucho.com/ns/resin/core”和rcore.xsd关联,将resin.conf文件设置为xml文件类型,那么你以后编辑resin.conf、app-default.xml就可以使用IDEA的XML自动代码提示功能,你的配置就不在会出现格式不正确之类的错误啦。
注意:附件中的xsd文件之间都是有关联的,不要删除任何一个文件。resin_xsd.zip