This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Fehler beim fetchen der Metadaten

Allgemeine Fragen zur Entwicklung von und mit JVx.

Fehler beim fetchen der Metadaten

Postby hansemar » Mon Sep 10, 2018 11:52 am

Hallo zusammen,

nachdem ich die JVX-Version von 2.8 Version b36 auf 5.1.8 Version b41 geupdatet habe, bekomme ich folgende Fehlermeldung:

Meta data couldn't load from database! - SELECT *
FROM [SCHEMA_OWNER].(SELECT [COLUMNS] FROM [TABEL] WHERE [WHERE_CLAUSE] GROUP BY [COLUMN] )
WHERE 1=2

In der vorherigen Version konnten die Metadaten ohne Fehler gefetched werden.

Die Implementierung im Servercode:

Code: Select all
private final static String ARTIKEL = "("
                  + "select fk_user_name, "
                  + "min(anlage_datum) AS DATUM "
                  + "from artikel "
                  + "where fk_Status='aktiv' "
                  + "group by fk_user_name "
                  + "order by 2 desc "
                  + ")";
   
public DBStorage getArtikel() throws Exception
   {
      final String artikel = "ARTIKEL";
   
      DBStorage dbsArtikel = (DBStorage)get(artikel);
      if (dbsArtikel == null)
      {
         dbsArtikel = new DBStorage();
         dbsArtikel.setWritebackTable(ARTIKEL);
         dbsArtikel.setDBAccess(getDBAccess());
         dbsArtikel.open();

         put(artikel, dbsArtikel);
      }
      return dbsArtikel;
   }


Kann mir jemand helfen warum dieser Fehler nach dem Update auf die neue Version geschieht und wie man diesen beheben kann?

Gruß Mark
hansemar
 
Posts: 15
Joined: Tue Jun 26, 2018 10:46 am

Re: Fehler beim fetchen der Metadaten

Postby Support@SIB » Mon Sep 10, 2018 1:42 pm

Der Beispielcode ist nicht konsistent, sprich ARTIKEL ist kein String. Aber das wird wohl beim Aufbereiten für diesen Post passiert sein?

Also JVx liegt aktuell in Version 2.8 vor, aber 5.1.8 gibt es nicht.
Wir nehmen an das VisionX 5.1.8 gemeint ist.

Das Select Statement dürfte auch angepasst worden sein im Post?
Was passiert wenn Sie das fehlerhafte Statement, mit den Parametern - aus der Fehlermeldung, manuell ausführen? mit zB sqlplus (im Falle von Oracle)?

Im Fehlerfall bitte ein Ticket erstellen.

Aber auf jeden Fall, bitte die JVx Version (alt) und JVx Version (Neu) posten bzw. von welchem VisionX zu welchem VisionX aktualisiert wurde.
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: Fehler beim fetchen der Metadaten

Postby hansemar » Mon Sep 10, 2018 2:01 pm

Ja, die Fehler haben sich in der Anpassung des Codes reingeschlichen. Die SQL-Statements gegen die Datenbank liefern auch die angefragten Daten, wenn man aus der Abfrage „1=2“ weg lässt.

Hier die Manifest der JVX Version in der es beim Öffnen des Workscreens zu keinen Fehler gekommen:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_31-b04 (Sun Microsystems Inc.)
Implementation-Title: JVx 2.7 beta (nightly)
Implementation-Version: b1 16.11.2017 05:23:26 (nightly)
Implementation-Vendor: SIB Visions GmbH

Unter folgender Version ist es der Fehler beim Metadaten Fetch aufgetreten:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.5
Created-By: 1.6.0_24-b07 (Sun Microsystems Inc.)
Implementation-Title: JVx 2.8 (beta)
Implementation-Version: b41 17.05.2018 14:30:38
Implementation-Vendor: SIB Visions GmbH

Weitere Information dazu, beim zweiten Versuch den Workscreen zu öffnen wird kein Fehler mehr von der Applikation geworfen. Dieser tritt nur beim initialen öffnen des Workscreens auf.

Gruß Mark
hansemar
 
Posts: 15
Joined: Tue Jun 26, 2018 10:46 am

Re: Fehler beim fetchen der Metadaten

Postby hansemar » Mon Sep 10, 2018 2:26 pm

Hier ein ausführlicher Auszug des Stacktrace:

java.lang.SecurityException: Error opening work-screen 'de.fooBar.apps.l2kx.screens.DigitalWEKoepfeWorkScreen'
at com.sibvisions.apps.projx.ProjX.loadWorkScreen(ProjX.java:1172)
at com.sibvisions.apps.projx.ProjX.openWorkScreen(ProjX.java:2019)
at de.fooBar.apps.l2kx.fooBarERPApplication.openWorkScreen(fooBarERPApplication.java:134)
at com.sibvisions.apps.projx.ProjX.openWorkScreen(ProjX.java:750)
at javax.rad.application.genui.RemoteWorkScreenApplication.openWorkScreen(RemoteWorkScreenApplication.java:82)
at de.fooBar.apps.l2kx.screens.TreeMenuWorkScreen.doOpenWorkscreen(TreeMenuWorkScreen.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.rad.util.EventHandler$ListenerHandler.dispatchEvent(EventHandler.java:1016)
at javax.rad.util.EventHandler.dispatchEvent(EventHandler.java:606)
at javax.rad.util.RuntimeEventHandler.dispatchEvent(RuntimeEventHandler.java:73)
at com.sibvisions.rad.ui.awt.impl.AwtComponent.mousePressed(AwtComponent.java:996)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
at java.awt.Component.processMouseEvent(Component.java:6530)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.sibvisions.apps.projx.ProjX.loadWorkScreen(ProjX.java:4387)
at com.sibvisions.apps.projx.ProjX.loadWorkScreen(ProjX.java:1167)
... 45 more
Caused by: javax.rad.model.ModelException: RowDefintion can't init with meta data from storage!
at com.sibvisions.rad.model.remote.RemoteDataBook.open(RemoteDataBook.java:228)
at de.fooBar.apps.l2kx.screens.DigitalWEKoepfeWorkScreen.initializeModel(DigitalWEKoepfeWorkScreen.java:159)
at de.fooBar.apps.l2kx.screens.DigitalWEKoepfeWorkScreen.<init>(DigitalWEKoepfeWorkScreen.java:144)
... 51 more
Caused by: javax.rad.persist.DataSourceException: Init ServerMetaData failed!
at com.sibvisions.rad.model.remote.RemoteDataBook.initServerMetaData(RemoteDataBook.java:956)
at com.sibvisions.rad.model.remote.RemoteDataBook.open(RemoteDataBook.java:224)
... 53 more
Caused by: java.lang.RuntimeException: Meta data couldn't load from database!
hansemar
 
Posts: 15
Joined: Tue Jun 26, 2018 10:46 am

Re: Fehler beim fetchen der Metadaten

Postby Support@SIB » Mon Sep 10, 2018 2:37 pm

Bitte das Log für DBAccess einschalten. Dann wird das Statement angedruckt im logfile bzw. in der Konsole, je nachdem wie Sie die Applikation starten.

Das sollte weitere Hinweise liefern.

Beim 2. Mal Öffnen kommt kein Fehler? Hat die Tabelle dann alle gewünschten Spalten?
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: Fehler beim fetchen der Metadaten

Postby hansemar » Mon Sep 10, 2018 2:51 pm

Hier das Log, wenn DBAccess auf Debug geschaltet ist:

com.sibvisions.rad.persist.jdbc.DBAccess getAndStoreMetaDataIntern (Line: 5253)
ColumnMetaData(SELECT *
FROM ([SELECT_ABFRAGE])

WHERE 1=2 ) in 1ms
10.09.2018 14:39:21 [ FINE ] com.sibvisions.rad.persist.jdbc.DBAccess getForeignKeys (Line: 1255)
getConstraints(([SELECT_ABFRAGE])) in 10ms
10.09.2018 14:39:21 [ FINE ] com.sibvisions.rad.persist.jdbc.DBAccess getDefaultValues (Line: 5857)
getDefaultValuesIntern(([SELECT_ABFRAGE])) in 2ms
10.09.2018 14:39:21 [ SEVERE ] de.fooBar.apps.l2kx.LibriERPApplication openWorkScreen (Line: 134)
java.lang.SecurityException: Error opening work-screen 'de.fooBar.apps.l2kx.screens.DigitalWEKoepfeWorkScreen'

Die genaue Select-Abfrage habe ich rausgenommen. Diese hatte ich aber nochmal auf der Datenbank abgesetzt und keinen Fehler erhalten und auch alle Spalten sind enthalten.

Wenn ich nach dem ersten öffnen und der Exception das Log der Konsole lösche und den Workscreen erneut öffne sehe ich einen erfolgreichen Fetch-Aufruf gegen Datenbank.
Wie vorher geschrieben, mit einer älteren JVX-Version gab es keinen Fehler. Dieser tritt erst nach dem Update auf, daher gehe ich auch nicht von einen Fehler in der Abfrage aus.
hansemar
 
Posts: 15
Joined: Tue Jun 26, 2018 10:46 am

Re: Fehler beim fetchen der Metadaten

Postby hansemar » Mon Sep 10, 2018 3:44 pm

Wir haben eine Vermutung. Beim Fetchen der Metadaten, wobei es zu diesen Fehler kommt, wird der Schema Owner davor geschrieben.

SELECT *
FROM [SCHEMA_OWNER].(SELECT [COLUMNS] FROM [TABEL] WHERE [WHERE_CLAUSE] GROUP BY [COLUMN] )
WHERE 1=2

Bei der Abfrage des kommpletten Select kommt es auch auf der Datenbank zu einen Fehler, dass die Tabelle nicht existiert.

Zwei Fragen ergeben sich aber daraus.
1. Warum tritt der Fehler nach dem Update der JVX-Version auf
2. Warum kann man beim zweiten mal den Workscreen öffnen
hansemar
 
Posts: 15
Joined: Tue Jun 26, 2018 10:46 am

Re: Fehler beim fetchen der Metadaten

Postby Support@SIB » Tue Sep 11, 2018 12:00 pm

Um Ihnen helfen zu können benötigen wir detailiertere Informationen. Der StackTrace zB enthält keine Info vom Server Aufruf, sprich der DBStorage/DBAccess. Wurde dieser Teil entfernt?

Das Statement zu verstecken macht es für uns auch nicht einfacher. Wir können nur raten und das bringt keinen Erfolg. Mit ähnlichen Statements funktioniert das nämlich.

Natürlich kann es sein das ein Statement mit älteren JVx Versionen anders funktioniert als mit neueren, wenn zB ein Fehler in der älteren war und ein workaround gefunden wurde, dann kann es durchaus sein das dieser in neueren JVx Versionen nicht funktioniert. Aber klar kann es sein das sich ein Fehler eingeschlichen hat oder ein Feature das eine andere Verwendung voraussetzt.

Wie gesagt, es wäre sehr hilfreich, wenn wir einen Testfall zusammenbekämen der den Fehler reproduzierbar macht. Wir suchen ansonsten die Nadel im Heuhaufen. Vor allem der SCHEMA_OWNER wundert uns.

An dieser Stelle wäre es nötig, ein JVx Ticket zu erstellen und das Problem an die JVx Entwickler durchzureichen.
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: Fehler beim fetchen der Metadaten

Postby hansemar » Tue Sep 11, 2018 12:28 pm

Ich habe den Fall unter folgender Ticketnummer angelegt: FS#1947
hansemar
 
Posts: 15
Joined: Tue Jun 26, 2018 10:46 am

Re: Fehler beim fetchen der Metadaten

Postby Support@SIB » Tue Sep 11, 2018 3:45 pm

Das Ticketing wird Englisch gehalten. Bitte dies zu berücksichtigen.

Probieren Sie bitte mal, die Leerzeichen am Ende des Statements zu entfernen. Wir vermuten das es damit zusammenhängen könnte.

Weiters verwenden Sie Konstante in Ihren LCO für put/get. Diese entsprechen aber nicht dem Standard bzw. Methoden Namen. Dadurch wird die Objektsuche etwas gebremst. Hier wäre es ratsam den Methodennamen zu verwenden, z.B.

getDBAccess() -> "dBAccess"
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: Fehler beim fetchen der Metadaten

Postby hansemar » Tue Sep 11, 2018 5:04 pm

Wenn man den Zeilen Umbruch und das Leerzeichen am Ende des individuellen Selects entfernt, dann kann man den Workscreen ohne Fehler öffnen.

Warum ist der Fehler mit der neuen JVX-Version jetzt aufgetreten und die vorherige hatte keinen Fehler damit?
hansemar
 
Posts: 15
Joined: Tue Jun 26, 2018 10:46 am

Re: Fehler beim fetchen der Metadaten

Postby Development@SIB » Wed Sep 12, 2018 12:09 am

Das aktuelle JVx hat eine Optimierung hinsichtlich der Statements die beim open einer Storage abgesetzt werden. Wenn ein einzelnes Statement mehrmals abgesetzt wurde, so wird jetzt das Statement nur 1x abgesetzt. Das wirkte sich natürlich positiv auf die Performance aus, aber durch einen Fehler beim Statement Vergleich kam es zu ihrem Problem. Da reichte schon ein Whitespace am Ende.

Das Problem mit den Workscreen, der beim 2. Mal Öffnen funktionierte, lag daran das ein Cache Key nicht zurückgesetzt wird, im Fehlerfall - also ein Bug.

Also im Prinzip waren es Verbesserungen die noch nicht perfekt funktionieren und dann zu Problemen führen.
User avatar
Development@SIB
 
Posts: 325
Joined: Mon Sep 28, 2009 1:54 pm


Return to Development (DE)