Jetty以java.lang.IllegalArgumentException开头:资源不能为null

时间:2015-06-05 16:16:41

标签: jetty embedded-jetty jetty-9

我使用WebAppContext作为嵌入式码头中的处理程序:

Server server = setupServerOfTwoConnectors();
server.setHandler(webAppContext());

server.start();

webAppContext()是:

private static WebAppContext webAppContext() {
    WebAppContext context = new WebAppContext();
    context.setContextPath("/foo");
    context.setWar("bar.war");

    return context;
}

我在这里错过了吗? 码头版本为9.2.10.v20150310

这是启动时的例外情况:

2015-06-05 10:57:45,015 [main] ERROR - [ContextLoader:331] Context initialization failed
java.lang.IllegalArgumentException: Resource must not be null
    at org.springframework.util.Assert.notNull(Assert.java:112)
    at org.springframework.core.io.support.EncodedResource.<init>(EncodedResource.java:66)
    at org.springframework.core.io.support.PropertiesLoaderSupport.loadProperties(PropertiesLoaderSupport.java:175)
    at org.springframework.core.io.support.PropertiesLoaderSupport.mergeProperties(PropertiesLoaderSupport.java:156)
    at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:80)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:265)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:162)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:606)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:800)
    at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:444)
    at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294)
    at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1349)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1342)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:505)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
    at org.eclipse.jetty.server.Server.start(Server.java:387)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    at org.eclipse.jetty.server.Server.doStart(Server.java:354)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at my.code.JettySanityTest.setupJetty(JettySanityTest.java:56)

1 个答案:

答案 0 :(得分:0)

  

在不知道你的战争文件需要什么样的Jetty配置的情况下,我只是在这个答案的黑暗中捅了一下。 (相应调整)

您想要为该网络应用声明一些配置行为。

例如:

    context.setConfigurations(new Configuration[] 
    { 
        new AnnotationConfiguration(),
        new WebInfConfiguration(), 
        new WebXmlConfiguration(),
        new MetaInfConfiguration(), 
        new FragmentConfiguration(), 
        new EnvConfiguration(),
        new PlusConfiguration(), 
        new JettyWebXmlConfiguration() 
    });

请注意,这些顺序很重要,其中任何一个都可以视为可选。

  • AnnotationConfiguration - 根据字节码中的注释配置webapp
  • WebInfConfiguration (默认启用) - 根据WEB-INF目录(主要的webapp和libs)中的信息配置webapp
  • WebXmlConfiguration (默认情况下已启用) - 根据WEB-INF/web.xml中的信息配置webapp元数据(仅限主网址)
  • MetaInfConfiguration (默认启用) - 根据META-INF目录(主要的webapp和libs)中的信息配置webapp
  • FragmentConfiguration (默认启用) - 根据lib片段中的信息配置webapp元数据
  • EnvConfiguration - 为webapp设置JNDI env
  • PlusConfiguration - 根据上述配置中元数据收集的信息建立/绑定JNDI变量
  • JettyWebXmlConfiguration (默认情况下已启用) - 使用主要网络应用程序配置webapp WEB-INF/jetty-web.xml(使用Jetty的IoC XML语言)