Встроенный Tomcat без web.xml выдает исключение при использовании jstl

У меня есть приложение Swing, которое запускает встроенный сервер tomcat7 без web.xml. Я загружаю jsp, который использует jstl. Когда я получаю доступ к jsp, я получаю эту ошибку в своем приложении Swing:

18.02.2014 22:32:54 org.apache.jasper.compiler.WebXml <init>
WARNUNG: Internal Error: File /WEB-INF/web.xml not found
18.02.2014 22:32:54 org.apache.jasper.compiler.WebXml <init>
WARNUNG: Internal Error: File /WEB-INF/web.xml not found
18.02.2014 22:32:54 org.apache.catalina.core.ApplicationDispatcher invoke
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: The absolute uri: http://www.irquest.com/irq cannot be resolved in either web.xml or the jar files deployed with this application

В jsp я использую эти taglibs:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

Я использую jstl 1.1.2 и стандартный 1.1.2. Эти библиотеки включены в мой pom:

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

Вот как я настраиваю контекст:

Context jqs3context = null;
        try {
            jqs3context = tomcat.addWebapp("/" + servletContainerSettings.getServletContext(), servletContainerSettings.getHtdocsHome());
        } catch (ServletException e) {
            e.printStackTrace();
        }
        Wrapper wrapper = Tomcat.addServlet(jqs3context, "JQS3", servletContainerSettings.getServletClass());

        //[..] wrapper init params here [..]

        jqs3context.addServletMapping("/" + servletContainerSettings.getServletName() + "/*", "JQS3");
        jqs3context.setCrossContext(true);
        jqs3context.setLoader(new WebappLoader());
        jqs3context.setResources(new FileDirContext());
        jqs3context.getNamingResources().addResource(createDatabaseResource("jdbc/iradmindb"));

Это произошло после того, как я обновил встроенный tomcat5.5 до tomcat7. Я не могу понять, почему я получаю эту ошибку. Что мне не хватает?


person osigge    schedule 18.02.2014    source источник


Ответы (1)


Отвечая на мой собственный вопрос:

После возни с JarScanner и прочтения документации (https://tomcat.apache.org/tomcat-7.0-doc/config/jar-scanner.html), у меня это работает:

StandardJarScanner jarScanner = new StandardJarScanner();
jarScanner.setScanBootstrapClassPath(true);
jarScanner.setScanClassPath(true);
jqs3Context.setJarScanner(jarScanner);
person osigge    schedule 19.02.2014