JSF2 (Myfaces 2.0.12) を使用して WebSphere に変更を発行するときに問題に直面しています。
変更をローカル サーバー (WebSphere) に発行するたびに、java.lang.VerifyError が発生します。サーバーを完全に再起動すると、アプリケーションは変更を反映してスムーズに実行されます。
java.lang.VerifyError: com/sun/faces/renderkit/html_basic/HtmlResponseWriter.startElement(Ljava/lang/String;Ljavax/faces/component/UIComponent;)V
StackTrace は、ResponseWriter に何か問題があることを示しており、実際にそこを少し変更しました ;-) アクセシビリティ上の理由から、HTML を完全に制御する必要があるため、カスタム HtmlRenderer が必要です。重複するコードを減らすために、FacesContext から取得した ResponseWriter を独自のもので装飾し、その上に便利なメソッドを追加しました。
public class CustomResponseWriter<T extends UIInput & MyFormdataInterface> extends HtmlResponseWriter
{
public CustomResponseWriter(ReponseWriter writer){
super(writer, writer.getContentType(), writer.getCharacterEncoding());
}
public writeFancy(T component)
{
...
writeText(component.getMyFanceAttribute(), null);
...
}
}
私が言ったように、サーバーが再起動された後、コードは正常に実行されるので、コードは正しいと思います。しかし一方で、このエラーは、この CustomReponseWriter を使用しているページでのみ発生します。
新しいクラスで ResponseWriter を装飾するという考えに問題はありますか? それとも、これは単に WebSphere の問題なのでしょうか?