Info

Archive for

WicketをAppEngineで動かしてみた。
http://wicketonengine.appspot.com/

必要なjarファイル。

  • wicket-1.4.6.jar
  • slf4j-api-1.6.1.jar
  • slf4j-log4j12-1.6.1.jar
  • log4j-1.2.9.jar

1. プロジェクト作成
Eclipseから「Web Application Project」を作成する。

2. jarの配置、Build Path設定
上の4のjarファイルを /war/WEB-INF/lib/ に入れる。
Java Build Pathの設定で、wicket-1.4.6.jarとslf4j-api-1.6.1.jarを追加

3. web.xml

<display-name>wicket on engine</display-name>	

<filter>
	<filter-name>WicketFilter</filter-name>
	<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
	<init-param>
		<param-name>applicationClassName</param-name>
		<param-value>com.appspot.wicketonengine.WicketApplication</param-value>
	</init-param>
	<init-param>
		<param-name>wicket.configuration</param-name>
		<param-value>deployment</param-value>
	</init-param>
</filter>

<filter-mapping>
	<filter-name>WicketFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

4. appengine-web.xml

<sessions-enabled>true</sessions-enabled>

5. パッケージ、クラス作成
パッケージ:com.appspot.wicketonengine
クラス:WicketApplication.java

public class WicketApplication  extends WebApplication{    

	public WicketApplication(){

	}

	public Class getHomePage(){
		return HomePage.class;
	}

	@Override
	protected ISessionStore newSessionStore() {
		return new HttpSessionStore(this);
	}

	@Override
	protected void init() {
		super.init();
		getMarkupSettings().setDefaultMarkupEncoding("UTF-8");
		getRequestCycleSettings().setResponseRequestEncoding("UTF-8");
		getResourceSettings().setResourcePollFrequency(null);
	}
}

以上で、HomePage.javaなど作成して普通のwicket開発〜

————————————————————————————————————————
メモ:
エラー
Uncaught exception from servlet
java.lang.NoClassDefFoundError: Could not initialize class com.google.apphosting.runtime.security.shared.stub.java.lang.management.ManagementFactory

対象法:wicket-***.jarファイルを削除。

エラー
vm_global_library.vmなんちゃ言われたときは、空のvm_global_library.vmファイルをwarに作成して置く。

使えないメソッド?
Form.setVersioned(true);
setDefaultModelObject();
————————————————————————————————————————

Android2.2からアプリをSDカードに移動することができました。そこで実装方法です。

1. AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  android:installLocation="auto" .....>
    ...
    <android:minSdkVersion="7"/>
    ...
<manifest>

minSdkVersionは7と書いてるがもっと低いバージョンでもOK。
android:installLocationには3つの値が設定できる。
internalOnly: Android内蔵メモリへのインストールのみ許可。
auto: Android内蔵メモリ優先で、SDカードに移動可能。
preferExternal: SDカードを優先で、Android内蔵メモリ移動可能。

2. プロジェクトビルドターゲットをAPI Level 8に設定。

以上で、Android2.2 以上では「Move to SD card」できて、低いバージョンでも問題なく動く!(はず)。