java - 我们可以在 Spring WS 中使用多个消息工厂吗?

标签 java spring soap streaming spring-ws

我最近解决了 problem of the direct streaming with Spring WS ,感谢 Arjen 的快速响应。技巧是在 Axiom 消息工厂中禁用负载缓存。

我现在正在为那个全局决定而苦恼,我们必须为整个系统启用或禁用有效负载缓存。我们希望拥有带有流式传输的 Web 服务以及一些启用验证的 Web 服务(如果禁用有效负载缓存,这是不可能的)

那么是否可以将特定的端点映射到特定的消息工厂?使用 Web 服务客户端很容易,但是端点呢?有什么想法吗?

谢谢!

最佳答案

你是对的,在客户端将特定的 WebServiceMessageFactory 实例传递给 WebServiceTemplate 构造函数非常容易。

无论如何,我想在服务器端也是可能的。 如果您可以使用不同的 url 映射,我发现最简单的方法是基于 web.xml 中两个(或更多)不同的 MessageDispatcherServlet 的配置。然后您只需将您喜欢的 WebServiceMessageFactory 实例的特定 bean 名称作为 init 参数传递。像这样:

<servlet>
    <servlet-name>ws1</servlet-name>
    <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/conf/ws1-servlet.xml</param-value>
    </init-param>
    <init-param>
        <param-name>messageFactoryBeanName</param-name>
        <param-value>defaultMessageFactory</param-value>
    </init-param>
</servlet>

<servlet>
    <servlet-name>ws2</servlet-name>
    <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/conf/ws2-servlet.xml</param-value>
    </init-param>
    <init-param>
        <param-name>messageFactoryBeanName</param-name>
        <param-value>streamingMessageFactory</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>ws1</servlet-name>
    <url-pattern>/ws1</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>ws2</servlet-name>
    <url-pattern>/ws2</url-pattern>
</servlet-mapping>

然后,您只需将不同的消息工厂 bean 添加到您的 spring-ws 上下文中即可。

希望这对您有所帮助。

关于java - 我们可以在 Spring WS 中使用多个消息工厂吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775332/

相关文章:

java - 并行执行且使用 "priority"时出现 TestNG 问题

java - Android:保存/加载 gson.JsonObjects 的 ArrayList?

Java Spring : OAuth authentication failed: Unknown Error

java SOAP 响应问题

php - Magento API v2 PHP 错误

java - 配置编程语言

java: 非静态变量,不能从静态上下文中引用

spring-security - 在哪里可以找到使用 <http> 元素时注册的所有安全过滤器的列表?

java - Web应用程序的执行流程?

java - 使用 SOAP Web 服务 - Java VS PHP