2

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

我正在使用 java 编码,使用grizzly服务器(2.3 版本),并且我设法使用多种资源(restful 类、java servlet 等)。

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

不过,我的目标是加载整个战争文件而不是单个类,但我还没有找到办法。


所以问题是“我如何在grizzly服务器中部署和运行一个战争文件?”

4

2 回答 2

1

根据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 文件;即解压到文件系统中。


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

  1. 解压 WAR 文件。
  2. 创建一个 URLClassloader 实例,该实例从“/WEB-INF/classes”加载“/WEB-INF/lib”中的 JAR 等。
  3. 通过调用注册它ResourceConfig.setClassLoader

作为记录,从打包的 WAR 文件中加载类更费力,而且显然性能很差。(如果你想看看怎么做,Tomcat 有这个功能……默认禁用。)

于 2015-06-08T12:23:25.127 回答
0

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

于 2015-06-08T16:40:41.020 回答