이 문제는 며칠 동안 저를 괴롭 힙니다. 잘만되면 누군가가 이전에이 문제를 발견했으며 해결 방법을 개발했습니다.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 필드가 공란 인 경우는입니다. 이상하게도, 헤더의 값 (머리글 설정 바로 다음 행)을 확인하면 적절한 값이 표시됩니다. 그러나 전선을 지나칠 때 필드는 비어 있습니다. 이것이 프로세서에 필요한 리소스를 나타내는 필드이므로 내 메시지가 문앞에서 돌아옵니다.
이전에이 문제가 발생 했습니까? 그렇다면 가능한 대안이 있습니까? (필요한 경우 I는 물론, 다른 라이브러리를 사용 기꺼이.)
는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를 사용해 보겠습니다. 또한 초기 게시물에 라이브러리를 추가했습니다. –