阅读“属性”文件

时间:2012-04-30 07:19:04

标签: spring google-app-engine rest resteasy

我有一个使用Resteasy的Rest服务(在Appengine上运行),带有以下伪代码:

@Path("/service")
public class MyService {
  @GET
  @Path("/start")
  public Response startService() {
     // Need to read properties file here.
     // like: servletContext.getResourceAsStream("/WEB-INF/config.properties")
  }
}

然而很明显,这里无法访问servlet上下文。

代码如下:

 InputStream inputStream = this.getClass().getClassLoader()
                .getResourceAsStream("/WEB-INF/config.properties");  

无法在Appengine环境中执行。

修改

我尝试过像Spring一样:

appContext.xml

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="/WEB-INF/auth.properties"/>
</bean>

然后,将它放在实际的类字段上:

@Path("/service")
public MyService{
    @Autowired
    @Value("${myservice.userid}")
    private String username;
    @Autowired
    @Value("${myservice.passwd}")
    private String password;
 // Code omitted
}

然而,MyService的部分代码因为usernamepassword没有“注入”而抱怨,我的意思是它是空的,尽管它在auth.properties文件上

2 个答案:

答案 0 :(得分:2)

如果您将文件放在/WEB-INF/classes/(重要的是,在类路径中),将config.properties指定为顶级文件,这应该可以。

this.getClass().getClassLoader().getResourceAsStream("/config.properties");

请参阅此类似问题:How to load properties file in Google App Engine?

修改:现在你已经编辑了,我会回复&amp;回答春天相关的问题。因此,将auth.properties放入/ WEB-INF / classes /,然后按如下所示指定classpath。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:auth.properties"/>
</bean>

答案 1 :(得分:2)

在RESTEasy中,您可以通过@Context注释轻松注入Servlet上下文:http://docs.jboss.org/resteasy/docs/2.3.1.GA/userguide/html_single/index.html#_Context

可以在此处找到示例:Rest easy and init params - how to access?