【问题标题】:Embedded Jetty resourceBase classpath URLEmbedded Jetty resourceBase 类路径 URL
【发布时间】:2011-02-19 10:35:44
【问题描述】:

我将 Jetty 嵌入到基于 Spring 的应用程序中。我在 Spring 上下文文件中配置我的 Jetty 服务器。我遇到问题的配置的具体部分是:

<bean class="org.eclipse.jetty.webapp.WebAppContext">
   <property name="contextPath" value="/" />
   <property name="resourceBase" value="????????" />
   <property name="parentLoaderPriority" value="true" />
</bean>

如果您在上面看到,我将 ?????????? 放在了哪里,理想情况下,我希望 resourceBase 引用我的类路径上的文件夹。我将我的应用程序部署在单个可执行 JAR 文件中,并在我的类路径中有一个文件夹 config/web/WEB-INF

Jetty 似乎能够处理在 resourceBase 中定义的 URL(例如 jar:file:/myapp.jar!/config/web),但它似乎不支持类路径 URL。如果我定义类似 classpath:config/web 的内容,我会收到 IllegalArgumentException。

这对我来说真的很痛苦。有谁知道无论如何要实现此功能?

谢谢,

安德鲁

【问题讨论】:

    标签: spring jetty embedded-jetty


    【解决方案1】:

    您需要将资源作为 Spring 的 Resource 并在其上调用 getURI().toString(),如下所示:

    public class ResourceUriFactoryBean extends AbstractFactoryBean<String> {
    
        private Resource resource;
    
        public ResourceUriFactoryBean(Resource resource) {
            this.resource = resource;
        }
    
        @Override
        protected String createInstance() throws Exception {
            return resource.getURI().toString();
        }
    
        @Override
        public Class<? extends String> getObjectType() {
            return String.class;
        }    
    }
    

    -

    <property name="resourceBase">
        <bean class = "com.metatemplating.sample.test.ResourceUriFactoryBean">
            <constructor-arg value = "classpath:config/web" />
        </bean>
    </property>
    

    -

    或者使用 Spring 3.0 的表达语言更优雅的方法:

    <property name="resourceBase" 
        value = "#{new org.springframework.core.io.ClassPathResource('config/web').getURI().toString()}" /> 
    

    【讨论】:

    • 不错的一个。如果您不使用 Spring,只需使用 SomeClass.class.getResource("/config/web").toURI().toString()
    猜你喜欢
    • 2015-06-13
    • 2016-03-03
    • 2018-05-12
    • 2012-07-17
    • 1970-01-01
    • 2012-09-26
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多