繁体   English   中英

CXF JAX-RS的首选语义

[英]Preferred Semantics for CXF JAX-RS

我想知道jaxrs:server的首选语义是jaxrs:server 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服务器。 如果它们相关,那么它们几乎不可能需要不同的提供者,映射和扩展。

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

如果他们有相同的基地址,我通常会将它们分组,假设我们有这样的资源URL

<jaxrs:server id="userService" address="api/user">
</jaxrs:server>

<jaxrs:server id="orderService" address="api/order">
</jaxrs:server>

<jaxrs:server id="appService" address="/api">
    <jaxrs:serviceBeans>
        <!-- 
            @Path(value="/user")
         -->
        <bean class="com.example.UserServiceImpl />
        <bean class="com.example.OrderServiceImpl />
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
    </jaxrs:providers>

并且单独地包含它们具有不同的基本URL

/profile/user
/cart/orders 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM