Instead of one-jar, try the assembly plugin with it's
`jar-with-dependencies` built-in descriptorRef:
http://ondra.zizka.cz/stranky/programovani/java/maven/maven-create-distribution-package.texy

Ondra



On Fri, 2011-04-22 at 09:29 +0200, Lars Vonk wrote:

> Hi,
> 
> 
> 
> I am trying to create an application using embedded Jetty
> (version 7.4.0.v20110414) and want to package it using the onejar
> maven plugin (http://code.google.com/p/onejar-maven-plugin/).
> 
> 
> Here is the code where I start jetty:
> 
> 
>     Server server = new Server(8180);
>     ServletContextHandler context
> = new ServletContextHandler(ServletContextHandler.SESSIONS);
>     context.setContextPath("/");
>     context.setWelcomeFiles(new String[]{"index.html"});
> 
> 
>     ServletHolder servletHolder
> = new ServletHolder(new DefaultServlet());
>     URL resource = getClass().getResource("/web/");
>     String resourceBase = resource.toURI().toString();
>     servletHolder.setInitParameter("resourceBase", resourceBase);
>     context.addServlet(servletHolder, "/");
> 
> 
>     server.setHandler(context);
>     server.start();
> 
> 
> 
> 
> When I do java -jar onejar.jar and go to
> http://localhost:8180/index.html I get a 404.
> 
> 
> 
> 
> My onejar.jar looks like this:
> 
> 
> onejar.jar
> main/myapp.jar
> main/myapp.jar/web/index.html
> 
> 
> 
> 
> (Rest omitted for readability).
> 
> 
> 
> 
> I debugged through the application and noticed it throws (and ignores)
> an exception in the org.eclipse.jetty.util.resource.JarFileResource
> class in the method exists() in this piece of code:
> 
> 
> try
>                 {
>                     JarURLConnection
> c=(JarURLConnection)((new URL(_jarUrl)).openConnection());
>                     c.setUseCaches(getUseCaches());
>                     jarFile=c.getJarFile();
>                 }
>                 catch(Exception e)
>                 {
>                        Log.ignore(e);
>                 }
> 
> 
> The _jarUrl
> contains: jar:file:/target/onejar.jar!/main/myapp.jar!/web/index.html
> and throws a ZipException when doing
> c.getJarFile(): java.util.zip.ZipException: error in opening zip file.
> 
> 
> 
> 
> Does anyone has experience in using embedded jetty with the mentioned
> onejar plugin? What I'd like to do is do java -jar myjar.jar where
> myjar contains everything that is needed, no additional files and
> such.
> 
> 
> Extra information:
> 
> 
> I also created a unit test for this asfollows:
> 
> 
> @Test
>   public void defaultServlet() throws Exception {
>     final Server server = new Server(8181);
>     ServletContextHandler context
> = new ServletContextHandler(ServletContextHandler.SESSIONS);
>     context.setContextPath("/");
>     context.setWelcomeFiles(new String[]{"index.html"});
>     DefaultServlet defaultServlet = new DefaultServlet();
>     ServletHolder servlet = new ServletHolder(defaultServlet);
> 
>  servlet.setInitParameter("resourceBase", 
> "jar:file:/target/onejar.jar!/main/myapp.jar!/web/");
>     context.addServlet(servlet, "/");
>     server.setHandler(context);
>     server.start();
>     Resource resource = defaultServlet.getResource("/index.html");
>     assertNotNull(resource);
>     server.stop();
>   }
> 
> 
> This tests succeeds, meaning resource is not null. Does a real request
> use something else to find the resources that the getResource method
> on the servlet?
> 
> 
> Thanks in advance,
> 
> 
> Lars 
> 
> 
> 
> _______________________________________________
> jetty-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/jetty-users


_______________________________________________
jetty-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to