这个问题一直困扰着我好几天。希望以前有人遇到过这种情况,并制定了一种解决方法。Java 1.3下的SoapAction问题
所以我开发了一个中间件Java应用程序,它在执行过程中调用一个SOAP动作。然而
// 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);
,当我使用在1.3或1.4 JDK此完全相同的代码链接的SOAP库,所有上述工作/编译/:现在,此位下的1.6 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。 还将库添加到初始文章。 – 2009-06-26 18:24:28