OFBiz 开发需要用到的几个重要(配置)文件
来源:互联网 发布:店宝宝软件怎么样 编辑:程序博客网 时间:2024/06/04 19:21
摘要: OFBiz有很多的配置文件,知道这些配置文件和意义对于OFBiz开发非常重要。
OFBiz是一个非常好的企业级开发框架,实现了多层的松耦合结构,其中一部分松耦合就是通过配置文件实现的,这里就要提到一些配置文件和开发文件。
1、首先是entityengine.xml文件,这个文件是配置数据源的,也包括数据库连接池、事务实现类的配置和字段类型配置文件。企业级系统的开发一般都离不开数据库,那么在OFBiz中,数据库的配置就在这个配置文件里面,先配置一个group-map,然后配置其对应的数据源:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><delegator name="default" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" distributed-cache-clear-enabled="false"> <group-map group-name="org.ofbiz" datasource-name="ofbiz"/> <group-map group-name="com.aicent" datasource-name="portal"/> </delegator> <datasource name="ofbiz" helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="mysql" check-on-start="false" add-missing-on-start="false" check-pks-on-start="false" use-foreign-keys="true" join-style="ansi-no-parenthesis" alias-view-columns="false" drop-fk-use-foreign-key-keyword="true" table-type="InnoDB" character-set="latin1" collate="latin1_swedish_ci"> <read-data reader-name="seed"/> <read-data reader-name="seed-initial"/> <read-data reader-name="demo"/> <read-data reader-name="ext"/> <inline-jdbc jdbc-driver="com.mysql.jdbc.Driver" jdbc-uri="jdbc:mysql://localhost/ofbiztrunk" jdbc-username="root" jdbc-password="123456" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="20"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/MySqlDataSource" isolation-level="Serializable"/> --> </datasource>datasource配置里面有一个field-type-name="mysql",到entitymodel.xml配置文件就知道是干吗用的了。
2.entitymodel.xml & entitygroup.xml
OFBiz本质上来说还是面向数据库的设计,entitymodel.xml的配置entity的,entity实体对应数据库里面的table,实体的field对应数据库里面的字段,如下是一个entity配置:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><entity entity-name="Customerinfo" package-name="com.aicent.ccb" no-auto-stamp="true" title="customerinfo"> <field name="id" type="int10" ></field> <field name="name" type="varchar128"></field> <field name="customernameshort" type="varchar16"></field> <field name="country" type="varchar64"></field> <field name="businessaddr" type="text"></field> <field name="mailaddr" type="text"></field> <field name="billaddr" type="text"></field> <field name="phone" type="varchar32"></field> <field name="fax" type="varchar32"></field> <field name="website" type="varchar128"></field> <field name="note" type="text"></field></entity>
里面有一个type,这个type对应数据库字段的类型(日期型,字符串型,整型等),这个对于关系在哪里呢?就在刚才说的field-type-name里面配置,如果配置为mysql,那么entitygengine.xml中mysql的
field-type指向的文件是:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><field-type name="mysql" loader="fieldfile" location="fieldtypemysql.xml"/>
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> <fieldtypemodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/fieldtypemodel.xsd"> <!-- ===================== field-type-def ==================== --> <!-- General Types --> <field-type-def type="blob" sql-type="BLOB" java-type="java.sql.Blob"></field-type-def> <field-type-def type="date-time" sql-type="DATETIME" java-type="java.sql.Timestamp"></field-type-def> <field-type-def type="date" sql-type="DATE" java-type="java.sql.Date"></field-type-def> <field-type-def type="time" sql-type="TIME" java-type="java.sql.Time"></field-type-def> <field-type-def type="currency-amount" sql-type="DECIMAL(18,2)" java-type="java.math.BigDecimal"><validate method="isSignedDouble" /></field-type-def> <field-type-def type="currency-precise" sql-type="DECIMAL(18,3)" java-type="java.math.BigDecimal"><validate method="isSignedDouble" /></field-type-def> <field-type-def type="fixed-point" sql-type="DECIMAL(18,6)" java-type="java.math.BigDecimal"><validate method="isSignedDouble" /></field-type-def> <field-type-def type="floating-point" sql-type="DECIMAL(18,6)" java-type="Double"><validate method="isSignedDouble" /></field-type-def> <field-type-def type="numeric" sql-type="DECIMAL(20,0)" java-type="Long"><validate method="isSignedLong" /></field-type-def> <field-type-def type="integer" sql-type="INTEGER" java-type="Integer"></field-type-def> <field-type-def type="id" sql-type="VARCHAR(20)" java-type="String"></field-type-def> <field-type-def type="id-long" sql-type="VARCHAR(60)" java-type="String"></field-type-def> <field-type-def type="id-vlong" sql-type="VARCHAR(250)" java-type="String"></field-type-def> <field-type-def type="indicator" sql-type="CHAR(1)" java-type="String"></field-type-def> <field-type-def type="very-short" sql-type="VARCHAR(10)" java-type="String"></field-type-def> <field-type-def type="short-varchar" sql-type="VARCHAR(60)" java-type="String"></field-type-def> <field-type-def type="long-varchar" sql-type="VARCHAR(255)" java-type="String"></field-type-def> <field-type-def type="very-long" sql-type="LONGTEXT" java-type="String"></field-type-def> <field-type-def type="comment" sql-type="VARCHAR(255)" java-type="String"></field-type-def> <field-type-def type="description" sql-type="VARCHAR(255)" java-type="String"></field-type-def> <field-type-def type="name" sql-type="VARCHAR(100)" java-type="String"></field-type-def> <field-type-def type="value" sql-type="VARCHAR(255)" java-type="String"></field-type-def> <!-- customize field type definitions for ccb --> <field-type-def type="text" sql-type="TEXT" java-type="String"></field-type-def> <field-type-def type="char" sql-type="CHAR(1)" java-type="String"></field-type-def> <field-type-def type="char125" sql-type="CHAR(125)" java-type="String"></field-type-def> <field-type-def type="varchar16" sql-type="VARCHAR(16)" java-type="String"></field-type-def> <field-type-def type="varchar20" sql-type="VARCHAR(20)" java-type="String"></field-type-def> <field-type-def type="varchar24" sql-type="VARCHAR(24)" java-type="String"></field-type-def> <field-type-def type="varchar50" sql-type="VARCHAR(50)" java-type="String"></field-type-def> <field-type-def type="varchar64" sql-type="VARCHAR(64)" java-type="String"></field-type-def> <field-type-def type="varchar128" sql-type="VARCHAR(128)" java-type="String"></field-type-def></fieldtypemodel>
OFBiz这里为什么不在entitymodel里面直接使用字段在数据库中的类型,而这么绕呢?我想至少有两个目的:首先是公司企业开发时可以针对使用的字段类型有一个规范,所有的字段都采用这个配置文件中的字段类型,而不是开发人员自己随意定义数据库字段的类型;第二是为了使用不同Vendor的数据库,如果想从mysql换成oracle,只需要定义另一份fieldtypeoracle.xml,field-type-def中sql-type不变,而sql-tye换成oracle的类型即可。
entitygroup.xml配置文件时用于配置entitymodel.xml中配置的entity是属于哪个group的,这个group对应entityengine.xml中的group-name,如果忘记在entitygroup.xml中配置,那么在OFBiz 9之前,这个entity就无法使用,不会创建相应的table,OFBiz 9以后,默认的group name是org.ofbiz。
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><entitygroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/entitygroup.xsd"> <entity-group group="com.aicent" entity="Customerextra" /> <entity-group group="com.aicent" entity="Customerinfo" /></entitygroup>
3.ofbiz-containers.xml 里面配置了各种容器类,经常修改的容器就是name为catalina-container的容器,使用的是embeded tomcat,里面可以修改各种tomcat的配置项,就像我们修改tomcat的配置文件server.xml一样,在里面修改端口等信息。
4.log4j.xml 日志配置文件
5.component-load.xml 这个文件在几个文件夹中都存在,如framework,applications,specialpurpose中。OFBiz将一个个应用实现为component,这些componnet是就好像tomcat中webapps中的一个个web应用。每次是否加载这个component可以在component-load.xml配置,如果不想加载,注释掉就可以。
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/component-loader.xsd"> <load-component component-location="commonext"/><!-- common component used by most other components --> <load-component component-location="securityext"/> <!-- <load-component component-location="party"/> <load-component component-location="content"/> <load-component component-location="workeffort"/> <load-component component-location="product"/> <load-component component-location="manufacturing"/> <load-component component-location="accounting"/> <load-component component-location="humanres"/> <load-component component-location="order"/> <load-component component-location="marketing"/> --></component-loader>
到底哪些目录下的component-load.xml有效呢,这个目录在framework/base/config/component-load.xml进进行配置:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><component-loader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/component-loader.xsd"> <load-components parent-directory="framework"/> <load-components parent-directory="themes"/> <load-components parent-directory="applications"/> <load-components parent-directory="specialpurpose"/> <load-components parent-directory="hot-deploy"/></component-loader>
6.general.properties 这里面配置的东西很多,大家自己去看吧。
7.cache.properties 配置OFBiz中的缓存,配置这个文件需要对OFBiz中的缓存有所了解,这个在后续文章中进行分析。
其他还有一些比较配置的文件,就不一一说明了
- OFBiz 开发需要用到的几个重要(配置)文件
- OFBiz开发需要用到的几个重要(配置)文件
- OFBiz 开发需要用到的几个重要(配置)文件
- OFBiz 开发需要用到的几个重要(配置)文件
- OFBiz 开发需要用到的几个重要(配置)文件
- OFBiz 开发需要用到的几个重要(配置)文件
- OFBiz 开发需要用到的几个重要(配置)文件
- OFBiz 开发需要用到的几个重要(配置)文件
- GitHud中重要的命令(随时需要用到)
- 安装Hadoop需要配置的几个文件
- OFBiz开发环境的配置
- ofbiz几个需要权限判断的地方整理
- 需要知道的几个重要IT缩略语
- myeclipse 几个重要的文件
- ofbiz开发环境的配置总结
- 开发微信公众号需要配置的几个地方
- 开发query_find表单用到的几个触发器
- 合作开发用到的几个 设计模式
- unresolved external symbol __错误解决
- Silverlight CookiesHelper类
- Sicily 1344. 数列
- selenium试用
- jsp连接数据库的报错
- OFBiz 开发需要用到的几个重要(配置)文件
- python性能优化
- Address already in use: JVM_Bind<null>:8080
- 金蝶EAS BOS开发之扩展表应用
- 举例说明这些键的用法
- C++指针
- 详解EJB技术及实现原理
- C#调用SQL SERVER存储过程
- 给定一个数N,求出1-N之间的数字有多少个1,例如N=11时结果为4(只有1,10,11含1)