gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:00:15 26 4
gpt4 key购买 nike

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

网络服务声明为:

@WebService(name = "MyService", ...)
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@HandlerChain(file="handler-chain.xml")
public interface MyService
{
....
}

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

<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
<handler-chain>
<handler>
<handler-name>com.ws.MyCustomSoapHandler</handler-name>
<handler-class>com.ws.MyCustomSoapHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>

在自定义 SOAP 处理程序中,我有以下内容:

public class MyCustomSoapHandler implements SOAPHandler<SOAPMessageContext>
{
//assume getter/setter for this.
private String schemaLocation = "schema/validation/service1.xsd";
@Override
public boolean handleMessage(SOAPMessageContext context)
{
...
//This is the only place where the schema needs to vary
schema = schemaFactory.newSchema(this.getClass().getClassLoader().getResource(schemaLocation));

我知道我可以使用 Spring 基于 MyCustomSoapHandler 创建多个 bean,并为它们提供不同的 schemaLocation 值,但是如何将这些 bean 连接到正确的 Web 服务在我的应用程序中?会通过handler-chain.xml吗?或者我必须以编程方式完成它?

最佳答案

这看起来不可能(或者即使是,我似乎也无法让它工作),因为 SOAP 处理程序是由 WebSphere 容器创建的,并且它们不由 Spring 管理。因此,我只是创建了一个包含大部分逻辑的抽象处理程序,并使用 .properties 文件来配置更特定于不同处理程序的详细信息。

关于java - 使用 Spring 配置 SOAP 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481051/

26 4 0
文章推荐: jquery - 在 Jquery Mobile 中获取 div 元素的宽度
文章推荐: python - While 在服务器和客户端之间循环 (Python)
文章推荐: jquery - 未捕获的类型错误 : Object # has no method 'replace' line 75