Sto tentando di eseguire un progetto Web Java in Tomcat 8 che viene eseguito tradizionalmente sotto WebSphere. Un servlet effettua la seguente chiamata:getServletContext(). GetRealPath() in Tomcat 8 restituisce il percorso errato
xslFilePath = config.getServletContext().getRealPath(System.getProperty("file.separator") + "xsl");
config è un'istanza di ServletConfig.
xsl è all'interno del progetto e distribuito come C: \ myproject \ build \ web \ xsl. Quando il servlet tenta di fare riferimento a un file che si trova in xslFilePath, viene visualizzata un'eccezione che indica che Tomcat sta effettivamente cercando il file xsl in C: \ Programmi \ Apache Software Foundation \ Apache Tomcat 8.0.3 \ bin \ null. Ovviamente questa è la posizione sbagliata e non viene trovato nulla.
Purtroppo non riesco a cambiare il codice perché non ho accesso alla fonte. Quindi mi piacerebbe sapere se questo è il comportamento previsto per Tomcat? Esiste una configurazione Tomcat che mi consenta di garantire che il percorso faccia riferimento alla directory di distribuzione e non alla directory bin di Tomcat? Sarebbe preferibile scegliere un altro contenitore servlet? Tutto il consiglio sarebbe apprezzato.
Questa risposta è corretta, ma non si tratta solo di utilizzare il separatore di percorso errato. Le versioni precedenti di Tomcat consentivano getRealPath ("xsl") senza alcun separatore iniziale, ma Tomcat 8 richiede "/ xsl" (altrimenti restituisce null). Questo ha rotto molte delle mie applicazioni web personali, la maggior parte delle quali è sopravvissuta non compilata dai tempi di Tomcat 5 ... – sam