Assumption about environment: PostgreSQL 9.6.3, Windows 10 Pro x64. This guideline is pragmatic, you should change few things (for example: folder path, by yourself), but it will help you imagine real world easily.
Download OFBiz source code (tagged release), this is version 16.11.02 http://www.apache.org/dyn/closer.lua/ofbiz/apache-ofbiz-16.11.02.zip
Unzip to a specific folder, for example: C:\Users\vydn\Downloads\apache-ofbiz-16.11.02
Download PostgreSQL 9.6.3 for Windows x64
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows
Section Version of PostgreSQL, choose "PostgreSQL 9.6.3".
Section Operating system, choose "Windows x86-64".
Install PostgreSQL step-by-step by installer.
Download pgAdmin 4 v1.5 for Windows at https://www.pgadmin.org/download/pgadmin-4-windows/
Install pgAdmin step-by-step by installer.
After installing pgAdmin success, open pgAdmin, setup connection:
Create 3 database schemas: ofbiz, ofbizolap, ofbiztenant
Open file C:\Users\vydn\Downloads\apache-ofbiz-16.11.02\framework\entity\config\entityengine.xml by Notepad++, change it to
<?xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- - This file configures the Entity Engine JDBC (or other DataSource) and JTA access. For a detailed description see the core/docs/entityconfig.html file. --> <entity-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entity-config.xsd"> <resource-loader name="fieldfile" class="org.apache.ofbiz.base.config.FileLoader" prepend-env="ofbiz.home" prefix="/framework/entity/fieldtype/"/> <!-- the transaction factory class to use, one is needed for each way of getting JTA interfaces --> <!-- Use this one for Geronimo --> <transaction-factory class="org.apache.ofbiz.entity.transaction.GeronimoTransactionFactory"/> <!-- Use this one for getting the JTA objects from JNDI --> <!-- NOTE: to use the JndiFactory you must specify the necessary JNDI properties <transaction-factory class="org.apache.ofbiz.entity.transaction.JNDITransactionFactory"> <user-transaction-jndi jndi-server-name="default" jndi-name="java:comp/UserTransaction"/> <transaction-manager-jndi jndi-server-name="default" jndi-name="java:comp/UserTransaction"/> </transaction-factory> --> <!-- It is common to use UserTransaction for the TransactionManager, but if that doesn't work, try this: <transaction-manager-jndi jndi-server-name="default" jndi-name="java:comp/TransactionManager"/> Common UserTransaction locations: java:comp/UserTransaction (most servers: Resin, Orion, OC4J, etc) UserTransaction (RexIP) JBoss uses two different objects for the UserTransaction and TransactionManager interfaces; they are located in JNDI at: "java:comp/UserTransaction" and "java:/TransactionManager" respectively --> <!-- the connection factory class to use, one is needed for obtaining connections/pools for defined resources --> <connection-factory class="org.apache.ofbiz.entity.connection.DBCPConnectionFactory"/> <debug-xa-resources value="false" /> <!-- see https://issues.apache.org/jira/browse/OFBIZ-4282 for more --> <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.apache.ofbiz" datasource-name="localpostgres"/> <group-map group-name="org.apache.ofbiz.olap" datasource-name="localpostolap"/> <group-map group-name="org.apache.ofbiz.tenant" datasource-name="localposttenant"/> </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-map group-name="org.apache.ofbiz" datasource-name="localpostgres"/> <group-map group-name="org.apache.ofbiz.olap" datasource-name="localpostolap"/> <group-map group-name="org.apache.ofbiz.tenant" datasource-name="localposttenant"/> </delegator> <!-- be sure that your default delegator (or the one you use) uses the same datasource for test. You must run "gradlew loadDefault" before running "gradlew testIntegration" --> <delegator name="test" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main"> <group-map group-name="org.apache.ofbiz" datasource-name="localpostgres"/> <group-map group-name="org.apache.ofbiz.olap" datasource-name="localpostolap"/> <group-map group-name="org.apache.ofbiz.tenant" datasource-name="localposttenant"/> </delegator> <!-- need to at least define a name for each component to use --> <entity-model-reader name="main"/> <!-- need to at least define a name for each component to use --> <entity-group-reader name="main"/> <!-- need to at least define a name for each component to use --> <entity-eca-reader name="main"/> <!-- need to at least define a name for each component to use --> <!-- defining: tenant = OFBiz and External Tenant Data seed = OFBiz and External Seed Data - to be maintained along with source and updated whenever a system deployment is updated seed-initial = OFBiz and External Seed Data - to be maintained along with source like other seed data, but only loaded initially and not updated when a system is updated except manually reviewing each line demo = OFBiz Only Demo Data ext = External General Data (custom) ext-test = External Test Data (custom) ext-demo = External Demo Data (custom) --> <entity-data-reader name="tenant"/> <entity-data-reader name="seed"/> <entity-data-reader name="seed-initial"/> <entity-data-reader name="demo"/> <entity-data-reader name="ext"/> <entity-data-reader name="ext-test"/> <entity-data-reader name="ext-demo"/> <field-type name="hsql" loader="fieldfile" location="fieldtypehsql.xml"/> <field-type name="derby" loader="fieldfile" location="fieldtypederby.xml"/> <field-type name="daffodil" loader="fieldfile" location="fieldtypedaffodil.xml"/> <field-type name="axion" loader="fieldfile" location="fieldtypeaxion.xml"/> <field-type name="mysql" loader="fieldfile" location="fieldtypemysql.xml"/> <field-type name="postgres" loader="fieldfile" location="fieldtypepostgres.xml"/> <field-type name="oracle" loader="fieldfile" location="fieldtypeoracle.xml"/> <field-type name="sapdb" loader="fieldfile" location="fieldtypesapdb.xml"/> <field-type name="sybase" loader="fieldfile" location="fieldtypesybase.xml"/> <field-type name="firebird" loader="fieldfile" location="fieldtypefirebird.xml"/> <field-type name="mssql" loader="fieldfile" location="fieldtypemssql.xml"/> <field-type name="advantage" loader="fieldfile" location="fieldtypeadvantage.xml"/> <!-- For DAO/JDBC Helper: Tries: 1. JNDI Datasource IF jdbc.jndi.name, context.provider, etc are specified 2. Embedded (JOTM) if available (uses jdbc.driver, jdbc.uri, jdbc.username, jdbc.password, isolation.level) 3. Direct to manually laoded JDBC driver (uses jdbc.driver, jdbc.uri, jdbc.username, jdbc.password) Transaction Isolation Levels - (<helperName>.isolation.level) can be as follows: * None * ReadCommitted (Recommended) * ReadUncommitted * RepeatableRead * Serializable (NOT Recommended) * Not set uses database default --> <datasource name="localhsql" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="hsql" check-on-start="true" add-missing-on-start="true" check-indices-on-start="true" use-foreign-keys="true" use-foreign-key-indices="true" use-fk-initially-deferred="false" join-style="ansi-no-parenthesis" alias-view-columns="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.hsqldb.jdbcDriver" jdbc-uri="jdbc:hsqldb:runtime/data/hsqldb/ofbiz" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/HsqlDataSource" isolation-level="ReadUncommitted"/> --> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localhsql" isolation-level="ReadUncommitted"/> --> <!-- Orion Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="localhsqlDataSource"/> --> <!-- Weblogic Style JNDI name --> </datasource> <datasource name="localderby" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="OFBIZ" field-type-name="derby" check-on-start="true" add-missing-on-start="true" use-pk-constraint-names="false" use-indices-unique="false" alias-view-columns="false" use-order-by-nulls="true" offset-style="fetch"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <!-- beware use-indices-unique="false" is needed because of Derby bug with null values in a unique index --> <inline-jdbc jdbc-driver="org.apache.derby.jdbc.EmbeddedDriver" jdbc-uri="jdbc:derby:ofbiz;create=true" jdbc-username="ofbiz" jdbc-password-lookup="derby-ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" test-on-borrow="true" pool-jdbc-test-stmt="values 1" soft-min-evictable-idle-time-millis="600000" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/DerbyDataSource" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localderbyodbc" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="OFBIZ" field-type-name="derby" check-on-start="true" add-missing-on-start="true" use-pk-constraint-names="false" use-indices-unique="false" alias-view-columns="false" use-order-by-nulls="true" offset-style="fetch"> <!-- beware use-indices-unique="false" is needed because of Derby bug with null values in a unique index --> <inline-jdbc jdbc-driver="org.apache.derby.jdbc.EmbeddedDriver" jdbc-uri="jdbc:derby:ofbizodbc;create=true" jdbc-username="ofbiz" jdbc-password-lookup="derby-ofbizodbc" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/DerbyDataSource" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localderbyolap" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="OFBIZ" field-type-name="derby" check-on-start="true" add-missing-on-start="true" use-pk-constraint-names="false" use-indices-unique="false" alias-view-columns="false" use-order-by-nulls="true"> <!-- beware use-indices-unique="false" is needed because of Derby bug with null values in a unique index --> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.apache.derby.jdbc.EmbeddedDriver" jdbc-uri="jdbc:derby:ofbizolap;create=true" jdbc-username="ofbiz" jdbc-password-lookup="derby-ofbizolap" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/DerbyDataSource" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localderbytenant" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="OFBIZ" field-type-name="derby" check-on-start="true" add-missing-on-start="true" use-pk-constraint-names="false" use-indices-unique="false" alias-view-columns="false" use-order-by-nulls="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <!-- beware use-indices-unique="false" is needed because of Derby bug with null values in a unique index --> <inline-jdbc jdbc-driver="org.apache.derby.jdbc.EmbeddedDriver" jdbc-uri="jdbc:derby:ofbiztenant;create=true" jdbc-username="ofbiz" jdbc-password-lookup="derby-ofbiztenant" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/DerbyDataSource" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localdaffodil" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="daffodil" check-on-start="true" add-missing-on-start="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <!-- this setup is for the embedded version of Daffodil, with in.co.daffodil.db.jdbc.DaffodilDBDriver --> <!-- note that Daffodil can also run in a network mode with the driver class: in.co.daffodil.db.rmi.RmiDaffodilDBDriver and URI: jdbc:daffodilDB://<hostname>:<port>/ofbiz;create=true --> <inline-jdbc jdbc-driver="in.co.daffodil.db.jdbc.DaffodilDBDriver" jdbc-uri="jdbc:daffodilDB_embedded:ofbiz;create=true" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/DaffodilDataSource" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localaxion" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="axion" check-on-start="true" add-missing-on-start="true" use-pk-constraint-names="false"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.axiondb.jdbc.AxionDriver" jdbc-uri="jdbc:axiondb:ofbiz:data/axion/ofbiz" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource> <datasource name="localmysql" helper-class="org.apache.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="latin1" collate="latin1_general_cs"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.mysql.jdbc.Driver" jdbc-uri="jdbc:mysql://127.0.0.1/ofbiz?autoReconnect=true" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/><!-- Please note that at least one person has experienced a problem with this value with MySQL and had to set it to -1 in order to avoid this issue. For more look at http://markmail.org/thread/5sivpykv7xkl66px and http://commons.apache.org/dbcp/configuration.html--> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/MySqlDataSource" isolation-level="Serializable"/> --> </datasource> <datasource name="localmysqlolap" helper-class="org.apache.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="latin1" collate="latin1_general_cs"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.mysql.jdbc.Driver" jdbc-uri="jdbc:mysql://127.0.0.1/ofbizolap?autoReconnect=true" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/><!-- Please note that at least one person has experienced a problem with this value with MySQL and had to set it to -1 in order to avoid this issue. For more look at http://markmail.org/thread/5sivpykv7xkl66px and http://commons.apache.org/dbcp/configuration.html--> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/MySqlDataSource" isolation-level="Serializable"/> --> </datasource> <datasource name="localmysqltenant" helper-class="org.apache.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="latin1" collate="latin1_general_cs"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.mysql.jdbc.Driver" jdbc-uri="jdbc:mysql://127.0.0.1/ofbiztenant?autoReconnect=true" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/><!-- Please note that at least one person has experienced a problem with this value with MySQL and had to set it to -1 in order to avoid this issue. For more look at http://markmail.org/thread/5sivpykv7xkl66px and http://commons.apache.org/dbcp/configuration.html--> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/MySqlDataSource" isolation-level="Serializable"/> --> </datasource> <datasource name="odbcmysql" helper-class="org.apache.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="latin1" collate="latin1_general_cs"> <read-data reader-name="tenant"/> <read-data reader-name="seed"/> <inline-jdbc jdbc-driver="com.mysql.jdbc.Driver" jdbc-uri="jdbc:mysql://127.0.0.1/ofbiz_odbc?autoReconnect=true" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/MySqlDataSource" isolation-level="Serializable"/> --> </datasource> <datasource name="localpostgres" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="public" field-type-name="postgres" check-on-start="true" add-missing-on-start="true" use-fk-initially-deferred="false" alias-view-columns="false" join-style="ansi" use-binary-type-for-blob="true" use-order-by-nulls="true" result-fetch-size="50"> <!-- Comment out the result-fetch-size attribute for jdbc driver versions older than 8.0. Not recommended to use those though. They are archived unsupported versions: http://jdbc.postgresql.org/download.html --> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.postgresql.Driver" jdbc-uri="jdbc:postgresql://127.0.0.1:5433/ofbiz" jdbc-username="postgres" jdbc-password="postgres" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/><!-- Be warned that at this date (2009-09-20) the max_connections parameters in postgresql.conf is set by default to 100 by the initdb process see http://www.postgresql.org/docs/8.4/static/runtime-config-connection.html#GUC-MAX-CONNECTIONS--> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="java:comp/env/jdbc/localpostgres" isolation-level="ReadCommitted"/>--> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localpostgres" isolation-level="ReadCommitted"/> --> <!-- Orion Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="localweblogic" jndi-name="PostgresDataSource"/> --> <!-- Weblogic Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="jdbc/localpostgres" isolation-level="ReadCommitted"/> --> <!-- JRun4 Style JNDI name --> <!-- <tyrex-dataSource dataSource-name="localpostgres" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localpostolap" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="public" field-type-name="postgres" check-on-start="true" add-missing-on-start="true" use-fk-initially-deferred="false" alias-view-columns="false" join-style="ansi" result-fetch-size="50" use-binary-type-for-blob="true" use-order-by-nulls="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.postgresql.Driver" jdbc-uri="jdbc:postgresql://127.0.0.1:5433/ofbizolap" jdbc-username="postgres" jdbc-password="postgres" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/><!-- Be warned that at this date (2009-09-20) the max_connections parameters in postgresql.conf is set by default to 100 by the initdb process see http://www.postgresql.org/docs/8.4/static/runtime-config-connection.html#GUC-MAX-CONNECTIONS--> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="java:comp/env/jdbc/localpostgres" isolation-level="ReadCommitted"/>--> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localpostgres" isolation-level="ReadCommitted"/> --> <!-- Orion Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="localweblogic" jndi-name="PostgresDataSource"/> --> <!-- Weblogic Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="jdbc/localpostgres" isolation-level="ReadCommitted"/> --> <!-- JRun4 Style JNDI name --> <!-- <tyrex-dataSource dataSource-name="localpostgres" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localposttenant" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="public" field-type-name="postgres" check-on-start="true" add-missing-on-start="true" use-fk-initially-deferred="false" alias-view-columns="false" join-style="ansi" result-fetch-size="50" use-binary-type-for-blob="true" use-order-by-nulls="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.postgresql.Driver" jdbc-uri="jdbc:postgresql://127.0.0.1:5433/ofbiztenant" jdbc-username="postgres" jdbc-password="postgres" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/><!-- Be warned that at this date (2009-09-20) the max_connections parameters in postgresql.conf is set by default to 100 by the initdb process see http://www.postgresql.org/docs/8.4/static/runtime-config-connection.html#GUC-MAX-CONNECTIONS--> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="java:comp/env/jdbc/localpostgres" isolation-level="ReadCommitted"/>--> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localpostgres" isolation-level="ReadCommitted"/> --> <!-- Orion Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="localweblogic" jndi-name="PostgresDataSource"/> --> <!-- Weblogic Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="jdbc/localpostgres" isolation-level="ReadCommitted"/> --> <!-- JRun4 Style JNDI name --> <!-- <tyrex-dataSource dataSource-name="localpostgres" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localoracle" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="OFBIZ" field-type-name="oracle" check-on-start="true" add-missing-on-start="true" alias-view-columns="false" join-style="ansi" use-order-by-nulls="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="oracle.jdbc.driver.OracleDriver" jdbc-uri="jdbc:oracle:thin:@127.0.0.1:1521:orcl" jdbc-username="ofbiz" jdbc-password="ofbiz" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource> <datasource name="localoracledd" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="OFBIZ" field-type-name="oracle" check-on-start="true" add-missing-on-start="true" join-style="ansi" use-order-by-nulls="true"> <read-data reader-name="main"/> <inline-jdbc jdbc-driver="com.ddtek.jdbc.oracle.OracleDriver" jdbc-uri="jdbc:datadirect:oracle://127.0.0.1:1521;SID=ofbiz" jdbc-username="ofbiz" jdbc-password="ofbiz" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource> <datasource name="localsybase" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="sybase" schema-name="dbo" check-on-start="true" add-missing-on-start="true" use-fk-initially-deferred="false" join-style="ansi"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.sybase.jdbc2.jdbc.SybDriver" jdbc-uri="jdbc:sybase:Tds:10.1.1.10:11222/ofbiz?DYNAMIC_PREPARE=true" jdbc-username="ofbiz" jdbc-password="ofbiz1" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource> <datasource name="localsapdb" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="sapdb" check-on-start="true" add-missing-on-start="true" fk-style="name_fk" use-fk-initially-deferred="false" join-style="ansi-no-parenthesis"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.sap.dbtech.jdbc.DriverSapDB" jdbc-uri="jdbc:sapdb://localhost/OFBIZ" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localsapdb" isolation-level="ReadCommitted"/> --> <!-- Orion Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="localweblogic" jndi-name="SapDBDataSource"/> --> <!-- Weblogic Style JNDI name --> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="jdbc/localsapdb" isolation-level="ReadCommitted"/> --> <!-- JRun4 Style JNDI name --> <!-- <tyrex-dataSource dataSource-name="localsapdb" isolation-level="ReadCommitted"/> --> </datasource> <datasource name="localfirebird" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="firebird" check-on-start="true" use-foreign-key-indices="false" add-missing-on-start="true" alias-view-columns="false" join-style="ansi"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.firebirdsql.jdbc.FBDriver" jdbc-uri="jdbc:firebirdsql:127.0.0.1:C:\\data\\ofbiz.gdb" jdbc-username="SYSDBA" jdbc-password="masterkey" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- Sample remote URI: jdbc-uri="jdbc:firebirdsql://localhost:3050//opt/interbase/data/ofbiz.gdb" --> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localfirebird" isolation-level="ReadCommitted"/> --> <!-- Orion Style JNDI name --> <!-- <tyrex-dataSource dataSource-name="firebird" isolation-level="ReadCommitted"/> --> </datasource> <!-- The following has been tested with SQL Server 2005 + MS SQL Server JDBC Driver 1.1 Tips: 1. Make sure your SQL Server has mixed mode authentication as per this post: http://aspadvice.com/blogs/plitwin/archive/2006/09/10/Login-failed-_2E002E002E00_-not-associated-with-a-trusted-SQL-server-connection.aspx 2. Make sure you have copied JDBC driver jar to entity/lib/jdbc 3. Make sure you have installed JDBC Driver XA support as per MSSQL_JDBC_HOME/enu/xa/xa_install.sql 4. Make sure that you have created and authorized the ofbiz database and login 5. Make sure that schema-name, jdbc-username, jdbc-password and databaseName are all correct! Notes: a. The reason for putting SelectMethod=cursor property in URL is explained here: http://forum.java.sun.com/thread.jspa?forumID=48&threadID=184797 b. If using an old version of the driver, beware of this resource leak: http://support.microsoft.com/kb/820773/ --> <datasource name="localmssql" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="dbo" field-type-name="mssql" check-on-start="true" add-missing-on-start="true" join-style="ansi" alias-view-columns="false" use-fk-initially-deferred="false"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" jdbc-uri="jdbc:sqlserver://localhost:1791;databaseName=ofbiz;SelectMethod=cursor;" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localmssql" isolation-level="ReadCommitted"/> --> <!-- Orion Style JNDI name --> </datasource> <datasource name="localp6spy" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="public" field-type-name="postgres" check-on-start="true" add-missing-on-start="true" join-style="ansi"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.p6spy.engine.spy.P6SpyDriver" jdbc-uri="jdbc:postgresql://127.0.0.1/ofbiz" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="localjndi" jndi-name="java:/OracleDataSource" isolation-level="Serializable"/> --> </datasource> <datasource name="localadvantage" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="advantage" check-on-start="true" add-missing-on-start="true" check-indices-on-start="false" use-foreign-keys="false" use-foreign-key-indices="true" join-style="ansi-no-parenthesis" alias-view-columns="false" always-use-constraint-keyword="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.extendedsystems.jdbc.advantage.ADSDriver" jdbc-uri="jdbc:extendedsystems:advantage://localhost:6262;catalog=c:\\advantage\\OFBIZ.ADD;TableType=adt" jdbc-username="ADSSYS" jdbc-password="adssys" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource> <!-- According to http://markmail.org/message/s75sf6zhtizzkqbv Since version V6R1 (AS/400, db2) there is no need for an own fieldtype.xml - just use the derby-fieldtypes like this: --> <!-- Beware use-indices-unique="false" is needed because of Derby bug with null values in a unique index, not sure it's needed with DB2 --> <datasource name="DB2" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="OFBIZ" field-type-name="derby" check-on-start="true" add-missing-on-start="true" use-pk-constraint-names="false" use-indices-unique="false" alias-view-columns="false" use-order-by-nulls="true" offset-style="fetch"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <!-- There is an open source version of the jdbc driver at sourceforge: http://sourceforge.net/projects/jt400/ --> <inline-jdbc jdbc-driver="com.ibm.as400.access.AS400JDBCDriver" jdbc-uri="jdbc:as400:192.168.1.10;prompt=false;libraries=ofbiz;lazyclose=true;translate binary=true" jdbc-username="ofbiz" jdbc-password="ofbiz" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource> </entity-config>
This config file is very long, focus on:
<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.apache.ofbiz" datasource-name="localpostgres"/> <group-map group-name="org.apache.ofbiz.olap" datasource-name="localpostolap"/> <group-map group-name="org.apache.ofbiz.tenant" datasource-name="localposttenant"/> </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-map group-name="org.apache.ofbiz" datasource-name="localpostgres"/> <group-map group-name="org.apache.ofbiz.olap" datasource-name="localpostolap"/> <group-map group-name="org.apache.ofbiz.tenant" datasource-name="localposttenant"/> </delegator> <delegator name="test" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main"> <group-map group-name="org.apache.ofbiz" datasource-name="localpostgres"/> <group-map group-name="org.apache.ofbiz.olap" datasource-name="localpostolap"/> <group-map group-name="org.apache.ofbiz.tenant" datasource-name="localposttenant"/> </delegator>
and section
<datasource name="localpostgres" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="public" field-type-name="postgres" check-on-start="true" add-missing-on-start="true" use-fk-initially-deferred="false" alias-view-columns="false" join-style="ansi" use-binary-type-for-blob="true" use-order-by-nulls="true" result-fetch-size="50"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.postgresql.Driver" jdbc-uri="jdbc:postgresql://127.0.0.1:5433/ofbiz" jdbc-username="postgres" jdbc-password="postgres" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource> <datasource name="localpostolap" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="public" field-type-name="postgres" check-on-start="true" add-missing-on-start="true" use-fk-initially-deferred="false" alias-view-columns="false" join-style="ansi" result-fetch-size="50" use-binary-type-for-blob="true" use-order-by-nulls="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.postgresql.Driver" jdbc-uri="jdbc:postgresql://127.0.0.1:5433/ofbizolap" jdbc-username="postgres" jdbc-password="postgres" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource> <datasource name="localposttenant" helper-class="org.apache.ofbiz.entity.datasource.GenericHelperDAO" schema-name="public" field-type-name="postgres" check-on-start="true" add-missing-on-start="true" use-fk-initially-deferred="false" alias-view-columns="false" join-style="ansi" result-fetch-size="50" use-binary-type-for-blob="true" use-order-by-nulls="true"> <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"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="org.postgresql.Driver" jdbc-uri="jdbc:postgresql://127.0.0.1:5433/ofbiztenant" jdbc-username="postgres" jdbc-password="postgres" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> </datasource>
Inside file \apache-ofbiz-16.11.02\build.gradle , add this line:
compile 'org.postgresql:postgresql:42.1.1'
Do I need download Gralde 4.0?
No. If you use command gradle, OFBiz can not run, because OFBiz 16.11.02 use Gradle 2.13 wrapper.
From CMD,
cd /d C:\Users\vydn\Downloads\apache-ofbiz-16.11.02 gradlew eclipse gradlew cleanAll gradlew loadDefault gradlew ofbizDebug --info
Explain:
Command gradlew eclipse, generate metadata for Eclipse IDE from existing source code.
Command gradlew cleanAll, clean old artifact, build files.
Command gradlew loadDefault, load sample data into database.
Command gradlew ofbizDebug, run ofbiz in debug mode. You you don't like debug model, use command gradlew ofbiz.
Parameter --info is no required, it help you see what happen under the hood.
(Note: Use command gradlew, not gradle)
Open Google Chrome, go to https://localhost:8443/webtools/control/
(not https://localhost:8443), use account:
username: admin
password: ofbiz
You can start working with OFBiz.
For development
Download Eclipse IDE for Java EE Developers (Windows x64): https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/oxygen/R/eclipse-jee-oxygen-R-win32-x86_64.zip
Unzip
Install latest version of Eclipse Buildship: Eclipse Plug-ins for Gradle
https://projects.eclipse.org/projects/tools.buildship
Setup for debug
In same time, you can run OFBiz, you can debug and watch value of variables inside Eclipse IDE.