Java CXF JAX-RS的首选语义

Java CXF JAX-RS的首选语义,java,web-services,cxf,jax-rs,Java,Web Services,Cxf,Jax Rs,我想知道CXF XML上下文文件中的jaxrs:server配置的首选语义是什么 例如,如果我有两个针对用户和订单的服务实现,并且可以从相对路径“/user”和“/order”访问它们 我是否可以这样配置服务: <jaxrs:server id="userService" address="/user"> <jaxrs:serviceBeans> <bean class="com.example.UserServiceImpl />

我想知道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>

或者这样:

<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>

通常,将restful服务分组为“资源”是有意义的,通常在资源级别有一个@path,如“/user”,每个方法有一个@path,如“/add”,“/delete”等。因此,对我来说,您文章中的第一个选项是有意义的。也就是说,这一切都取决于手头的需求。。。