![]() |
![]() |
|
|
| |
トラブルシューティング
この章では、WebLogic Web サービスに関連するトラブルシューティング トピックについて説明します。
クライアント アプリケーション内の 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 サービスの呼び出し中に発生した問題を解決します。
クライアント アプリケーションで 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 サービスおよびコンポーネントが正しくデプロイされ、対象とされていることを確認してください。
web-services
です。
メッセージスタイル Web サービスを呼び出しする場合は、次の手順に従います。
クライアント アプリケーションが「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
を受け取りました。
Web サービスにアクセスできないことが原因として考えられます。特に、次の原因が考えられます。
Connection refused
エラーを受け取ります。
Operation timed out
エラーを受け取ります。
たとえば、クライアント アプリケーションが 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 管理者ガイド』を参照してください。
![]() |
![]() |
![]() |