1

I try to use jetty's ConcatServlet to concatenate javascript generated from my own servlet and javascript generated by wro4j WroFilter. It seems concatenation doesn't work, regardless the javadoc of ConcatServlet that states that it can be used to concat generated content.

I think the issue is that the wro4j content is generated by a filter an not a servlet as 'concatenating' a single source generated by my servlet works fine, while 'concatenating' the single wro4j generated resource doesn't work but I get the exception below. It complaints about a missing file, although the request /wro/script.js is served fine if requested normally. Any suggestions?

java.io.FileNotFoundException: !/wro/script.js
    at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:465)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:698)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:526)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:138)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:586)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1105)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1039)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136)
    at org.eclipse.jetty.server.Dispatcher.include(Dispatcher.java:169)
    at org.eclipse.jetty.servlets.ConcatServlet.doGet(ConcatServlet.java:122)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:695)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:698)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1564)
    at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1535)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:524)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:138)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:568)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1105)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1039)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:201)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:445)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:277)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:216)
    at org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532)
    at java.lang.Thread.run(Thread.java:724)
Tamas
  • 3,254
  • 4
  • 29
  • 51
  • 1
    The /wro/script.js is a virtual resource, it doesn't actually exist on the servlet context. This is why you get java.io.FileNotFoundException. I don't understand why you don't use the filter only? – Alex Objelean Oct 17 '13 at 09:45
  • Because my another js file is also generated. (It contains i18n messages in JSON format based on a text file) – Tamas Oct 17 '13 at 09:57
  • That shouldn't be a problem. Wro4j is capable of handling dynamically generated resources. – Alex Objelean Oct 17 '13 at 10:03
  • Hmm.. I tried adding /msg.js into my wro4j config, but it has no effect; (/msg.js is generated by my custom servlet.) – Tamas Oct 17 '13 at 12:35
  • How is your servlet mapped? Is it mapped to root? What happens when you are trying to access the /msg.js resource in the browser? Do you see it? If yes, then wro4j should also be able to locate it and process properly. If you cannot fix this problem, feel free to open an issue on the wro4j project page. – Alex Objelean Oct 17 '13 at 15:08
  • very simple mapping: ` MessagesServlet mypackage.MessagesServlet MessagesServlet /msg.js ` – Tamas Oct 17 '13 at 16:33
  • let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/39445/discussion-between-alex-objelean-and-tamas) – Alex Objelean Oct 17 '13 at 19:43

0 Answers0