2009年9月21日月曜日

Servletで 405 エラー

App Engineで405がでてしばらくはまる.

落ちは,doGet を doGETと書いていた...教訓は,

@Override
は伊達じゃない,ってことで.

2009年9月20日日曜日

java-twitter とGAE

java-twitterはApp Engineでは使えない.
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
を使っているから.

くそー...面倒くさいな..

java-twitterのインストール

twitterのAPIをwrapしたライブラリjava-twitterをインストールしようとしたら,はまったのでメモ.バイナリがダウンロードできるのだが,依存しているjarが全然書かれていないので,一筋縄ではないかない,という...これがmaven時代のjavaプロジェクトのありかたなのか.

前提として,mavenはインストールされていること.適当なプロジェクトを作る.

> mvn archetype:create -DgroupId=com.example -DartifactId=sample
> cd sample
pom.xmlを編集して,下記を追加.レポジトリを追加しているのと,コンパイラのバージョン指定.
  <repositories>
    ...
    <repository>
      <id>java-twitter-repository</id>
      <url>http://java-twitter.googlecode.com/svn/repository/</url>
      <name>java-twitter maven repository</name>
    </repository>
    ...
  </repositories>
...
  <dependencies>
    ...
    <dependency>
      <groupId>net.unto.twitter</groupId>
      <artifactId>java-twitter</artifactId>
      <version>0.9-SNAPSHOT</version>
    </dependency>
    ...
  <dependencies>
...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
で,
> mvn package
> mvn dependency:copy-dependencies -DoutputDirectory=lib
とやるとlibにすべてのjarが集められる.
> cd lib
> ls
commons-beanutils-1.7.0.jar ezmorph-1.0.6.jar
commons-codec-1.2.jar  google-collections-0.9.jar
commons-collections-3.2.jar java-twitter-0.9-SNAPSHOT.jar
commons-httpclient-3.1.jar joda-time-1.6.jar
commons-io-1.4.jar  json-lib-2.2.3-jdk15.jar
commons-lang-2.4.jar  junit-3.8.1.jar
commons-logging-1.0.4.jar protobuf-java-2.2.0.jar
こんなにたくさん...たしかにこれはいちいち書いてられないかも.

2009年9月15日火曜日

OOWebとPOST

OOWebというcherrypyににたサーバフレームワークがある.メソッドをURLツリーにマップして,リフレクションでよびだしてくれてなかなか面白いのだが,どうもPOSTで生データを送ったりするのに対応できないっぽい.formからPOSTする場合のデータはちゃんとハンドルしてくれるのだけど,逆に生のデータがとれないのだ.

メソッドにはRequestStateという引数がわたるのだけど,このRequestStateのなかに生データへアクセスする方法が含まれていないようなのだ.eclipseで止めてのぞいてみたがだめっぽい. ソースをみても,RequestState以外を引数として呼び出すコードはない.ということで多分だめ.うーん,面倒だなあ.やっぱりjettyを使うのか..