© Copyright International Business Machines Corporation 2006. All rights reserved.
エンタープライズ JavaBean (EJB) モジュールが単一の WebSphere Application Server 上で実行されている複数の EAR プロジェクトによって共用されているときに、そのうちの 1 つの EAR プロジェクトをサーバーから除去する場合、他の EAR プロジェクトが EJB プロジェクト内の EJB Bean などのリソースにアクセスするには、その前にそれらの EAR プロジェクトを再始動する必要があります。
このアクションをとらないと、以下に示されているようなエラー・メッセージが表示されることがあります。 このようなエラーが発生するのは、EAR の除去時に EJB プロジェクト内の Java Naming and Directory Interface (JNDI) 名がサーバーから除去されることが原因です。
以下は、エラー・メッセージの例です。
00000028 SystemOut O javax.naming.NameNotFoundException: コンテキスト: myCell/nodes/myNode/servers/server1、名前: ejb/ejbs/Session20Home: 名前 Session20Home 内の最初のコンポーネントが見つかりません。 [ルート例外は、org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0 です。]
場所は次のとおりです。
com.ibm.ws.naming.jndicos.CNContextImpl.processNotFoundException(CNContextImpl.java:4730)
com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1907)
com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1862)
com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1552)
com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1354)
com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:172)
javax.naming.InitialContext.lookup(InitialContext.java:363)
com.ibm.ivj.ejb.runtime.AbstractAccessBean.lookupAndCacheHome(AbstractAccessBean.java:224)
com.ibm.ivj.ejb.runtime.AbstractAccessBean.getGlobalHome(AbstractAccessBean.java:216)
com.ibm.ivj.ejb.runtime.AbstractAccessBean.getHome(AbstractAccessBean.java:249)
ejbs.Session20AccessBean.ejbHome(Session20AccessBean.java:50)
ejbs.Session20AccessBean.instantiateEJB(Session20AccessBean.java:80)
ejbs.Session20AccessBean.foo(Session20AccessBean.java:91)
以下の構成を持つプロジェクト (例えば、アプリケーション・クライアント・プロジェクト) があるとします。
- Java 用のプロジェクト・ファセットがバージョン 1.4 に設定されている
- このプロジェクトのターゲット・サーバー・ランタイムのサーバー構成内で、ホット・メソッド置換オプションが使用可能に設定されている
「デバッグ」ビューの「再開」ボタンが正常に機能しない可能性があります。 例えば、サーバー上でアプリケーションをデバッグ・モードで実行した際、実行時にソースの変更を試行してから、「再開」ボタンを使用してアプリケーションのデバッグを続行した場合などです。 ホット・メソッド置換によるソース・コードへの変更が適用されていない可能性があります。
実行時の変更を有効にするには、「再開」ボタンを 2 回クリックしてみてください。
注: この問題は、Java のプロジェクト・ファセットをバージョン 5.0 に設定した場合には発生しません。
Web プロジェクトの Web ライブラリーにユーティリティー JAR ファイルを追加し、コードでその JAR ファイル内のクラスを参照する場合、サーバー上でアプリケーションの実行を試行すると java.lang.NoClassDefFoundError エラーが発生する場合があります。
この問題を回避するには、以下の手順に従って、ユーティリティー JAR ファイルを EAR モジュールに追加してから、その JAR ファイルを Web プロジェクトの J2EE モジュール依存関係に追加します。
- ユーティリティー JAR ファイルを EAR モジュールに追加します。詳しくは、製品のヘルプの『プロジェクト・ユーティリティー JAR ファイルの追加』トピックを参照してください。
- Web プロジェクトを右クリックして、「プロパティー」を選択します。 「プロパティー」ダイアログ・ボックスが開きます。
- 「J2EE モジュール依存関係 (J2EE Modules Dependencies)」を選択します。
- 「JAR/モジュール」列の下の「J2EE モジュール」タブで、ユーティリティー JAR ファイルの横のチェック・ボックスを選択します。
リモート・サーバーを停止した場合、「終了」ボタンをクリックしたときに、「新規サーバー」ウィザードが完了するまでに要する時間が長くなることがあります。回避方法は、「新規サーバー」ウィザードの「終了」ボタンをクリックする前に、リモート・サーバーを始動することです。
保護された WebSphere Application Server v6.1 が始動済みの場合に、サーバー・エディターでサーバーの接続タイプをリモート・メソッド呼び出し (RMI) または SOAP に変更すると、そのサーバー・エディターで変更内容を保管した後で、以下の公開の失敗エラー・メッセージが表示される可能性があります。
サーバーが始動していないため、公開が実行されません。サーバーを開始してから、公開操作を行ってください。
このエラーは、無視しても構いません。 オプションで、「サーバー」ビューのサーバーの状況が「始動済み」になったら、公開コマンドを完了することができます (「サーバー」ビューで、サーバーを右クリックし、「公開」を選択します。)