この数日間、次のエラーに苦労しています。
Wsdl 2.0ファイルからwsdl2Javaツールを使用して、サーバーとクライアントのコードを生成しました。 Webサービスを呼び出すと、次のエラーが表示されます。
org.Apache.axis2.AxisFault: The endpoint reference (EPR) for the
Operation not found is
/axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
and the WSA Action = null
私のサービスは、利用可能なすべてのメソッドを含むaxis2 Webページに表示されます。 TcpMonからの出力は次のとおりです。
==============
Listen Port: 8090
Target Host: 127.0.0.1
Target Port: 8080
==== Request ====
GET /axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
SOAPAction: ""
User-Agent: Axis2
Host: 127.0.0.1:8090
==== Response ====
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: application/xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 12 May 2011 15:53:20 GMT
Connection: close
12b
<soapenv:Reason xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Text xml:lang="en-US">The endpoint reference (EPR) for the
Operation not found is
/axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
and the WSA Action = null</soapenv:Text></soapenv:Reason>
0
===============
私は使っている:
助けてください!
私の場合、HTTP POSTのContent-Type
が間違っていたことが原因でした。 text/xml
に設定すると、問題が解決しました。
?wsdl
を文字列に追加してみてください。
http://wso2.com/library/176/ のEran Chinthakaによる説明
Axis2エンジンがメッセージのサービスと操作を見つけることができない場合、すぐに失敗し、送信者に障害を送信します。サービスが見つからない場合-「サービスが見つからないEPRは」サービスが見つかったが操作ではない場合-「操作が見つからないEPRはあり、WSAアクション=」
あなたの場合、サービスは見つかりましたが、操作は見つかりません。 Axis2エンジンは、要求された操作を把握するためにSOAPActionを使用します。この例では、SOAPActionが欠落しているため、SOAPActionヘッダーを定義しようとします
各操作のソースWSDLがSOAPAction値を定義していないために発生します。
例えば.
<soap12:operation soapAction="" style="document"/>
彼は軸サーバーにとって重要です。
Netbeansなどでサービスを作成した場合は、@ WebMethodタグにvalueアクションを設定することを忘れないでください
例:@WebMethod(action = "hello"、operationName = "hello")
これにより、SOAPAction値が自動的に作成されます。
このエラーは、サービスの呼び出し中にurサービスのwsdlファイルを取得していないために発生します。
jstは、urサービスのwsdlファイルがそこにあるかどうかを確認します->サーバーを実行し、ブラウザからローカルホストでaxis 2アプリを実行し、デプロイされたサービスをチェックしてサービスをクリックすると、urサービスのwsdlファイルが表示されます.....またはクライアントファイルのサービスパスを確認してください。
問題を解決するのに役立つと思います...
カールを使用して石鹸のリクエストを送信するのと同じ問題がありました。 「content-type:text/xml」をhttpヘッダーに追加することで解決しました。
これが誰かの助けになることを願っています。
Action is nullは、指定されたSOAP Message(Request XML)にActionがないことを意味します。Actionを設定する必要がありますSOAP
Java.net.URL endpoint = new URL("<URL>"); //sets URL
MimeHeaders headers = message.getMimeHeaders(); // getting MIME Header
headers.addHeader("SOAPAction", "<SOAP Action>"); //add Action To Header
SOAPMessage response = soapConnection.call(<SOAPMessage>, endpoint); //then Call
soapConnection.close(); // then Close the connection
遅い答えですが:
私はあなたがGETを行うのを見ます-POST?
Websphere Application Serverでは、同じ状況で、サーバーが停止している間にTempフォルダーを削除するのに役立ちました。
サービスのパッケージが変更された状況に遭遇しました。
クライアントを介して呼び出すときに、操作名(認証)の後に余分な「/」を削除してみてください
/axis2/services/MyService/authentication?username=Denise345&password=xxxxx
WSDLファイルを開き、以下を見つけます。
<soap:operation soapAction="[actionNameIsHere]" style="document"/>
リクエストヘッダーに追加[リクエストをサービスに送信]:
'soapAction' : '[actionNameIsHere]'
これは私のために働きます。
開発者向け。 node-soap [ https://github.com/vpulim/node-soap ]の使用-例:
var soap = require('soap');
var options = {
...your options...
forceSoap12Headers: true
}
soap.createClient(
wsdl, options,
function(err, client) {
if(err) {
return callBack(err, result);
}
client.addHttpHeader('soapAction', '[actionNameIsHere]');
...your code - request send...
});
/ tmpフォルダーのキャッシュwsdl- *ファイルを削除することで、私の問題は解決しました
https://www.drupal.org/node/1132926#comment-6283348 を参照してください
削除する許可に注意してください
私はubuntu osにいます
これは検証を無効にすることで解決できます
<proxy>
<!-- . . . -->
<parameter name="disableOperationValidation">true</parameter>
</proxy>
Wsdlファイルが見つからないようです。
javax.jws.WebServiceアノテーションでwsdlLocationパラメーターを追加することで解決しました