290 likes | 397 Vues
Explore CBVE, a comprehensive system for managing media and customer data, utilizing a central server, local terminals, web application, DB, and more. Dive into its architecture, technical background, experiences, and a live demonstration. Harness the power of CBVE for an efficient library management experience.
E N D
CBVEComputerunterstützte Bibliotheksverwaltung Team E Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus
Agenda • Was ist CBVE • Möglichkeiten, Einsatzgebiet, Komponenten, etc • Technischer Hintergrund • Architektur, DB, etc. • Erfahrungen • Vorführung
Was ist CBVE • Cbve – ComputerunterstützteBibliotheksverwaltung • Verwaltung von Medien • Verwaltung von Kundendaten • Service für Kunden
Komponenten • Zentraler Server • Lokale Terminals • Webapplikation • Webservice • DB • Corba-Schnittstelle
KomponentenLokale Terminals • Administrationstätigkeiten • Kundenverwaltung • Medienverwaltung • Suche • Ausleihe • Verlängerungen • Reservierungen • Aufgabenverwaltung
KomponentenWebapplikation • Für alle zugängliche Webapplikation keine Authentifizierung nötig • Bisher Mediensuche umgesetzt • Einfach erweiterbar
Technik im Hintergrund • Architektur • Datenbank • RMI • Messaging • EJB • Webservice
Architektur • Schichtenmodell • Wenig Verquickungen zwischen den Schichten • Einfacher Austausch der Benutzerschnittstelle • Leichte Migration auf andere Datenbank • Wiederverwendbarkeit der Geschäftslogik
DATENBANK • Oracle • Hibernate • Transfer Objects
Datenbank - Oracle • Oracle Datenbank bei der FHV • Zugriff via VPN • Datenbankmodell
Datenbank - Hibernate • Datenbankzugriff • Bekanntes Framework
Datenbank – Transfer Objects • Data Access Object • Dozer Framework
RMI • erste Implementierung der UseCases • Observer Pattern
RMI • erste Implementierung der UseCases • Use Case Factory beim Server if (_usecases.containsKey(usecase)) try { return (T) _usecases.get(usecase).newInstance(); } catch (Exception e) { thrownewRemoteObjectNotFoundException( "An erroroccuredwhileloadingthe remote object.", e); } }
RMI • erste Implementierung der UseCases • Client fordert einen Use Case an UseCaseFactoryuseCaseFactory = (UseCaseFactory) Naming .lookup(ClientProperties.getInstance().getUrl()); m_loginController = useCaseFactory.get( LogIn.class, CbveSession.getInstance().getSessionKey());
RMI • Observer Pattern • Remote Interface publicinterfaceIRemoteObserverextends Remote{ publicvoid update(Objectargument) throwsRemoteException; }
RMI • Observer Pattern • Klassen • EjbObservable • EjbObserver • RemoteObserver • RemoteObserverObservable • ServerObservable • ServerObserverRegistration
Messaging • Task Bearbeitung wurde mit einer JMS Queue realisiert • Alle Nachrichten werden in einer Queue abgelegt • Keine Message-Driven-Bean, da kein Workflow angestoßen werden muss
EJB • EJB in CBVE • Authentifizierung • Authorisierung • Erfahrungen
EJB in CBVE • Version 3.1 • ORB auf Glassfish • JMS Administrative Objects auf Glassfish • RMI Remote Interfaces -> EJB Business Interfaces
EJB in CBVE • Server • UseCaseController = SessionBeans • Jeder Client bekommt eigenen UseCaseController • @Schedule für Daemon-Prozesse • Client • Laden der EJB über lookup • Realisiert mittels Factory
Authentifizierung • Erfolgt über Glassfish LDAP Realm • Durch Container überwacht • Ausgeführt bei EJB Aufruf • Principals in SessionContext • Geschützte Beans in sun-ejb-jar.xml definiert
Authorisierung • Realisiert mittels Interceptors • Ermöglicht Berechtigungen auf Methodenebene • LDAP: Klassenname#Methodenname
Erfahrungen • Server • Wenn Infrastruktur steht -> einfache und schnelle Entwicklung von verteilten Systemen • Client • @EJB Injection nur in Container ManagedClasses • Main class • Callback class (definiert in application-client.xml)
Webservice • Server: Axis2 • Client: Axis2 • Testen wegen Komplikationen nicht möglich
Erfahrungen • Bekannte Frameworks • Neue Technologien • Sehr Zeitintensiv