How to set up a built-in pier + webjars

I have a project that launches an integrated pier server. Also, depending on the project, I have angularjs-1.2.12.jar.

How to configure jetty, set files from META-INF / resources. I tried to do the following:

    ResourceHandler resource_handler = new ResourceHandler();
    resource_handler.setDirectoriesListed(true);
    resource_handler.setWelcomeFiles(new String[]{ "index.html" });
    resource_handler.setBaseResource(Resource.newClassPathResource("/"));

    Server server = new Server(8080);
    server.setHandler(resource_handler);

But only files from target / classes objects are displayed.

Thanks.

UPD: resolved

    ResourceHandler resource_handler = new ResourceHandler() {
        @Override
        public Resource getResource(String path)
                throws MalformedURLException {
            Resource resource = Resource.newClassPathResource(path);
            if (resource == null || !resource.exists()) {
                resource = Resource.newClassPathResource("META-INF/resources" + path);
            }
            return resource;
        }
    };
    resource_handler.setDirectoriesListed(true);
    resource_handler.setWelcomeFiles(new String[]{"index.html"});
    resource_handler.setResourceBase("/");
    server.setHandler(resource_handler);
+4
source share
1 answer

I know this is an old question, but I had the same problem, and looking at everything, your solution was the best. But, as James Ward noted in the comments, this poses a security problem. Here is my solution based on yours:

public class MyResourceHandler extends ResourceHandler {
    @Override
    public Resource getResource(String path) {
        Resource resource = Resource.newClassPathResource("META-INF/resources" + path);
        if(resource == null) resource = super.getResource(path);
        return resource;
    }
}

, ResourceHandler . , DefaultServlet.

0

Source: https://habr.com/ru/post/1527190/


All Articles