Ресурсы в JAR являются частью пути к классам.Вы можете получить InputStream
ресурса classpath с помощью ClassLoader#getResourceAsStream()
.Итак, просто позвольте вашему сервлету делать именно это.
Предполагая, что у вас есть эти ресурсы JS в /META-INF/resources
JAR:
@WebServlet("/resources/*")
public class ResourceServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = request.getPathInfo();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream input = loader.getResourceAsStream("/META-INF/resources" + path);
if (input != null) {
response.setContentType(getServletContext().getMimeType(path));
OutputStream output = response.getOutputStream();
// Now just write input to output the usual way.
} else {
response.sendError(404);
}
}
}
Тогда вы можете получить /META-INF/resources/some.js
JARhttp://localhost:8080/contextname/resources/some.js.