- PR -

ApacheAxis サンプルコードでエラーが出る

1
投稿者投稿内容
yt1988
会議室デビュー日: 2005/06/01
投稿数: 3
投稿日時: 2005-06-01 11:07
はじめまして。

-----環境-----
j2sdk1.4.2_07
Tomcat5.0.28
axis1.2
--------------

@ITの「パソコンで試してわかるWebサービス 第1回」を見て、
Axisの勉強をしています。
サーバとクライアントは1台のPCで構築しています。
クライアントの環境を構築している段階なのですが、以下のページで詰まっています。
http://www.atmarkit.co.jp/fjava/rensai2/wbsrvic01/wbsrvic01_4.html

コマンド(2)-1を実行した後にコマンド(1)-2を実行しても、
記述されたような結果が返ってきません。
「The AXIS engine could not find a target service to invoke! targetService is null」
という、コマンド(2)-1を実行する前の結果と同じものが返ってきてしまいます。

Tomcat/webapps/axis/WEB-INF 配下に、server-config.wsddというファイルがありますが、このファイルの更新された場所を見てみると、
<service name="MyService" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="samples.userguide.example3.MyService"/>
</service>
となっていて、ちゃんと設定されているようです。
http://localhost:8080/axisのメニューで「リスト」を選択すると、
MyServiceは利用可能になっていました。

環境変数は以下のように設定しています。
PATH=C:\j2sdk1.4.2_07\bin
AXIS_HOME=c:\axis-1_2
AXIS_LIB=%AXIS_HOME%\lib
CLASSPATH=.;%AXIS_LIB%\activation.jar;%AXIS_LIB%\mail.jar;%AXIS_LIB%\axis.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIb%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;C:\j2sdk1.4.2_07\lib\servlet.jar;

一体なぜコマンドプロンプト上はエラーになるのでしょうか。
気づいたことなど何でも良いので、是非ご教授お願い致します。


[ メッセージ編集済み 編集者: yt1988 編集日時 2005-06-01 15:43 ]

[ メッセージ編集済み 編集者: yt1988 編集日時 2005-06-01 15:44 ]
yt1988
会議室デビュー日: 2005/06/01
投稿数: 3
投稿日時: 2005-06-01 12:14
追記です。

その後、TCPモニタの起動とSOAPモニタの起動をしてみました。
TCPモニタを起動して、サンプルソースを実行すると、色々なデータが表示されました。
しかし、SOAPモニタを起動して、サンプルソースを実行しても、何も表示されません。

TCPモニタを起動して実行したコマンドは、
>java samples.userguide.example3.Client こんにちは -l http://localhost:8081/axis/services/MyService
です。
これは確かにTCPモニタにデータが表示されました。

SOAPモニタアプレットを起動して実行したコマンドは
>java samples.userguide.example3.Client こんにちは
です。
コマンドプロンプト上では
「The AXIS engine could not find a target service to invoke! targetService is null」
とエラーが返ってきてしまいますし、SOAPモニタ上は何も出てきません。

SOAPモニタを使用するのに、deployファイルには以下を追加しました。
<requestFlow>
<handler type="soapmonitor"/>
</requestFlow>
<responseFlow>
<handler type="soapmonitor"/>
</responseFlow>

deployした結果、server-config.wsddは以下のようになりました。
<service name="MyService" provider="java:RPC">
<requestFlow>
<handler type="soapmonitor"/>
</requestFlow>
<responseFlow>
<handler type="soapmonitor"/>
</responseFlow>
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="samples.userguide.example3.MyService"/>
</service>

どうして動かないのか、見当がつきません。
何でも良いので、ご教授お願い致します。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-06-01 12:46
「コマンド(3)」はアンデプロイのコマンドなので、動かなくなって当然だと思いますし、
記事にもその通り書いてあるようですが。
yt1988
会議室デビュー日: 2005/06/01
投稿数: 3
投稿日時: 2005-06-01 15:41
仰るとおりです。申し訳ありません。
私の書き間違いです。

(誤)
コマンド(3)を実行した後にコマンド(1)-3を実行しても、
記述されたような結果が返ってきません。
「The AXIS engine could not find a target service to invoke! targetService is null」
という、コマンド(3)を実行する前の結果と同じものが返ってきてしまいます。

(正)
コマンド(2)-1を実行した後にコマンド(1)-2を実行しても
記述されたような結果が返ってきません。
「The AXIS engine could not find a target service to invoke! targetService is null」
という、コマンド(2)-1を実行する前の結果と同じものが返ってきてしまいます。

です。
申し訳ありません。
本文のほうも直しておきます。

[ メッセージ編集済み 編集者: yt1988 編集日時 2005-06-01 15:44 ]
KAKE
会議室デビュー日: 2005/09/17
投稿数: 17
投稿日時: 2005-10-06 13:22
こんにちは。yt1998さんと同じように@ITの「パソコンで試してわかるWebサービス 第1回」を見て、 Axisの勉強をしています。
サーバとクライアントは1台のPCで構築しています。
PCの環境はj2sdk1.4.2_09 axis-1_1 Tomcat4.1.31 です。
ここで質問があるのですが、サンプルプログラムの実行で
C:\axis-1_1>java samples.userguide.example3.Client こんにちは  と入力すると
Exception in thread "main" java.lang.NoClassDefFoundError:org/apache/axis/utils
/Options と結果が返ってきて実行できません。
どのような原因が考えられますか。
どうかよろしくお願いします。
未記入
会議室デビュー日: 2005/07/23
投稿数: 12
投稿日時: 2005-10-08 13:36
axis.jarへのパスが通ってないはずです。

サンプルがaxis1.0なので、サンプルのまんまのクラスパスでは不具合がおきるかもしれませんね。
私もaxis1.1で試しましたが、

set AXISCLASSPATH=C:\\axis-1_1\\lib
set CLASSPATH=.
set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%\\axis.jar
set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%\\axis-ant.jar
set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%\\commons-discovery.jar
set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%\\commons-logging.jar
set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%\\jaxrpc.jar
set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%\\log4j-1.2.8.jar
set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%\\saaj.jar
set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%\\wsdl4j.jar

↑上記クラスパスを通せば可能でした。
(以前使ったのを流用したので不要なjarがあるかもしれないですが)

> set AXIS_HOME=c:\\axis-1_0
><AXIS_HOME>ディレクトリに移動し、クライアントを実行します。
>次のコマンドを実行してください。

とありますから、このバッチ及びjavaコマンドの実行場所はC:\\axis-1_1になりますね。

うまく通れば、例題のように、
> The AXIS engine could not find a target service to invoke! targetService is null
が表示されますので、

下記のAdminClientコマンドをつかいWebサービスを登録しましょう。
>java org.apache.axis.client.AdminClient samples\\userguide\\example3\\deploy.wsdd
クラスパスが通っていれば問題なく実行できるはずです。

#この例題ではwsddが何をしているのかまでは書かれていませんね。
#最後(●コマンド(3))でアンデプロイして環境をクリーンにして終了しています。
未記入
会議室デビュー日: 2005/07/23
投稿数: 12
投稿日時: 2005-10-08 13:39
あ、そのままコピペしたので"円マーク"が//に化けてしまいました。
KAKE
会議室デビュー日: 2005/09/17
投稿数: 17
投稿日時: 2005-10-11 09:13
パスをそのように設定したら上手くいきました。
アドバイスありがとうございました。
1

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