Serverseitiges Java: Erstellen Sie verteilte Anwendungen mit Java und XML

Die Extensible Markup Language (XML) erfreut sich großer Beliebtheit, um Daten in einem tragbaren, herstellerneutralen und lesbaren Format darzustellen. Viele Softwareanbieter haben "Unterstützung für XML" angekündigt, was normalerweise bedeutet, dass ihre Produkte XML-Daten produzieren oder verbrauchen.

XML wird auch als Verkehrssprache für den Datenaustausch zwischen Unternehmen angesehen. Unternehmen können sich auf XML-Dokumenttypdefinitionen (DTDs) für die ausgetauschten Daten einigen. Diese DTDs sind unabhängig von dem von den Unternehmen verwendeten Datenbankschema.

Standardgruppen, die fast alle menschlichen Bestrebungen repräsentieren, einigen sich auf DTDs für den Datenaustausch. Eines von vielen Beispielen ist der International Press Telecommunications Council (siehe Ressourcen), der eine XML-DTD definiert hat, mit der "Nachrichteninformationen mit Markup übertragen und einfach in ein elektronisch veröffentlichbares Format umgewandelt werden können". Solche vertikalen Marktstandards ermöglichen es verschiedenen Anwendungen, Daten auf unvorhergesehene Weise auszutauschen.

Aber was nützen tragbare, herstellerneutrale Daten, wenn Sie sie nicht freigeben und verarbeiten? Die Fähigkeit zur Kommunikation und Verarbeitung von XML zwischen verteilten Computern ist wünschenswert. Eine Anwendung, die XML zwischen Computern kommuniziert und verarbeitet, ist in der Tat eine verteilte Anwendung.

Dieser Artikel befasst sich mit solchen verteilten Anwendungen, die in Java geschrieben wurden. Ich werde mich auf die Kommunikation von XML zwischen Java-Code konzentrieren, der in verschiedenen virtuellen Maschinen ausgeführt wird.

Die Kommunikation von XML

Die vom World Wide Web Consortium (W3C) definierte XML-Spezifikation (siehe Ressourcen) definiert die Syntax und Semantik der Sprache. Um XML zu verarbeiten, muss ein XML-Dokument analysiert werden. Es wäre bedauerlich, wenn jede Java-Klasse, die XML verarbeiten müsste, angesichts der Komplexität der XML-Syntax und -Semantik ein XML-Dokument analysieren müsste. Um dieses Problem zu lösen, hat das W3C das Document Object Model (DOM) definiert (siehe Ressourcen). Das DOM ist die Schnittstelle eines Anwendungsprogrammierers zu XML-Daten. Es ist in vielen Programmiersprachen verfügbar, einschließlich Java. Java-Programme können über die DOM-API auf XML-Daten zugreifen. XML-Parser erstellen eine DOM-Darstellung eines XML-Dokuments.

Abbildung 1 zeigt ein vereinfachtes Modell einer verteilten Java-Anwendung, die XML verarbeitet. Das Modell reicht für den Zweck dieses Artikels aus: die Kommunikation von XML zu untersuchen. Das Modell geht davon aus, dass einige Daten aus einer Datenquelle wie einer relationalen Datenbank stammen. Einige Java-Codes verarbeiten die Daten und erzeugen schließlich eine DOM-Darstellung. Dieser Code ist in Abbildung 1 als Prozessor dargestellt.

Der Prozessorcode übergibt die DOM-Darstellung der XML-Daten an den Absender. Der Absender ist Java-Code, der die XML-Daten an den Empfänger übermittelt . Der Empfänger ist Java-Code, der die XML-Daten empfängt, eine DOM-Darstellung der Daten erstellt und an einen anderen Prozessor weiterleitet. Kurz gesagt, der Sender und der Empfänger abstrahieren die Kommunikation der DOM-Darstellung von XML-Daten.

Der Absender und der Empfänger sind nicht in derselben Java Virtual Machine implementiert. Sie sind durch eine verteilte Systeminfrastruktur verbunden. Es gibt verschiedene Ansätze zur Implementierung des Senders und des Empfängers.

Beachten Sie, dass im Modell in Abbildung 1 der Absender ein Client des Empfängers ist. Der Absender übergibt das XML an den Empfänger. In einem anderen möglichen Modell ist der Empfänger der Client; es fordert das Dokument vom Absender an. Ich werde das zweite Modell in diesem Artikel nicht untersuchen, da die Probleme bei der Kommunikation von XML ähnlich sind.