In a migration from ,Java to Jakarta,java 1.7 (JE 7) to JE 21 and with tomcat 10
the source code is :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package eu.oca;
import jakarta.ws.rs.ApplicationPath;
import java.util.Set;
import jakarta.ws.rs.core.Application;
import java.io.File;
import java.InetAddress;
import java.UnknownHostException;
//import kawa.standard.Scheme;
//import eu.oca.kawafunct.DBtoWebObserversKawa;
/**
*
* @author mattei
*/
@jakarta.ws.rs.ApplicationPath("jersey")
public class ApplicationConfig extends Application {
private boolean alreadyRun = false; //true; //false;
@Override
public Set<Class<?>> getClasses() {
System.out.println("Sidonie : ApplicationConfig : getClasses : alreadyRun = " + String.valueOf(alreadyRun));
if (!alreadyRun)
initSidonie();
alreadyRun = true;
Set<Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(resources);
return resources;
}
private void initSidonie() {
System.out.println("Sidonie : ApplicationConfig : initSidonie : registering Scheme environment...");
//Scheme.registerEnvironment(); // if you do not do that you will be sooner or later in serious troubles...
//System.out.println("Sidonie : ApplicationConfig : initSidonie : Scheme environment registered.");
// not really useful: give /root directory when tomcat started by root
try {
String path = new File(".").getCanonicalPath();
System.out.println("Sidonie : ApplicationConfig : initSidonie : path = " + path);
} catch(Exception e) {
System.out.println("Sidonie : ApplicationConfig : initSidonie : Exception in getCanonicalPath = ");
// if any error occurs
e.printStackTrace();
}
//System.out.println("Sidonie : ApplicationConfig : initSidonie : ApplicationConfig.APPLICATION_PATH = " + ApplicationConfig.APPLICATION_PATH);
// try to determine the webapps Catalina directory
String hostname = "Unknown";
String webapps_dir = "/usr/local/apache-tomcat-8.0.27/webapps";
try
{
InetAddress addr;
addr = InetAddress.getLocalHost();
hostname = addr.getHostName();
System.out.println("Sidonie : ApplicationConfig : Hostname = " + hostname);
if (hostname.equals("sidonie.oca.eu"))
webapps_dir = "/var/lib/tomcat8/webapps";
System.out.println("Sidonie : ApplicationConfig : webapps_dir = " + webapps_dir);
}
catch (UnknownHostException ex)
{
System.out.println("Sidonie : ApplicationConfig : Hostname can not be resolved");
}
//DBtoWebObserversKawa dbwo = new DBtoWebObserversKawa(webapps_dir);
//String res = dbwo.work();
}
private void addRestResourceClasses(Set<Class<?>> resources) {
//resources.add(eu.oca.InterfaceNomResource.class);
resources.add(eu.oca.InterfaceNomResource.class);
resources.add(eu.oca.ResultatGeneralAF.class);
resources.add(eu.oca.ResultatGeneralF.class);
resources.add(eu.oca.ResultatMesuresAF.class);
resources.add(eu.oca.ResultatMesuresF.class);
resources.add(eu.oca.SidonieAccueilD.class);
resources.add(eu.oca.SidonieWelcomeR.class);
resources.add(eu.oca.UpdateDBResource.class);
}
}
it seems ,reading logs, the code getClasses() is never called as it used to be in the previous versions of Tomcat .
All has been migrated with Netbeans 24 that use the automatic upgrade to Jakarta.
there is absolutely nothings in the logs:
11-Jan-2025 14:35:32.372 INFOS [http-nio-8080-exec-158] org.apache.catalina.startup.HostConfig.deployWAR Déploiement de l'archive [/opt/tomcat/webapps/Sidonie.war] de l'application web 11-Jan-2025 14:35:33.863 INFOS [http-nio-8080-exec-158] org.apache.jasper.servlet.TldScanner.scanJars Au moins un fichier JAR a été analysé pour trouver des TLDs mais il n'en contenait pas, le mode "debug" du journal peut être activé pour obtenir une liste complète de JAR scannés sans succès ; éviter d'analyser des JARs inutilement peut améliorer sensiblement le temps de démarrage et le temps de compilation des JSPs 11-Jan-2025 14:35:33.865 INFOS [http-nio-8080-exec-158] org.apache.catalina.startup.HostConfig.deployWAR Le déploiement de l'archive de l'application web [/opt/tomcat/webapps/Sidonie.war] s'est terminé en [1 493] ms
I do not understand why there is no errors in log and why the ApplicationConfig which extends Application does not run.
The Application build well in Netbeans , the Sidonie.war is well generated and contains all the classes and libraries, and jakarta new libraries.