ofbiz中的ofbiz-component.xml和加载过程
发布时间:2020-12-16 09:05:36 所属栏目:百科 来源:网络整理
导读:在ofbiz中,有一个非常重要的配置文件ofbiz-component.xml,这个文件告诉ofbiz需要加载那些容器和类,在start.properties中有如下定义 //ofbiz容器加载类,用来加载其他容器,ofbizofbiz.start.loader1=org.ofbiz.base.container.ContainerLoader//ofbiz加载
在ofbiz中,有一个非常重要的配置文件ofbiz-component.xml,这个文件告诉ofbiz需要加载那些容器和类,在start.properties中有如下定义 //ofbiz容器加载类,用来加载其他容器,ofbiz ofbiz.start.loader1=org.ofbiz.base.container.ContainerLoader //ofbiz加载的组件级别 ofbiz.start.loader1.loaders=main,rmi ContainerLoader根据frameworkbaseconfigofbiz-containers.xml中定义的容器按顺序启动容器 //此处的loaders="main,rmi,pos,install",包含start.properties中的加载级别,该容器是符合要求的启动容器,事实上生产模式上只启动这一个容器 <containername="component-container"loaders="main,install"class="org.ofbiz.base.container.ComponentContainer"/> <containername="component-container-test"loaders="test"class="org.ofbiz.base.container.ComponentContainer"> <propertyname="ofbiz.instrumenterClassName"value="org.ofbiz.base.config.CoberturaInstrumenter"/> <propertyname="ofbiz.instrumenterFile"value="runtime/logs/cobertura-components.dat"/> </container> <containername="component-container-limited"loaders="limited"class="org.ofbiz.base.container.ComponentContainer"> <propertyname="update-classpath"value="false"/> </container> <containername="component-container"loaders="testlist"class="org.ofbiz.base.container.JustLoadComponentsContainer"/> component-container是组件加载容器,根据frameworkbaseconfigcomponent-load.xml中定义的组件目录查找component-load.xml文件然后加载这些文件 这些配置都存放在org.ofbiz.base.component.ComponentConfig中 //thisisnotaUtilCachebecausereloadingmaycauseproblems //普通组件配置文件存放位置 protectedstaticMap<String,ComponentConfig>componentConfigs=FastMap.newInstance(); //web组件配置文件存放位置 protectedstaticMap<String,List<WebappInfo>>serverWebApps=FastMap.newInstance(); 下边看一个最基本的component-load.xml文件结构 <ofbiz-componentname="base" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd"> <resource-loadername="main"type="component"/> <classpathtype="jar"location="build/lib/*"/> <classpathtype="dir"location="config"/> <classpathtype="jar"location="lib/*"/> <test-suiteloader="main"location="testdef/basetests.xml"/> <!--loadthecachedclassloadercontainer(alwayssecond)--> <containername="classloader-container"loaders="main,install,test"class="org.ofbiz.base.container.ClassLoaderContainer"/> <!--loadthenaming(JNDI)server--> <containername="naming-container"loaders="rmi"class="org.ofbiz.base.container.NamingServiceContainer"> <propertyname="host"value="0.0.0.0"/> <propertyname="port"value="1099"/> </container> <!--loadBeanShellremotetelnetserver--> <!--Commentedoutbydefaultforsecurityreasons--> <!--theportbelowandport-1willbeopenedbyBeanshell--> <!--containername="beanshell-container"class="org.ofbiz.base.container.BeanShellContainer"> <propertyname="telnet-port"value="9990"/> <propertyname="app-name"value="OFBiz"/> </container--> </ofbiz-component> 这些配置文件都会被加载到ComponentCofig类中,在这个类中有相应的字段用来存放这些配置 protectedStringglobalName=null; protectedStringrootLocation=null; protectedStringcomponentName=null; protectedbooleanenabled=true; protectedMap<String,ResourceLoaderInfo>resourceLoaderInfos=FastMap.newInstance(); protectedList<ClasspathInfo>classpathInfos=FastList.newInstance(); protectedList<EntityResourceInfo>entityResourceInfos=FastList.newInstance(); protectedList<ServiceResourceInfo>serviceResourceInfos=FastList.newInstance(); protectedList<TestSuiteInfo>testSuiteInfos=FastList.newInstance(); protectedList<KeystoreInfo>keystoreInfos=FastList.newInstance(); protectedList<WebappInfo>webappInfos=FastList.newInstance(); protectedList<ContainerConfig.Container>containers=FastList.newInstance(); 最后通过Map将这些配置保存,提供给下一步使用 总结: 以上流程可以通过下图进行展示 个人见解,如有错误,请不吝赐教 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |