- PR -

Axis へ jws ファイル登録時に FileNotFoundException エラー

1
投稿者投稿内容
SIYARO
会議室デビュー日: 2004/03/23
投稿数: 2
投稿日時: 2004-03-23 20:07
初めまして。 SIYARO と申します。

SOAPの世界へ足を踏み入れたばかりです。
諸先輩方のお知恵をお借りしたく、投稿させて頂きました。

当初、Apache-SOAPで勉強していたのですが、「Axis」の存在を知り、
Apache-SOAPで動作していたクラスを、移植しようとしました。


Webサイト等で解説されている手順を見ながら、基本的な「jws」ファイルを
作成し、デプロイすることはできました。
ところが、Apache-SOAPで動かしていた自作クラスを移植しようとすると、
以下のエラーが発生してしまいます。

<エラー>
java.io.FileNotFoundException: C:\Program Files\Apache Group\Tomcat 4.1\
webapps\axis\WEB-INF\jwsClasses\hoge.class (指定されたファイルが見つかりません。)

自分で作成したJavaファイルの拡張子を「jws」に変更し、
「<TOMCAT_HOME>\webapps\axis\」へコピーしました。

「hoge.jws」は、Packageで「jp.co.foo」となっており、エラーで表示されている
場所には無いのが普通だと思います。
不思議なのは、「<TOMCAT_HOME>\webapps\axis\WEB-INF\jwsClasses\jp\co\foo」
の中に、コンパイルされたクラス「hoge.class」が生成されていることです。


<質問1>

拡張子「jws」へ変更し、自動的にデプロイする場合、内部で「import」等で
呼び出されているクラスはどうすれば良いのでしょうか?

エラーが発生するクラスは、importで自作したクラスを呼び出しています。
素人なりに考えたのは、それら呼び出されるクラスも、コンパイルして配置しなければ
ならないと思うのですが、「<TOMCAT_HOME>\webapps\axis\jwsClasses」配下へは、
「jws」で指定したファイルしかコンパイル(配置)されないようです。
手動でコンパイル済みのクラスを「<TOMCAT_HOME>\webapps\axis\jwsClasses」配下へ
コピーしてはみたものの、エラーは解消しませんでした。


<質問2>

一般的に、servletは「WEB-INF\Classes\」が従来の形だったと思うのですが、
Axisで呼び出されるクラスは、「WEB-INF\jwsClasses\」配下に配置しないといけないのでしょうか。


<質問3>

Apache-SOAPでは、ブラウザ上で、SOAPの設定を行うことが出来て、
とても重宝したのですが、Axisではそのようなツールは存在しないのでしょうか。


<質問4>

「Apache-Axis」のおすすめの解説書を教えてください。
当方、Beanはよくわかりません。Javaはとりあえず扱えます。


<環境>
WindowsXP Pro SP1
Tomcat4.1.29(5.0.19)ローカルにて両方ともテスト
Java 1.4.2
Apache Axis 1.1 Final


お忙しいとは思いますが、どうかご教授頂けないでしょうか。
よろしくお願いいたします。
kan
ベテラン
会議室デビュー日: 2002/11/28
投稿数: 55
投稿日時: 2004-03-25 10:18
<回答1, 2>

jwsにしたクラスはパッケージ名をなくして、importするクラスは
普通に WEB-INF\classes\ 以下に置けばよかったように思います。
間違ってたらごめんなさい。

<回答3>

セキュリティ上の理由で、Axisの管理画面は削除されたということ
だったと思います。web.xmlの以下の部分のコメントを外せば、

<!-- uncomment this if you want the admin servlet -->
<!--
<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/servlet/AdminServlet</url-pattern>
</servlet-mapping>
-->

/axis/servlet/AdminServlet?cmd=start
またはstopで何かが(?)start/stopできるみたいです。
SIYARO
会議室デビュー日: 2004/03/23
投稿数: 2
投稿日時: 2004-03-26 09:20
SIYAROです。
早速のレスありがとうございます。

> jwsにしたクラスはパッケージ名をなくして、importするクラスは
> 普通に WEB-INF\classes\ 以下に置けばよかったように思います。

なるほど。
package名が入ってるクラスを、SOAPの呼び出し対象にしてはいけないと
言うことですね。これは気が付かなかったです。

> セキュリティ上の理由で、Axisの管理画面は削除されたということ
> だったと思います。web.xmlの以下の部分のコメントを外せば、

これは助かります。
慣れてる方は、XMLをいじればいいだけの話だと一笑されそうですが、
私のような若輩者にとっては、とてもありがたい存在です。

少し遅くなると思いますが、必ずkanさんのレスの通り、
動作確認をしてから、ご報告したいと思います。

kan
ベテラン
会議室デビュー日: 2002/11/28
投稿数: 55
投稿日時: 2004-03-26 11:43
> なるほど。
> package名が入ってるクラスを、SOAPの呼び出し対象にしてはいけないと
> 言うことですね。これは気が付かなかったです。

jwsを使って配布するときはpackage名が入れられないということだと思います。
jwsではなくwsddを使って配布するときは、呼び出すクラスにpackage名があって
かまいません。
1

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