25 January 2015

Grails on Openshift

I created a simple Grails application which makes it possible to store client data inside a MySQL database. I created this application since I want to learn more about GORM (Grails Object Relational Mapping).

I already tested the application in the internal server from Grails, but I wanted to deploy it to a remote server. So I created a development account on Openshift and there I created the following server:

  • Tomcat 7 (JBoss EWS 2.0)
  • MySQL 5.5
  • phpMyAdmin 4.0
The phpMyAdmin cartidge is not necessary for installing the Grails application on the server. But it is ideal for checking the data inside the MySQL database.

I created a new war-file for the grails application and deployed it to the Openshift server.

When creating the Openshift server I got a url for the MySQL database. But when I placed this URL inside the datasource the application did not work. I found an ip-address inside the phpMyAdmin and when I used that ip number inside the datasource at first it worked fine. But I discovered that the ip-address was changing so I had to find another way to connect to the MySQL database.

After searching the internet I found the following entries for the datasource.

def credentials = [
    hostname:System.getenv("OPENSHIFT_MYSQL_DB_HOST"),
    port:System.getenv("OPENSHIFT_MYSQL_DB_PORT"),
    username:System.getenv("OPENSHIFT_MYSQL_DB_USERNAME"),
    password:System.getenv("OPENSHIFT_MYSQL_DB_PASSWORD"),
    name:"KLANT"
]

dataSource {
    dbCreate = "create-drop"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://${credentials.hostname}:${credentials.port}/${credentials.name}?useUnicode=yes&characterEncoding=UTF-8"
    username = credentials.username
    password = credentials.password
    pooled = true
}


25 November 2014

PL/SQL Webservice deployment with Apache Ant on Weblogic

I created a PL/SQL Webservice using Oracle JDeveloper. I want to use the same generated source tree for development and testing. 

Deploy/Undeploy/Redeploy
To deploy the webservice to the weblogic applications server I found some Ant deployment examples. 

<target name="deploy">
<wldeploy action="deploy" adminurl="t3://${wls.hostname}:${wls.port}" failonerror="false" name="${deploy.name}" password="${wls.password}" source="${deploy.folder}/${deploy.name}${buildnr}.war" targets="${deploy.target}" user="${wls.username}" verbose="true"/>
</target>
<target name="redeploy">
<wldeploy action="redeploy" adminurl="t3://${wls.hostname}:${wls.port}" failonerror="false" name="${deploy.name}" password="${wls.password}" targets="${deploy.target}" user="${wls.username}" verbose="true"/>
</target>
<target name="undeploy">
<wldeploy action="undeploy" adminurl="t3://${wls.hostname}:${wls.port}" failonerror="false" name="${deploy.name}" password="${wls.password}" targets="${deploy.target}" user="${wls.username}" verbose="true"/>

</target>

I've written some java code to parse the the webservice files to change the datasource inside the javacode. It looks something like "java:comp/env/jdbc/devDS" where devDS is the datasource to the development scheme inside the database. The parser changed it in somehting like "java:comp/env/jdbc/testDS" where testDS is the datasource pointing to the testing environment. The parser also changes entries inside the web.xml so it points to the correct datasource as well. 
It also changes the entry for the webservice-contextpath so I can have the webservice deployed on the same weblogic server. 

After changing the java classes and the xml files I added some entries to the ANT file to make it possible to create a war file.
<target depends="init" name="compile">
<javac debug="true" destdir="classes" executable="${javac.exe}" fork="yes" srcdir="src">
<classpath refid="compile.classpath"/>
<compilerarg value="-Xlint:unchecked"/>
</javac>

</target>
<target depends="compile" name="war">
<war destfile="${deploy.source}" webxml="public_html/WEB-INF/web.xml">
<fileset dir="public_html"/>
<classes dir="classes/"/>
</war>
</target>
I also added a executable and a fork to the javac tag so I can run this from another ANT build file.

I created a default target which does a undeploy, compile, war and then deploy the war to the application server.
<target depends="undeploy,compile,war,deploy" name="all"/>

23 October 2013

Previous posts offline

I've taken the previous posts about pluggable java components inside Oracle Forms offline. Some of the examples used in my posts are still available at: https://sites.google.com/site/oraont/ Since these examples are old, I've deleted some of them due to the fact that the used java examples don't get any updates. For instance the pdfviewer, which can't display the newer PDF documents anymore.