I'm attempting to deploy a ColdFusion 2021 Enterprise JEE application WAR file (or even just plain CF 2021 Enterprise itself, with none of my code) to an Azure App Service, and it fails consistently. I've deployed CF 2018 and 2021 applications in other Azure environments, but this one is not working no matter what I do.
I am deploying via Azure PowerShell using Publish-AzWebApp, and the logs for the deployment show the process succeeded with no errors. But when I start or restart the App service, Tomcat 9 refuses to start. The few logs I am allowed to access say Tomcat is stumbing over the ColdFusion startup filters:
SEVERE [main] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [CFClickJackFilterSameOrigin] java.lang.NullPointerException
... and so on for ClickJackFilterDeny, ModuleCheckFilter and CFMonitoringFilter. I've checked for those classes' existence in the JAR file, and they're all there.
Thw WAR unpacks & runs OK on my local, non-Azure Tomcat server(s). I've run tests in Azure using Kudu, and it seems like the classpath is being set correctly. I have gone into neo-runtime.xml and checked the mappings, comparing them to working installations: they seem correct. There is no ColdFusion "logs" directory to refer to, because the application never gets far enough into deployment to create a logs directory. There are no "stuck" cached class files in the cfclasses directory, and the Felix cache was purged before deployment. I just can't get CF to start.
I should probably point out that in this environment I have no access to the Tomcat application itself, nor to its configuration files -- though I have switched minor versions of Tomcat 9 in the App Service config several times, and that has made no difference at all. I've also switched minor versions of Java 11, in case that helped (but it did not). In any case, I am not able to edit Tomcat's server.xml file, should that be necessary.
Can anybody give me a suggestion where to look to resolve this problem? Thanks!
Did you finally get it to work?
It seems to have been a result of a conflict with cached Tomcat files that I could not see, access, or delete, even though the original deployment was supposed to have been completely removed. Creating a brand-new deployment slot (with a name that didn't even slightly resemble any I'd ever used previously) eventually allowed me to deploy.