this has nothing todo with tomcat that in inside 2020.03
with WAR deployment that Tomcat is not used at all (but the tomcat you have installed at your server)
If this would be NGClient then i would say this is a CSP problem
see the admin page and then “servoy.ngclient.setContentSecurityPolicyHeader” (and there you have a whole group)
But thats not used for the WebClient, so this sounds more like a browser change or so extra servlet filter you have configured thats does set some headers.
yes, sorry, I was wrong. This happens on a Tomcat 9.0 server with a Servoy2020.03 war file.
The Tomcat default web.xml has changed in Tomcat 9.0 in this area and is more restrictive.
I guess this will be addressed by Servoy when they upgrade to Tomcat 9?
i have no idea what the exactly problem is
And if it is the default web.xml of a tomcat, thats not something servoy can change.
(except maybe setting stuff up in the web.xml of servoy itself, you can provide your own, based on ours)
but what does tomcat now do then according to you? Does it send suddenly extra set of headers to the client/browser?
In Tomcat 9.0 is the following enabled (not enabled in Tomcat 8.5):
httpHeaderSecurity
org.apache.catalina.filters.HttpHeaderSecurityFilter
true
antiClickJackingEnabled
true
**antiClickJackingOption**
DENY
The antiClickJacking security is triggered when a dialog window is opened in servoy_webclient.
first of all ,we can’t do much about that if tomcat would by default do that.
But i just downloaded the latest 9.0.36 and looked into the default web.xml:
its commented out, so somebody else did enable that.
Thanks Johan for this valuable info!
I am starting internally a (Tomcat installation) investigation…
Thanks again for taking the time!
Hi I was working away happily, then suddenly one my form editors stopped saving and I tried to restart Servoy Developer. Now it freezes on startup:
2020-06-10 17:28:50,020 ERROR [Framework stop] com.servoy.j2db.util.Debug - Component spec for bootstrapcomponents-label not found; please check your component spec file(s). [ ]
*****
2020-06-10 17:36:23,164 WARN [main] org.sablo.specification.WebComponentSpecProvider - Called WebComponentSpecProvider.getSpecProviderState() on a none initialzed provider, this can be just a problem in startup, returning an empty state [ ]
java.lang.RuntimeException: spec component provider is null
at org.sablo.specification.WebComponentSpecProvider.getSpecProviderState(WebComponentSpecProvider.java:112) ~[?:?]
at com.servoy.eclipse.ui.views.solutionexplorer.SolutionExplorerTreeContentProvider.getComponentsSpecProviderState(SolutionExplorerTreeContentProvider.java:445) ~[?:?]
at com.servoy.eclipse.ui.views.solutionexplorer.SolutionExplorerTreeContentProvider.hasChildren(SolutionExplorerTreeContentProvider.java:1684) ~[?:?]
at com.servoy.eclipse.ui.views.solutionexplorer.SolutionExplorerTreeContentProvider.<init>(SolutionExplorerTreeContentProvider.java:372) ~[?:?]
at com.servoy.eclipse.ui.views.solutionexplorer.SolutionExplorerView.createTreeViewer(SolutionExplorerView.java:1628) ~[?:?]
at com.servoy.eclipse.ui.views.solutionexplorer.SolutionExplorerView.createPartControl(SolutionExplorerView.java:861) ~[?:?]
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:154) ~[?:?]
at org.eclipse.ui.internal.e4.compatibility.CompatibilityView.createPartControl(CompatibilityView.java:155) ~[?:?]
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:361) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58) ~[?:?]
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:1002) ~[?:?]
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:967) ~[?:?]
at org.eclipse.e4.core.internal.di.InjectorImpl.internalInject(InjectorImpl.java:139) ~[?:?]
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:408) ~[?:?]
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:331) ~[?:?]
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:202) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:91) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:60) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:42) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:132) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:1002) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:547) ~[?:?]
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) ~[org.eclipse.equinox.common_3.10.600.v20191004-1420.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:531) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:73) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:1002) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) ~[?:?]
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) ~[org.eclipse.equinox.common_3.10.600.v20191004-1420.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1297) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:105) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:680) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) ~[?:?]
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) ~[org.eclipse.equinox.common_3.10.600.v20191004-1420.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:140) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:676) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) ~[?:?]
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) ~[org.eclipse.equinox.common_3.10.600.v20191004-1420.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveRenderer.processContents(PerspectiveRenderer.java:51) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:676) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) ~[?:?]
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) ~[org.eclipse.equinox.common_3.10.600.v20191004-1420.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.showTab(PerspectiveStackRenderer.java:82) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.postProcess(LazyStackRenderer.java:105) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.PerspectiveStackRenderer.postProcess(PerspectiveStackRenderer.java:64) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:680) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) ~[?:?]
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) ~[org.eclipse.equinox.common_3.10.600.v20191004-1420.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.SashRenderer.processContents(SashRenderer.java:140) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:676) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) ~[?:?]
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) ~[org.eclipse.equinox.common_3.10.600.v20191004-1420.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:72) ~[?:?]
at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:665) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:676) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:768) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:739) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:733) ~[?:?]
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) ~[org.eclipse.equinox.common_3.10.600.v20191004-1420.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:717) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1086) ~[?:?]
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) ~[org.eclipse.core.databinding.observable_1.8.100.v20191118-0932.jar:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) ~[?:?]
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:660) ~[?:?]
at org.eclipse.ui.internal.Workbench$Lambda$194.0000000000000000.run(Unknown Source) ~[?:?]
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) [org.eclipse.core.databinding.observable_1.8.100.v20191118-0932.jar:?]
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:559) [org.eclipse.ui.workbench_3.117.0.v20191126-1131.jar:?]
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154) [org.eclipse.ui.workbench_3.117.0.v20191126-1131.jar:?]
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) [org.eclipse.ui.ide.application_1.3.500.v20191122-2109.jar:?]
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) [org.eclipse.equinox.app_1.4.300.v20190815-1535.jar:?]
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) [org.eclipse.osgi_3.15.100.v20191114-1701.jar:?]
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) [org.eclipse.osgi_3.15.100.v20191114-1701.jar:?]
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) [org.eclipse.osgi_3.15.100.v20191114-1701.jar:?]
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) [org.eclipse.osgi_3.15.100.v20191114-1701.jar:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657) [org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar:?]
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594) [org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar:?]
at org.eclipse.equinox.launcher.Main.run(Main.java:1465) [org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar:?]
HI, I’m back in business. First, I checked in my changes into git. Then I made a new workspace downloaded a commit from this morning, got Servoy Developer to start normally. Then I overwrote my work space with my latest commit and launched Developer.
So far, so good…
not sure why it hangs, but that stack shouldn’t really cause that, and that stack is fixed for 2020.6
If something hangs at startup, look if you admin page did came up and make a stack dump
Bug in Servoy2020.03:
databaseManager.addTableFilterParam(‘db_server’, ‘clients’, ‘owner_id’, ‘IN’, [“234244”, “68678668”], ‘filter_4’)
var _fs = databaseManager.getFoundSet(‘db_server’, ‘clients’)
_fs.loadAllRecords()
var _array = databaseManager.getSQLParameters(_fs, true)
_array[0] holds some internal object and not the array [“234244”, “68678668”] !
Multi tennant showstopper in our solution…
Lambert,
This is related to the new feature in https://wiki.servoy.com/display/DOCS/2020.03+Whats+new
Databases who are supporting this (for now only postgresql) will use the ANY (?) instead of IN (?,?,?) when possible for queries
If you look at the sql generated, there will be one question mark instead of the 2 before.
What are you using the sql parameters for?
Passing them to databaseManager.getDataSetByQuery() works with the returned data of databaseManager.getSQLParameters()
Rob
Hi Rob,
We use databaseManager.getSQL() and databaseManager.getSQLParameters() to generate a SQL query (including all filters!) that is used as a parameter in a Jasper report run!
Can the full not prepared SQL query be extracted from a Servoy foundset in Servoy2020.03?
Help!
Lambert,
Please create an issue for this in the Servoy support site: https://support.servoy.com
In the mean time, you can use a workaround:
There is a global setting in servoy.properties that can be used to disable the new optimized (postgres only) sql:
servoy.server.sql.useArrayForIn=false
This will get you the old style sql en the array values back.
Rob
Thx johan? what did i do? ![Wink ;)]()
Thanks for sharing the setting in the servoy_properties file!
i think you should look who really helped you ![Wink ;)]()
THX ROB!
Oh, Sorry Rob!
Thanks a lot for the info.
Can you (also) explain the Servoy advantage(s) of using ANY instead of IN?
Using the IN statement will result in different prepared statements if the # of values in the in clause differ. Using the ANY statement will result in the same prepared statement regardless of the # of values in the IN statement.
Besides this meaning that the prepared statements for more actual different queries can be cached and the database has to only come up with one execution plan for the same query regardless of the # of values, Postgres specifically also performs better with ANY statements compared to IN statements