Friday, June 21, 2013

Using the Oracle Java Cloud and Oracle Database Cloud paid Services




    The offering from Oracle is different in a lot of ways from what is provided by Amazon Beanstalk, Google App Engine and Cloudbees deployment but it has a lot of advantages - enough of them that I decided to use the PaaS service Oracle offered to host my applications.
     Oracle Java cloud service is all about leveraging Java EE 6 specifically on Weblogic Server 12c.  There are a lot of reasons to use the the capabilities of Weblogic over the other EE servers like Glassfish, JBoss AS, WebSphere and combinations of Tomcat and Spring like Spring Tc or even Jetty - but the main advantage is the ability to use EclipseLink as the ORM and JPA 2 provider.


Workarounds

Update: 20131212 - Oracle Cloud now updated to use Java 7 (in line with WebLogic 12.1.2)
Do not compile as Java 7 - WebLogic 12c is currently configured by default for Java 6.  To avoid the error below - change your project facet in the OEPE workspace project.
Caused By: java.lang.UnsupportedClassVersionError: com/obrienlabs/gps/business/MonitorManagedBean : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:343)


Switching between Derby and Oracle DB DDL generation

Avoid the following error by removing the [NUMBER(19,10)] precision annotation required by Oracle 11g
   
@Column(name="ACCURACY", columnDefinition="NUMBER(19,10)") // derby DOUBLE
@XmlElement
private Double accuracy;



[EL Warning]: 2013-12-06 15:32:12.076--ServerSession(20786449)--Thread(Thread[[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130403-740364a): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: Syntax error: Encountered "(" at line 1, column 130.
Error Code: -1
Call: CREATE TABLE GPS_RECORD (IDENT_ID BIGINT NOT NULL, ACCELX VARCHAR(255), ACCELY VARCHAR(255), ACCELZ VARCHAR(255), ACCURACY NUMBER(19,10), ALTITUDE NUMBER(19,10), BEARING INTEGER, GRAVX VARCHAR(255), GRAVY VARCHAR(255), GRAVZ VARCHAR(255), GYROX VARCHAR(255), GYROY VARCHAR(255), GYROZ VARCHAR(255), HEART1 INTEGER, HEART2 INTEGER, HRDEV1 VARCHAR(255), HRDEV2 VARCHAR(255), HUMIDITY VARCHAR(255), LATITUDE NUMBER(19,10), LIGHT VARCHAR(255), LINACCX VARCHAR(255), LINACCY VARCHAR(255), LINACCZ VARCHAR(255), LONGITUDE NUMBER(19,10), PRES FLOAT, PROVIDER VARCHAR(255), PROX VARCHAR(255), ROTVECX VARCHAR(255), ROTVECY VARCHAR(255), ROTVECZ VARCHAR(255), SPEED FLOAT, TEMP FLOAT, TESLAX VARCHAR(255), TESLAY VARCHAR(255), TESLAZ VARCHAR(255), TSSTART VARCHAR(255), TSSTOP VARCHAR(255), USERID BIGINT, VERSION BIGINT, PRIMARY KEY (IDENT_ID))
Query: DataModifyQuery(sql="CREATE TABLE GPS_RECORD (IDENT_ID BIGINT NOT NULL, ACCELX VARCHAR(255), ACCELY VARCHAR(255), ACCELZ VARCHAR(255), ACCURACY NUMBER(19,10), ALTITUDE NUMBER(19,10), BEARING INTEGER, GRAVX VARCHAR(255), GRAVY VARCHAR(255), GRAVZ VARCHAR(255), GYROX VARCHAR(255), GYROY VARCHAR(255), GYROZ VARCHAR(255), HEART1 INTEGER, HEART2 INTEGER, HRDEV1 VARCHAR(255), HRDEV2 VARCHAR(255), HUMIDITY VARCHAR(255), LATITUDE NUMBER(19,10), LIGHT VARCHAR(255), LINACCX VARCHAR(255), LINACCY VARCHAR(255), LINACCZ VARCHAR(255), LONGITUDE NUMBER(19,10), PRES FLOAT, PROVIDER VARCHAR(255), PROX VARCHAR(255), ROTVECX VARCHAR(255), ROTVECY VARCHAR(255), ROTVECZ VARCHAR(255), SPEED FLOAT, TEMP FLOAT, TESLAX VARCHAR(255), TESLAY VARCHAR(255), TESLAZ VARCHAR(255), TSSTART VARCHAR(255), TSSTOP VARCHAR(255), USERID BIGINT, VERSION BIGINT, PRIMARY KEY (IDENT_ID))")

Links