我正在研究Jetty的一个例子。界面中有一些方法没有很好地记录,因此我不知道如何将样本调整到我的真实场景。 Jetty文档在某些部分似乎不完整。
对于我看过的很多例子,没有任何解释为什么他们将某些值传递给某些方法。他们怎么知道要传递什么参数?
是否有一些记录良好的示例或文档可以帮助我理解下面的代码:
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.servlet.ServletContainer;
public class MinimalServerRest {
public static void main(String[] args) throws Exception {
ServletHolder sh = new ServletHolder(ServletContainer.class);
// Cannot find documentation on setInitParamter
sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");
}
答案 0 :(得分:1)
这应该是一个好的开始: Embedding Jetty
由于您尝试将Jersey应用程序添加到Jetty,您可能对this感兴趣。
如果您有多个servlet等,您可以执行以下操作:
Server server = new Server(8080);
ServletContextHandler contextHandler = new ServletContextHandler(
ServletContextHandler.SESSIONS);
contextHandler.addEventListener(new SomeListener());
contextHandler.addFilter(SomeFilter.class, "/*", EnumSet.of(
DispatcherType.REQUEST, DispatcherType.FORWARD,
DispatcherType.INCLUDE, DispatcherType.ERROR));
contextHandler.addServlet(new ServletHolder(DefaultServlet.class), "/");
contextHandler.addServlet(new ServletHolder(new ServletContainer(
new SomeJerseyApplication())), "/basepath/*");
server.setHandler(contextHandler);
server.start();
server.join();
这是一些入门示例代码。除此之外,如果您需要initParameters,您始终可以使用
contextHandler.setInitParameter("key","value")
其中键或值字符串将非常符合您的要求。就个人而言,在使用嵌入式jetty时,我更喜欢使用类和对象而不是基于String的配置。
SomeJerseyApplication看起来像这样:
public class SomeJerseyApplication extends ResourceConfig {
public SomeJerseyApplication() {
packages("you.packages.that.need.to.be.scanned.for.resources");
register(SomeProvider.class);
register(SomeJerseyFeature.class);
}
}