- PR -

ServletExceptionについて

1
投稿者投稿内容
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2003-04-03 04:26
初めて書き込みします。頭脳パンです。

EJBを作成して、アプリケーションからEJBを呼ぶことは
出来たのですが、サーブレットからEJBを呼ぶとServletExceptionが
表示されて正しく実行されません。

詳細としては、
EJB(文字列を返すだけのSession Bean)を作成し、J2EEサーバにDeploy
アプリケーションからDeployしたEJBが実行できることを確認。
そのあと、アプリケーションをBeansに改造し
そのBeansを呼ぶサーブレットを作成。J2EEサーバにこのサーブレットとBeansをDeploy
そして実行するとエラーになるといった具合です。

また、BeansのEJBを呼ぶ部分をコメントアウトするとServletExceptionは
表示されず、正しく実行できます。

原因が分かる方いらっしゃいますでしょうか。

環境は、J2SE 1.4.1,J2EE 1.3.1です。
へげもん
ベテラン
会議室デビュー日: 2002/04/14
投稿数: 87
お住まい・勤務地: 埼玉県
投稿日時: 2003-04-03 13:01
これだけではなんとも……。
ServletExceptionをcatchして、この例外の元になったエラーのスタックトレースを取得してみてください。
コード:
try {
    // EJBを呼ぶ
} catch ( ServletException e ) {
    e.getRootCause().printStackTrace();
}


みたいな感じで。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2003-04-04 22:26
へげもんさん、ご返答ありがうございます。
解決したのでご報告します。

ServletExceptionは実は
NoClassDefFoundExceptionが出ていました。
どうやらEJB呼び出し時に、ホームインタフェースのクラスが見つからなかったようです。
なので、EJBをDeployしたときに「クライアントJarを返します」で作成した
JarファイルをWEB-INFフォルダ下にlibフォルダを作りそこにコピーしました。
(このJarファイルは、ホームインタフェース、リモートインタフェース、Beanクラス
が入っているファイルです)

この作業を行ったら実行できました。

ところで、このJarファイルへは環境変数CLASSPATHで設定しておいたのに
上記方法でないとできませんでした。
サーブレット等からEJBを呼び出す場合はどのようにするのが普通なのでしょうか。
うのきち
ベテラン
会議室デビュー日: 2003/02/17
投稿数: 55
投稿日時: 2003-04-05 00:42
引用:

頭脳パンさんの書き込み (2003-04-04 22:26) より:
へげもんさん、ご返答ありがうございます。
解決したのでご報告します。

ServletExceptionは実は
NoClassDefFoundExceptionが出ていました。
どうやらEJB呼び出し時に、ホームインタフェースのクラスが見つからなかったようです。
なので、EJBをDeployしたときに「クライアントJarを返します」で作成した
JarファイルをWEB-INFフォルダ下にlibフォルダを作りそこにコピーしました。
(このJarファイルは、ホームインタフェース、リモートインタフェース、Beanクラス
が入っているファイルです)

この作業を行ったら実行できました。

ところで、このJarファイルへは環境変数CLASSPATHで設定しておいたのに
上記方法でないとできませんでした。
サーブレット等からEJBを呼び出す場合はどのようにするのが普通なのでしょうか。




頭脳パンさんが自力で解決されたように、WEB-INF/libに置くのが良いと思います。
ちなみにTomcatの場合は、以下が参考になります(残念ながらJa-Jakartaにはまだ無かったので英語ですが)。CLASSPATHは参照されません。

http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html
1

スキルアップ/キャリアアップ(JOB@IT)