Embed jetty in a Java application and export it as a jar

I'm making a Java application embedded in jetty web server, which in turn provides content developed using Google Web toolkit It runs normally in eclipse, but when I export it as a jar file, I get a jetty error message "file not found"

The startup method of jetty server is as follows:

WebAppContext handler = new WebAppContext();
    handler.setResourceBase("./war");
    handler.setDescriptor("./war/WEB-INF/web.xml");
    handler.setContextPath("/");
    handler.setParentLoaderPriority(true);
    server.setHandler(handler);

    try {
        server.start();
        server.join();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

I suspect the problem is handler Setresourcebase() and handler Relative path used in setdescriptor() I have searched and tested many solutions with Google, but so far it has not helped In particular, I've tried to use things like getclass() getResource(“./ war”). To externalform(), but this will only throw null exceptions

I also tried:

ProtectionDomain protectionDomain = Start.class.getProtectionDomain();
URL location = protectionDomain.getCodeSource().getLocation();

But this will only cause jetty to serve the directory list of Java classes

Is there any way to do this?

Solution

>Copy all the files of the compiled GWT application into a java package For example:

my.webapp.resources
  html/MyPage.html
  gwtmodule/gwtmodule.nocache.js
  ...

(HTML and gwtmodule will also become Java packages). > Configure the embedded jetty instance to provide these files

final String webDir = this.getClass().
       getClassLoader().getResource("my/webapp/resources").toExternalForm();

 final Context root = new Context(server,"/",Context.SESSIONS);
 root.setContextPath("/");
 root.setResourceBase(webDir);
 root.addServlet(MyGwtService.class,"/servlets/v01/gwtservice");

This approach works for me when applications are running and deployed from eclipse

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>