twitter4j.properties の自動読み込みについて

510 views
Skip to first unread message

Ua__aU

unread,
Sep 26, 2011, 9:53:46 AM9/26/11
to Twitter4J J
初めて投稿します。(匿名にて失礼します)
twitter4j.properties の読み込みについてアドバイスをお願い致します。

ドキュメントにおいて、TwitterFactory#getInstance、ないしは TwitterFactory#getSingleton
を実行すれば WEB-INF/classes/twitter4j.properties が自動で読まれるとありますが、どちらを試して
も"OAuth consumer key/secret combination not supplied"と出てしまいます。

Configuration の内容を確認したところ、consumerKey、consumerSecretともに null となってました。

念のために PropertyConfiguration を使ってファイルを明示的に読み込ませてもみましたが、その場合はちゃんとプロパティがセッ
トされていることを確認できました。typoのようなミスや文字コード的な問題はないということです。

本日、Twitter4J のソースを読んだりもしてみましたが、問題がどこにあるかはわかりませんでした。
ステップでデバッグして確認もしてみたのですが、本来行くべきはずと思われる PropertyConfiguration が呼び出されぬまま進ん
で、結果 null となっているように思えましたが、そもそもそこがなぜかとかもよくわかりませんでした。ただ正直よくわかってない所もあるのでその
程度のコメントと捉えて下さい。

Java含め、プログラム経験が浅いことから、この投稿も中途半端な内容となってしまっていますが、無視したままも気持ち悪いために投稿させていただき
ました。
アドバイスなどありましたらばよろしくお願い致します。

以下、コードです。
(importで不要なものがあるかと思いますが無視して下さい)

package twitter4j.signin;

import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.TwitterStreamFactory;
import twitter4j.auth.RequestToken;
import twitter4j.conf.*;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.FileInputStream;

public class SigninServlet extends HttpServlet {
private static final long serialVersionUID = -6205814293093350242L;

protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
Twitter twitter = new TwitterFactory().getSingleton();
System.out.println(twitter.getConfiguration().toString());//-
>Key,Secret=null
request.getSession().setAttribute("twitter", twitter);
try {
StringBuffer callbackURL = request.getRequestURL();
int index = callbackURL.lastIndexOf("/");
callbackURL.replace(index, callbackURL.length(), "").append("/
callback");
RequestToken requestToken =
twitter.getOAuthRequestToken(callbackURL.toString());
request.getSession().setAttribute("requestToken", requestToken);
response.sendRedirect(requestToken.getAuthenticationURL());
} catch (TwitterException e) {
throw new ServletException(e);
}
}
}

Mocel

unread,
Sep 27, 2011, 4:51:09 AM9/27/11
to Twitter4J J
こんにちは。

参照されているドキュメントがわからないので未確認ですけど、PropertyConfiguration がデフォルトで読み込んでくれるパスは

./twitter4j.properties
/twitter4j.properties
/WEB-INF/twitter4j.properties

という順序になっています。
"classes/" を消してみてください。

また今の実装では TwitterFactory#getInstance() を呼び出すと
PropertyConfigurationFactory クラスが静的に持つ唯一の PropertyConfiguration オブジェクトを
流用し続けるので、PropertyConfiguration のコンストラクタは TwitterFactory#getInstance() の
初回呼び出し時にだけ実行されると思います。


-Mocel

Ua__aU

unread,
Oct 1, 2011, 7:50:52 AM10/1/11
to Twitter4J J
こんにちは。

プロパティファイルの配置場所ですが、(Eclipseを使わず)Tomcat配下にて
webapps/(content folder)/ここ
webapps/(content folder)/WEB-INF/ここ
webapps/(content folder)/WEB-INF/classes/ここ
webapps/(content folder)/WEB-INF/classes/twitter4j/ここ
webapps/(content folder)/WEB-INF/classes/twitter4j/signin/ここ

これらすべて確認してあるのですが、いずれにおいても読み込まれてはおりませんでした。
まだ理由がよく分からぬままなのですが、ひとまずはやれる方法で進んでみます。

返信ありがとうございました。
Reply all
Reply to author
Forward
0 new messages