[英]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.