Статьи

Настройка источника данных NuoDB для Railo

Railo  — это движок с открытым исходным кодом ColdFusion Markup Language (CFML). Мы очень интересовались людьми, использующими Railo, возможно ли поддерживать базу данных NuoDB NewSQL в качестве источника данных Railo. Ответ, действительно, да. В этой статье подробно описан процесс подготовки источника данных для NuoDB в Railo. К концу этой статьи у вас будет работающий экземпляр Railo, который может использовать соединение с базой данных NuoDB для извлечения и представления содержимого базы данных.

Предпосылки

  • Предполагается, что установлен NuoDB 1.1 или более поздней версии.
  • В целях демонстрации все приведенные ниже шаги выполнялись в Mac OS X, однако другие поддерживаемые операционные системы должны работать, и инструкции должны быть в значительной степени идентичны.
  • Загрузите установщик Railo 4.0.4.001. Получите это здесь:  http://www.getrailo.org/index.cfm/download/

Процедура

Выполните следующие действия — обратите внимание, они предполагают, что вы разрабатываете на Mac (процедура Linux и Windows одинакова, пути и команды разные):

  1. Установите Railo, но пока не запускайте инструменты администратора.
  2. Скопируйте Jar JDBC NuoDB в каталог Railo lib:
    sudo cp /opt/nuodb/jar/nuodbjdbc.jar /Library/Railo/lib/
  3. Скопируйте CFC-файл NuoDB dbdriver на место (см. Содержание в конце статьи):
    sudo cp NuoDB.cfc /Library/Railo/tomcat/webapps/ROOT/WEB-INF/railo/context/admin/dbdriver/NuoDB.cfc
  4. Отключение Railo:
    sudo /Library/Railo/tomcat/bin/shutdown.sh
  5. Добавьте ссылку на JDBC Jar NuoDB в файле Railo / Library / Railo / lib / version   :
    <jar version="1.1.1" path="nuodbjdbc.jar" comment=""/>
  6. Скопируйте скрипт запуска NuoDB (см. Конец статьи) в локальную файловую систему, где будет запускаться NuoDB.
  7. Когда вы установили NuoDB на свой хост, для вас был запущен брокер. Вы можете использовать этого брокера для  запуска SM и TE,  которые вместе предоставляют полную базу данных ACID. Запустите NuoDB Storage Manager и Transaction Engine, используя скрипт запуска:
java -jar /opt/nuodb/jar/nuodbmanager.jar --broker localhost --password bird --file StartupRailoNuoDb
  1. Запустите Railo:
    sudo /Library/Railo/tomcat/bin/startup.sh
  2. Откройте следующую ссылку в вашем браузере:  http: // localhost: 10080 / railo-context / admin / server.cfm
  3. Добавьте новый источник данных для NuoDB, используя эти параметры:
    Name: test
    Type: NuoDB
    Host/Server: localhost
    Database: test
    Port: 48004
    Username: cloud
    Password: user
    Enable Blob
    Enable Clob
    Verify Connection
    Schema: test
  4. Создайте файл с именем  listsystemtables.cfm  в  Railo / tomcat / webapps / ROOT  (см. Содержание в конце статьи).
  5. Откройте в браузере следующую ссылку: http: // localhost: 10080 / listsystemtables.cfm

В вашем браузере вы должны увидеть полный список всех таблиц SQL в вашей базе данных. Это только тривиальный пример только для чтения, но, следуя документации Railo, вы можете добавить любую логику базы данных в ваши сценарии ColdFusion, управляемые данными. Чтобы загрузить бесплатную версию NuoDB, перейдите по  ссылке http://www.nuodb.com/download .

аппендикс

Содержимое драйвера NuoDB Railo (NuoDB.cfc)

<cfcomponent extends="Driver" implements="IDriver">
  <cfset fields=array()>
  <cfset fields=array(
  field("Schema","schema","USER",true,"Schema name under which objects are created")
  )>
  <cfset this.type.port=this.TYPE_FREE>

  <cfset this.value.host="localhost">
  <cfset this.value.port=48004>
  <cfset this.schema="USER">
  <cfset this.className="com.nuodb.jdbc.Driver">
  <cfset this.dsn="jdbc:com.nuodb://{host}:{port}/{database}?schema={schema}">

  <cffunction name="getName" returntype="string" output="no"
  hint="returns display name of the driver">
  <cfreturn "NuoDB">
  </cffunction>
  <cffunction name="getDescription" returntype="string" output="no"
  hint="returns description for the driver">
  <cfreturn "NuoDB JDBC Driver">
  </cffunction>
  <cffunction name="getFields" returntype="array" output="no"
  hint="returns array of fields">
  <cfreturn fields>
  </cffunction>
  <cffunction name="getClass" returntype="string" output="no"
  hint="return driver Java Class">
  <cfreturn this.className>
  </cffunction>
  <cffunction name="getDSN" returntype="string" output="no"
  hint="return DSN">
  <cfreturn this.dsn>
  </cffunction>
  <cffunction name="getUsername" returntype="string" output="no"
  hint="return Username">
  <cfreturn data.username>
  </cffunction>
  <cffunction name="getPassword" returntype="string" output="no"
  hint="return Password">
  <cfreturn data.password>
  </cffunction>
  <cffunction name="equals" returntype="string" output="no"
  hint="return if String class match this">
  <cfargument name="className" required="true">
  <cfargument name="dsn" required="true">
  <cfreturn this.className EQ arguments.className and this.dsn EQ arguments.dsn>
  </cffunction>
</cfcomponent>

Содержимое для скрипта запуска NuoDB (StartupRailoNuoDb)

# simple script for starting a complete database
start process sm host localhost database test archive /tmp/railodb initialize true
start process te host localhost options '--dba-user cloud --dba-password user'

Содержимое для файла ColdFusion (listsystemtables.cfm)

<!DOCTYPE html>
<html>
  <head>
    <title>Lists NuoDB System Tables</title>
  </head>
  <body>
    <cfquery name="gettables" datasource="test">
      select tablename from system.tables
    </cfquery>
    <cfoutput query="gettables">
      <br>#tablename#
    </cfoutput>
  </body>
</html>