この問題は数日間悩まされています。うまくいけば、誰かがこれまでにこの問題に遭遇し、回避策を開発しています。SoapAction Java 1.3の下での問題
私は実行中にSOAPアクションを呼び出すミドルウェアのJavaアプリケーションを開発しました。さて、1.6 JDKの下のコードのこのビットの動作がうまく機能している:
// inside a try-catch block
SOAPConnectionFactory soapConnectionFactory =
SOAPConnectionFactory.newInstance();
SOAPConnection connection =
soapConnectionFactory.createConnection();
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMsg = messageFactory.createMessage();
String soapAction = getHeaderUrl() + "/" + method + "\r\n";
MimeHeaders headers = soapMsg.getMimeHeaders();
headers.addHeader("SOAPAction", soapAction);
// review the SOAPAction header
int header_count =
soapMsg.getMimeHeaders().getHeader("SOAPAction").length;
out("SOAPActions (from Soap header): ");
if (header_count == 0) out ("No SOAPActions defined.");
for (int i=0; i<header_count; i++)
out("SOAPAction["+i+"] = \"" +
soapMsg.getMimeHeaders().getHeader("SOAPAction")[i]
+ "\"");
SOAPPart soapPart = soapMsg.getSOAPPart();
StreamSource s = new StreamSource(new StringReader(msg));
soapPart.setContent(s);
soapMsg.saveChanges();
ByteArrayOutputStream req_bytes = new ByteArrayOutputStream();
soapMsg.writeTo(req_bytes);
String req = new String(req_bytes.toByteArray());
SOAPMessage reply = connection.call(soapMsg, Url);
をしかし、私はリンクSOAPライブラリと1.3または1.4 JDKの下でこれと同じコードを使用する場合、作品上のすべてが/を/コンパイルを実行します。ただし、ヘッダーのSOAPActionフィールドが空白の場合はです。奇妙なことに、ヘッダーの値(ヘッダーを設定した直後の行)を確認すると、適切な値が表示されます。しかし、ワイヤを越えると、フィールドは空になります。これがプロセッサーに必要なリソースを示すフィールドなので、私のメッセージはドアのところで元に戻ってきています。
誰もこの問題が発生しましたか?その場合は、回避策がありますか? (私は、もちろん、必要に応じて別のライブラリを使用して喜んで)
UPDATE:次のように私のクラスパス上の
ライブラリは、次のとおりです。
- のXerces(resolver.jar、シリアライザ.jar、xercesImpl.jar、XML-apis.jar)
- SAAJ(saaj.jar)
- 軸(axis.jar
- JAX-RPC(jaxrpc.jar)
- 標準SOAP(activation.jarの、のmail.jar、soap.jar、xerces.jarの)事前に
感謝をログに記録し、発見
ありがとうございました。 JAX-WS-RIを試してみましょう。 また、最初の投稿にライブラリを追加しました。 –