Introduction

Compass (http://www.compass-project.org/) is an open source project built on top of Apache Lucene that aims to simplify the integration of search functionality in an application. The Compass project is in maintenance mode and the new project ElasticSearch being the succesor. The dilemma is that ElasticSearch does not have JPA integration and that the published Compass supports EclipseLink 1.1.0.

Problems

  1. Compass 2.2 version tries to locate the EclipseLink session by removing all the `-` from the current session name and then looping through all the available sessions. In projects like mine, this causes a problem because of the naming schemem like `project-ejb`, `project-web`.
  2. Compass 2.2 is targeted to EclipseLink 1.1.0 which has a different method signature for the session.getEventManager().getListeners()Ljava.util.Vector method. The runtime keeps moaning that it cannot find session.getEventManager().getListeners()Ljava.util.List

Resolution

The Compass project is currently in version 2.3.0-beta1 but this version is only available in the Subversion repository available on the project website. Next the eclipselink.jar found in the lib\eclipselink folder must be replaced with version 2.2.0 or later. In the Ant tasks, the clean, alljar targets are used to build the project.

Alternative

Subsequent to trying to get Compass and EclipseLink to play together nicely, I decided to give Apache Solr a try but could not find an integration layer like Compass. To resolve the problem I started development of Solarflare which has at it’s base some of the annotations and basic functionality as compass; and will be developed further if the need arises.

Advertisements