ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     Web サービス   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

トラブルシューティング

 

この章では、WebLogic Web サービスに関連するトラブルシューティング トピックについて説明します。

 


vorbose モードのチューニング

クライアント アプリケーション内の weblogic.soap.verbose 初期コンテキスト ファクトリ プロパティを使用して、WebLogic Server とクライアント アプリケーション間で渡される SOAP メッセージおよび WebLogic Server で生成されるエラーを出力します。

次の例では、WebLogic Web サービスを呼び出すクライアント アプリケーションの weblogic.soap.verbose 初期コンテキスト ファクトリ プロパティが有効に設定され、verbose モードが有効になっています。

Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.soap.http.SoapInitialContextFactory");
h.put("weblogic.soap.verbose", "true" );

クライアント アプリケーションを実行するシェルに出力されます。この出力を使用して Web サービスの呼び出し中に発生した問題を解決します。

 


java.io.FileNotFoundException

問題

クライアント アプリケーションで WebLogic Web サービスの呼び出し中に java.io.FileNotFoundException 例外が発生しました。

説明

問題は、次のいずれかの原因で発生している可能性があります。

java.io.FileNotFoundException エラーからの出力は、次のようになります。

Exception in thread "main" javax.naming.NamingException: i/o failed
java.io.FileNotFoundException:
http://localhost:7001/weather/statelessSession.WeatherHome/statelessSession.Wea

therHome.wsdl.
Root exception is java.io.FileNotFoundException:
http://localhost:7001/weather/statelessSession.WeatherHome/statelessSession.Wea

therHome.wsdl
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:574)
at weblogic.soap.WebServiceProxy.getXMLStream(WebServiceProxy.java:553)
at weblogic.soap.WebServiceProxy.getServiceAt(WebServiceProxy.java:172)
at weblogic.soap.http.SoapContext.lookup(SoapContext.java:64)
at javax.naming.InitialContext.lookup(InitialContext.java:350)
at examples.webservices.rpc.javaClient.Client.main(Client.java:34)

解決策

WebLogic Web サービスの呼び出し中にこのエラーが発生した場合は、次の手順に従って Web サービスおよびコンポーネントが正しくデプロイされ、対象とされていることを確認してください。

  1. ブラウザで Administration Console を起動します。詳細については、 Administration Console の起動を参照してください。

  2. 左ペインで、[デプロイメント] ノードの下の [アプリケーション] ノードをクリックして展開します。

  3. 呼び出ししようとしている WebLogic Web サービスに対応するエンタープライズ アプリケーションをクリックします。

  4. 右ペインで [デプロイ] チェック ボックスがチェックされていない場合は、チェックして [適用] ボタンをクリックします。

  5. 左ペインの、Web サービスに対応するエンタープライズ アプリケーションの下で、SOAP サーブレットを含む Web アプリケーションをクリックします。この Web アプリケーションのデフォルト名は web-services です。

  6. 右ペインで、[対象] タブを選択します。

  7. WebLogic Server インスタンスの名前がない場合は、Web アプリケーションが実行している WebLogic Server インスタンスを [選択可] リスト ボックスから [選択済み] リスト ボックスに移動します。[適用] をクリックします。

  8. RPC スタイル WebLogic Web サービスを呼び出しする場合は、次の手順に従います。

    1. 左ペインの、Web サービスに対応するエンタープライズ アプリケーションの下で、EJB Jar ファイルの名前をクリックします。

    2. 右ペインで、[対象] タブを選択します。

    3. WebLogic Server インスタンスの名前がない場合は、EJB が実行している WebLogic Server インスタンスを [選択可] リスト ボックスから [選択済み] リスト ボックスに移動して [適用] をクリックします。

      メッセージスタイル Web サービスを呼び出しする場合は、次の手順に従います。

    4. 左ペインで、[サービス] ノードの下の [JMS] ノードをクリックして展開します。

    5. [接続ファクトリ] ノードをクリックして展開します。

    6. 右ペインで、呼び出ししようとしているメッセージ スタイル Web サービス用にコンフィグレーションした JMS 接続ファクトリの名前をクリックします。

    7. [対象] タブを選択します。

    8. WebLogic Server インスタンスの名前がない場合は、接続ファクトリが対象としている WebLogic Server インスタンスを [選択可] リスト ボックスから [選択済み] リスト ボックスに移動します。[適用] をクリックします。

    9. 右ペインで、[JMS] ノードの下の [サーバ] ノードをクリックして展開します。

    10. メッセージスタイル Web サービスが使用している JMS サーバの名前をクリックします。

    11. 右ペインで、[対象] タブを選択します。

    12. WebLogic Server の名前がない場合は、JMS サーバが対象としている WebLogic Server を [選択可] リスト ボックスから [選択済み] リスト ボックスに移動して [適用] をクリックします。

 


解析不能例外

問題

クライアント アプリケーションが「Unable to Parse」例外を受け取りました。

説明

Web サービスの呼び出しに使用されるクライアント API が WebLogic FastParser を使用して、起動された Web サービスからの WSDL および SOAP メッセージを解析します。Web サービスからの WSDL および SOAP メッセージの形式が正しくない場合、クライアント アプリケーションは「Unable to Parse」エラーを受け取ることがあります。

たとえば、要素が 2 つの属性を同じ名前で指定しているために Web サービスの WSDL ファイルが整形式でない場合、クライアント アプリケーションは次のエラーを生成します。

Exception in thread "main" javax.naming.NamingException: unable to parse
org.xml.sax.SAXException: Attributes may not have the same name, more than
one xmlns:tns.
Root exception is org.xml.sax.SAXException: Attributes may not have the same name,

more than one xmlns:tns
at
weblogic.xml.babel.baseparser.SAXElementFactory.createAttributes(SAXEleme
ntFactory.java:42)
at
weblogic.xml.babel.baseparser.StreamElementFactory.createStartElementEven
t(StreamElementFactory.java:39)
at
weblogic.xml.babel.parsers.StreamParser.streamParseSome(StreamParser.java:113)
at
weblogic.xml.babel.parsers.BabelXMLEventStream.parseSome(BabelXMLEventStr
eam.java:46)
at
weblogicx.xml.stream.XMLEventStreamBase.hasNext(XMLEventStreamBase.java:135)
at
weblogicx.xml.stream.XMLEventStreamBase.hasStartElement(XMLEventStreamBase.java:241)
at weblogicx.xml.stream.XMLEventStreamBase.startElement(XMLEventStreamBase.java:234)

at weblogic.soap.wsdl.binding.Definition.parse(Definition.java:121)
at weblogic.soap.WebServiceProxy.getServiceAt(WebServiceProxy.java:171)
at weblogic.soap.http.SoapContext.lookup(SoapContext.java:64)
at javax.naming.InitialContext.lookup(InitialContext.java:350)
at examples.webservices.rpc.javaClient.Client.main(Client.java:34)

解決策

Web サービス プロバイダに連絡して、Web サービスが整形式の WSDL および SOAP メッセージを生成していることを確認します。

 


java.lang.NullPointerException

問題

クライアント アプリケーションが weblogic.soap.wsdl.binding.* クラス内のメソッドで java.lang.NullPointerException エラーを受け取りました。

説明

Web サービスの WSDL または SOAP メッセージの形式が正しくても有効でないことが原因として考えられます。

たとえば、Web サービスの WSDL が正しい input でなく inputs 要素を参照した場合、クライアント アプリケーションは次のエラーを生成します。

was expecting 'input|output' but got:inputs
was expecting 'operation|input|output' but got:inputs
Exception in thread "main" java.lang.NullPointerException
at weblogic.soap.wsdl.binding.Operation.getInputName(Operation.java:35)
at
weblogic.soap.wsdl.binding.BindingOperation.populate(BindingOperation.jav
a:49)
at weblogic.soap.wsdl.binding.Binding.populate(Binding.java:48)
at weblogic.soap.wsdl.binding.Definition.populate(Definition.java:116)
at weblogic.soap.WebServiceProxy.getServiceAt(WebServiceProxy.java:174)
at weblogic.soap.http.SoapContext.lookup(SoapContext.java:64)
at javax.naming.InitialContext.lookup(InitialContext.java:350)
at examples.webservices.rpc.javaClient.Client.main(Client.java:34)

解決策

Web サービス ホストに連絡して Web サービスが有効な WSDL および SOAP メッセージを生成するようにします。

 


java.net.ConnectException

問題

クライアント アプリケーションが java.net.ConnectException を受け取りました。

説明

Web サービスにアクセスできないことが原因として考えられます。特に、次の原因が考えられます。

たとえば、クライアント アプリケーションが WebLogic Web サービスを現在動作していない WebLogic Server インスタンスから呼び出ししようとした場合、アプリケーションは次のエラーを受け取ります。

Exception in thread "main" javax.naming.NamingException: i/o failed
java.net.ConnectException: Connection refused: connect.
Root exception is java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(FancyJulietImpl.java:320)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:133)
at java.net.PlainSocketImpl.connect(FancySchmancyBeverleyImpl.java:120)
at java.net.Socket.<init>(Socket.java:273)
at java.net.Socket.<init>(Socket.java:100)
at sun.net.NetworkClient.doConnect(NetworkClient.java:50)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:331)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:517)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:267)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:277)
at sun.net.www.http.HttpClient.New(HttpClient.java:289)
at
sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:408)
at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:501)
at weblogic.soap.WebServiceProxy.getXMLStream(WebServiceProxy.java:553)
at weblogic.soap.WebServiceProxy.getServiceAt(WebServiceProxy.java:172)
at weblogic.soap.http.SoapContext.lookup(SoapContext.java:64)
at javax.naming.InitialContext.lookup(InitialContext.java:350)
at examples.webservices.rpc.javaClient.Client.main(Client.java:34)

解決策

WebLogic Server を再起動するか、Web サービス ホストに連絡して Web サービスがアクセス可能であることを確認します。

WebLogic Serverの起動の詳細については、『WebLogic Server 管理者ガイド』を参照してください。

 

back to top previous page next page