当前位置: 首页 > 知识库问答 >
问题:

localPart和payloadRoot是否依赖于WSDL中的地址位置和操作名称?

易祯
2023-03-14

附注2。wsdl中唯一的矛盾是

我的endpoint中的payloadRoot和localPart配置是否应该与第三方包和操作名称相同,或者它们应该与我的主机名/deploy-URL相同?我尝试了@payloadroot(namespace=NAMESPACE_URI,localPart=“sendmessage”),其中NAMESPACE_URI是我的服务的地址位置(来自wsdl),我还尝试了来自wsdl命名空间的NAMESPACE_URI(other.company.kz),但都失败了。

我的配置代码看起来像

@Bean
    public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(applicationContext);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean(servlet, "/ws/*");
    }

  @Bean(name = "notification")
    public Wsdl11Definition defaultWsdl11Definition() {
        SimpleWsdl11Definition wsdl11Definition = new SimpleWsdl11Definition();
        wsdl11Definition.setWsdl(new ClassPathResource("notification.wsdl"));
        return wsdl11Definition;
    }
<wsdl:binding name="SomeBinding" type="tns0:bla-bla-bla">
        <binding transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="SendMessage">
            <operation soapAction=""/>
            <wsdl:input name="SendMessageRequest">
                <body use="literal"/>
            </wsdl:input>
            <wsdl:output name="SendMessageResponse">
                <body use="literal"/>
            </wsdl:output>
            <wsdl:fault name="sendMessageFault">
                <fault name="sendMessageFault" namespace="" use="literal"/>
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="SomeService">
        <wsdl:port binding="tns0:SomeBinding" name="SomePort">
            <address location="http://myhost/my-app-context/ws/notification"/>
        </wsdl:port>
    </wsdl:service>

我的终结点

@Endpoint
public class MailEndpoint {
    private static final String NAMESPACE_URI = "I tried myhost (address location in wsdl) and other-company"

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "sendMessage")
    @ResponsePayload
    public SyncSendMessageResponse sendMessage(@RequestPayload SyncSendMessageRequest request) {
        SyncSendMessageResponse response = new SyncSendMessageResponse();
        ResponseData responseData = new ResponseData();
        responseData.setResult("sync");
        response.setResponseData(responseData);
        return response;
}

共有1个答案

吕飞翼
2023-03-14

我在实现WS-Server时遇到了类似的问题。在我的例子中,当没有使用ws-security时,@PayloadRoot可以正常工作。

当我应用ws-security时,我以前找不到endpoint,我的解决方案是依赖@SOAPAction。

我当时的理解是:

    null
 类似资料:
  • 问题内容: 我们正在寻找一种快速准确的方法来根据访问者的IP获取访问者的位置。 我们已经尝试过ipinfodb.com,但在调用API时,其API使我们的网站严重滞后。 您还建议其他哪些服务? 问题答案: 获取Geo-IP信息 请求地理IP服务器(netip.de)进行检查,并返回IP所在的位置(主机,州,国家/地区,城镇)。

  • 这个答案表示,python中整数的endianness取决于处理器体系结构。这是否意味着像 根据处理器的不同,在不同的计算机上产生不同的结果? 一位同事建议我使用而不是

  • 问题内容: 可以运行以了解模块任务的依赖性。有没有办法找到 buildscript依赖 的 传递依赖 ? 示例: 直接取决于: 可以在MVNRepository上看到。但是,这些工件有其自己的依赖性。有没有找到方法而无需手动遍历整个依赖树的方法? 为了澄清起见,我正在谈论的类路径由以下方式定义: 问题答案: 您可以使用以下命令: Udacity提供了很棒的Android Gradle 教程,但是您

  • 这里我使用Java第一种方法创建web服务。 我在JBOSS EAP6.0中使用endpointapi公开了一个使用JAX-WS的web服务。 无论我在上面的publish方法中为address字段提供了什么值,这都不重要,也就是说,我没有看到它的影响。上面的是我的Web服务实现类。部署完war文件后,我将获得在以下位置生成的WSDL文件。 %jboss_home%/standalone/data

  • sentinel get-master-addr-by-name myredis

  • 问题内容: 我找不到golang依赖于c运行时的信息吗?如果依赖它,它是否会在go-binary中静态编译以使Go-app可以在任何地方工作而无需依赖? 这是有关什么是C运行时的主题 libcmt是Microsoft编译器提供的C标准库的(几种)实现。它们提供三种基本类型的库的“调试”和“发行”版本:单线程(始终静态链接),多线程静态链接和多线程动态链接(尽管取决于您使用的编译器版本)使用,其中一