Interface DbConfigTool


public interface DbConfigTool

Database Configuration

DataSources that use Smart GWT's built-in SQL engine refer to configuration settings from the server.properties file for database access.

Developers may make use of the Admin Console tool to set up database configuration blocks, or they may add configuration settings to server.properties by hand. Note that you should restart your servlet engine after changing this file.

Manually specifying database connection settings

Within an application deployment, the server.properties file resides in the WEB-INF/classes directory.

For each database, configuration settings within this file are prefixed with "sql.<dbName>".
For example, the following settings are the defaults in a new Smart GWT installation for a MySQL server; they are approximately correct for a MySQL server running on the same machine as the servlet engine and listening on the default MySQL port. For details of what each of these properties means, check this page.

    sql.Mysql.database.type: mysql
    sql.Mysql.database.ansiMode: false
    sql.Mysql.interface.type: dataSource
    sql.Mysql.driver: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    # name of the database to use
    sql.Mysql.driver.databaseName: isomorphic
    # hostname and port where the database server is installed
    sql.Mysql.driver.serverName: localhost
    sql.Mysql.driver.portNumber: 3306
    # username and password that can create and modify tables in that database
    # this user must have the following privileges for the system to function
    # properly: create/alter/drop table; insert/update/replace/delete rows.
    sql.Mysql.driver.user: root
    sql.Mysql.driver.password:
  
Note the distinction here between database type and database name. Database type refers to the actual product - Oracle, DB2 or whatever. In the above example, database type is "mysql" (all lowercase) - the value of property sql.Mysql.database.type. Database type is very important. The type of a given database connection dictates whether features like SQL paging and transactions are supported; it even dictates the syntax of the SQL we generate.

Database name is just an arbitrary name for a particular database connection, and it is embedded in the property names immediately after the sql prefix. In this example it happens to be very similar to the database type - "Mysql" as opposed to "mysql" - but in fact the name has no significance and could be any string. When referring to specific database connections in your DataSources with the dbName property, it is the database name you use.

NOTE: It is common for DataSources to not specify dbName. In this case, the default database is used. To specify the default database manually in server.properties, set sql.defaultDatabase, using database name. So, to set our example connection from above as the default:

    sql.defaultDatabase: Mysql
  

Manually specifying JNDI settings

Instead of specifying database connection parameters directly in server.properties, it is possible to connect to a database that is configured as a JNDI resource in your application server. Assume you have an Oracle JNDI resource with the name "jndiTest", configured similar to this in Tomcat:

    <Resource name="jdbc/jndiTest"
                     auth="Container"
                     type="javax.sql.DataSource"
                     driverClassName="oracle.jdbc.driver.OracleDriver"
                     url="jdbc:oracle:thin:@192.168.132.152:1521:xe"
                     username="system"
                     password="manager"
                     initialSize="5"
                     maxActive="50" />
  
The minimal set of properties required to create a Smart GWT database connection that attaches to this resource is as follows (Note that the java:comp/env/ prelude in the first line is optional - the server will automatically look there if it can't find the resource in the absolute location)
    sql.myOracleConnection.driver.name: java:comp/env/jdbc/jndiTest
    sql.myOracleConnection.database.type: oracle
    sql.myOracleConnection.interface.type: jndi
  
See Also: