Skip to content

Commit

Permalink
Add compatibility mode warnings for legacy servlet configurations
Browse files Browse the repository at this point in the history
  • Loading branch information
michaeloffner committed Mar 5, 2025
1 parent f8a4be9 commit fac351e
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 8 deletions.
29 changes: 23 additions & 6 deletions core/src/main/cfml/context/admin/overview.cfm
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,31 @@ Redirect to entry --->
<cfif cgi.request_method EQ "POST" and error.message EQ "" and form.mainAction NEQ "none">
<cflocation url="#request.self#" addtoken="no">
</cfif>

<cfscript>
function checkServletEnv() {
var pc=getPageContext();
var factory=pc.getCFMLFactory();
var servlet=factory.getServlet();
var servletName=servlet.getClass().getName();
if("lucee.loader.servlet.javax.HttpServletJakarta" == servletName) {
return "Lucee is running in Java EE/javax compatibility mode. For optimal performance, consider upgrading your server to a Jakarta EE environment (Tomcat 10, Jetty 11, Undertow 3.0, Payara 6, WildFly 30). While compatibility mode works, native Jakarta EE support offers better performance and future compatibility.";
}
if("lucee.loader.servlet.CFMLServlet" == servletName) {
return "The deprecated [lucee.loader.servlet.CFMLServlet] is being used. Please configure your web server to use [lucee.loader.servlet.javax.CFMLServlet] for Java EE/javax environments or [lucee.loader.servlet.jakarta.CFMLServlet] for Jakarta EE environments instead.";
}
}
msg=checkServletEnv();
</cfscript>
<cfif not isNull(msg)>
<div class="warning nofocus">
<cfoutput>#msg#</cfoutput>
</div>
</cfif>
<cfset lucee_version = "UNKNOWN">
<cfinclude template="version.cfm">
<!--- <cfif lucee_version neq server.lucee.version && lucee_version neq "UNKNOWN">
<cfoutput>
<div class="error">Warning Lucee Admin was compiled with version #lucee_version#?</div>
</cfoutput>
</cfif>--->


<!---
Error Output --->
Expand Down
2 changes: 1 addition & 1 deletion loader/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<project default="core" basedir="." name="Lucee"
xmlns:resolver="antlib:org.apache.maven.resolver.ant">

<property name="version" value="7.0.0.117-SNAPSHOT"/>
<property name="version" value="7.0.0.118-SNAPSHOT"/>

<taskdef uri="antlib:org.apache.maven.resolver.ant" resource="org/apache/maven/resolver/ant/antlib.xml">
<classpath>
Expand Down
2 changes: 1 addition & 1 deletion loader/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<groupId>org.lucee</groupId>
<artifactId>lucee</artifactId>
<version>7.0.0.117-SNAPSHOT</version>
<version>7.0.0.118-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Lucee Loader Build</name>
Expand Down
20 changes: 20 additions & 0 deletions loader/src/main/java/lucee/loader/servlet/CFMLServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,28 @@
**/
package lucee.loader.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;

import lucee.loader.util.Util;

@Deprecated
public class CFMLServlet extends lucee.loader.servlet.javax.CFMLServlet {

private static final long serialVersionUID = 1389465039826124601L;

static final String ERROR_MESSAGE = "The Servlet [lucee.loader.servlet.CFMLServlet] is deprecated. "
+ "Please use [lucee.loader.servlet.javax.CFMLServlet] for Java EE/javax environments (Tomcat 9, Jetty 9, Undertow 2.0, JBoss 7, WebSphere Liberty 19) "
+ "or [lucee.loader.servlet.jakarta.CFMLServlet] for Jakarta EE environments (Tomcat 10, Jetty 11, Undertow 3.0, Payara 6, WildFly 30).";

@Override
@Deprecated
public void init(final ServletConfig sg) throws ServletException {
super.init(sg);
if (!engine.getCastUtil().toBooleanValue(Util.getSystemPropOrEnvVar("lucee.suppress.servlet.warning", null), false)) {
engine.getCFMLEngineFactory().log(org.apache.felix.resolver.Logger.LOG_WARNING, ERROR_MESSAGE);
System.err.println(ERROR_MESSAGE);
}
}

}
1 change: 1 addition & 0 deletions loader/src/main/java/lucee/loader/servlet/FileServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
**/
package lucee.loader.servlet;

@Deprecated
public class FileServlet extends lucee.loader.servlet.javax.FileServlet {

private static final long serialVersionUID = 8145868472337105470L;
Expand Down
1 change: 1 addition & 0 deletions loader/src/main/java/lucee/loader/servlet/RestServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
**/
package lucee.loader.servlet;

@Deprecated
public class RestServlet extends lucee.loader.servlet.javax.RestServlet {

private static final long serialVersionUID = 6675880638570226829L;
Expand Down
10 changes: 10 additions & 0 deletions loader/src/main/java/lucee/loader/servlet/javax/CFMLServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,19 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import lucee.loader.engine.CFMLEngineFactory;
import lucee.loader.util.Util;

public class CFMLServlet extends AbsServlet {

private static final long serialVersionUID = -1878214660283329587L;
private HttpServletJakarta myself;

private static final String EMULATION_MESSAGE = "Lucee is running in Java EE/javax compatibility mode. "
+ "For optimal performance, consider upgrading your server to a Jakarta EE environment (Tomcat 10, Jetty 11, Undertow 3.0, Payara 6, WildFly 30). "
+ "While compatibility mode works, native Jakarta EE support offers better performance and future compatibility.";

@Override
public void init(final ServletConfig sg) throws ServletException {
super.init(sg);
Expand All @@ -44,6 +50,10 @@ public void init(final ServletConfig sg) throws ServletException {
catch (jakarta.servlet.ServletException e) {
throw new ServletException(e);
}
if (!engine.getCastUtil().toBooleanValue(Util.getSystemPropOrEnvVar("lucee.suppress.servlet.warning", null), false)) {
engine.getCFMLEngineFactory().log(org.apache.felix.resolver.Logger.LOG_WARNING, EMULATION_MESSAGE);
System.err.println(EMULATION_MESSAGE);
}
}

@Override
Expand Down

0 comments on commit fac351e

Please sign in to comment.