Tomcat 環境で開発した Java アプリを Oracle Application Server にデプロイした際に起きた問題メモ

ちなみにOASJDKは1.4、Tomcatは1.5を使用

web.xmlのあたまの宣言

Tomcatでは以下のように記述していた。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

これでOASにデプロイするとエラーになる。以下のように修正することでデプロイできた。

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
	"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

SetCharacterEncoding 問題

responseに対し SetCharacterEncodingを適用する必要あり。
OAS の response クラスの実態はコンテナ上の servlet.jar で管理されてる(tomcatの場合 servlet-api.jar)が、ここにresponseのSetCharacterEncodingが定義されてないのでこける。

ちなみにSetCharacterEncodingをコンテナに依存させない方法として、apacheのSetCharacterEncodingFilter.classを使用する方法がある。