【问题标题】:Calling webservice from another webservice in same war - apache cxf在同一场战争中从另一个 Web 服务调用 Web 服务 - apache cxf
【发布时间】:2016-12-07 14:23:54
【问题描述】:

我有两个 Web 服务或端点,每个都有一个方法,每个方法都映射到一个 URL。我正在从 REST 客户端调用一个 Web 服务 URL,在此方法中我想调用另一个映射到 URL 的 Web 服务中的方法。这在 apache CXf 中如何实现?

我尝试使用 HttpClient 从一个调用另一个 Web 服务,但如果我使用完整的 URL 并获得 302 代码,但我得到 404,但如果我使用相对 URL,则没有响应。什么可能是问题,什么是正确的方法?

【问题讨论】:

  • 302 不是错误代码。如果这两个服务在同一场战争中,你为什么要通过 Web 服务?听起来很贵的东西
  • 谢谢大卫。那么如何调用其他端点呢?我可以创建其他类的实例并调用方法吗?例如,一种服务用于身份验证,另一种用于操作。现在,当调用操作服务时,我想先进行身份验证并进行操作。
  • @user7185698 只是将端点实例注入另一个端点。或者使用业务逻辑定义一个对象并将其注入两个端点。这不是 CXF 问题。如果您使用 spring 配置或注释定义了端点并且您不知道实例在哪里,那么请显示代码以便人们可以建议您

标签: java web-services cxf httpclient


【解决方案1】:

您可以尝试不使用httprequest直接调用其他控制器。 例如,您有两个下一个控制器,其中包含您需要的所有注释

@RestController
@RequestMapping("/a")
public class A{
     @RequestMapping(...)
    public void toCall(){
        //your code
    }
}

你想从控制器B调用控制器A的方法toCall

@RestController
@RequestMapping("/b")
public class B{
     @RequestMapping(...)
    public void method(){
        A a = new A();
        a.toCall();
    }
}

【讨论】:

  • 感谢 nasim,我的问题是 toCall() 方法接受查询参数和原始数据作为输入,如何从 a.toCall() 进行管理?
  • 把你的参数直接像 toCall(param1,param2,...) 方法的参数一样。
猜你喜欢
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 2011-02-16
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
相关资源
最近更新 更多