The second day of Devoxx contained many interesting SOA and OSGi talks.
Erik Hatcher: Solr power with Lucene
Solr powers the search of many applications, for example the websites for the Smithsonian Institution and CNET. Solr is built on top of Lucene. Lucene itself is a very popular but requires low-level programming. Solr does not need any configuration and works out-of-the-box. It is very easy to get it up and running. All you have to do is execute the following command:
java -jar start.jar
To inject data simply execute the following command:
java -jar post.jar *.xml
By default Solr runs in a Jetty web container, but you can also run it on every other application server. The request handlers return data in different formats: XML, JSON, Ruby or Python. The search and indexing capabilities can be fully customized. It has many great features. For example, it is possible to search for keywords for a specified prefix; this could be used for a functionality like Google Suggest. Solr is definitely worth a try. There is one drawback however, security is not integrated within Solr. That is because Solr is about finding things, not hiding them.
Ludovic Champenois: GlassFish V3 and OSGi
GlassFish V3 offers the functionality to use OSGi (Open Services Gateway initiative) within a web application. It is even possible to change the container’s OSGi implementation on the fly (switch from Felix to Equinox). The OSGi service lookup can be achieved through Java annotations. OSGi is not part of the Java EE 6 specifications, so this will only work in GlassFish an no other application server. Even though it is cool feature, I think you should never use features which are not compliant to the Java EE specification. I also think the Glassfish should not have included this feature, especially since it is the reference implementation.
Nicolai Jossutis: SOA in practice
Globalisation gets very important. In order to realize business processes over distributed systems you need SOA concepts to deal with globalisation. Key elements of SOA are loose coupling, high interoperability, and service-orientation. SOA needs to be applied when systems landscapes are heterogeneous and have different owners. SOA is much more than just applying Web-Services.
According to Nicolai Josuttis, SOA is not a solution without problems. Every solution to a problem creates a new problem. Things like security and performance are very hard to get right. Performance conflicts with performance. A big price has to be paid for loose coupling; loose coupling is hard to implement and increases complexity. I agree.
Anton Epple, Geerjan Wielenga: Lookups – A new OSGi Service Registry
The Lookups library is a simple and powerful way to register and retrieve services in OSGi. It was initially made for the NetBeans platform. Lookups are maps that take class objects as keys and return instances of the class. Due to its simplicity, type-safety, lazy loading, standard compliance and performance this approach is also very useful in OSGi. I will try the Lookup library in my next desktop application.