gpt4 book ai didi

java - CXF 客户端拦截器总是先调用另一个方法?

转载 作者:行者123 更新时间:2023-12-01 05:48:11 25 4
gpt4 key购买 nike

我正在处理一个 Web 服务,该服务需要调用“身份验证”方法,并将返回的 token 放置在特殊 header 中,以便每次都执行下一个操作。尝试在 CXF 拦截器中执行此操作似乎是合乎逻辑的。我会看到它的工作方式为

CXF 客户端对象注入(inject)业务逻辑对象。 BusinessLogic Object调用Operation A,Interceptor判断需要先调用Operation B,调用Op B,然后在原来调用A的基础上加上header,然后传出。

显然,以原子方式或潜在递归方式执行此操作是有意义的(如果拦截器知道对 Op B 的调用会继续传递)。我想避免的一种丑陋、黑客的方式是让拦截器对服务产生循环依赖。我还想避免这种丑陋的黑客方式,即本质上站立两个客户端对象并让一个被拦截而另一个不被拦截。似乎应该有某种方法可以做到这一点,实际上我知道 Service 类有一个方法调度程序,但我不知道如何调用将导致传出调用的操作。

最佳答案

我意识到这是一个非常古老的问题,@jcalvert 早已找到了解决方案或其他职业。

乍一看,我质疑在拦截器链中执行 I/O 是否明智,其中在失败时传播有意义的信息可能是一个挑战,更不用说每次操作都必须重新进行身份验证的低效率。

是的,可以创建一个全状态拦截器,它可以有效地维护 session token ,但客户端必须执行“注销”操作来处理关联。

我的第一个建议是处理应用程序层的情况:更改客户端的接口(interface),使每个操作都需要授权 token 。如果不存在,Web 服务会获取一个并在所有操作中返回它。

关于java - CXF 客户端拦截器总是先调用另一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5384920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com