クライアント側のGWT/RequestFactoryと、サーバー側のWebLogic上のJPA/EclipseLinkに基づいて、GWTアプリケーションを設定しています。WebLogic上でGWT/RequestFactoryを使用したClassCastException
しかし、開発中にサーバー側コード(エンティティ、DAO、またはJavaファイル内のコメントでもよい)で何かを変更するたびに、私はClassCastException
を2つの明らかに類似したクラスの間で取得します。私は自分のアプリケーションを使用しようとしています。それを取り除く唯一の方法は、WebLogic Serverを再起動することです。アプリケーションを再デプロイしても役立たない。
2012年2月10日午前4時08分10秒PM SEVERE com.google.web.bindery.requestfactory.server.RequestFactoryServlet のdoPost:予期しないエラーjava.lang.ClassCastExceptionが: com.mycompany.MyClassをすることはできません com.google.web.bindery.requestfactory.server.LocatorServiceLayer.doGetId(LocatorServiceLayer.javaで com.mycompany.server.locator.CodeLevelLocator.getId(MyClassLocator.java:1) でcom.mycompany.MyClassにキャスト: 168) at com.google.web.bindery.requestfactory.server.LocatorServiceLayer.getId(LocatorServiceLayer.java:66) at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.getId(ServiceLayerDecorator.java:81)
このサーバの再起動を回避するために、どのように任意のアイデア?
ありがとうございました。
EDIT:私はこれに対して奨励金を設定しています。各サーバーの変更後にWebLogicを再起動すると、本当に苦しいです!
public class DeploymentListener implements ServletContextListener {
private static Logger log = LoggerFactory
.getLogger(DeploymentListener.class.getName());
@Override
public void contextDestroyed(ServletContextEvent arg0) {
try {
// close the Entity Manager Factory.
EMF.close();
} catch (Exception e) {
log.error("Error closing the Entity Manager Factory", e);
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// nothing to do
}
}
私は本当に答える資格はありませんが、私はこれを提案することができます:エラーは、クラスローダーの問題のように見えます。ここで、jvmは2つのクラスローダーの同じクラスに対して2つの異なる宣言を持つようです。 。ほとんどのサーブレットコンテナは、アプリを相互に隔離したままにし、アプリを再デプロイできるように特別なクラスローダーを使用しています。私の推測では、これはあなたのケースでは正しく機能していないということです。 –
ヒントをお寄せいただきありがとうございますが、ここには[GWT/RequestFactory](http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html)固有のものがあると思います。おそらく、ここのGWTのユーザーがこの問題を抱えているのでしょうか? – foch
私は実際にGWT開発者であり、私のプロジェクトのほとんどでRFを使用していますが、その提案を提供するには十分なクラスローダーの問題を知っています。私はJettyやTomcatにRFクラスを再デプロイする際にその問題を見たことはありません。 –