Trace: Technical FAQ


Technical FAQ

Firewall setup

VisionX requires http (port 80) and https (port 443) to for e.g. solution store, cloud management and other features.

Which database & which platform are you using?

VisionX supports all major database vendors: Oracle, Postgres, MySql/MariaDB, MS Sql, DB2, Hana. We're using Java and support all Java application servers like: Tomcat, Wildfly, Glassfish, etc. You can deploy the created application with VisionX or manually, to the cloud, on premise, or as client/server desktop application.

Is VisionX on premise or a cloud service?

We offer both, but VisionX always runs on your local workstation.

What are the requirements for deployed applications?

A VM/Server with Java 8, a Java application server and one of the supported databases, e.g. CentOS VM, OpenJDK 8, Apache Tomcat, Postgres.

Can we integrate with Active Directory?

Yes, that's possible with Microsoft AD, but it is not included.

Which Vaadin UI version is included?

We use the latest Vaadin UI based on Vaadin 8.1.6. The system requirements for Vaadin 8.1.6 can be found here.

When dragging a table into a screen...Do you query all records

We have lazy loading everywhere and per default we only load the records that you see on the screen and some more to fill a buffer. We usually load records for about 100 milliseconds but at least the visible amount. The scrollbar shows that more rows are there. When you scroll down, more rows are loaded. The speed depends on the database query/performance and network speed.

Is it possible to search based on 2 or more columns (but not all columns)

No problem, just drag another search field from the bottom of the screen. Choose a column and condition (equal, smaller, …) for each field. All of them will be combined with an AND. A search field without specific condition will act as full-text search for “all columns”.

Is it possible to create a drop down based on a query?

For example: select distinct (S_YEAR) from PERSON_LIST

Be careful because distinct queries are usually “slow”, because of the force full table scan at the database level. To use a custom query for a drop down you do the following:

  • Add the table/view as data object in the bottom of the VisionX designer e.g. PERSON_LIST
  • Change the query in the data wizard in the bottom right corner e.g. add the distinct keyword before the query columns
  • Go to your base table where the drop down should be used, define a manual combobox there, and choose PERSON_LIST object from previous step

Additional information:

Views and Storages
Create Dropdown Without Foreign-Key Relation

Out of memory in VisionX

If you get an Out of memory or a Java heap space error, simply increase the memory of VisionX in visionx.bat or

.\runtime\bin\java -Xmx512M ... -jar lib\visionxloader.jar

Change 512M to e.g. 1G or 1500M. Don't forget to restart VisionX.

Additional JVM start parameters

On Windows, VisionX is usually started with visionx.exe. To define additional JVM parameters, however, visionx.bat or must be used, as any JVM parameters can be set with it, e.g .:

.\runtime\bin\java -Xmx512M -Dfile.encoding=UTF-8 ... -jar lib\visionxloader.jar

In this example, the system parameter file.encoding was set to UTF-8.

However, it is entirely possible to set any JVM parameters when using visionx.exe. Since VisionX uses the open source project launch4j, all features of the library can be used, such as the possibility of entering the JVM parameters in an ini file:

All you have to do is create a file called visionx.l4j.ini in the same directory as visionx.exe. The file can then be filled with the desired parameters:


How to start VisionX with de_CH language settings

Simply change the start script (visionx.bat, and add your language settings: -Duser.language=de_CH;-Duser.language=de_CH

Full script:

.\runtime\bin\java -Duser.language=de_CH;-Duser.language=de_CH -Xmx512M --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -jar lib\visionxloader.jar

If you use Windows and start VisionX with visionx.exe, it's also possible to create a file with the name visionx.l4j.ini:


WAR creation shows compiler errors!

Usually such problems occur if you do manual coding with an IDE. To find out what's the compiler error, simply enable logging and add the line

com.sibvisions.visionx.server.ant.AntRunner.level = ALL

to the file <visionx>/lib/ Read more information about VisionX logging.

To see the output, start visionx with visionx.bat. All problems will be shown in the console.

Another option is to start the WAR creation manually, in your IDE, with included ANT build file: build.xml. Every application contains this build file. The start.complete task will create the WAR file.

Column with same name created when making a subtable

When I click “Make Subtable” after adding a field on the “Edit table” screen, a mandatory column is added that has the same name as the subtable. This is always confusing to me, as I have almost never had a situation where I would have wanted to create a column that has the same name as the table. I am always unsure if best practice here would be to replace the table name with the intended first column name, or if the column with the table name has to be kept in place for another reason (especially since it is mandatory). Can it just be replaced?

Also, when I click the “Make Subtable” button in the “New Screen” wizard, the ID column is not shown. But when I edit an existing table, add a new field and click “Make Subtable” the ID column is shown. Is that intentional?

This is nearby best practice, the only downside is, that we do not know the plural or singular of the given word, to have it perfect. The theory and best practice in detail:

Tables should be in plural (eg. Projects, Tasks, States…). This is database theory, but in VisionX you can also use singular, to have less work (clicks and edits) to do, as the first column will be automatically singular.

Mainly a table should have a name/identifier column beside the internal id column. This column should have a proper name that identifies the table behind this column. (eg. Project, Task, …) This column should never be called “Name” or “Identifier”, …, because nearby every table will then have a “Name” column.

VisionX generates the label out of the box from the column names. If you have several tables inside a screen, you would have several Name editors, and will not know, to which table they belong. Actually the label of this editor will be renamed to Project or Task in the screen afterwards…

Also in comboboxes it make sence, that the value to choose is not called Name. It is a way better to have out of the box a field “Project” , “Task” or “State” to choose a Project, Task or State.

So this is the reason why it is the best practice, to initially give directly the identifier column a proper name, that identifies the table behind.

There is the possibility, that this identifier column should be calculated and not entered directly. eg: Contacts. Here it makes sence to have a “Contact” column, that is shown, if you have to choose a contact in another table (eg in Projects table) Actually you have the columns first name and last name. The column contact could be calculated either “[First Name] [Last Name]” or like in Outlook, “[Last Name], [First Name]”… Designing the data model this way, you'll have a contact combobox in projects screen to choose “Doe, John”, “Mustermann, Max”, …

Short Summary

A table should have a name that describes the data it stores. Normally this table should have a identifier/name column whose name describes which kind of data you get (so this should be the singular of table name), and whose value represents the whole row, to be able to use it as a combobox.

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