Skip to main content

Posts

Showing posts from April, 2013

ArrayDescriptor and Oracle 11g JDBC driver

This month I have a lot of things to post about GAE, jOOQ, GWT, MVPP, but so little time to write them. In the meantime I want to share a little tip about a strange error message we had last year during the migration of a large number of J2EE web applications from Oracle 9i to 11g (well, the project context was bigger than a mere database migration, but the error occurred was due to the migration only). Part of these applications used to invoke PL/SQL functions and stored procedures on Oracle databases. Oracle JDBC for 11g introduced an important difference from the 9i release in the oracle.sql.ArrayDescriptor usage. Every time you need to pass an Array of data from a Java web application to an Oracle stored procedure you have to use an oracle.sql.ARRAY object. In order to create it, before you have to create an instance of oracle.sql.ArrayDescriptor this way: ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("CUSTOM_TYPE_ARRAY", conn); were CUSTOM_TYPE_A

Who's afraid of Open Source in 2013?

Recently I have read this article ( http://tinyurl.com/d3lnxns ) and the related comments on ComputerWeekly.com and then I asked myself (for the billionth time):"Why the hell in 2013 are there still people frightened by Open Source?". Some governments and big organizations are discovering belatedly the advantages of Open Source software adoption, after wasting a lot of money on license purchasing and above all on maintenance, bug fixing, support and customization (wasting a lot of time too (and time is more precious than money)) . It's sad to see that in some cases the choice of Open Source is just because someone thinks that it's cheaper than proprietary: Open Source means also the possibility to reduce the learning curve of a software, to quickly discover and fix possible bugs, to find a way to improve or extend the code (no lock-ins as for the proprietary), to have a large community to share tips and suggestions, to improve your personal knowledge and to find often

Google Cloud Endpoints short tutorial - part 1

Here a short tutorial on Google Cloud Endpoints (briefly presented in the previous post ( http://googlielmo.blogspot.it/2013/04/google-cloud-endpoints.html )). For this tutorial I am referring to Eclipse Indigo and the Google Eclipse Plugin with the App Engine SDK 1.7.6. A little knowledge of the Google Plugin and the Google App Engine is required to better understand this tutorial. Project creation Open Eclipse and then create a new Web Application Project through the Google Plugin button. Select a name and the default package for the project and uncheck the GWT usage: we don't need a front end. The project name chosen for this tutorial is endpointtutorial . Coding Suppose you have this simple entity: public class MyEntity { public String entityName; public String entityDescr; } and the business logic to access this kind of object: public class MyBusinessClass { public MyEntity getMyEntity() { MyEntity myEntity = new MyEntity(); myEntity.entityName = &q

Google Cloud Endpoints

Saturday March 23rd I attended an interactive Google Lab @ Codemotion 2013 in Rome held by Alfredo Morresi about the Google Cloud Endpoints. This is a new feature for Google App Engine (GAE). It consists of tools, libraries and capabilities that allow you to generate Endpoints and client libraries from an App Engine backend to simplify client access to that web app. Endpoints makes it easier to create a web backend for web clients and mobile clients such as Android or Apple's iOS. Mobile developers will spare a lot of time and work while developing shared backends for their apps and benefit from all the services and features provided by the GAE infrastructure. The figure below shows the basic Endpoints architecture: The backend is an App Engine application that performs business logic and other functions for Android and iOS clients, as well as JavaScript web clients. The functionality of the backend is made available to clients through Endpoints, which exposes an API that clien

Very late modernization

Last week, during my Easter holidays, I received the usual ServerSide.com newsletter containing the following article: " How Italy's Ministry of Education boosted agility, innovation, cut costs " From the title I was enthusiastic about the effort of the Ministry, but... ...in the short article I read that they relied on a mainframe server since the 1980's and only in 2012 they " realized that they needed more flexibillity to handle the reorganization of its administration ". For this reason the new goals of the Ministry were the following: Increase investments in innovation Improve agility/continuity And reduce costs. and finally, thanks to God, they realized that a mainframe system could't satisfy these new requirements anymore. In the attached video (you can watch it at the following link http://h20621.www2.hp.com/video-gallery/us/en/4fd7619f9d740e518dc8fe0cb11a5ff445f879f4/r/video ) Paolo de Santis, the Applications and Security Manager of