You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Citrus Simulator场景设置Endpoint URI遇EndpointNotFound错误求助

解决Citrus Simulator中SOAP端点映射找不到的问题

我看你这里是把Citrus里.endpoint()和.operation()的用法搞混啦,这正是导致EndpointNotFound错误的核心原因!

问题根源

在Citrus的SOAP场景构建中:

  • .endpoint()方法的作用是指定你要监听/交互的SOAP服务器端点地址(比如/lov-service或者完整URL)
  • 而SOAP请求的操作QName(就是你写的{http://www.sikorsoftware.com/lov/schemas}LOVRequest)应该用.operation()方法来指定,用来匹配收到的SOAP消息的操作

你现在把操作QName传给了.endpoint(),Citrus找不到对应地址的端点,自然就报错了。

具体修正步骤

1. 先配置SOAP服务器端点

首先需要在Citrus配置中定义一个SOAP服务器端点,这里以Java配置为例:

@Bean
public ServerEndpoint lovServiceEndpoint() {
    return new SoapServerEndpointBuilder()
            .port(8080) // 监听端口
            .path("/lov-service") // 端点路径
            .build();
}

如果是用XML配置的话,写法是这样:

<citrus:soap-server id="lovServiceEndpoint" port="8080" path="/lov-service"/>

2. 修改场景代码,区分端点和操作

把原来的.endpoint()替换为.operation()来指定SOAP操作,同时用.endpoint()指向你配置的端点ID:

@Override
public void run(ScenarioDesigner scenario) {
    scenario
        .soap()
        .receive()
        .endpoint("lovServiceEndpoint") // 引用配置的端点Bean ID
        .operation("{http://www.sikorsoftware.com/lov/schemas}LOVRequest") // 指定SOAP操作QName
        .payload("&lt;ns2:LOVRequest xmlns:ns2=\"http://www.sikorsoftware.com/lov/schemas\"&gt;&lt;ns2:id&gt;123456&lt;/ns2:id&gt;&lt;/ns2:LOVRequest&gt;");

    scenario
        .soap()
        .send()
        .payload("&lt;LOVResponse xmlns=\"http://www.sikorsoftware.com/lov/schemas\"&gt;" +
                "Hi there!" +
                "&lt;/LOVResponse&gt;");
}

额外小提示

  • 如果你不想单独配置端点Bean,也可以直接在.endpoint()中写完整的端点URL,比如http://localhost:8080/lov-service,但用配置Bean的方式更便于复用和维护。
  • 要确保SOAP操作的命名空间和名称和你的WSDL定义完全一致,否则Citrus还是无法匹配到对应的请求。

内容的提问来源于stack exchange,提问作者Michael Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:45:21