A few months ago I logged a bug requesting that Solano be documented.
Solano has been in Informix Dynamic Server since around 9.30 and is the best IDS feature that no-one has heard of. (Ok there may be lots of better features no-one has heard of but lets not get bogged down in epistemology.) I wasn't holding my breath since I didn't provide a business case or customer request, just the argument that it's a potentially useful feature people should know about.
When a new interim version of IDS is released I'm sure the first thing you do is check the Documentation Notes for the J/Foundation Developer's Guide
right? but for some reason I only just noticed that a reference to Solano makes an appearance in the 10.00.xC5 docnotes...
Dynamic Server has the ability to host a JAVA application server, such as an EJB container or custom HTTP server,within the database server by using a Solano-style database server connection string. For example:
If you use a Solano-style connection string, a Java UDR can run in the data server and communicate with both the database server and its own client connections (for example by listening on a port and communicating with web browsers). This can lead to performance benefits and greatly extends the functionality of Dynamic Server.
So what does that mean?
It means that you can use Krakatoa (aka J/Foundation
) to run a Java application that doesn't return, such as a webserver or application server, inside IDS. For example if you define a Java method that launches your app server and map it to a user defined routine, you can execute that routine to start the server and the application can listen on its own port, running in the IDS address space, and make internal database connections to the database of its choice. Another method (or the same one with a different argument) can be mapped to shut the server down.
This may not appeal to application developers used to the 3 tier client - app server - db server
model but in some circumstances it can be useful. For one thing network overhead between the application server and data server is eliminated. Deployment can be simplified; you can write a self-contained application that can be installed by running an SQL script, rather than relying on installing and maintaining a third party application server. Security can be improved, for example you could reduce possible attack vectors by disabling socket connections into the data server and having all database access go via the Solano application which makes internal database connections. The most obvious disadvantages to this kind of application would be that you may not want to write your own application server, and having all your client network connections going to the data server may not fit your performance model, scalability is untested as far as I know.
At this point I should probably come up with some example code to show how this works, and contribute to the official documentation to make it more expansive. Will endeavour to do both of these in the near future.[Read More