ProductsServer Desktop & Workstation Developer Subscriptions Satellite OpenStack Platform For IBM POWER For SAP Business Applications Management For Scientific ComputingExtended Update Support High Availability High Performance Network Load Balancer Resilient Storage Scalable File System Smart Management Extended Lifecycle SupportA-MQ Accelerate Automate Integrate Application Platform BPM Suite BRMS JBoss community or Red Hat JBoss Middleware Data Grid Data Virtualization Developer Studio Portfolio Edition Fuse Fuse Service Works Operations Network Portal Web Framework Kit Web Server
SolutionsWhy Red Hat Why open hybrid cloud? The new IT Public cloud Cloud resource library Private cloud Infrastructure-as-a-Service (IaaS) Platform-as-a-Service (PaaS) Cloud applications and workloadsSolaris to Red Hat Enterprise Linux Migration overview Migrate from your UNIX platform How to migrate to Red Hat Enterprise Linux Upgrade to the latest Red Hat Enterprise Linux release Red Hat JBoss Middleware Benefits of migrating to Red Hat Enterprise Linux Migration services Start a conversation with Red Hat
TrainingPopular and new courses Red Hat JBoss Administration curriculum Core System Administration curriculum Red Hat JBoss Middleware development curriculum Advanced System Administration curriculum Linux Development curriculum Cloud Computing, Virtualization, and Storage curriculum
ConsultingSOA and integration Business process management Custom Software Development Enterprise Data and Storage Systems management Migrations
Alintec - 2008 JBoss Innovation Award Winner
March 7, 2008
Alintec (www.alintec.it) (previously Politecnico Innovazione), a non-profit consortium promoting technological innovation within SMEs and public institutions and technology transfer between academia and industry in Europe, was selected following the high return on investment (ROI) it achieved after the implementation of multiple JBoss technologies within its Internet-based Library Management System (LMS) for the Province of Bergamo. The JBoss-based solution increased library loan rates by more than 25 percent and the frequency of inter-library loans by over 30 percent. Overall, it has positively impacted the end-user experience in terms of speed and ease-of-use.
Alintec is a non-profit consortium, whose aim is the promotion of technological innovation within SMEs, public institutions and the cooperation and technology transfer between University and Industry in the European dimension. We support research and technological development (RTD) activities by: * Acting as Project Manager providing key competences in the development of innovative projects. Coordinating multidisciplinary activities and embody the only companyand#8217;s referent making cooperation with University easier. * Evaluating technological solutions and the main strategies that should be adopted. * Identifying the companyand#8217;s needs for new technology in order to develop new products, to start up new productive processes and to improve the companyand#8217;s business management. * Developing applied research projects defining how to exploit the new technology as well as its impact on the enterprise or public administration. * Technology transfer concerning information technology and its management. * Analysis and support for the use of innovative ICT technology to make strategic changes. * Promoting the cooperation between University and Industry Providing responsive and professional services to find, develop, apply and improve innovative solutions for small and medium enterprises, private companies and public bodies. Coordinated by experienced faculty members, young engineers are encouraged to take part on the projects as needed and as motivated by their specialization.
The project goal was to design, develop and implement an internet based Library Management System (LMS) to integrate the 230 libraries of the Bergamo province. It was presented to us as a challenge, literally: commercial companies had tried to implement a solution to the needs of the library leading, operators, end users and public administration. They failed: the proposed solutions resulted too slow to accommodate all concurrent users, unmanageable, inflexible, buggy, crash-prone and the constant bug fixing had painfully slow resolution times and was very expensive. The original contractor preferred to back out from the support agreement; so the public administration came to university for advice, got it from our analysts team, was satisfied and so finally proposed us to build a new implementation using the technology and developing processes we had recommended them. The main challenge was quickly identified as the joined need for fast searches, changing business rules, and very high concurrency. Also, W3C WAI-AAA compliance was set as a requirement. The main business processes to support:
- Inter-Library Loan (ILL)
- Document reservation
Web OPAC (Open Public Access Catalogue):
- Public search engine
- Open reservation
Reporting The business numbers:
- 230 public libraries
- 500 operators (librarians and cataloguers)
- 200,000 final users (citizens with library card)
- 1.6 million loans by year (maximum 10,000 loans per day)
- 4 million documents
We wanted to develop with open source components, so we began looking at JBoss, Spring and Struts. At the time, in May 2006, JBoss was providing an almost-full compliance with JSF and EJB 3.0 as JBoss RC9 was released. Seam looked very promising and innovative compared to other competitors and was backed by a team we trusted, as we already had had some experience with JBoss’s connection pool and hibernate on previous projects. As a research centre linked to University we were particularly interested in trying out bleeding edge technologies. Also JBPM and AOP were looking like the solutions to our flexibility needs, and the Seam recommended patterns found in the first examples released in those times looked very promising. We didn’t know yet whether we would need much more features such as web services and schedulers, but it was nice to know that they would be available when needed. After some preliminary testing the choice was easy.
To simplify IT management and maintenance costs, they didn’t want to distribute software clients to all machines, to avoid client software management. A browser-based solution could meet this requirement, but they would prefer not to change radically the rich client user interfaces they were accustomed to: the interface should be similar to past solutions to avoid extensive training of all operators. The solution needs full web2.0 technology support, even library operators and cataloguers don’t want to install/maintain client software other than their browser. This is also a political need, with a higher usability more people will be using the system and the public bodies who endorsed the system will get credit for a good choice. In order to provide a good user experience a responsive system is a requirement: they wanted a fast system, and a lot of full text searching. They preferred to invest in fast and scalable software than to buy expensive hardware, as the Italian government endorses a software reusability program. During the analysis phase we were not sure we could provide the needed performance, so we were looking for a scalable architecture to eventually have the possibility to add hardware. We needed a flexible architecture to accommodate all requirement changes and to be able to provide the agility needed for new features and fixes, also speed and processing efficiency have always been a primary concern.
We configured the complete stack from the hardware configuration, operating system up to the java enterprise ear. We use Fedora as operating system, Apache httpd to serve some static content and finally JBoss to run the application and to serve all dynamic content. The ear contains much more technology from JBoss:
The service is made up of two dedicated servers, an application server and a database server. Backup services and network management are provided by the hosting company. Application Server: 1 HP DL360 G5 (2x Xeon 5160 with 8GB RAM) OS: Fedora Linux 6 / 64bit JBoss 4.05 (now upgrading to 4.2.2) Database Server: 1 HP DL380/1 (1x Xeon 2.8 GHz with 2GB RAM) OS: Microsoft SQL Server 2000 on Windows Server 2003 A single JBoss on a single JVM (v.6u3) is currently enough to satisfy the performance demand; It supports clustering so we are going to add a second machine to support failover, but the provided uptime is excellent even now. A custom JSF component has been built to page through search results, linked to a special type of beans to control all our different kinds of searches: implementing new query flavors became flexible, independent from the technology used to retrieve the data: by using plain Hibernate, Hibernate Search, direct Lucene, native SQL, by external web services, by remote legacy or standard library protocols. We are considering the possibility to give this code back to the community as it demonstrates very fast Hibernate queries but this will need some code polishing; a full-text query is done on average in less than 16ms, testing under high load. A custom high speed Lucene indexer was built, we’d love to give more details for this too but think it could be far too complex for a generic simple application; we are now able to index 4 Million structured documents (each being represented by a dozen of linked entities) in less than 20 minutes. During day CPU’s usage doesn’t go higher than 30%; at night some background jobs are started by quartz to build usage reports, DB cleanup, Lucene’s indexes optimization. The back office management in the library system is very extended, there are currently 15 different user roles defined to protect 330+ views, only 10 of these are public, brought to life by 760+ beans.
- Seam: the whole application is extensively based on Seam, we are using it as core technology from first beta releases; we use conversations, Seam JSF tags, internationalization, iText reports, email support, remoting and jboss-el capabilities.
- RichFaces: obviously, to implement web2.0 rich clients we used many RichFaces JSF components.
- Hibernate: the complete persistence layer is built on hibernate 3.2, mostly through ejb3 persistence API, sometimes using hibernate annotations. Hibernate Search is a core component; when the beta appeared on the hibernate website we immediately began testing it. Unfortunately the timing was wrong and it was still too “on-the-edge”, so we ended up using a mix of direct Lucene “low level” and Hibernate Search for other functions. We had to code direct index access to tweak the most complex queries and be able to search on structured objects, as these features are now available through Hibernate but were not at the time of release. You can take a look at the system at: http://opac.provincia.bergamo.it.
During first beta releases of Seam nobody knew how to develop with it; also books were not yet available: best practices were unknown, nobody knew how to get things working. So we had to learn how to interact with the JBoss Community, asking for help, submitting bug reports, sharing the little we had learnt. This was a new experience for all of us, but revealed very interesting: we finally understood the full power of open source communities, discovering that the people that works behind these technologies were incredibly helpful and skilled. Also when no other seemed to know the answer, we got help directly from Gavin King and Pete Muir, who resolved our issues very fast. In the past we were not quite interested in the possibility to give something back to the community, now is this same possibility regarded as a very high achievement. We found almost all knowledge we needed to develop this system on jboss.org’s wiki pages, documentation or forums, or looking to examples and to the source code of libraries themselves.
We began developing in October 2006 and released the final version in May 2007; now in October 2007 the customer has had some time to verify the value of the new product; we can summarize their satisfaction in the next points:
- Fast real time information sharing between all business units: some libraries are in remote mountain districts but are now served as well as in the biggest cities.
- Substantial ICT maintenance cost reduction. Better “time to user” in assistance and bug fixing (As it is a public service we wouldn’t call it “time to market”).
- Library loans increased of +25%; we believe this to be a good index to evaluate the final users satisfaction in the library system’s core mission, and a benchmark for usability.
- Inter-Library-Loans increased of +30%; This means the different libraries use available books more efficiently, reducing book-buying costs and final user’s wait queue.
- 24/7 service.
It is difficult to compare other indexes such as delivery delays to the older system as information is incomplete on the previous system, but even so the public administration and library operators agree that general efficiency has greatly improved. They are now so satisfied that they asked us to develop many more features; the JBoss technology we are using empowers us to provide the new features and functionalities at a competitive budget comparing to other solutions. Seam helped to integrate all different technologies in a clean design so that it is now easy to extend the current features: after having overcome the difficulties in using a young technology, Seam left us now in a win-win situation.
We will definitely use the same technologies again, both for simpler projects and for larger systems. We had some difficulties in the first months because of lack of competence, so we would recommend other companies to make use from the JBoss support services as in home training resulted very costly both in terms of time and of developer’s exhaustion; also we still would have many questions even now it is working quite well. We had to use a legacy database with very new technologies because of client’s desire; I would advice not to mix old and new and say a firm “No” to the client next time, as it is difficult to find other people with the same configuration to learn from and often these combinations are not tested as well; we are actually going to try java DB just to see how it performs, and eventually switch database technology. We would also recommend to participate in the communities both by forums and by code, as this revealed a very useful, clarifying and a fast road to solutions. Now that we have some skilled developers we are successfully using JBoss’s technologies on all starting projects.