Unsere Java-Web-Applikationen bestehen aus mehreren Komponenten. Mit Hilfe des Spring-Frameworks können diese Komponenten leicht ausgetauscht und angepasst werden. Wir liefern zahlreiche Komponenten mit, beispielsweise für die folgenden Aufgaben:
Jede dieser Komponenten ist ein sogenanntes Bean. Über eine oder mehrere XML-Dateien lässt sich die Zusammenstellung der Komponenten für die Web-Applikation festlegen. Dies bedeutet, dass der Funktionsumfang und das Verhalten der Applikation einfach an die Erfordernisse angepasst werden können, indem die Konfigurationsdateien entsprechend geändert werden. Auf diese Weise können auch kundenspezifische Komponenten integriert werden.
Jedes Bean basiert auf einer Java-Klasse. Wird ein Bean verwendet, so erzeugt das Spring Framework ein Objekt der entsprechenden Klasse. Ein Bean wird folgendermaßen eingebunden:
<bean id="sessionInvalidator" class="com.infopark.pm.DefaultSessionInvalidator"/>
Über die optionale id
kann das Bean an anderer Stelle referenziert werden.
Falls ein Bean Eigenschaften hat, die an die Installation angepasst werden müssen, können diese auf folgende Weise gesetzt werden:
<bean id="httpHelper" class="com.infopark.libs.http.ApacheHttpHelper"> <property name="connectionTimeout" value="3"/> <property name="defaultSocketTimeout" value="60"/> <property name="maxConnections" value="10"/> </bean>
Ein Bean kann auf die Funktionalität eines anderen Beans zugreifen. So
benötigt beispielsweise das Bean permissionManager
Zugriff auf
Inhalte. Damit man bei der Wahl des Beans, das die Inhalte bereitstellt,
flexibel ist, verfügt der permissionManager
über eine
Eigenschaft documentSource
. Dieser Eigenschaft kann per Referenz
das zu verwendende Bean zugewiesen werden. Im folgenden Beispiel wird
zunächst das Bean externalDocumentSource
zur Bereitstellung der
Inhalte konfiguriert. Anschließend wird das Bean
permissionManager
eingebunden, das auf die Inhalte über das Bean
externalDocumentSource
zugreift. Die Eigenschaften
permissionReader
und permissionResolver
werden
ebenfalls mit einem Bean belegt. Da das jeweilige Bean nur an dieser
Stelle verwendet wird, wird es direkt in der Eigenschaft eingebunden,
ohne id
.
<bean id="externalDocumentSource" class="com.infopark.pm.doc.FileDocumentSource"> <property name="documentRoot" value="/opt/infopark/fiona/instance/default/export/online/docs"/> <property name="inputEncoding" value="UTF-8"/> </bean> <bean id="permissionManager" class="com.infopark.pm.doc.DocumentPermissionManager"> <property name="documentSource" ref="externalDocumentSource"/> <property name="permissionReader"> <bean class="com.infopark.pm.FionaPermissionReader"/> </property> <property name="permissionResolver"> <bean class="com.infopark.pm.FionaPermissionResolver"/> </property> </bean>
Die Eigenschaften eines Beans werden von der Klasse bestimmt. Um eine
Eigenschaft setzen zu können, muss die Klasse eine öffentliche Methode haben,
deren Name sich aus set
und dem Namen der Eigenschaft
zusammensetzt. Der Methode wird genau ein Argument übergeben, der Wert der
Eigenschaft. Im obigen Beispiel wird die Methode
setDocumentSource()
der Klasse
com.infopark.pm.doc.DocumentPermissionManager
aufgerufen. Die
öffentlichen Methoden der im Lieferumfang von CMS Fiona enthaltenen
Java-Klassen können Sie der API-Dokumentation im Verzeichnis
share/doc/javadoc/pm
im Installationsverzeichnis des CMS entnehmen.
Konfigurationsfehler führen dazu, dass die Web-Applikation sich nicht
deployen
lässt. Die Logdatei der betreffenden Web-Applikation gibt Auskunft über die
Art des Fehlers. Bei solchen Fehlern tritt immer eine
BeanDefinitionStoreException
auf. Typische Gründe sind:
Line ... in XML document ... is invalid
Die Konfigurationsdatei ist kein gültiges XML. Prüfen Sie die Datei auf syntaktische Richtigkeit.
Bean class [Klassenname] not found
Die für das Bean als class
angegebene Java-Klasse Klassenname
ist unbekannt. Entweder ist der Klassenname falsch geschrieben, oder die Klasse ist nicht
im Verzeichnis WEB-INF/classes
oder in einem jar-Archiv unter
WEB-INF/lib
in der Web-Applikation zu finden.
Error setting property values
Der Wert der Eigenschaft konnte nicht gesetzt werden. Sofern kein Schreibfehler
vorliegt, ist die Methode möglicherweise nicht öffentlich (public
)
oder der Wert passt nicht zum Typ des Arguments der Methode.
Could not instantiate class [Klassenname]
Die angegebene Java-Klasse Klassenname
konnte zwar gefunden
werden, es kann jedoch kein Objekt erzeugt werden. Möglicherweise muss eine
von davon abgeleitete Klasse verwendet werden.