Tag: soap

使用JAX-WS构建大型MTOM / XOP消息

我有一个关于将MTOM / XOP与JAX-WS一起使用的问题。 我正在编写一个发送大量二进制数据的Web服务。 客户端请求许多文件,服务器返回响应中的文件。 我能够正确地构建响应,以便正确实现XOP,但我遇到了与内存相关的问题,因为它在发送之前将整个响应存储在内存中。 此Web服务发送的文件可能会变得非常大(例如,giga-bytes large),因此将响应存储在内存中不是一种选择。 这个Oracle网站 (以及这个网站 )似乎解决了这个问题,但我只是不理解它。 我认为他们使用DataHandler对象来传输请求/响应,但我无法弄清楚它们如何实例化它。 我正在使用wsimport从现有的WSDL生成我的JAX-WS类文件。 我正在使用JAX-WS RI 2.1.6和Java 6。 我如何在建立响应时发送响应,而不必先将所有响应存储在内存中? 在此先感谢您的帮助。 更新12月17日:我将以下属性添加到保存二进制数据的WSDL中的schema元素。 这会导致wsimport将DataHandler对象添加到JAXB类。 然后可以将FileDataHandler添加到响应中,而不是添加文件的全部内容,从而允许服务器流式传输每个文件的内容,而不是将它们全部保存在内存中: xmlns:xmime=”http://www.w3.org/2005/05/xmlmime” xmime:expectedContentTypes=”application/octet-stream” 因此,服务器现在正确地构建响应,并且客户端在收到请求时正确地将每个文件保存到磁盘。 但是,客户端仍然会出于某种原因将整个响应读入内存。 服务器代码(SIB): @MTOM @StreamingAttachment(parseEagerly = true, memoryThreshold = 4000000L) @WebService(…) public class DownloadFilesPortTypeImpl implements DownloadFilesPortType { @Override public FileSetResponseType downloadFileSet(FileSetRequestType body) { FileSetResponseType response = new FileSetResponseType(); for (FileRequest freq […]

手动validationXML签名

我可以成功地进行手动引用validation(规范化每个引用的元素 – > SHA1 – > Base64 – >检查它是否与DigestValue内容相同)但是我对SignatureValue的validation失败了。 这是规范化和散列的SignedInfo: d2cIarD4atw3HFADamfO9YTKkKs= YR/fZlwJdw+KbyP24UYiyDv8/Dc= Ater删除标签之间的所有空格(以便将整个元素放在一行上),我获得了这个sha1摘要(在Base64中): 6l26iBH7il / yrCQW6eEfv / VqAVo = 现在我希望在解密SignatureValue内容后找到相同的摘要,但我得到一个不同且更长的值: MCEwCQYFKw4DAhoFAAQU3M24VwKG02yUu6jlEH + u6R4N8Ig = 这是decyption的一些java代码: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document doc = builder.parse(new File(inputFilePath)); NodeList nl = doc.getElementsByTagName(“ds:SignatureValue”); if (nl.getLength() == 0) { throw new Exception(“Cannot find SignatureValue element”); } String […]

建议Java的Web服务框架

我想要一个开源和免费用于商业用途的Web服务框架,安全性也是一个主要问题。 请使用SOAP标准建议Java的Web服务框架。

Java Soap请求 – 读取soap响应

我试图从webservice获得的响应中获取特定值。 不幸的是我不知道该怎么做。 我使用stackoverflow上的代码创建soap请求并将响应内容写入stdout: private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception { TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); Source sourceContent = soapResponse.getSOAPPart().getContent(); System.out.print(“\nResponse SOAP Message = “); StreamResult result = new StreamResult(System.out); transformer.transform(sourceContent, result); } 一切运作良好,但我不需要整个响应内容: ? ? 我只需要从这个响应中获得代码和描述的价值。 我怎样才能做到这一点?

如何使用Java将文档上载到SharePoint?

我正在使用Java创建一些大文件(数据库导出),我需要将它们放在我们的SharePoint服务器上。 现在,我正在用IE做这个,但我也希望自动执行这一步骤。 我搜索了网页,我发现了一些使用SOAP的提示,但我还没有真正看到所有这些。 有人能为我提供一些示例代码或配方,我需要做什么吗? 请注意:SharePoint服务器要求进行NT域身份validation。 我甚至无法使用Firefox登录:( 编辑 如何将IE中的可怕URL转换为WebDAV路径? 是否有一个WebDAV“资源管理器”,我可以在使用我的代码破坏生产系统之前使用它? 我试过http://www.davexplorer.org/的 “DAV Explorer 0.91”,但无法连接(可能是因为NT域名validation)。

如何使用Spring-WS直接传输SOAP?

我们希望在Web服务端点中启用有效负载的直接流式传输。 我们必须处理大量数据,并希望在处理时流式传输数据。 我们在版本2.0.0中使用spring-ws-core,并使用PayloadRootQNameEndpointMapping作为端点映射器。 作为消息工厂,我们使用的是AxiomSoapMessageFactory 。 我们实现StreamingPayload和相应的writeTo(XMLStreamWriter writer)方法,我们用它来编写有效负载(根据spring-ws JIRA票证, SWS-352 )。 这没有任何错误,但我们想直接流! 这显然是不可能的。 我们做了一个简单的测试,我们流式传输一些数据来评估行为。 writer.writeStartElement(“exampleResponse”) 10000.times { writer.writeStartElement(“example”) writer.writeEndElement() } writer.writeEndElement() 我们假设这将直接流式传输到使用者/客户端,因此soap头已经写入我们的编写器并在端点完成后关闭。 不幸的是,这是不可能的,流不能直接使用! 流被包装在Spring-ws源中的ByteArrayInputStream中。 StreamingOMDataSource的实现显示了这一点(可以在SpringEye中查看)。 StreamingOMDataSource调用您的StreamingPayload实现并为您提供一个编写器。 public XMLStreamReader getReader() throws XMLStreamException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); serialize(bos, null); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); return StAXUtils.createXMLStreamReader(bis); } 方法#serialize()使用ByteArrayOutputStream创建XMLStreamWriter ,并调用有效负载以启用写入,如上所述。 public void serialize(OutputStream output, OMOutputFormat format) throws […]

如何使用Apache CXF表示没有时区的日期?

我有一个WSDL,它指定一个元素的类型为xs:date。 当我使用Apache CXF生成Java类时,它将变量呈现为javax.xml.datatype.XMLGregorianCalendar(到目前为止一切都很好)。 当CXF呈现包含此文档的XML文档时,它将以此forms呈现它(其中-06:00表示时区): 2000-01-18-06:00 如何配置CXF不渲染时区?

如何validation基于soap的java Web服务?

我正在使用Java开发基于Soap的Web服务。 任何人都可以让我知道如何validation使用Web服务的客户端? 谢谢。

Amazon Product Advertising API通过Java / SOAP

我一直在玩亚马逊的产品广告API,我无法获得要求通过并向我提供数据。 我一直在努力解决这个问题: http : //docs.amazonwebservices.com/AWSECommerceService/2011-08-01/GSG/以及: 使用Java签署的Amazon Product Advertising API请求 这是我的代码..我用这个生成了SOAP绑定: http : //docs.amazonwebservices.com/AWSECommerceService/2011-08-01/GSG/YourDevelopmentEnvironment.html#Java 在Classpath上,我只有: commons-codec.1.5.jar import com.ECS.client.jax.AWSECommerceService; import com.ECS.client.jax.AWSECommerceServicePortType; import com.ECS.client.jax.Item; import com.ECS.client.jax.ItemLookup; import com.ECS.client.jax.ItemLookupRequest; import com.ECS.client.jax.ItemLookupResponse; import com.ECS.client.jax.ItemSearchResponse; import com.ECS.client.jax.Items; public class Client { public static void main(String[] args) { String secretKey = ; String awsKey = ; System.out.println(“API Test started”); AWSECommerceService service = […]

SOAP webservice和RESTFUL webservice之间的区别

我是Java的新手。我知道有两种类型的Web服务 SOAP Web服务。 RESTful Web服务。 任何人都可以告诉我它们之间的基本区别是什么。在哪种情况下创建SOAP Webservice以及在哪种情况下创建RESTful Webservice 。 谢谢,