为了账号安全,请及时绑定邮箱和手机立即绑定

如何在JSF框架中实现JAX-RS RESTful服务

如何在JSF框架中实现JAX-RS RESTful服务

拉莫斯之舞 2019-09-26 11:13:08
如何在JSF框架中实现JAX-RS RESTful服务在我的实验室中,我被要求使用JSF框架创建一个简单的网站,并同时使用REST。我对这两个做了一些研究。事实证明,对于REST,我必须在Jersey上使用JAX-RS框架。我想知道如何集成这两个框架,即JAX-RS和JSF?我已经在web.xmlJSF中使用了以下servlet :<servlet>     <servlet-name>Faces Servlet</servlet-name>     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class></servlet><servlet-mapping>     <servlet-name>Faces Servlet</servlet-name>     <url-pattern>/test/*</url-pattern></servlet-mapping>对于Jersey,我认为我必须在中使用以下servlet web.xml:<servlet>     <servlet-name>Jersey REST Service</servlet-name>     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>     <init-param>         <param-name>jersey.config.server.provider.packages</param-name>         <param-value>com.jbm.rest</param-value>     </init-param></servlet><servlet-mapping>     <servlet-name>Jersey REST Service</servlet-name>     <url-pattern>/api/*</url-pattern></servlet-mapping>现在,我担心的是,这个Jersey servlet将取代中的Faces servlet web.xml。这会将我的应用程序从JSF更改为JAX-RS。但是我想保留JSF并同时使用JAX-RS。我怎样才能做到这一点?
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

不必担心。您可以在单个Web应用程序中安全地拥有多个servlet,只要它们的URL模式不会相互冲突即可。通常,如果是这种情况,那么在webapp启动过程中,一个比较不错的servlet容器将已经引发异常。在你的情况,你已经登记在JSF的servlet /test/*(这是一个奇怪的,顺便说一句,你平时*.xhtml的那个),并且您已经登记在JAX-RS的servlet /api/*。因此,您需要使用与这些URL模式匹配的URL来调用它们。

而且,为了消除概念上的误解,您完全不能也不能“在JSF中实现REST”。它们彼此完全独立。他们可以轻松地在同一个Web应用程序中彼此轻松地彼此相邻运行,而无需彼此了解。他们唯一可以共享的是服务层或“共享”(CDI)托管的bean。但是通常就是这样。服务层的设计又与谁使用服务无关。

此特定问题与JSF或JAX-RS无关。这只是基本的servlet。退一步,花一点时间来了解更多关于每个Java EE Web应用程序的基础知识,这也许也是值得的。


查看完整回答
反对 回复 2019-09-26
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您不能直接将两者都放在同一个Java类或图层中。我实现如下

                              |---> JSF Managed Beans(Inject logic here)
          Database --> Daos --> Logic --|
                              |---> JAX-RS  (Inject logic here)


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 618 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信