ofbiz连接mysql并创建独立数据库

                                               Ofbiz:数据库移植mysql并创建自己的mysql

 

         Ofbiz原生数据库是derby,而作为开发使用,其就不能满足我们需求,ofbiz支持多种数据库,我们就可以将数据移植到mysql.

 

         第一步:找到framework\entity\config\entityengine.xml这个文件,找到之后进行下面相关操作.

         1、添加或者修改datasource,因为该文件本身存在这些资料,只是被注释掉了.

<datasourcename="localmysql" 

       helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" 

       field-type-name="mysql" 

       check-on-start="true" 

       add-missing-on-start="true" 

       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="utf8" 

       collate="utf8_general_ci"> 

   <read-data reader-name="tenant"/> 

   <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:3306/ofbiz?autoReconnect=true&characterEncoding=UTF-8" 

           jdbc-username="root" 

           jdbc-password="" 

           isolation-level="ReadCommitted" 

           pool-minsize="2" 

           pool-maxsize="250" 

           time-between-eviction-runs-millis="600000"/> 

</datasource> 

 

 <datasource name="localmysqlolap" 

       helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" 

       field-type-name="mysql" 

       check-on-start="true" 

       add-missing-on-start="true" 

       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="utf8"  

       collate="utf8_general_ci "> 

   <read-data reader-name="tenant"/> 

   <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:3306/ofbizolap?autoReconnect=true&characterEncoding=UTF-8" 

           jdbc-username="root" 

           jdbc-password="" 

           isolation-level="ReadCommitted" 

           pool-minsize="2" 

           pool-maxsize="250" 

           time-between-eviction-runs-millis="600000"/> 

</datasource> 

 

   <datasource name="localmysqltenant" 

       helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" 

       field-type-name="mysql" 

       check-on-start="true" 

       add-missing-on-start="true" 

       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="utf8" 

       collate="utf8_general_ci"> 

   <read-data reader-name="tenant"/> 

   <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:3306/ofbiztenant?autoReconnect=true&characterEncoding=UTF-8" 

           jdbc-username="root" 

           jdbc-password="" 

           isolation-level="ReadCommitted" 

           pool-minsize="2" 

           pool-maxsize="250" 

           time-between-eviction-runs-millis="600000"/> 

</datasource> 

          2.还是在该文件添加一些内容,注意上面的datasource name=""与下面的datasource-name是对应的.

<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="localmysql"/>

      <group-map group-name="org.ofbiz.olap"datasource-name="localmysqlolap"/>

      <group-map group-name="org.ofbiz.tenant" datasource-name="localmysqltenant"/>

   </delegator>

   

   <delegator name="default-no-eca"entity-model-reader="main" entity-group-reader="main"entity-eca-reader="main" entity-eca-enabled="false"distributed-cache-clear-enabled="false">

             <group-mapgroup-name="org.ofbiz" datasource-name="localmysql"/>

      <group-map group-name="org.ofbiz.olap"datasource-name="localmysqlolap"/>

      <group-map group-name="org.ofbiz.tenant"datasource-name="localmysqltenant"/>

   </delegator>

 

   <!-- be sure that your default delegator (or the one you use) usesthe same datasource for test. You must run "ant load-demo" beforerunning "ant run-tests" -->

   <delegator name="test" entity-model-reader="main"entity-group-reader="main" entity-eca-reader="main">

        <group-mapgroup-name="org.ofbiz" datasource-name="localmysql"/>

      <group-map group-name="org.ofbiz.olap"datasource-name="localmysqlolap"/>

      <group-map group-name="org.ofbiz.tenant" datasource-name="localmysqltenant"/>

</delegator>

        datasource-name:就是配置1中对应的数据库名

        group-name :是用来进行分组辨识的,即可以将数据资料移植到不同的数据库

 

         问题:可以一直为什么要创建三个数据库,一个不行?带着这个问题我们进行下面操作.

 

 

         第二步:找到framework\entity\entitydef\entitygroup.xml文件,内容如下

<span><?xml version="1.0"encoding="UTF-8"?>

<entitygroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitygroup.xsd">

 

   <!-- ========================================================= -->

   <!-- org.ofbiz.entity.tenant -->

   <!-- ========================================================= -->

   <entity-group group="org.ofbiz.tenant"entity="Tenant"/>

   <entity-group group="org.ofbiz.tenant"entity="TenantDataSource"/>

   <entity-group group="org.ofbiz.tenant"entity="Component"/>

   <entity-group group="org.ofbiz.tenant"entity="TenantComponent"/>

   <entity-group group="org.ofbiz.tenant"entity="TenantDomainName"/>

</entitygroup></span>

 

        就是这个配置将Tenant等一些实体(数据库中的表,至于创建方式我就不在这里讲述了)分到org.ofbiz.tenant这个组名的数据库中即上面中第三个数据库,数据库名叫localmysqltenant.当然若没有这种配置,那么数据资料就会到默认数据库中,但是这里是项目自带,所以我们就需要这样一个数据库,同样的道理还有到另一个数据库中的资料,加上默认的,所以我们需要三个数据库.

 

至于这些文件的加载在当前目下ofbiz-component.xml文件下,如下:

   

   <entity-resource type="model"reader-name="main" loader="main"location="entitydef/entitymodel.xml"/>

   <entity-resourcetype="group" reader-name="main" loader="main"location="entitydef/entitygroup.xml"/>


 

          注意:framework/base/lib下需要导入mysql的包

 

          上面就配置完成,然后我们在数据库创建对应的三个数据库名会跟上文中一一对应(注意编码一致),在启动的时候带参数load-data(如何代参运行,不知道的话,详情百度,嘻嘻)

 

 

下面我们独立创建一个数据库,来放我们自己的资料.

相应文件的位置:

      

        第一步:在上文配置文件framework\entity\config\entityengine.xml下加入相应的配置,我的资料如下:

       

 <datasourcename="wuliys" 
<pre name="code" class="html">
       helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" 

       field-type-name="mysql" 

       check-on-start="true" 

       add-missing-on-start="true" 

       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="utf8" 

       collate="utf8_general_ci"> 

   <read-data reader-name="tenant"/> 

   <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:3306/wuliys?autoReconnect=true&characterEncoding=UTF-8" 

           jdbc-username="root" 

           jdbc-password="" 

           isolation-level="ReadCommitted" 

           pool-minsize="2" 

           pool-maxsize="250" 

           time-between-eviction-runs-millis="600000"/> 

</datasource>


 

<pre name="code" class="html"><span><group-mapgroup-name="org.ofbiz.wuliys" datasource-name="wuliys"/></span>


至于这些资料所放位置与上文一一对应

 

        第二步:创建对应的数据库wuliys,并设置其编码为utf-8,字符集utf8_general_ci

 

       第三步:创建一个实体,文件路径\myparty\entitydef\entitymodel.xml,注意其可以是hot-deploy下的一个模块,也可以是你分离出来的一个模块.内容如下:

<pre name="code" class="html"><span><entitymodelxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitymodel.xsd">

    <title>Entity of anApache OFBiz Component</title>

   <description>None</description>

   <version>1.0</version>

    <entityentity-name="Test" package-name="wuliys">

         <field name="myId" type="id-ne"></field>

         <field name="myName"type="id-ne"></field>

         <prim-key field="myId"/>

    </entity>  

</entitymodel></span>

 

     第四步:将创建的实体引入到自己所想到的分组,文件路径: \myparty\entitydef\entitygroup.xml,内容如下:

<span><?xml version="1.0" encoding="UTF-8"?>

<entitygroupxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitygroup.xsd">

<entity-group entity="Test"group="org.ofbiz.wuliys"/>

</entitygroup></span><span> 
</span>

   

    第五步:在该实体下创建一条数据,文件路径\myparty\data\testdata.xml,内容如下:

<span><?xml version="1.0" encoding="UTF-8"?>

   <entity-engine-xml>

       <Test myName="jack"></Test>

       <Test myName="zheng"></Test>

  </entity-engine-xml> 
</span>

          第六步:将这写配置文件在该模块的ofbiz-component.xml下加载,内容如下

<span><?xmlversion="1.0" encoding="UTF-8"?>

<ofbiz-componentname="myparty"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">

      <resource-loader name="main"type="component"/>

      <entity-resource type="model"reader-name="main" loader="main"location="entitydef/entitymodel.xml"/>

       <entity-resource type="group"reader-name="main" loader="main"location="entitydef/entitygroup.xml"/>

            <entity-resourcetype="data" reader-name="seed" loader="main"location="data/testdata.xml"/>

         <webappname="myparty"

               server="default-server"

               location="webapp/myparty"

               mount-point="/myparty"></webapp>

</ofbiz-component></span><span> 
</span>

          而后带参load-data启动一下,就在数据库相应位置创建好了自己的数据资料.

                       

                  备注:新手写blog,查阅网上的相关资料,加上自己的一些想法


 

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

linux的一些简单命令 - 2016-07-25 14:07:59

这里只是列出实际中使用频率较高的,可以通过 man 命令或者 命令 –help 来查看更为详细的内容 文件有关的 1:【ls命令】 ls [option] …[file]… -a all 列出所有的文件 包括隐藏文件 [eg ls -a /home] -l 列出详细的文件信息 可以简写为ll filename [eg: ls -l /home or ll /home ] -h –human-readable 将文件的大小通过字节的方式列出来 -R 递归显示出该目录所有的文件 -d 只显示本文件下面 可以通

Nginx下的rewrite规则 - 2016-07-25 14:07:08

正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: * -f 和! -f 用来判断是否存在文件* -d 和! -d 用来判断是否存在目录* -e 和! -e 用来判断是否存在文件或目录* -x和!-x 用来判断文件是否可执行 rewrite指令的最后一项参数为flag标记,flag标记有: 1. last 相当于apache里面的[L]标记,表示rewrite。 2. break 本条规则匹配

Apache Flink Client生成StreamGraph - 2016-07-25 04:07:11

概述 上文我们分析提交流程时, RemoteStreamEnvironment 类的 execute 方法的第一步就是生成 StreamGraph 。 StreamGraph 是用于表示流的拓扑结构的数据结构,它包含了生成 JobGraph 的必要信息。它的类继承关系图如下: 如果你按照 StreamGraph 的继承链向上追溯,最终会发现它实现了接口 FlinkPlan 。Flink在这里效仿的是数据库的执行SQL是产生执行计划的机制, FlinkPlan 定义在Flink的优化器相关的包中,针对流应用

zabbix wechat 报警 - 2016-07-24 22:07:29

监控在运维工作中是比不可少的一环,那伴随着监控也同时会涉及到告警机制,一般的监控到的结果是成功或者失败,如Ping不通、访问网页出错、连接不到Socket,发生时这些称之为故障,故障是最优先的告警。那针对于 zabbix 的告警可以有多种方式去做: zabbix三种常见报警介质: 短信:它的好处是不用联网手机有信号就行,但是需要有短信网关,需要花钱。 邮件:它也可以做到手机短信通知,基本现在邮箱都有这个功能(如果你使用的是移动的手机号,可以让zabbix将报警信息发送到139邮箱,再通过139绑定到手机号
J2EE进阶(十一)SSH框架整合常见问题汇总(二) 问题 8       java.lang.ClassCastException : java.lang.String cannot be cast to java.lang.Boolean      解决       数据库中userdetail表的映射文件如下,可见xb字段数据类型为boolean类型,而自己在userdetail模型类中定义的类型为String类型。为此可以得出这样的结论。模型类中的数据及类型必须与数据表映射文件中的字段信息保持一致
背景: 为了方便整体产品的发布,希望通过docker实现增量发布。大致的思路如下: is-there-a-way-to-add-only-changed-files-to-a-docker-image-as-a-new-layer-with 。本博文对这种方式进行了尝试,与此同时简单介绍如何通过Dockerfile来创建Docker镜像。 前期准备: 解决centos的网络问题 【can not find a valid baseurl for repo: base/7/x86_64】 ,使用dhclie

pcap文件的python解析实例 - 2016-07-24 19:07:52

最近一直在分析数据包。 同时也一直想学python。 凑一块儿了...于是,便开工了。座椅爆炸! 正文 首先要说的是,我知道python有很多解析pcap文件的库,这里不使用它们的原因是为了理解pcap文件的格式细节。使用tcpdump你可以很容易抓取到一系列的数据包,然而tcpdump并没有分析数据包的功能,如果想从这个抓包文件中分析出一些端倪,比如重传情况,你必须使用wireshark之类的软件,用wireshark打开tcpdump抓取的pcap文件,如果你看到了一堆堆的深红色(类似静脉血管里流出的猪

CPU和内存监测 - 2016-07-24 19:07:07

CPU和内存监测 vmstat命令的VM模式 vmstat可以监测给定时间间隔的服务器的状态值,包括CPU的使用率,内存的使用,虚拟内存的交换情况,IO读写情况。 主要从/proc/meminfo,/proc/stat和/proc/*/stat中获取数据 常用手段vmstat [采样的时间间隔秒数] [采样的次数],举例如下: [root@dtbase-master- 2 /root] #vmstat 5 10 procs -----------memory---------- ---swap-- ---
正文 为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生。关于它的介绍详见《 PCAP Next Generation Dump File Format 》         当前的wireshark/tshark抓取的包默认都被保存为pcapng格式。         形而上的论述就不多谈了,直接给出一个pcapng数据包文件的例子: 然后我强烈建议,对着《 PCAP Next Generation Dump File Format 》来把一个实际抓取的pcapng文件里面
PS:历史原因作者账号名为:ymh198816,但事实上作者的生日并不是1988年1月6日 今天作者要在这里通过一个简单的电商网站订单实时分析系统和大家一起梳理一下大数据环境下的实时分析系统的架构模型。当然这个架构模型只是实时分析技术的一 个简单的入门级架构,实际生产环境中的大数据实时分析技术还涉及到很多细节的处理, 比如使用Storm的ACK机制保证数据都能被正确处理, 集群的高可用架构, 消费数据时如何处理重复数据或者丢失数据等问题,根据不同的业务场景,对数据的可靠性要求以及系统的复杂度的要求也会不同