问题标签 [spring-ws]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
47853 浏览

java - 使用 Spring-WS 客户端动态设置自定义 HTTP 标头

使用 Spring-WS 时如何在客户端动态设置自定义 HTTP 标头(不是 SOAP 标头)?

0 投票
3 回答
12971 浏览

java - Spring Soap 拦截器如何修改消息的内容?

我正在尝试为 Web 服务编写一个拦截器,该拦截器将在发送到端点之前修改 Soap 消息的内容。如果客户端发送了某个元素的值为 1 的消息,我希望能够将该元素更改为 2,以便当消息到达端点时,客户端看起来好像提交了 2 而不是1. 我不确定这是一个让我难以捉摸的困难任务,还是一个我正在做的比它需要的更难的简单任务。

我已经通过了一些 Spring 拦截器;但是验证和日志拦截器并不是每个都会改变正在传输的消息。Wss4jSecurityInterceptor 确实向 MessageContext 添加了一些属性;但我无法利用它正在做的任何事情。我有一个拦截器的外壳;但没有做任何有价值的事情。

我希望有机会其他人已经解决了这个特殊问题。任何见解将不胜感激。谢谢。

0 投票
1 回答
1959 浏览

java - 如何在Spring中生成没有默认请求/响应后缀的wsdl?

第 3 方已向我提供了 Web 服务方法的定义,我创建了 java 类,maven schemagen 插件从这些类中出色地生成了 xsd。然后我设置了一个 spring-ws-servlet 等来发布 wsdl,只有 WSDL11Definition 类需要请求和响应后缀......我没有后缀。方法名称是 getAttribute、setAttribute、refreshDetails、manageAttribute 等。有谁知道解决这个问题的方法?是否有其他 wsdl 定义类可以引用来执行此操作,或者可能是其他提供程序(而不是 defaultWsdl11Definition 使用的 suffixProviders)?

任何帮助,将不胜感激!

0 投票
2 回答
3733 浏览

web-services - Spring-WS 1.5 可以与 Spring 3 一起使用吗?

Spring-ws 1.5.9 依赖于 Spring 2.5(基于 pom)。它可以与 Spring 3 一起使用而不会遇到任何类加载问题。我知道两者之间的一些包匹配,我可以不包括那些 Spring 3 罐子吗?我似乎找不到任何官方的说法。

0 投票
2 回答
6464 浏览

java - Spring-WS:具有 WSDL 多节点分类的 SimpleWsdl11Definition

Spring-WS 1.5:使用 SimpleWsdl11Definition,在 XML 配置中公开 WSDL 很简单(来自 Spring-WS 文档):

产生一个在以下位置公开 WSDL 的 URL:

SimpleWsdl11Definition bean id +“.wsdl”在部署时成为 WSDL 的 URL 的叶子,它涵盖了单节点分类。

我需要支持公开具有多节点分类的 WSDL。

例如:

这在 Spring-WS 中是如何实现的?Bean ID 属性不允许使用“/”字符,所以我想知道有哪些方法可以影响 WSDL URL。

注意:使用生成的 WSDL 将不会成为选项(出于向后一致性的原因),例如使用 DefaultWsdl11Definition。与 SimpleWsdl11Definition 一样,我想将对 WSDL 的请求映射到静态 WSDL。

谢谢。

0 投票
8 回答
14913 浏览

java - Spring Web Services - 异常跳过 ExceptionResolver

我有一个 SOAP 服务,如果我为 XML 元素指定错误的输入,请求和响应会按预期工作,输入良好

在请求正文中:

我的异常解析器被调用,这个解析器只是异常解析器的一个实现,所以它没有异常映射,只是抽象方法中的几个System.out

但是,如果我发送一个看起来更像这样的请求:

我的解析器根本没有执行

我将 log4j 设置为具有根调试级别并查看以下输出:

2010-08-09 10:30:01,900 [线程:http-8080-2] 调试 [org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter] - 接受传入 [org.springframework.ws.transport.http.HttpServletConnection@c46dcf ] 到 [ http://localhost:8080/myws/MyWebServices/] 错误:'元素类型“ns:MESSEDUPELEMENT”必须由匹配的结束标记“”终止。' 2010-08-09 10:30:01,920 [线程:http-8080-2] 调试 [org.springframework.ws.transport.http.MessageDispatcherServlet] - 无法完成请求 org.springframework.ws.soap.saaj.SaajSoapMessageException:无法访问信封:无法从给定来源创建信封:;嵌套异常是 com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无法从给定源创建信封:在 org.springframework.ws.soap.saaj.support.SaajUtils.getSaajVersion(SaajUtils.java:162) 在 org .springframework.ws.soap.saaj.SaajSoapMessage.getImplementation(SaajSoapMessage.java:251) 在 org.springframework.ws.soap.saaj.SaajSoapMessage.(SaajSoapMessage.java: 在 org.springframework.ws.soap.saaj.support.SaajUtils.getSaajVersion( SaajUtils.java:159) ... 24 更多原因:javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: 元素类型“smm:smm-aid”必须由匹配的结束标记“终止”。在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:719) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl. java:313) 在 com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(EfficientStreamingTransformer.java:393) 在 com.sun.xml。internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:102) ... 27 更多原因:org.xml.sax.SAXParseException:元素类型“smm:smm-aid”必须由匹配终止结束标签“”。在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java: 522)在 org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:636) 在 com .sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:707) ... 30 更多 createEnvelope(EnvelopeFactory.java:102) ... 27 更多原因:org.xml.sax.SAXParseException:元素类型“smm:smm-aid”必须由匹配的结束标记“”终止。在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java: 522)在 org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:636) 在 com .sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:707) ... 30 更多 createEnvelope(EnvelopeFactory.java:102) ... 27 更多原因:org.xml.sax.SAXParseException:元素类型“smm:smm-aid”必须由匹配的结束标记“”终止。在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java: 522)在 org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:636) 在 com .sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:707) ... 30 更多 元素类型“smm:smm-aid”必须以匹配的结束标签“”结束。在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java: 522)在 org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:636) 在 com .sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:707) ... 30 更多 元素类型“smm:smm-aid”必须以匹配的结束标签“”结束。在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java: 522)在 org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:636) 在 com .sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:707) ... 30 更多

似乎 spring 在这里缺少一个可能的异常,并且没有包装它,但是在我看来,这样一个基本的错误条件没有被捕获似乎不太可能。谁能帮我找到这个问题的根源?

我也会包含 web.xml 和 servlet.xml:

网页.xml:

小服务程序上下文:

0 投票
1 回答
1136 浏览

tomcat - Spring WS Osgi 示例

我们目前正在工作中研究 OSGI,我需要提供一个概念证明,说明它在适当的应用程序服务器(tomcat / jetty)中与 spring dm 和 spring-ws 一起使用。有没有人可以提供示例或教程或任何链接对我的研究有帮助吗?

在过去的日子里,我一直在寻找一些关于如何在 OSGI 中与 Spring DM 一起实现 spring ws 的示例。

任何帮助将不胜感激。

在此期间,我正在等待我的 Spring DM in Action 一书。

非常感谢。

加思

0 投票
3 回答
7458 浏览

java - 使用 spring WebServiceTemplate 和 Jaxb2Marshaller 时的线程安全

我以编程方式使用spring WebServiceTemplate 作为Web 服务客户端,即没有实例化spring 容器。我正在使用 Jaxb2Marshaller 进行编组/解组。在我的应用程序中,我创建了一个 SaajSoapMessageFactory 实例和一个 Jaxb2Marshaller 实例。我还创建了 WebServiceTemplate 的单个实例,并分配了之前创建的 SaajSoapMessageFactory 和 Jaxb2Marshaller 实例。

我创建的 WebServiceTemplate 以多线程方式使用,即多个线程可以同时调用 marshalSendAndReceive。我的问题是 - 我的配置线程安全吗?我担心 Jaxb2Marshaller。javadoc 说 Jaxb2Marshallers 不一定是线程安全的。如何在不重新初始化 Jaxb 上下文的情况下以线程安全的方式使用 Jaxb2Marshaller?

顺便说一句:查看spring 参考中的示例 spring-ws 配置让我相信 Jaxb2Marshaller 是线程安全的,但 Javadoc 似乎与此相矛盾。

0 投票
1 回答
3070 浏览

java - 未找到端点映射

嗨,我创建了我的第一个 Web 服务。它工作正常,但现在我需要解决一些特殊情况。第一种情况是这里提到的Spring Web Services - Exception Skipping ExceptionResolver但是没有可以帮助我的解决方案。

第二种情况是客户端向我发送正确的 SOAP 消息但在命名空间中出错,例如发送给我: xmlns:urn="urn:org:samples:spring:ws:schemas:calculatorblabla" 但正确的命名空间是 xmlns:urn="urn1:org:samples:spring:ws:schemas:calculator"。因此,当客户向我发送带有错误名称空间的消息时,他不会收到他犯错误的消息:

<html><head><title>SpringSource tc Server/6.0.20.C - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 404 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The requested resource () is not available.</u></p><HR size="1" noshade="noshade"><h3>SpringSource tc Server/6.0.20.C</h3></body></html>

我用 SoapUI 测试了这些情况

服务器收到消息但没有发送任何响应,因为他没有找到正确的端点[2010-08-26 14:38:19] Accepting incoming [org.springframework.ws.transport.http.HttpServletConnection@1700f3d] at [http://localhost:8080/calculator] [2010-08-26 14:38:19] Received request [SaajSoapMessage {urn:org:samples:spring:ws:schemas:calculatorblabla}calculatorRequest] [2010-08-26 14:38:19] Looking up endpoint for [{urn:org:samples:spring:ws:schemas:calculatorblabla}calculatorRequest] [2010-08-26 14:38:19] Endpoint mapping [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping@ae2481] has no mapping for request [2010-08-26 14:38:19] No endpoint mapping found for [SaajSoapMessage {urn:org:samples:spring:ws:schemas:calculatorblabla}calculatorRequest] [2010-08-26 14:38:19] Successfully completed request

所以我需要当客户端向我发送带有错误名称空间的消息时,它会在他发送未使用 xsd 验证的 xml 时写入一些类似的错误消息。感谢您的帮助,对不起,我的英语很糟糕

0 投票
1 回答
357 浏览

java - Spring ws:如何访问 AxiomAttachment 的大小

为了获取附件,我在端点中有以下代码:

但是附件实现了 AxiomAttachment(我正在使用 AxiomSoapMessageFactory)并且根据此类“Axiom 不支持获取附件的大小。”。

我怎样才能得到附件的大小?

我尝试使用它以便能够发送大文件(超过 10 个月)作为附件以防止内存不足(任何更好的想法将不胜感激 - 我已经尝试了 mtom spring 示例,但它不适用于重文件(outOfMemory 也是),甚至通过指定 AxiomSoapMessageFactory)。

我愿意接受任何更好的解决方案(spring ws mtom 示例不起作用..)来处理带有 spring ws 的重文件