Gegenüber Iteration 1 wurde im ServiceLocator das direkte Setzen der Properties im Code des Konstrukturs über System.getProperties() sowie das direkte Setzen der Umgebungsvariablen des InitialContexts aus dem Code entfernt und in die Datei jndi.properties ausgelagert.
java.rmi.server.codebase=http://localhost/java/rmi java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099
Diese Datei muss sich beim Ausführen des Programms im Klassenpfad befinden. Der Konstruktur reduziert sich entsprechend auf folgenden Code:
private ServiceLocator() throws SystemException { try { URL oUrl = ClassLoader.getSystemResource("client.policy"); System.getProperties().put("java.security.policy", oUrl.toExternalForm()); System.setSecurityManager(new RMISecurityManager()); context = new InitialContext(env); } catch (NamingException ne) { throw new SystemException(ne); } }
Die Enumeration der Services, RemoteBusinessService, wurde um weitere Schnittstellen erweitert und enthält nun
public enum RemoteBusinessService { AddressService, ArticleService, ArticleTypeService, InvoiceService, CustomerService, PersonService };
Die SystemException wurde komplett aus dem Projekt entfernt und durch ServiceException ersetzt. Es wird nun bei Fehlern immer
throw new ServiceException("Could not connect to server");
geworfen. Im Interface Manager hat sich die Signatur der update-Methode verändert. Sie gibt nun auch wie beispielsweise die create-Methode die (geänderte) Entität zurück. Grund dafür ist, dass man so auch für verbundene Entitäten, die möglicherweise im Zuge der Änderung auf Client-Seite neu angelegt und der Eltern-Entität hinzugefügt worden sind, die Ids erhält, die beim Persistieren der verbundenen Entitäten beim Update der Eltern-Entität generiert worden sind. Sonst ist alles beim Alten geblieben.
Hinweise zur Verwendung von JNDI: Die JNDI-Benamung ist nicht standardisiert sondern abhängig vom jeweilig verwendeten Anwdnungsserver: EJB 3 Portability Issue: why JNDI names are not standardized
weiter zu 4.3.2 Definition der Schnittstelle zwischen Präsentations- und Logikschicht in der Iteration 3
weiter zu 4.2.3 Definition der Schnittstelle zwischen Logik- und Persistenzschicht
zurück zu 4.1.2 Definition der Schnittstelle zwischen Präsentations- und Logikschicht in der Iteration 1
zurück zu 4.2.1 Einrichtung der Entwicklungs- und Laufzeitumgebung
zurück zu 4.2 Iteration 2
zurück zu 4 Implementierung
zurück zu [FrontPage]
Documentation: FrontPage
Documentation: Seite400
Documentation: Seite412
Documentation: Seite420
Documentation: Seite421
Documentation: Seite423