On Fri, Oct 6, 2023 at 12:45 PM Rihab Kasim <rihabkasim...@gmail.com> wrote:
> Hi Team , > > We planned to upgrade both guacamole and apache tomcat from 1.5.2 and > 9.75.0 to 1.5.3 and 10.1.13 respectively , then came to know that there > is a significant change from Tomcat 9.0.x and Tomcat 10.0.x. The Java > package used by the specification APIs has changed from javax to jakarta. > The problem arises here in guacamole where it still uses Javax servlets and > other libraries which only support javax. > > *What we tried :-* > We tried to migrate Guacamole using the Apache Tomcat migration tool for > Jakarta EE <https://tomcat.apache.org/download-migration.cgi> , moreover > made changes in pom.xml and web.xml files in guacamole.war files to make > the guacamole compatible with Jakarta. But still the errors occur due to > mismatch in the configurations with Tomcat Jakarta Servlets and Guacamole. > > *Errors we got:* > > 1. java.lang.NoClassDefFoundError:javax/servlet/ServletContextListener > 2. java.lang.NoSuchMethodError: 'void > jakarta.servlet.http.HttpServletResponse.setStatus(int, java.lang.String)' > at > > org.glassfish.jersey.servlet.internal.ResponseWriter.writeResponseStatusAndHeaders(ResponseWriter.java:147) > > Were able to fix the first error after making changes in pom.xml and using > the tomcat migration tool for Jakarta,but the second error still exists > even after we changed the versions of all including *jersey server and > client*. > > pom.xml and web.xml files are attached for reference. > > This is a known issue: https://issues.apache.org/jira/browse/GUACAMOLE-1325 The solution for the time being is to stick with Tomcat 9.x, which is still actively maintained. Overall, some work will have to be done within the Java code for Guacamole to detect which namespaces are available and dynamically choose between them. It's doable, but is a bit of work. -Nick