0

NetBeansIDEを使用してJavaEEエンタープライズアプリケーションを開発しています。NetBeans IDEにバンドルされているGlassfishインスタンスでアプリケーション全体を開発およびテストできますが、アプリケーションを本番Glassfishサーバーにデプロイしようとすると、漠然としたエラーが発生します。サーバーに.earパッケージをデプロイしようとするたびに、Glassfishは次のエラーを報告します。

SEVERE: Exception while loading the app
SEVERE: Exception while shutting down application container
SEVERE: Exception while shutting down application container : java.lang.NullPointerException
SEVERE: java.lang.RuntimeException: Error occurred during deployment: Exception while shutting down application container : java.lang.NullPointerException. Please see server.log for more details.

このアプリケーションは、NetBeans 7.2、Java EE 6、JDK 7でゼロから開発され、GlassFish3.1.2.2にデプロイされます。ログレベルをALLに変更しても、GlassFishがより役立つエラーメッセージを生成することはありません。空の0バイトのbeans.xmlファイルを作成したり、JBossなどの別のアプリケーションサーバーを使用したりするなど、Web上で言及されている他のソリューションがあります。JBossや他のアプリサーバーを試しませんでしたが、Glassfishでエラーの原因を見つけることができません。

4

3 に答える 3

4

これは普遍的な答えではありませんが、 Serializableインターフェイスを実装せずにセッション スコープ クラスを定義すると、この問題に直面します。NullPointerException の例:

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class someBean(){
}

NullPointerExceptionを使用しない例:

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named
@SessionScoped
public class someBean() implements Serializable{
}

システム環境: Windows x64、jdk x64、glassfish x64。

于 2013-07-19T05:57:46.593 に答える
2

アプリに問題がない場合、通常、glassfish は何かをきれいにアンデプロイできませんでした。これはもちろん、その特定のアプリを以前にデプロイしたことを意味します。これを修正するために私が通常行うことは次のとおりです。

  • グラスフィッシュを止める
  • ドメインおよび/またはインスタンス ディレクトリに移動し、アプリのような名前のディレクトリがあるかどうかを確認して削除します: 「アプリケーション」、「生成された」の下のすべてのサブフォルダー。
  • osgi の下の felix ディレクトリを削除します (インストール ディレクトリのそのディレクトリを消去しないように注意してください!)
  • グラスフィッシュを起動
  • 配備

Glassfish クラスターを実行している場合、通常は DAS とインスタンスの両方でこれを行う必要があります。非常に面倒ですが、これは通常、かなりの数の展開を行った後にのみ発生します。

于 2013-11-17T21:23:25.217 に答える
0

不思議なことに、64ビットのDebian6システムで実行されている32ビットのJDKがエラーの原因でした。同じJDKアップデートの使用、開発システムに一致するように/ etc / hostsを変更する、本番サーバーにバンドルされたGlassfishを含むNetBeansをインストールする(!)、無効なものを使用するなど、考えられるすべての関連性と非関連性を試しました。有効なIPアドレスの代わりにIPアドレス、コミュニティバージョンの代わりにOracleGlassfishサーバーを使用するなど。いずれも役に立ちませんでした。この問題は、32ビットのJDKに気づき、64ビットバージョンに置き換えて初めて修正されました。

エラー、その漠然とした報告、そしてどういうわけか無関係な原因が私の時間の5日間を無駄にしました。私は自分の経験を共有することにしました。うまくいけば、同じようなイライラする状況にある人に役立つでしょう。

于 2012-09-01T16:54:03.780 に答える