Page 1 of 1

Bootstrapper not working in latest Smart Client

PostPosted: Fri Mar 22, 2024 4:11 pm
by rafig
Hi all,
I am not one to usually 'cross post' but I have had no response to my issue in this post
https://forum.servoy.com/viewtopic.php?f=16&t=21190&start=45#p125349
so I am having to re-post as this is now a major issue for me!
I am desperately trying to migrate my old Servoy 7 clients using 'Smart Client' [SC] to the latest Servoy release (currently 2023.12.2) so that I can gradually move them to TiNG, but allow them to carry on using SC until that is ready.
I have created solutions for them using the old DATASUTRA framework.
As a first step, I'm trying to get SC running from their server via Tomcat & a deployed WAR file, so have tried to use the 'bootstrapper' to do it.
I have edited the 'bootstrap.jnlp' file from the deployed context [DSPC] on the server & created this
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://proconf-dc01:8180/DSPC/">
   <information>
      <title>ProConf Servoy Client</title>
      <vendor>Servoy</vendor>
      <homepage href="http://www.servoy.com/"/>
      <description>Database client</description>
      <icon href="lib/images/servoy_client_icon.png" />
      <icon kind="splash" href="lib/splashclient.png" width="64" height="64"/>
      <shortcut online="false">
      <desktop/>
    </shortcut>
   </information>
   <resources>
      <j2se version="1.8"   java-vm-args="-XX:SoftRefLRUPolicyMSPerMB=3600000" />
      <jar href="bootstrap.jar" main="true" version="15" download="eager"/>
   </resources>
   <application-desc main-class="com.servoy.bootstrapper.Bootstrap">
      <argument>__DATASUTRA__</argument>
      <argument>bootstrapthreadpoolsize:8</argument>
   </application-desc>
   <security>
      <all-permissions/>
   </security>
</jnlp>

when launching this JNLP, it errors like this
Code: Select all
java.io.IOException: Server returned HTTP response code: 500 for URL: http://proconf-dc01:8180/DSPC/servoy-client/__DATASUTRA__.jnlp
                at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
                at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
                at com.servoy.bootstrapper.BaseBootstrap.loadAndStartClient(BaseBootstrap.java:59)
                at com.servoy.bootstrapper.Bootstrap.main(Bootstrap.java:23)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                at java.lang.reflect.Method.invoke(Unknown Source)
                at com.sun.javaws.Launcher.executeApplication(Unknown Source)
                at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
                at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
                at com.sun.javaws.Launcher.run(Unknown Source)
                at java.lang.Thread.run(Unknown Source)

so it seems to be trying to just get the old style solution JNLP file...
Do I have to a <resources> line for each jar that is part of my solution like (snippet)??
Code: Select all
      <jar href="lib/commons-codec.jar" version="1528362325793" download="eager"/>
      <jar href="lib/jcifs.jar" version="1528362325793" download="eager"/>
      <jar href="lib/httpclient.jar" version="1528362325793" download="eager"/>
      <jar href="lib/httpcore.jar" version="1528362325793" download="eager"/>
      <extension name="beans_molecule.jar" href="servoy-client/beans/molecule.jar.jnlp" version="1484750194853"/>
      <extension name="beans_htmlbean.jar" href="servoy-client/beans/htmlbean.jar.jnlp" version="1484750212135"/>
      <extension name="beans_jpedal_lgpl.jar" href="servoy-client/beans/jpedal_lgpl.jar.jnlp" version="1362737727000"/>
      <extension name="beans_servoy_slider.jar" href="servoy-client/beans/servoy_slider.jar.jnlp" version="1589968180367"/>

I also tried to edit the 'bootstrap.jar' / bootstrap.properties file to
Code: Select all
codebase=http://proconf-dc01:8180/DSPC/
solution=__DATASUTRA__
bootstrapthreadpoolsize=8
#arg0=system.property.servoy.profilename:YourProfileName
#arg1=argument:owner:1
#arg2=owners:2
#jnlp.bootstrapper.home.dir=

and using that, but that also failed (tried running from terminal with "java - jar xxx" and got similar error to above exception.

[EDIT] I have now also tried using OpenWebStart (didn't work as Java didn't match) and with the very kind help of Robert Edelmann, I have tried with some stand alone 'bootstraps' with newer Java versions built in and it is still not working!
I am generating the WAR without the solution files on my M2 MacBook Pro, but deploying them on a Windows/PC Server.
Is there something special I should be doing when creating WAR file to make SC work??
Or something in the servoy.properties file I should be setting differently (I have not disabled start.rmi - see screenshot)??
Network Settings.png
Network settings
Network Settings.png (149.91 KiB) Viewed 19181 times

Code: Select all
Server Information
Servoy version 2023.12.2 -releaseNumber 3924 (builddate: 2024-02-07 11:31)
Port used by RMI Registry: 1099
Repository version 56
Current time: Fri Mar 22 13:59:03 GMT 2024
Uptime: 3 days 45 minutes 10 seconds
Server ID: A7480557-7267-48A1-8A31-AEC3F44B9FC0

Settings file for this server: c:\.servoy\DSPC\.servoy\server\DSPC\servoy_server.properties

User Information
Logged in as: admin

JVM Information
java.vm.name=OpenJDK 64-Bit Server VM
java.version=21.0.2
java.vm.info=mixed mode, sharing
java.vm.vendor=Microsoft

Operating System Information
os.name=Windows Server 2012 R2
os.version=6.3
os.arch=amd64


Please advise what I am doing wrong??
(Clients are using Windows with Java 8 (1.8) on them so that they can still run my solution from Servoy 7.4.11 server (running elsewhere on network)

Sorry & thank you!

Rafi