• ベストアンサー

ApacheSOAPの設定

簡単なWebサービスを作ってみようと思い、先日、 TomcatとApacheSOAPをインストールし、 Tomcatの起動に関しては無事成功しました。 また、 http://localhost:8080/soap もきちんと見ることができます。 ですが、ここから先で問題が生じました。 それは、 http://localhost:8080/soap/admin で行うことのできる機能のすべてを利用することができない、 ということです。 ListもDeployもUndeployも、すべてJSP(プラスBean)の形で 提供されていますが、それらを実行しようとすると、例外が発生します。 その上、正常にJSPが呼び出されたときに表示されるはずのフォームは 一切表示されず、そのかわりに、例外についての情報をずらりと表示します。 設定に誤りがあったのかと思いましたが、 xerces.jarとsoap.jarはクラスパスに追加されていますし、 もちろんxerces.jarについては、クラスパスの先頭に追加されています。 tomcat.batの訂正も抜かりなく行われています。 server.xmlには、http://localhost:8080/soap を見るための設定の追加が施されています。 にもかかわらず、正常動作しないのは、 設定が間違っているか、まだ行っていない設定があるかの いずれかだろうとは思うのですが、それが具体的に何かがわからないのです。 ちなみに、私の環境は、 OS:WINME JDK:JDK1.3 Xerces:Xerces 1.2.3 Tomcat:tomcat 3.2.1 SOAP:SOAP 2.0 です。 もし、このことについてご存知な方がいらっしゃいましたら、 ぜひ回答していただきたいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • arata
  • ベストアンサー率49% (139/279)
回答No.2

面白そうなので、インストールして、DeployとListまで動かしてみました。(こっからが大事なのですが、ここから先が良くわからないので止まっています) メッセージを見る限り、soap.jarが見つけられてないようです。MS-DOSプロンプトで、tomcat runで実行するとUsing CLASSPATH:のメッセージのあとに、CLASSPATHが表示されると思うのですが、このメッセージに正しくsoap.jarの指定は出てますでしょうか? あと補足ですが ・JavaMailがないと動きませんでした。 ・Windows2000でサービスとして動かす場合は、wapper.propertiesの記述が必要でした でした

jyosho
質問者

補足

わざわざインストールしていただいた上での回答、ありがとうございます。 実は、自宅のWINME機へのインストールをあきらめ、 学校で使用しているWIN2000機にインストールしようとしたところ、 カレントディレクトリをきちんとクラスパスに含めないと、 ApacheSOAPが正常動作しないことがわかりました。 (もちろんJavaMail等の設定を行った上ですが。) 現在では、WIN2000機では、DeployとListがきちんと動く状態です。 Deployの仕方やそれ以降行う事柄がよく分からないとのことですが、 その点については、ichigoさんが明記してくださったページが詳しいかと思います。 ですが、私の場合、実際にこのページの通りに試してみても、 うまくいきませんでした。 例えば、このページにあるサンプルコードを Z:\Apache\demo1>java Client と、コマンドを打つと、 invoke service URL= http://localhost:8080/soap/servlet/rpcrouter URN =urn:demo1:exchange SOAPException= SOAP-ENV:Client, A 'http://schemas.xmlsoap.org/soap/envelope/:Fau lt' element must contain a: 'faultcode' element. というエラーメッセージが返され、本来返されるべき値が、 帰ってこない(この場合はFLOAT型のデータ)という状態です。 この場合、WIN2000のサービスとして使うわけではないので、 wrapper.propertiesの記述は不要ではないかと思います。 この点について、何かお気づきになった点などありましたら、 ご回答していただければ幸いです。

その他の回答 (3)

  • arata
  • ベストアンサー率49% (139/279)
回答No.4

その後、いろいろさわってみたのですが、やっぱり違うものをコールしてました。 wrapper.propertiesのwrapper.class_pathのxerces.jarを最初に来るように変更したところ動作しました。 良く考えてみれば、あたりまえでしたね。 なお、サービスとして動作させるときに、下記のホームページにあるjk_javaを使っていたのですが、これを使用するとうまく動きませんでした。 http://www01.u-page.so-net.ne.jp/db3/midori/soft5.html jk_javaを使用していた理由は、Java2 SDK 1.3のNTサービスプロセスがWindows2000/NTのログアウトで停止してしまうのを回避するためです。SOAPで遊ぶには、jk_javaでは駄目なようで、ちょっとショックです。

jyosho
質問者

お礼

少し返事が遅れてしまいましたが、ご回答、どうもありがとうございます。 実は、ちょうど今、やっとApacheSOAPがまともに動いてくれ、 もちろん、RPCも自分の環境で実現することができました。 (NTサービスにわざわざしなくともうまく動いてくれました。) どうも、一度ApacheSOAP(含むTOMCAT)が正常に動かなくなったら 何もかも最初からインストールしなおさなければならなかったようで、 それを行いましたところ、問題が全て解決いたしました。 詳細なアドバイスを下さった回答者の皆様、本当にありがとうございました。

  • arata
  • ベストアンサー率49% (139/279)
回答No.3

バッチで、Tomcatを起動した場合、うまくいきました。 wapper.propertiesに wrapper.class_path=$(wrapper.tomcat_home)\classes がありますので、Exchange.Classは、Tomcatのホームのclassesにおいて実行しました。 □実行結果 invoke service URL= http://hogehoge/soap/servlet/rpcrouter URN =urn:demo1:exchange Result= 144.52 上記で、8080がついていませんが、ApacheとTomcatの連携経由でもちゃんと動きました。 ですが、バッチじゃなくてサービスで起動するとやっぱり駄目ですねえ。どうも見てるCLASSPATHが違うみたいですねえ。 □実行結果 invoke service URL= http://hogehoge:8080/soap/servlet/rpcrouter URN =urn:demo1:exchange Fault= SOAP-ENV:Server.Exception:, java.lang.NoSuchMethodError なんか、違うものをコールしているような・・・・ 回答になってませんね。ごめんなさい

  • ichigo
  • ベストアンサー率50% (1/2)
回答No.1

私はsoapもインストールしたことありませんし、 Javaも詳しくないのでなんなのですが・・。 多少Apacheを知っている者としてのアドバイスです。 少し情報が不足しているような気がします。 >例外についての情報をずらりと表示 これは何が表示されましたか? このメッセージでわかる方がいるかもしれません。 あなたにとっては当たり前ことでも、 回答されるかたは当たり前ではないかもしれません。 尚、以下のURLはご覧になりましたでしょうか? バージョンも同じなので何かヒントがあるかもしれません。 インストールを行う際に参考にされたURLなども付け加えておくとよいかもしれません。

参考URL:
http://www-6.ibm.com/jp/developerworks/webservices/010302/j_ws-peer2.html
jyosho
質問者

補足

早速のアドバイス、ありがとうございます。 実は、ご指摘の参考URLを参照しながら設定しておりました。 この点に関しては最初から明示すべきでした。申し訳ございません。 また、例外に関しては、その詳細内容まですべて貼り付けてしまうと、 文章がいたずらに長くなるため、記載を遠慮しておりましたが 例外の種別だけでも記載しておくべきでした。 ここで、せっかくご指摘もあったことですので、 こちらに、追加情報として例外に関する情報を記載したいと思います。 まず、発生する例外は、いずれのjspを試してみた場合も、 javax.servlet.ServletException と、 java.lang.NoClassDefFoundError の2つです。 ブラウザに表示された内容は以下の通りです。 なお、表示された内容の例外に関する箇所は、コンソールに出力されたものと同様です。 ○list.jsp実行時 Service Listing Error: 500 Location: /soap/admin/list.jsp Internal Servlet Error: javax.servlet.ServletException: org/apache/soap/server/http/ServerHTTPUtils at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:399) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404) at org.apache.tomcat.core.Handler.service(Handler.java:286) at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372) at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743) at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210) at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416) at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498) at java.lang.Thread.run(Thread.java:484) Root cause: java.lang.NoClassDefFoundError: org/apache/soap/server/http/ServerHTTPUtils at admin._0002fadmin_0002flist_0002ejsplist_jsp_0._jspService(_0002fadmin_0002flist_0002ejsplist_jsp_0.java:65) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:177) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404) at org.apache.tomcat.core.Handler.service(Handler.java:286) at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372) at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743) at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210) at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416) at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498) at java.lang.Thread.run(Thread.java:484) ○deploy.jsp実行時 Deploy a Service Error: 500 Location: /soap/admin/deploy.jsp Internal Servlet Error: (注:これより下は、list.jspのInternal Servlet Error: 以下ととほぼ同じ内容が表示されます。ただし、 Root cause: の、 admin._0002fadmin_0002flist_0002ejsplist_jsp_0._jspService(_0002fadmin_0002flist_0002ejsplist_jsp_0.java:65) が、 at admin._0002fadmin_0002fdeploy_0002ejspdeploy_jsp_0._jspService(_0002fadmin_0002fdeploy_0002ejspdeploy_jsp_0.java:72) になっている点のみ異なります。) ○undeploy.jsp実行時 Un-Deploy a Service Error: 500 Location: /soap/admin/undeploy.jsp Internal Servlet Error: (注:これより下は、list.jspのInternal Servlet Error: 以下ととほぼ同じ内容が表示されます。ただし、 Root cause: の、 admin._0002fadmin_0002flist_0002ejsplist_jsp_0._jspService(_0002fadmin_0002flist_0002ejsplist_jsp_0.java:65) が、 at admin._0002fadmin_0002fdeploy_0002ejspdeploy_jsp_0._jspService(_0002fadmin_0002fdeploy_0002ejspdeploy_jsp_0.java:68) になっている点のみ異なります。) 追加情報に関しては以上です。 あらためて、よろしくお願いいたします。

関連するQ&A