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

如何在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。我怎样才能做到这一点?


拉莫斯之舞
浏览 619回答 3
3回答

jeck猫

不必担心。您可以在单个Web应用程序中安全地拥有多个servlet,只要它们的URL模式不会相互冲突即可。通常,如果是这种情况,那么在webapp启动过程中,一个比较不错的servlet容器将已经引发异常。在你的情况,你已经登记在JSF的servlet&nbsp;/test/*(这是一个奇怪的,顺便说一句,你平时用*.xhtml的那个),并且您已经登记在JAX-RS的servlet&nbsp;/api/*。因此,您只需要使用与这些URL模式匹配的URL来调用它们。而且,为了消除概念上的误解,您完全不能也不能“在JSF中实现REST”。它们彼此完全独立。他们可以轻松地在同一个Web应用程序中彼此轻松地彼此相邻运行,而无需彼此了解。他们唯一可以共享的是服务层或“共享”(CDI)托管的bean。但是通常就是这样。服务层的设计又与谁使用服务无关。此特定问题与JSF或JAX-RS无关。这只是基本的servlet。退一步,花一点时间来了解更多关于每个Java EE Web应用程序的基础知识,这也许也是值得的。

慕丝7291255

您不能直接将两者都放在同一个Java类或图层中。我实现如下&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--->&nbsp;JSF&nbsp;Managed&nbsp;Beans(Inject&nbsp;logic&nbsp;here) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Database&nbsp;-->&nbsp;Daos&nbsp;-->&nbsp;Logic&nbsp;--| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|--->&nbsp;JAX-RS&nbsp;&nbsp;(Inject&nbsp;logic&nbsp;here)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
JavaScript