问题标签 [soaphandler]

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 投票
0 回答
214 浏览

java - 在没有处理程序的情况下验证 Soap 消息签名

我在使用 Soaphandler 进行签名验证时遇到了一些问题。有没有办法捕捉到soapmessage 或任何方法来验证没有处理程序的Soapmessage 签名?

0 投票
1 回答
2746 浏览

java - 使用 Spring 配置 SOAP 处理程序

我有一个自定义 SOAP 处理程序,用于对 SOAP 消息进行架构验证。它适用于网络服务,我希望能够将它用于其他人。验证本身的代码非常通用——唯一真正的输入是用于验证的模式名称。我对如何/是否可以使用 Spring 为不同的服务配置 SOAP 处理程序的不同实例感到困惑。

Web 服务声明为:

handler-chain.xml文件如下所示:

在自定义 SOAP 处理程序中,我有这个:

我知道我可以使用 Spring 创建多个基于 的 beanMyCustomSoapHandler并为其赋予不同的值schemaLocation,但是如何将这些 bean 连接到我的应用程序中的正确 Web 服务?它会通过handler-chain.xml吗?还是我必须以编程方式进行?

0 投票
4 回答
11816 浏览

java - 是否有保证在自定义肥皂处理程序中获取操作名称的方法?

我有一个用于传入消息的自定义 SOAP 消息处理程序,这些消息将根据调用的操作运行不同的代码。我第一次尝试获取操作名称看起来像这样:

这失败了,因为该属性MessageContext.WSDL_OPERATION似乎从未被设置。然后我尝试使用这个:

这可行,但我担心可能存在未设置标头属性“SOAPAction”(或什至不存在)或不具有我期望的值的情况。我也有点担心,因为我不知道这是否是获取操作名称的“官方”方式——我是通过查看context调试器中的内容来弄清楚的。

在处理传入的 SOAP 消息时,有没有更好的方法来获取操作名称?

0 投票
1 回答
195 浏览

java - SOAPHandler 究竟在什么时候拦截传出消息

我正在使用 SOAPHandler.handleMessage(...) 拦截从客户端到服务器的输出 SOAP 消息。

我需要确认在消息发送后进行了拦截。不确定这是否真的如此。有任何想法吗?

0 投票
0 回答
3597 浏览

java - WebServices中通过SOAPHandler传递参数

我有一个部署了 Web 服务的 JBoss AS。对该 Web 服务的调用会产生对另一个 JBoss AS 中另一个 Web 服务的调用。我有兴趣在 SOAP 消息的标头中传递一些参数,因此当 SOAP 消息到达第一个 JBoss AS 时,我会读取标头参数,对它们执行一些操作,并将它们放入定向到的消息的标头第二个 JBoss AS。我正在使用两个 SOAPHandler,并在我使用的第一个 AS 中将参数传递给 Web 服务:

这样我就可以在 Web 服务中执行以下操作:

在第二个 SOAPHandler 中,管理定向到第二个 AS 的消息:

这行得通,但是如果新消息到达第一个 AS 时没有参数,则之前的消息仍保留在上下文中,而我将旧参数发送到第二个 AS。也许这与:MessageContext.Scope.APPLICATION

0 投票
4 回答
1899 浏览

soap - 带有大量消息的 JAX-WS SoapHandler:OutOfMemoryError

使用 JAX-WS 2,我看到了其他人也谈到的一个问题。问题是,如果在处理程序中接收到 SOAP 消息,并且该 SOAP 消息很大——无论是由于内联 SOAP 正文元素碰巧有很多内容,还是由于 MTOM 附件——那么很容易获得内存不足错误。

原因是对 getMessage() 的调用似乎引发了一系列事件,这些事件涉及读取线路上的整个 SOAP 消息,并创建一个对象(或多个对象)来表示线路上的内容。

例如:

我的问题是:是否有已知的机制/解决方法来处理这个问题?具体来说,最好访问 SOAP 消息中的 SOAP 部分而不强制附件(例如,如果 MTOM)也被清理掉。

0 投票
1 回答
1264 浏览

web-services - Java Web 服务中 Handler 类的位置

我正在尝试将 SOAP 处理程序添加到 Web 服务。

在 @WebService 注解之后添加到 Web 服务的注解是:

Web 服务与 WEB-INF/classes 下的服务类一起打包,处理程序类位于 WEB-INF/lib 下的 jar 中。

例如:

MyHandler.xml(更改了完全限定名称):

当我尝试部署 Web 服务时,我得到了 MyHandler.xml 中引用的处理程序类 (MyHandler.class) 的 ClassNotFoundException。

使用 Eclipse,我已经能够使用 Eclipse 中的对话框添加自己的处理程序。Eclipse 将处理程序类放在与服务类相同的位置。但我需要能够使用在 jar 文件中提供给我的处理程序。

Web 服务正在部署到 WebLogic 10.3 的 ear 文件中

如果我需要更好地描述一些东西,请告诉我。我是 Web 服务和 Java 的新手。

谢谢。

0 投票
2 回答
9802 浏览

java - How to get the XML response body back from a JAX-WS client?

I've found a read a number of threads on here about how to retrieve the XML response from a JAX-WS client. In my case, the client is generated from the WSDL via Oracle's JDeveloper product and is going to invoke a Document/Literal service endpoint that was written in .NET. What I want to do is obtain the XML response from the call FROM the calling client, not from inside a handler.

The closest thread that I saw to this issue was: http://www.coderanch.com/t/453537/Web-Services/java/capture-SoapRequest-xml-SoapResponse-xml

I don't think I want to generate a Dispatch call because the endpoint's XML schema for the SOAP packet is rather complex, and the automatic proxy makes the call trivial. Unless there is some other way to populate the generated bean(s) and then invoke some method that simply produces the XML and I then make the call?

My thought was to store the response to the call in a ThreadLocal inside the handler and then read it after the call. Is that reasonable? So after the handler does the above code in the handleMessage and handleFault, the client calling code invokes this method:

It appears there may be another way after all. After reading jax-ws-handlers, I saw that the handler can introduce an Application scoped variable. I changed the handler to do this:

The client just reads it like this:

0 投票
1 回答
1620 浏览

java - 将元素附加到 SOAP 标头时出现 WRONG_DOCUMENT_ERR

目前,当我在传出客户端消息期间尝试将 org.w3c.dom.Element 附加到 javax.xml.ws.handler.soap.SOAPHandler 中的现有 SOAPHeader 时出现以下错误:

org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: 一个节点在与创建它的文档不同的文档中使用

仅当我从 handleMessage() 函数中对另一个 Web 服务进行单独的 jax-ws 客户端调用时,才会出现此问题。为了回答一些问题,我在尝试附加它时正确地导入和克隆了 Element 对象,并且只要我没有像上面所说的那样进行后续的 web 服务调用,就可以成功地这样做。我的客户端调用和 web 服务都在 JBoss EAP 5.1 上运行。想法?建议?示例用法如下所示:

最让我困惑的是,这个其他 web 服务调用对原始 web 服务 SOAPHeader 的影响应该为 0,但是如果我删除 web 服务调用,问题就会消失。

0 投票
1 回答
575 浏览

java - 使用 SOAP 处理程序检查 SOAP 消息而不进行配置

我需要捕获所有 SOAP 请求消息。检查 SOAP 请求消息的目的是读取特定值(例如 IP 地址)。我读了这个教程

http://www.mkyong.com/webservices/jax-ws/jax-ws-soap-handler-in-server-side/

但据我所知,当我需要在我的项目中添加处理程序时,

必须添加注释,例如

@HandlerChain(file="handler-chain.xml")

并且还必须实现 handler-chain.xml。

--

所以,我要实现一个库来获取所有的soap请求IP地址并将它们全部记录下来。但是如果我使用肥皂处理程序,我必须对我添加我的库的项目进行一些配置。

我的目的是创建即插即用库。如果我将我的库添加到一个项目中,它必须从请求消息中开始读取 IP 地址,而不是像上面那样做。

那么,有可能吗?我该怎么做?