如何使jersey servlet在java REST应用程序中加载多个服务或类

时间:2016-07-05 14:40:48

标签: java jetty

我在同一个包中有两个不同的java文件。这些类是EntryPoint.java和ModelInn.java。 现在,当jersey servlet启动时,我希望它加载EntryPoint类和ModelInn类。但与此同时,我只能加载一个。但我想加载这两个类。我正在使用码头9。

下面是我用来加载EntryPoint java类

的代码
package com.rest.test;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

public class App {
    public static void main(String[] args) throws Exception {
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");

        Server jettyServer = new Server(8080);
        jettyServer.setHandler(context);

        ServletHolder jerseyServlet = context.addServlet(
             org.glassfish.jersey.servlet.ServletContainer.class, "/*");
        jerseyServlet.setInitOrder(0);

        // Tells the Jersey Servlet which REST service/class to load.
        jerseyServlet.setInitParameter(
           "jersey.config.server.provider.classnames",
           EntryPoint.class.getCanonicalName());

        try {
            jettyServer.start();
            jettyServer.join();
        } finally {
            jettyServer.destroy();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

使用数组或逗号分隔的字符串来传递多个类,例如:

setInitParameter("jersey.config.server.provider.classnames", "my.EntryPoint, my.ModelInn");

参考:

https://jersey.java.net/apidocs/2.23.1/jersey/org/glassfish/jersey/server/ServerProperties.html#PROVIDER_CLASSNAMES

答案 1 :(得分:1)

您应该使用包定义。如果需要,您将能够添加多个包:

public static void main (String[] args) {
  double a = Math.ceil((float)160/60)*60;
  System.out.println(a);
}

希望它有所帮助!

相关问题