I'd like to install the custom OData service into the embedded Tomcat web container in Denodo 5.5.
I've found that the instructions Denodo provides are somewhat confusing, and thus I'm posting to stackoverflow and including the answer in hopes that someone else finds it useful.
$DENODO_HOME/bin/vqlserver_shutdown.sh
sleep 15
ps -ef | grep denodo | grep -v grep
Download the Denodo OData Service.zip
file and unzip it to /tmp
such that you have:
/tmp/denodo-odata2-service-5.5-20160129
# copy the war file to the webapps folder
cp /tmp/denodo-odata2-service-5.5-20160129/denodo-odata2-service-5.5.war $DENODO_HOME/resources/apache-tomcat/webapps/
# Copy the odata xml to the embedded tomcat container
cp /tmp/denodo-odata2-service-5.5-20160129/scripts/denodo-odata2-service-5.5.xml $DENODO_HOME/resources/apache-tomcat/conf/DenodoPlatform-5.5/localhost/
# Copy the startup/shutdown scripts to the bin folder
cp /tmp/denodo-odata2-service-5.5-20160129/scripts/*.sh $DENODO_HOME/bin
chmod u+rwx $DENODO_HOME/bin/odata*.sh
# change the DENODO_HOME directory in the $DENODO_HOME/bin/odata*.sh scripts
vi $DENODO_HOME/bin/odata_service_startup.sh # look for DENODO_HOME and update it
vi $DENODO_HOME/bin/odata_service_shutdown.sh # look for DENODO_HOME and update it
# Add a reference to the Denodo JAR in the catalina.properties file
vi $DENODO_HOME/resources/apache-tomcat/conf/catalina.properties
# Look for shared.loader
# Add this to the end of the shared.loader line:
${catalina.base}/../../lib/vdp-jdbcdriver-core/denodo-vdp-jdbcdriver.jar
# update the server.xml.template file to include a JNDI resource by putting the following in the <GlobalNamingResources> section
vi $DENODO_HOME/resources/apache-tomcat/conf/server.xml.template
<Resource name="jdbc/VDPdatabase"
auth="Container"
type="javax.sql.DataSource"
username="admin" password="***********"
url="jdbc:vdb://localhost:9999/admin"
driverClassName="com.denodo.vdp.jdbc.Driver"
initialSize="5" maxWait="5000"
maxActive="120" maxIdle="5"
validationQuery="select * from dual()"
poolPreparedStatements="true"/>
# Change the permissions on server.xml.template so other people can't read your denodo admin password:
chmod go-rwx $DENODO_HOME/resources/apache-tomcat/conf/server.xml.template
chmod go-rwx $DENODO_HOME/resources/apache-tomcat/conf/server.xml
# update the context.xml to point to the JNDI resource in and also add the properties to the <Context> section (add all of the below to the <Context> section)
vi $DENODO_HOME/resources/apache-tomcat/conf/context.xml
<ResourceLink name="jdbc/VDPdatabase"
global="jdbc/VDPdatabase"
type="javax.sql.DataSource"/>
<Environment type="java.lang.String" name="odataserver.address" value="/denodo-odata.svc"/>
<Environment type="java.lang.Integer" name="server.pageSize" value="1000"/>
<Environment type="java.lang.Boolean" name="enable.adminUser" value="true"/>
$DENODO_HOME/bin/vqlserver_startup.sh
# wait for Denodo and Tomcat to start
# deploy/start the odata webapp
$DENODO_HOME/bin/odata_service_startup.sh
# Go to
http://hostname:9090/denodo-odata2-service-5.5/denodo-odata.svc/databasename
(but change "databasename" to your virtual database name)
Since you are now using the embedded Tomcat web container and the odata service is running in it, every time you stop/start Denodo you will need to also stop/start the OData service
Stopping Denodo
$DENODO_HOME/bin/odata_service_shutdown.sh
$DENODO_HOME/bin/vqlserver_shutdown.sh
Starting Denodo
$DENODO_HOME/bin/vqlserver_startup.sh
$DENODO_HOME/bin/odata_service_startup.sh
Admin User Access
If you don't want the admin user to have access via odata, then change the setting in the $DENODO_HOME/resources/apache-tomcat/conf/context.xml
file and restart.