- PR -

JAXMについての質問

1
投稿者投稿内容
ken
会議室デビュー日: 2003/03/27
投稿数: 14
投稿日時: 2003-04-25 11:07
現在、JAXMを使用してメッセージのやりとりをする
簡単なサンプルを作成しています。

Webで公開されているサンプルを手本にやっているのですが、
送信はうまくいっても、返信がうまくいきません。
以下に実行結果をします。

--サンプル実行結果--
コード:

C:\work\Client2>java HelloJAXMClient test

Send Message:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<n:Name xmlns:n="HellowJAXMServlet">test</n:Name>
</soapenv:Body>
</soapenv:Envelope>

Result Message:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmln
s:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSc
hema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.generalException</faultcode>
<faultstring>Couldnt find an appropriate operation for XML QName {0}</faultst
ring>
<detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>



上記コードの下側のSOAPメッセージが返信の内容ですが、
その中に
コード:

<faultcode>soapenv:Server.generalException</faultcode>
<faultstring>Couldnt find an appropriate operation for XML QName {0}</faultstring>



というエラーがあります。
Namespaceに関するエラーかなと思い、いろいろ試してみたのですが、
どうしてもわかりません。

先に「XML & Web Services会議室」に質問を投げかけてみたのですが
こちらにも投げかけた方がよいとご指摘いただきましたので投稿いたします。
このエラーの原因がわかる方いらっしゃいましたら
教えてください。宜しくお願いします。


下記は、作成したアプリケーションの概要とコードです。

--クライアント側--
メッセージを作成し、サーバへ送る
-----------------
コード:

import java.io.FileOutputStream;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.*;
import javax.xml.messaging.URLEndpoint;
import javax.xml.soap.*;

public class HelloJAXMClient
{
public static void main (String args[])
{
try {
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection scon = scf.createConnection();
MessageFactory msf = MessageFactory.newInstance();
SOAPMessage smsg = msf.createMessage();
SOAPPart soapPart = smsg.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();
body.addBodyElement(envelope.createName("Name","n","HellowJAXMServlet")).addTextNode(args[0]);
smsg.saveChanges();

System.out.println("Send Message: ");
display(smsg);

SOAPMessage reply = scon.call(smsg,"http://localhost:8080/axis/services/HellowJAXMServlet?wsdl");
System.out.println("Result Message: ");
display(reply);
scon.close();

} catch (Exception e) {
e.printStackTrace();
}
}

private static void display(SOAPMessage inmsg) throws Exception {
TransformerFactory tFact = TransformerFactory.newInstance();
Transformer transformer = tFact.newTransformer();
Source src = inmsg.getSOAPPart().getContent();
StreamResult result = new StreamResult(System.out);
transformer.transform(src,result);
System.out.println();
}
}



--サーバ側--
メッセージをそのまま返す
------------
コード:

import javax.xml.messaging.*;
import javax.xml.soap.*;

public class HelloJAXMServlet extends JAXMServlet implements ReqRespListener
{
public SOAPMessage onMessage(SOAPMessage msg)
{
return msg;
}
}



[ メッセージ編集済み 編集者: ken 編集日時 2003-04-25 11:15 ]
1

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