gpt4 book ai didi

java - CXF JAX-RS 的首选语义

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:58 25 4
gpt4 key购买 nike

我想知道 CXF XML 上下文文件中 jaxrs:server 配置的首选语义是什么。

例如,如果我有两个针对用户和订单的服务实现,并且可以从相对路径 "/user""/order" 访问它们。

我会这样配置服务吗:

<jaxrs:server id="userService" address="/user">
<jaxrs:serviceBeans>
<bean class="com.example.UserServiceImpl />
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
</jaxrs:providers>
</jaxrs:server>

<jaxrs:server id="orderService" address="/order">
<jaxrs:serviceBeans>
<bean class="com.example.OrderServiceImpl />
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
</jaxrs:providers>
</jaxrs:server>

或者这样:

<jaxrs:server id="appService" address="/">
<jaxrs:serviceBeans>
<!--
Path configured using @Path annotations on the class definition:

@Path(value="/user")
public class UserServiceImpl {...}
-->
<bean class="com.example.UserServiceImpl />
<bean class="com.example.OrderServiceImpl />
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
</jaxrs:providers>
</jaxrs:server>

这似乎只是语义上的差异。第二种方式允许我们不重复提供者。但是我想知道在执行此配置时应该考虑什么?

谢谢!

最佳答案

我使用第二种方式并尝试将服务分组在一起,如果它们相关...如果您可以获得特定用户的订单,那么它们就会相关。所以我通常有一个“v1”api 服务器(版本控制支持),一个用于它的文档(在那里我使用不同的提供者或扩展映射),一个用于专门的(如管理员具有更严格的安全性)访问等。但我会使用一些地址而不是将其留空,例如至少是“api”或版本“v1”。

换句话说,您的 cxf.xml 可以充满 jaxrs 服务器。如果它们相关,则它们几乎不可能需要不同的提供程序、映射和扩展。

但是这个问题是关于意见的,也许会被关闭。

关于java - CXF JAX-RS 的首选语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21389134/

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