MarcusDau
Occasional Collector

Problem mit Datenbank-Schema und FSI

Jump to solution

Hallo Community!

Ich hätte da gerne mal ein Problem. Folgende Situation: Ich habe ein Datenbank-Schema und darin diverse Tabellen.

Eine Tabelle ist z.B. "Stellenangebot", hier das XML-Schema dazu:

          <xs:complexType dbName="stellenangebot" name="Stellenangebot">

            <xs:sequence>

                <xs:element dbName="arbeitszeit" javaType="java.lang.String" length="20" name="arbeitszeit" nullable="1" type="xs:string"/>

                <xs:element dbName="aufgaben" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="aufgaben" nullable="1" type="xml"/>

                <xs:element dbName="ausbildungsrahmen" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="ausbildungsrahmen" nullable="1" type="xml"/>

                <xs:element dbName="berufschule" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="berufschule" nullable="1" type="xml"/>

                <xs:element dbName="beschreibung" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="beschreibung" nullable="1" type="xml"/>

                <xs:element dbName="changed_by" hidden="1" javaType="java.lang.Long" name="changed by" nullable="1" type="xs:long"/>

                <xs:element dbName="eintrittstermin" javaType="java.util.Date" name="eintrittstermin" nullable="1" type="xs:date"/>

                <xs:element dbName="erscheinungsdatum" javaType="java.util.Date" name="erscheinungsdatum" nullable="1" type="xs:date"/>

                <xs:element dbName="fs_id" hidden="1" javaType="java.lang.Integer" name="fs_id" type="xs:integer"/>

                <xs:element dbName="inhalt_ad" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="inhalt_ad" nullable="1" type="xml"/>

                <xs:element dbName="inhalt_id" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="inhalt_id" nullable="1" type="xml"/>

                <xs:element dbName="itzehoer" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="itzehoer" nullable="1" type="xml"/>

                <xs:element dbName="jobtitel" javaType="java.lang.String" length="150" name="jobtitel" nullable="1" type="xs:string"/>

                <xs:element dbName="kontaktformular_ref_id" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="kontaktformular_ref_id" nullable="1" type="xml"/>

                <xs:element dbName="kurzbeschreibung" javaType="java.lang.String" length="200" name="kurzbeschreibung" nullable="1" type="xs:string"/>

                <xs:element dbName="leistungen" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="leistungen" nullable="1" type="xml"/>

                <xs:element dbName="ort" javaType="java.lang.String" length="150" name="ort" nullable="1" type="xs:string"/>

                <xs:element dbName="profil" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="profil" nullable="1" type="xml"/>

                <xs:element dbName="released_by" hidden="1" javaType="java.lang.Long" name="released by" nullable="1" type="xs:long"/>

                <xs:element dbName="stelle" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="stelle" nullable="1" type="xml"/>

                <xs:element dbName="voraussetzungen" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="voraussetzungen" nullable="1" type="xml"/>

                <xs:element dbName="wf_col" hidden="1" javaType="java.awt.Color" name="wf col" nullable="1" type="xs:integer"/>

                <xs:element dbName="wf_id" hidden="1" javaType="java.lang.Long" name="wf id" nullable="1" type="xs:long"/>

                <xs:element dbName="wirbenoetigen" javaType="de.espirit.firstspirit.client.editorcomponent.EditorWrapper" length="65535" name="wirbenoetigen" nullable="1" type="xml"/>

                <xs:element dbName="anst_fs_id" name="anst_fs_id" nullable="1" type="xs:integer" visible="0"/>

                <xs:element dbName="ausb_fs_id" name="ausb_fs_id" nullable="1" type="xs:integer" visible="0"/>

                <xs:element dbName="fs_release_to" name="fs_release_to" type="xs:long" visible="0"/>

                <xs:element dbName="fs_valid_from" name="fs_valid_from" type="xs:long" visible="0"/>

                <xs:element dbName="fs_valid_to" name="fs_valid_to" type="xs:long" visible="0"/>

                <xs:element dbName="kont_fs_id" name="kont_fs_id" nullable="1" type="xs:integer" visible="0"/>

            </xs:sequence>

        </xs:complexType>

        <xs:key dbName="pk_stellenangebot" name="pk_Stellenangebot">

            <xs:selector xpath="Stellenangebot"/>

            <xs:attribute xpath="fs_id"/>

            <xs:attribute xpath="fs_release_to"/>

            <xs:attribute xpath="fs_valid_from"/>

            <xs:attribute xpath="fs_valid_to"/>

        </xs:key>

Ich greife nun mit FSI auf diese Tabelle zu und lese anhand verschiedener Kriterien Daten aus. Das klappt auch problemlos und ist nicht das Problem.

Ich verarbeite die Daten weiter und möchte auf Fremdschlüssel-Tabellen zugreifen. Der Code-Ausschnitt dazu:

<c:forEach items="${stellenangebote}" var="stellenangebot" varStatus="anzahl">

<%

Entity job =  (Entity)pageContext.findAttribute("stellenangebot");

Entity anstellungsverhaeltnis = (Entity) job.getValue("anstellungsverhaeltnis");

Entity ausbildungsregion = (Entity) job.getValue("ausbildungsregion");

Und hier taucht das Problem auf. Ich kann zwar auf das Anstellungsverhältnis zugreifen, aber nicht auf die Ausbildungsregion. Da bekomme ich immer null zurück, obwohl in der Datenquelle alles korrekt gefüllt und gespeichert wird.

Hier das XML-Schema "Anstellungsverhältnis":

        <xs:complexType dbName="anstellungsverhaeltnis" name="Anstellungsverhaeltnis">

            <xs:sequence>

                <xs:element dbName="changed_by" hidden="1" javaType="java.lang.Long" name="changed by" nullable="1" type="xs:long"/>

                <xs:element dbName="fs_id" hidden="1" javaType="java.lang.Integer" name="fs_id" type="xs:integer"/>

                <xs:element dbName="kennzeichen" javaType="java.lang.String" length="64" name="kennzeichen" nullable="1" type="xs:string"/>

                <xs:element dbName="name" javaType="java.lang.String" length="120" name="name" nullable="1" type="xs:string"/>

                <xs:element dbName="released_by" hidden="1" javaType="java.lang.Long" name="released by" nullable="1" type="xs:long"/>

                <xs:element dbName="wf_col" hidden="1" javaType="java.awt.Color" name="wf col" nullable="1" type="xs:integer"/>

                <xs:element dbName="wf_id" hidden="1" javaType="java.lang.Long" name="wf id" nullable="1" type="xs:long"/>

                <xs:element dbName="fs_release_to" name="fs_release_to" type="xs:long" visible="0"/>

                <xs:element dbName="fs_valid_from" name="fs_valid_from" type="xs:long" visible="0"/>

                <xs:element dbName="fs_valid_to" name="fs_valid_to" type="xs:long" visible="0"/>

            </xs:sequence>

        </xs:complexType>

        <xs:key dbName="pk_anstellungsverhaeltnis" name="pk_Anstellungsverhaeltnis">

            <xs:selector xpath="Anstellungsverhaeltnis"/>

            <xs:attribute xpath="fs_id"/>

            <xs:attribute xpath="fs_release_to"/>

            <xs:attribute xpath="fs_valid_from"/>

            <xs:attribute xpath="fs_valid_to"/>

        </xs:key>

        <xs:keyref dbName="fk_stellenangebot_anstellungsver" field="stellenangebotList" name="fk_Stellenangebot_Anstellungsverhaeltnis" refer="Anstellungsverhaeltnis" tfield="anstellungsverhaeltnis">

            <xs:selector xpath="Stellenangebot"/>

            <xs:attribute xpath="anst_fs_id"/>

        </xs:keyref>

Und hier "Ausbildungsregion":

          <xs:complexType dbName="ausbildungsregion" name="Ausbildungsregion">

            <xs:sequence>

                <xs:element dbName="abkuerzung" javaType="java.lang.String" length="2" name="abkuerzung" type="xs:string"/>

                <xs:element dbName="beschreibung" javaType="java.lang.String" length="64" name="beschreibung" type="xs:string"/>

                <xs:element dbName="changed_by" hidden="1" javaType="java.lang.Long" name="changed by" nullable="1" type="xs:long"/>

                <xs:element dbName="fs_id" hidden="1" javaType="java.lang.Integer" name="fs_id" type="xs:integer"/>

                <xs:element dbName="released_by" hidden="1" javaType="java.lang.Long" name="released by" nullable="1" type="xs:long"/>

                <xs:element dbName="wf_col" hidden="1" javaType="java.awt.Color" name="wf col" nullable="1" type="xs:integer"/>

                <xs:element dbName="wf_id" hidden="1" javaType="java.lang.Long" name="wf id" nullable="1" type="xs:long"/>

                <xs:element dbName="fs_release_to" name="fs_release_to" type="xs:long" visible="0"/>

                <xs:element dbName="fs_valid_from" name="fs_valid_from" type="xs:long" visible="0"/>

                <xs:element dbName="fs_valid_to" name="fs_valid_to" type="xs:long" visible="0"/>

            </xs:sequence>

        </xs:complexType>

        <xs:key dbName="pk_ausbildungsregion" name="pk_Ausbildungsregion">

            <xs:selector xpath="Ausbildungsregion"/>

            <xs:attribute xpath="fs_id"/>

            <xs:attribute xpath="fs_release_to"/>

            <xs:attribute xpath="fs_valid_from"/>

            <xs:attribute xpath="fs_valid_to"/>

        </xs:key>

        <xs:keyref dbName="fk_stellenangebot_ausbildungsreg" field="stellenangebotList" name="fk_stellenangebot_ausbildungsregion" refer="Ausbildungsregion" tfield="ausbildungsregion">

            <xs:selector xpath="Stellenangebot"/>

            <xs:attribute xpath="ausb_fs_id"/>

        </xs:keyref>

Ich sehe das Problem nicht. Woran kann es liegen, dass ich immer nur null zurückbekomme?

Grüße

Marcus

0 Kudos
1 Solution

Accepted Solutions
MarcusDau
Occasional Collector

Nach dem Telefonat mit dem Helpdesk, ist das Problem gefunden. Die Konfiguration in der fsweb.xml.

Dort stand folgendes in einer Zeile drin:

jdbc:mysql://op1000.iv.local:3306/itzehoer_relaunch?useUnicode=true&characterEncoding=UTF8&autoReconnect=true

Die &-Zeichen müssen kodiert werden, damit das klappt! Also:

jdbc:mysql://op1000.iv.local:3306/itzehoer_relaunch?useUnicode=true&amp;characterEncoding=UTF8&amp;autoReconnect=true

View solution in original post

0 Kudos
6 Replies
MarcusDau
Occasional Collector

Nach einem Update auf FS 4.2.223 bekomme ich nun in der Preview folgenden Fehler um die Ohren. Da scheint was mit FSI nicht so zu klappen...

java.lang.IllegalArgumentException: SessionManager.createSession: no handler registered for schema 'Data'

org.apache.jasper.JasperException: java.lang.IllegalArgumentException: SessionManager.createSession: no handler registered for schema 'Data'

at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:527)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)

at de.espirit.firstspirit.io.servlet.PreviewServlet.deliverPreview(PreviewServlet.java:397)

at de.espirit.firstspirit.io.servlet.PreviewServlet.doPost(PreviewServlet.java:215)

at de.espirit.firstspirit.io.servlet.PreviewServlet.doGet(PreviewServlet.java:164)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at de.espirit.firstspirit.io.servlet.WebAuthentication.doChain(WebAuthentication.java:603)

at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:468)

at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:146)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)

at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)

at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)

at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)

at java.lang.Thread.run(Thread.java:619)

Caused by: java.lang.IllegalArgumentException: SessionManager.createSession: no handler registered for schema 'Data'

at de.espirit.or.impl.web.SessionManagerImpl.createSession(SessionManagerImpl.java:114)

at de.espirit.or.impl.web.SessionManagerImpl.getSession(SessionManagerImpl.java:76)

at de.espirit.firstspirit.opt.integration.web.WebContext.getSession(WebContext.java:66)

at de.espirit.firstspirit.opt.integration.web.SearchTag.setQuery(SearchTag.java:77)

at de.espirit.firstspirit.opt.integration.web.QueryTag.doEndTag(QueryTag.java:15)

at org.apache.jsp.preview_005fcache._17145759.DE_005fc_005f22194436_17145762_jsp._jspx_meth_fsi_005fquery_005f0(DE_005fc_005f22194436_17145762_jsp.java:704)

at org.apache.jsp.preview_005fcache._17145759.DE_005fc_005f22194436_17145762_jsp._jspService(DE_005fc_005f22194436_17145762_jsp.java:326)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)

... 34 more

0 Kudos

Hört sich so an als hätten Sie nach dem Update die aktualisierte Version des Integration-Modules noch nicht in das Vorschausystem ausgerollt. Eventuell ist dort die Konfiguration auch noch nicht korrekt.

0 Kudos
MarcusDau
Occasional Collector

Haben alle Änderungen auch in der Preview nachgezogen, auch Data.schema.xsd wurde aktualisiert, aber der Fehler ist weiterhin vorhanden.

Bitte dringend um Hilfe!

0 Kudos

Ich würde empfehlen ein Ticket beim Helpdesk zu öffnen, damit mal jemand direkt auf das System schauen kann.

0 Kudos
klein
Crownpeak employee

Das Problem lag an einem ungültigen Inhalt der fsweb.xml Datei. Der Parameter "jdbc.URL" lautete dort

"jdbc:mysql://...?useUnicode=true&characterEncoding=UTF8&autoReconnect=true" />

Die "&"-Zeichen sind aber in XML nicht erlaubt.

Da die WebApplikation nicht unter internem Jetty, sondern im externen Tomcat lief, konnte man einen ensprechenden Fehler "ungültiges XML" nur dort lokalisieren.

0 Kudos
MarcusDau
Occasional Collector

Nach dem Telefonat mit dem Helpdesk, ist das Problem gefunden. Die Konfiguration in der fsweb.xml.

Dort stand folgendes in einer Zeile drin:

jdbc:mysql://op1000.iv.local:3306/itzehoer_relaunch?useUnicode=true&characterEncoding=UTF8&autoReconnect=true

Die &-Zeichen müssen kodiert werden, damit das klappt! Also:

jdbc:mysql://op1000.iv.local:3306/itzehoer_relaunch?useUnicode=true&amp;characterEncoding=UTF8&amp;autoReconnect=true

0 Kudos