在grizzly服务器中部署war文件

时间:2015-06-08 11:54:32

标签: java war grizzly java-war

我已经花了几天时间,我仍然没有找到答案(我确实发现了问题要求)

我使用 grizzly 服务器(2.3版本)编写java代码,并设法使用多种资源(restful classes,java servlet等)。

    URI uri = new URI("http://localhost....");
    ResourceConfig rc = new ResourceConfig();
    rc.registerClasses(aResource.class);
    GrizzlyHttpServerFactory.createHttpServer(uri, rc);

我的目标是加载一个完整的 war 文件,而不是单个类,但我找不到办法。

所以问题是'如何在灰熊服务器中部署和运行 war 文件?'

2 个答案:

答案 0 :(得分:1)

根据the Grizzly Javadoc你这样做:

为Servlet提供服务的同步Web服务器

    GrizzlyWebServer ws = new GrizzlyWebServer("/var/www");
    try {
        ServletAdapter sa = new ServletAdapter();
        sa.setRootFolder("/Path/To/Exploded/War/File");
        sa.setServlet(new MyServlet());
        ws.addGrizzlyAdapter(sa);
        ws.start();
    } catch (IOException ex) {
        // Something when wrong.
    } 

然而,正如你所看到的,你首先必须"爆炸" WAR文件;即将其解压缩到文件系统中。

您似乎正在使用Jersey ResourceConfig类。为了使您的方法有效,我认为您需要执行以下操作:

  1. 解压WAR文件。
  2. 创建一个从" / WEB-INF / classes"加载的URLClassloader实例; JARs等在" / WEB-INF / lib"。
  3. 通过致电ResourceConfig.setClassLoader
  4. 注册

    对于记录,从压缩的WAR文件加载类更加费力,显然性能很差。 (如果你想看看如何做,Tomcat有这个功能......默认情况下被禁用。)

答案 1 :(得分:0)

目前无法将WAR文件部署到Grizzly 2.x.