OpenSUSE on VirtualBox

openSUSE-logo

After some Memorial Day weekend trial and error, I’ve settled on a Linux distribution for my Oracle MapViewer lab. Neither Ubuntu 14.04 nor Fedora 20 performed well under VirtualBox. In the case of Ubuntu, it was the lack of 3D support for Unity, which I think can be fixed by rebuilding the VirtualBox Guest Additions from the kernel source, but I wasn’t able to get VirtualBox to find the source. Based on some other distro instructions I think I just needed to do something like this: “KERN_DIR=/usr/src/kernels/`uname -r`.”

In any case, I had good luck with openSUSE 13.1. Oracle SQL Developer connects to Oracle 12c and the OS performance is good even with both VMs running. Now, my Oracle database and Oracle client environments are both running in virtual machine images that can be moved from one computer to another. More importantly, I can run Java 7 on openSUSE and Java 6 on Ubuntu, my host OS, where I do some customer development.

This illustration depicts the resulting spatial lab environment.spatiallab

Picking a Linux distro took longer than I thought it would. I’m reading to move on now.

Is Oracle MapViewer a Fit for Me?

Recently I began evaluating Oracle MapViewer to determine if it is the right tool for me. I’m looking for a mapping API that will allow me to manage vector graphics, points and polylines, independently from the base map. Today, I write too much repetitive code for map providers like Google Maps and OSM.  Oracle MapViewer it is a good tool for people working in a Java EE environment. It also has a place as part of Oracle’s Business Intelligence Suite, and is a very handy ad-hoc spatial data viewer, but does it belong in my website development toolbox?

current_map_stackMy personal preference is open source and lightweight, as this graphic illustrates, with a client-side JavaScript MVC framework making AJAX calls to JAX-RS web services. The RESTful web services should run in a standard Java web container and not depend on Java EE server containers.

In order to do vector graphics and event handling for polylines and points independently from the base map, my map API abstraction layer must be replaced. Ideally, the replacement framework should be purely JavaScript and should not require any server-side changes, something like Leaflet.

MapViewer Components

MapViewer is much more than just a JavaScript framework for maps. It has several server-side components that support its client-side AJAX-based JavaScript API:

  • A core rendering engine Java library, SDOVIS, that performs cartographic rendering. A servlet exposes the rendering functions to Web applications.
  • Application programming interfaces for programming MapViewer features. These APIs include XML, Java, PL/SQL, and an AJAX-based JavaScript API.
  • A graphical Map Builder tool that enables you to create map symbols, define spatial data rendering rules, and create and edit MapViewer objects.
  • Oracle Maps, which includes map cache and FOI (feature of interest) servers that facilitate the development of interactive geospatial Web applications.

The MapViewer architecture is not targeted towards my ideal environment of simple Java web containers. The preferred environment is Oracle WebLogic or Glassfish.

That being said, MapViewer does support Tomcat, but to what extent I’ve yet to discover. The following table is from the Map Viewer J2EE Servers Support page:

J2EE Server Name and Version

 Oracle WebLogic Server  10g and Later
 GlassFish  3.1.2 or later
 Oracle Application Server  10g (10.1.3.x)
 WebLogic  9
 Oracle OC4J Standalone  10g (10.1.3.x)
 Apache Tomcat  6.x and Later
 WebSphere  6.x and 7.x
 JBoss  4.x and Later

This architecture is illustrated in this graphic from the Oracle Fusion Middleware MapViewer Primer.

mapviewerIn my current work environment, pools of servers support different domains of our site. There is nothing to say that one pool of servers cannot include Java EE servers to handle the mapping load. It would still serve to isolate the mapping services from other server pools as well reduce the workload on the other servers. The business justification for the new pool of mapping servers depends on how many MapViewer features add value to our site, things like dynamic heatmaps, for example.

I’ll start my deep dive with the tutorials that come with the project, and then will explore some of the extensive features list in MapViewer data sheet.

How to Fix SQL Developer Start-up Error on Ubuntu

sqldevicon

After my upgrade from Ubuntu 12.04 to Ubuntu 14.04 failed I was forced to re-installed Ubuntu. While rebuilding my machine I ran into a problem running Oracle SQL Developer 4.0.2. While I was in set-up mode, I also took the time to add SQL Developer to the applications list, as pictured above.

I downloaded Oracle SQL Developer 4.0.2, but it caused a Java dump when I tried to start it, despite having installed Java 7, exported JAVA_HOME, and having defined the JDK path in /home/smitchell/.sqldeveloper/4.0.0/product.conf.

SetJavaHome /usr/lib/jvm/java-7-oracle

This post in the Oracle Community about the issue recommends adding the following “unset” command to sqldeveloper.sh. That fixed the start-up crash.

#!/bin/bash
unset -v GNOME_DESKTOP_SESSION_ID
cd "`dirname $0`"/sqldeveloper/bin && bash sqldeveloper $*

I do still see a stack trace in the console, “java.net.MalformedURLException: unknown protocol: sqldev.temp,” but it doesn’t stop SQL Developer from running.

Next, to get SQL Developer to show up in Ubuntu’s Applications list, I added a desktop file for SQL Developer to the applications directory with the following content.

sudo gedit /usr/share/applications/sql-developer.desktop
[Desktop Entry]
Version=1.0
Name=SQL Developer
Comment=Oracle SQL Developer is an integrated development environment that simplifies the development and management of Oracle Database.
Exec=/home/smitchell/Applications/sqldeveloper/sqldeveloper.sh
Path=/home/smitchell/Applications/sqldeveloper/
Icon=/home/smitchell/Applications/sqldeveloper/icon.png
Terminal=false
Type=Application
Categories=Utility;Application;Development;

The result is the image at the beginning of this post. It’s not the prettiest icon in the world, but it will do.

 

2014 Location Intelligence Conference Report

Screenshot from 2014-05-23 15:18:18

The Location Intelligence conference in Washington, D.C. this week reinvigorated me. Tim Gerber, my database administrator/coworker, and I gave a presentation, How Garmin Connect Manages and Analyzes 5-billion Miles of User Activities , and we attended some very informative sessions.

It was exciting to meet both authors of Applying and Extending Oracle Spatial, Siva Ravada, and Simon Greener. You may know Simon from his website spatialdbadvisor.com.

Dan Geringer, who has been an invaluable spatial resource to Garmin, arranged a meeting for Tim and me with LJ Qian from Oracle’s Map Viewer team and Jayant Sharma, an Oracle Spatial Product Manager. We talked at length about generating dynamic heat maps from Oracle Spatial data, and we discussed using Oracle Map Viewer as an abstraction layer above base maps from Google, OSM, and other providers. I also enjoyed visiting with Oracle Product Manager, Jean Ihm.

My top priority coming out of the conference is to see if I can do with the Oracle Map Viewer HTML5 map client what I had hoped to accomplish with Leaflet. I want to separate our map code, line and point interaction, from the base map provider selected by the user, so that we can reduce the code written specifically for Google, Bing, OSM, and Baidu maps.

Since returning home I’ve been trying to find a Linux distro that runs well under Oracle VirtualBox to use as my test environment for Oracle SQL Developer, Oracle MapViewer quick start, and possibly Oracle WebLogic. Ubuntu 14.04 did poorly due to an issue with Unity 3D. Fedora 20 also seemed slow. OpenSUSE 13.1 looks promising, but I’m not far enough along in the set-up know for sure.