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