0

次の疑似コードを使用して、Resteasy(Appengine上で実行)を使用するRestサービスがあります。

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

ただし、ここではサーブレットコンテキストにアクセスできないことは明らかです。

そして次のようなコード:

 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文句を言います。ファイルにあるのに空であることを意味しますusernamepasswordauth.properties

4

2 に答える 2

2

/WEB-INF/classes/config.properties を最上位のファイルとして指定して、(重要なことに、クラスパス上にある)ファイルを配置すると、これは機能するはずです。

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

この同様の質問を参照してください: Google App Engine でプロパティ ファイルを読み込むには?

編集:これで編集が完了しました。Spring関連の質問に回答して回答します。そこで、auth.properties を /WEB-INF/classes/ に配置し、次のようにクラスパスを指定します。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:auth.properties"/>
</bean>
于 2012-04-30T07:43:27.897 に答える
2

RESTEasy では、@Context アノテーションを介してサーブレット コンテキストを簡単に注入できます: http://docs.jboss.org/resteasy/docs/2.3.1.GA/userguide/html_single/index.html#_Context

例はここにあります: Rest easy and init params - how to access?

于 2012-04-30T10:46:36.813 に答える