Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Die ICA-Version 1.7.x unterstützen den Standard Java EE 8. Die Version 1.7.x wurden auf den Anwendungsservern Wildfly-14 und Wildfly-18 getested. Wir empfehlen die Verwendung des Wildfly-18 in der letzten verfügbaren Unterversion.


Voraussetzungen


Datenbank


ItemBeschreibungBeispielBemerkungen
1Datenbank ICA 1.7.x anlegencreate database ica_wf18_XXX_202001 CHARACTER SET utf8 COLLATE utf8_bin;wf18 => Wildfly 18
2Zugriff erlaubengrant all on ica_wf18_XXX_202001.* to YOUR_USER_NAME ;

3Zugriff testen

Application Server


Wildfly 14

Konfigurationsanpassungen. Siehe Anpassungen Wildfly 18.x

Die Verwendung auf einem WF-14 ist nicht empfohlen.

Aufgrund eines Fehlers im WF-14, der mit WF-15 behoben wurde, wird für ICA-1.9.x der WF-18 benötigt. 

Wildfly 18




Sample Data Source<xa-datasource jndi-name="java:/IcaDb" pool-name="IcaDb" enabled="true">
<xa-datasource-property name="DatabaseName">
ica_wf18_xxx202001
</xa-datasource-property>
<xa-datasource-property name="URL">
jdbc:mysql://lp14:3306/ica_wf18_xxx202001
</xa-datasource-property>
<xa-datasource-property name="serverName">
lp14
</xa-datasource-property>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
<driver>mysql</driver>
<security>
<user-name>ica_user</user-name>
<password>ica_user</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<background-validation>true</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</xa-datasource>

Required Servlet Container Configuration change 

In the standalone/configuration/standalone.xml file change the servlet-container XML element so that it has the attribute allow-non-standard-wrappers="true".

Korrekt wäre: 

Code Block
languagexml
themeEclipse
<servlet-container name="default" allow-non-standard-wrappers="true">
                <jsp-config/>
                <websockets/>
            </servlet-container>

Die Korrektur ist durchzuführen, wenn nach dem Login folgendes Verhalten angezeigt wird: 

image2020-7-8_17-42-9.pngImage Modified

Im Log (server.log) steht folgende Meldung:

Caused by: java.lang.IllegalArgumentException: UT010023: Request HttpServletRequestImpl [ POST /ica/rest/nami/auth/manual/sessionStartup ] was not original or a wrapper
 





Migration der Datenbank

Vorbereitung


StepDump des Live-System


1mysqldump -u ica_user -p -h YOUR_HOST_OR_IP xxx_202001 > xxx_202001_wf8_20200708.sql
xxx_202001 = Name der Datenbank (live-System, alt) 

2cat xxx_202001_wf8_20200708.sql | mysql -u ica_user -p -h YOUR_HOST_OR_IP ica_wf18_xxx_202001

ica_wf18_xxx_202001= Name der Datenbank (live-System, neu)
















Leitfaden zur Migration 


Datenbankintegrität korrigieren

Mit der Umstellung des Application-Server, bzw. der Umstellung des EJB-Layers ist es notwendig, dass die Fremdschlüssel der Datenbank neu aufgebaut werden. Aufgrund von Integritätsfehler kann das fehlschlagen. Betroffene Datensätze müssen dann manuell korrigiert werden.


Fehler (server.log)Failed statementDatensätze 
Bsp 1: Fehlender Report, Report-Parameter aber vorhanden
FehlerCaused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`ica_wf18_202001
`.`#sql-7f1_3c`, CONSTRAINT `FKkvcph7v0k0c4u891j0osaugcl` FOREIGN KEY (`gruppierung_id`) REFERENCES `Gruppierung` (`id`))

Error executing DDL "alter table caea_report_caea_report_param add constraint FKgp48ex53qv04
a4y7gwbkexyww foreign key (Report_id) references caea_report (id)" via JDBC Statement



Error executing DDL "alter table caea_report_caea_report_param add constraint FKgp48ex53qv04
a4y7gwbkexyww foreign key (Report_id) references caea_report (id)" via JDBC Statement


Datensätze findenselect * from caea_report_caea_report_param rp left join caea_report r on (r.id = rp.report_id) where r.id is null and rp.report_id is not nul
l;

report_id s merken, die nicht existieren zur weiteren Verwendung unten. Ggf. in temporäre Tabelle speichern

delete from caea_report_caea_report_param where report_id in  (0);



Bsp 2: 
Fehleralter table SammelUeberweisungIca add constraint FKkvcph7v0k0c4u891j0osaugcl foreign key (gruppierung_id) references Gruppierung (id)

Datensatz finden:select g.id, su.gruppierung_id from SammelUeberweisungIca su left join Gruppierung g on (g.id = su.gruppierung_id) where g.id is null and su.g
ruppierung_id is not null;  



Löschen
  • delete from SammelUeberweisungIca where id = xxx; 
  • ggf. noch die Überweisung löschen:
    • delete from UeberweisungIca where sammelUeberweisung_id = xxx;


Bsp 3: OneTimeNotification
Datensatz finden:select g.id, su.gruppierung_id from SammelUeberweisungIca su left join Gruppierung g on (g.id = su.gruppierung_id) where g.id is null and su.g
ruppierung_id is not null;  



Fehleralter table OneTimeNotification add constraint FK4f6abh7ow957cltpbmgx3cbyi foreign key (notification_id) references HistoryEntry (id)

DS finden

select ot.id from OneTimeNotification ot left join HistoryEntry ht on (ht.id = ot.notification_id);





-- Temporäre tabelle und löschen: 

  • create temporary table OTDEL select ot.id from OneTimeNotification ot left join HistoryEntry ht on (ht.id = ot.notification_id);
  • delete from OneTimeNotification where id in (select id from OTDEL);



Bsp 4: Nicht assozierte dynamische Felder:

select * from Identitaet_EorDynAbstractValue where Mitglied_id = 0 and Kontakt_id = 0;




delete from  Identitaet_EorDynAbstractValue where Mitglied_id = 0 and Kontakt_id = 0;  










Testlauf QA System


Live System Migrieren

...